می خواستم با دلفی برنامه ای بنویسم تا بوسیله آن بتوانم MessageBox را تغییر دهم . یعنی نوشته دکمه های OK,Cancel,Ignore و غیره را فارسی کنم و رنگ آن ها را نیز تغییر دهم
می خواستم با دلفی برنامه ای بنویسم تا بوسیله آن بتوانم MessageBox را تغییر دهم . یعنی نوشته دکمه های OK,Cancel,Ignore و غیره را فارسی کنم و رنگ آن ها را نیز تغییر دهم
فکر کنم چون اینها اجزای استاندارد ویندوز هستند باید dll های خود ویندوز را تغییر دهید.البته من در مورد dll آن اطلاعی ندارم اما اگر بخواهید اجزایی مثل dial up networking را فارسی کنید <می توانید از طریق تغییر Rasapi32.dll این کار را انجام دهید(در ویندوز 98)
یا برای منوها از shell32.dll و برای دیالوگها از commdlg32.dll.
برای تغییر هم می توانید از برنامه هایی مانند exe Scope (که کاملا با دلفی نوشته شده است)
استفاده کنید.
یا اینکه بی خیال این قضیه بشی و خودت 1 Message Box خوشگل بنویسی
اتفاقا می شه این کار رو انجام داد . آقای دلفی اسیستانت بلده ! یکی از فایل های دلفی رو باید فارسی کنی همین :wink:
این کار رو می تونین با تغییر دو فایل "Dialogs.pas" و "Consts.pas" که در مسیر Source\Vcl قرار دارند انجام بدین ( در شاخه ای که دلفی را نصب کردین )
فایل Consts شامل متغییرهای ثابتی است که در دلفی استفاده می شود، برای تغییر عنوان کلیدهای MessageBox باید متغییرهایی را که با SMsgDlg شروع می شوند رو تغییر بدین مثلا
SMsgDlgWarning = 'Warning';
و از فایل Dialogs هم برای بعضی از تغییرات دیگه، مثلا تغییر فونت دیالوگ می شه استفاده کرد.
تنها لازمه که یک بار تغییراتتون رو بصورت دستی و نه برنامه نویسی انجام بدین، تا دیالوگ شما فارسی بشه !
آفرین به شیما !
هری جان همینه 8)
----------------------------------------------------نوشته شده توسط شیما
سلام
من تغییرات بالا را اعمال کردم ولی هیچ تاثیری نداشت(ضمن اینکه در چند سایت دیگر هم مطالب مشابهی را دیدم وانجام دادم که باز هم تاثیری نداشت.)
آیا بغیر اینها کار دیگری هم باید انجام داد؟
اگر کسی اطلاعاتی دارد لطفا کمک کند.
برای اینکه تغییرات مورد نظر اعمال بشن باید فایلهای dcuمربوطه رو پاک کنی از شاخه lib و بعد این فایلهای جدید رو توی شاخه lib یا یه جایی که به عنوان search path معرفی کردی بذاری تا دلفی کامپایلشون کنه .
:idea: یک راه راحت تر بدون نیاز به پاک کردن فایلها این است
Project\options...
از برگه Directories/Conditionals
به Search path مقدار
$(DELPHI)\Source\Vcl
(یا مسیر ...\Borland\Delphi5\Source\Vcl)
رابدهید
و بعد از هر بار تغییر برنامه را دوباره Build کنید
<<Delphi 5>>
//××××××××××××××××××
:idea: با این کار حتی می توانید از کد های VCL نیز اجرای خط به خط بگیرید!
سلام دوستان
البته راه بهتر و اصولی هم وجود داره. خود مسیج باکس هم قابل تغییر هست. شما میتونید با تابع CreateMessageDialog مسیج باکس ایده آل خودتون رو درست کنید با فرم استاندارد ویندوز و با همه چیز از جمله آیکون کوچولوی خوشگل که همه میشناسیمش و البته راست به چپ. از اونجایی که نمیخوام پرچونگی کنم با یه مثال صحبتم رو تموم میکنم. تابع زیر یک مسیج باکس با دو کلید Cancel و Ok البته با کپشن فارسی و کاملا راست به چپ درست میکنه. لازم به ذکره که این تابع قابل تعمیم هست که بیشتر از یک کلید داشته باشه. اگر سوال یا مجهولی بود در خدمتم:
function FarsiMsg(m:string;mtype:TMsgDlgType 1;:TModalResult;
var
fd1:tform;
begin
fd1:=CreateMessageDialog(m,mtype,[mbok ,mbno]);
fd1.BiDiMode:=bdrighttoleft;
fd1.Caption:='سلام';
fd1.Font.Name :='Tahoma';
fd1.Font.Size := 10;
tbutton(fd1.Components[2]).caption :='انصراف';
tbutton(fd1.Components[3]).caption :='تایید';
result:=fd1.ShowModal;
fd1.Free;
end;
سلام
از همه کسانی که جواب بنده را دادند ممنونم.
SyntaxCheck عزیز ! کد شما اجرا شد ولی تنها مشکلی که دارد(شاید فقط در کامپیوتر من ) این است که Caption فرم فارسی نمیشود. البته برای اطلاع شما بگویم که OS کامپیوتر من Windows Xp فارسی میباشد. که delphi در این محیط فارسی را پشتیبانی نمیکند . و من برای فارسی نویسی از برنامه IPT 5 ساخت شرکت برنارایانه استفاده میکنم که چندان هم راضی نیستم چرا که هنگام نوشتن چه در Object Inspector و چه در Editor دلفی حروف نامشخصی را نشان میدهد و مثل کد شما صراحتا نمیتوان نوشت مثلا : 'انصراف' و فقط در هنگام اجرای برنامه روی فرمهای مربوط میتوان آنها را خواند.
آیا شما روش دیگری برای فارسی نویسی دارید؟
اگر در این زمینه هم بنده را راهنمایی فرمایید تا مشکل Caption را حل کنم ممنون
میشوم.
ُسلام
دوست عزیز ویندوز اکس پی با فارسی کاملا سازگاره و مشکلی نداره همچنین دلفی کاملا فارسی رو پشتیبانی میکنه.برای فارسی کردن ویندوز من ذکر چند تا نکته رو بیفایده نمیدونم. شما هم موارد زیر رو کنترل کنید:
1) به کنترل پنل برید و Regional & Language Options رو انتخاب کنید.
2) در برگه Regional Options دو تا کامبو باکس میبینید.اولی باید Farsi و کامبوباکس انتهای صفحه باید Iran رو نشون بده.
3) در برگه Languages در قسمت Supplemental Language Support دو تا چک باکس وجود داره.چک باکس اول باید تیک خورده باشه. در همین برگه در قسمت Text Services and input languages با فشار دکمه Details یک پنجره باز میشه که تنزیمات مربوط به کیبورد رو میتونید انجام بدید. و اگر میخواهید که تایپ فارسی رو داشته باشید باید FA در قسمت Installed Services دیده بشه.یه چیزی شبیه زیر و البته نه بصورت رنگی :wink: :
EN English(United States) Keyboard US
FA Farsi Keyboard Farsi
4) در برگه Advanced و در قسمت Languages for non-Unicode programs یک کامبو باکس وجود داره که باید Farsi رو نشون بده.(این قسمت خیلی مهمه)
با رعایت موارد فوق شما براحتی میتونید در دلفی فارسی کار کنید و برنامه های فارسی رو اجرا کنید با پشتیبانی راست به چپ به طور کامل.
سلام!
بالاخره موفق شدم!!
SyntaxCheck عزیز! از راهنمایی شما بینهایت ممنونم. ظاهرا کمی ناشی گری کرده بودم وتنظیمات Control Panel رو خوب انجام نداده بودم.
خب! برای هر تازه کاری پیش میاد دیگه. :oops:
سلام
من در ویندوز 2000 کارمی کنم تنظیمات مربوط به فارسی کردن ویندوز را نیز انجام دادم
در محیطهای دیگر با فارسی نوشتن مشکلی ندارم ولی در دلفی نمی توانم فارسی بنویسم
متشکرم
وای سوال چی بود به کجا ختم شد
حالا منم اون تابعی که آقای syntaxheck داده بودند رو این جوری در آورد فکر کنم نحوه فراخوانی اون راحت تر باشه
function FMessageDlg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons): Integer;
begin
with CreateMessageDialog(Msg, DlgType, Buttons) do
begin
FlipChildren(True);
BiDiMode := bdRightToLeft;
Result := ShowModal;
end;
end;
دست آخر ما هم یاد نگرفتیم توی این سایت درست بنویسیم :cry:
اصلاح شده توسط مشاطان