mrahda
پنج شنبه 16 شهریور 1385, 13:59 عصر
روش اول:
سه فایل به ضمیمه خدمتتان ارسال شده است. هر سه را در شاخه پروژه کپی کنید و آنها را جزء فایلهای پروژه اضافه نمایید.(منوی Projectزیر منوی Add to project)
فایل Dialoge.pas همان یونیت Dialoge است که در سورس برنامه هرجا که از فرمانهای محاورهای مثل MessageDlg و یا InputBox استفاده کنید Use می شود. منتهی به دلیل اینکه مشکلاتی در حالت فارسی نویسی در این فرمانها بوجود میآورد، بنده حقیر آن را دستکاری کردهام. برای همین باید نسخه دستکاری شده را در شاخه پروژه داشته باشید تا خدای ناکرده دلفی هنگام ساختن پروژه از فایل اصلی استفاده ننماید.
واما ادامه ماجرا؛ در فایل اصلی پروژه (منوی Project زیر منوی View Source) فرمان SetLanguage(1); را بعد از خط Application.Initialize;
اضافه نمایید.
بعد از آن، فرمان زیر را در رخداد OnCreate فرم اصلی(Main Form) بنویسید.
Application.BiDiMode := bdRightToLeft;
این فرمان باعث می شود که کل پروژه در حالت راست به چپ (اصل مورد نیاز برای فارسی نویسی) قرار بگیرد.
تمام.
بدین ترتیب پس از اجرای برنامه و استفاده از دو فرمان محاورهای فوق الذکر، مشاهده خواهید فرمود که اولا عبارات فرنگی Yes No جای خود را به کلمات سلیس بلی و خیر فارسی دادهاند و ثانیاپنجره ها در حالت راست به چپ بوده و مشکلی در عبارات فارسی نخواهید داشت! البته باید بگویم «همچو من سوختهای سوز دل من داند». برخی دوستان هستند که اصلا به مسائل نمایش عبارات فارسی اهمیتی نمیدهند و شاید بگویند: «خوب حالا که جه؟».
بگذریم.
حال چرا راه حل دوم را خدمتتان عرض می کنم؟ دلیل آن اینست که تازمانی که پروژه شما در حالت Build with Run Time package نباشد(یعنی حالت پیش فرض دلفی) مشکلی نخواهید داشت. ولی اگر بخواهید تیک کنار این عبارت در پنجره Project Options برگهی Packages را فعال نموده و از خاصیت آن استفاده نمایید، اوضاع به هم میریزد. چرا؟ چون دیگر جناب دلفی عنایتی به Dialoges دستکاری شده ما نداشته و از فایل vcl.bpl خودش بهره می برد. حقیر بسیار کوشیدم تا بتوانم این فایل bpl کذایی را دوباره بسازم ولی نشد (مراجعه بفرمایید به این پست...). دست آخر مجبور شدم روش دوم را اختراع کنم.
سه فایل به ضمیمه خدمتتان ارسال شده است. هر سه را در شاخه پروژه کپی کنید و آنها را جزء فایلهای پروژه اضافه نمایید.(منوی Projectزیر منوی Add to project)
فایل Dialoge.pas همان یونیت Dialoge است که در سورس برنامه هرجا که از فرمانهای محاورهای مثل MessageDlg و یا InputBox استفاده کنید Use می شود. منتهی به دلیل اینکه مشکلاتی در حالت فارسی نویسی در این فرمانها بوجود میآورد، بنده حقیر آن را دستکاری کردهام. برای همین باید نسخه دستکاری شده را در شاخه پروژه داشته باشید تا خدای ناکرده دلفی هنگام ساختن پروژه از فایل اصلی استفاده ننماید.
واما ادامه ماجرا؛ در فایل اصلی پروژه (منوی Project زیر منوی View Source) فرمان SetLanguage(1); را بعد از خط Application.Initialize;
اضافه نمایید.
بعد از آن، فرمان زیر را در رخداد OnCreate فرم اصلی(Main Form) بنویسید.
Application.BiDiMode := bdRightToLeft;
این فرمان باعث می شود که کل پروژه در حالت راست به چپ (اصل مورد نیاز برای فارسی نویسی) قرار بگیرد.
تمام.
بدین ترتیب پس از اجرای برنامه و استفاده از دو فرمان محاورهای فوق الذکر، مشاهده خواهید فرمود که اولا عبارات فرنگی Yes No جای خود را به کلمات سلیس بلی و خیر فارسی دادهاند و ثانیاپنجره ها در حالت راست به چپ بوده و مشکلی در عبارات فارسی نخواهید داشت! البته باید بگویم «همچو من سوختهای سوز دل من داند». برخی دوستان هستند که اصلا به مسائل نمایش عبارات فارسی اهمیتی نمیدهند و شاید بگویند: «خوب حالا که جه؟».
بگذریم.
حال چرا راه حل دوم را خدمتتان عرض می کنم؟ دلیل آن اینست که تازمانی که پروژه شما در حالت Build with Run Time package نباشد(یعنی حالت پیش فرض دلفی) مشکلی نخواهید داشت. ولی اگر بخواهید تیک کنار این عبارت در پنجره Project Options برگهی Packages را فعال نموده و از خاصیت آن استفاده نمایید، اوضاع به هم میریزد. چرا؟ چون دیگر جناب دلفی عنایتی به Dialoges دستکاری شده ما نداشته و از فایل vcl.bpl خودش بهره می برد. حقیر بسیار کوشیدم تا بتوانم این فایل bpl کذایی را دوباره بسازم ولی نشد (مراجعه بفرمایید به این پست...). دست آخر مجبور شدم روش دوم را اختراع کنم.