PDA

View Full Version : سوال در مورد MessageDlg



dana74
پنج شنبه 02 خرداد 1387, 07:58 صبح
سلام. میخوام در برنامه ، پیامهایی که با MessageDlg میدم، رنگ و بوی فارسی داشته باشه. برای همین منظور متن کلمات Yes , No , .... که توسط MessageDlg نمایش داده میشه را در فایل Consts.pas دلفی به معادل فارسی آنها (بله ، خیر ،...) تغییر دادم. تا اینجای کار مشکلی نیست.
حالا میخوام ترتیب نمایش دکمه ها را از راست به چپ کنم یعنی دکمه "بله" در سمت راست دکمه "خیر" قرار بگیره.
اگه اینکار را با تغییر TMsgDlgBtn در فایل Dialogs انجام بدم اونوقت نمیتونم دکمه پیش فرض را تعیین کنم!
اگه کسی در این موردها کار کرده لطفا راهنمائی کنه!

با تشکر

Valadi
پنج شنبه 02 خرداد 1387, 10:02 صبح
قبل از اینکه شما خودتون به زحمت بی اندازید زحمت سرچ کوچک در سایت بکشید چون قبلا این موضوع در سایت مطرح و حل شده است
موفق وموید باشید

dana74
شنبه 04 خرداد 1387, 08:43 صبح
اینکار را کردم چیزی پیدا نکردم:ناراحت:

hr110
شنبه 04 خرداد 1387, 08:53 صبح
http://barnamenevis.org/forum/showthread.php?t=97743

dana74
شنبه 04 خرداد 1387, 11:41 صبح
http://barnamenevis.org/forum/showthread.php?t=97743
ضمن تشکر از شما من روشی دیگه هم پیدا کردم که حتی میتونیم جای دکمه های "بله" و "خیر" را هم عوض کنیم:
استفاده مستقیم از تابع CreateMessageDialog
اگر کسی میخواد بگه تا توضیح بیشتر بدم.

skmkh6056
یک شنبه 05 خرداد 1387, 07:55 صبح
ضمن تشکر از شما من روشی دیگه هم پیدا کردم که حتی میتونیم جای دکمه های "بله" و "خیر" را هم عوض کنیم:
استفاده مستقیم از تابع CreateMessageDialog
اگر کسی میخواد بگه تا توضیح بیشتر بدم.

اگه توضیح بدین ممنون میشم. مر30

dana74
سه شنبه 07 خرداد 1387, 15:53 عصر
اگه توضیح بدین ممنون میشم. مر30
با کمال میل!
من در برنامه بجای استفاده از یونیت Dialogs ، از یونیتی که خودم ساختم (FarsiDialogs) استفاده میکنم که این یونیت هم در درون خودش از یونیت FarsiConsts استفاده میکند. لذا شما بایستی در قسمت uses یونیت خودتان عبارت Dialogs را حذف و بجای آن FarsiDialogs را تایپ کنید. ایندو فایل را آپلود میکنم.
حال تابع زیر را جهت نمونه برای دیالوگ باکسی که فقط دکمه های "بله" و "خیر" دارد نوشتم شما میتونید اونو هر جور که خواستید تغییر دهید:


function myMessageDlgYesNo(const Msg: string; DlgType: TMsgDlgType) : boolean;
var
i, l1, l2, b1, b2: integer;
begin

with CreateMessageDialog(msg,DlgType ,[mbYes,mbNo]) do
try
Caption := 'Ýí';
// Color := clRed;
// go through all the components on the form
for i := 0 to ComponentCount - 1 do
// if we have a button …
if Components[i] is TButton then
if TButton(Components[i]).ModalResult =
mrYes then
begin
L1 := TButton(Components[i]).Left;
b1 := i;
end
else // otherwise it’s the ‘No’ button
begin
L2 := TButton(Components[i]).Left;
b2 := i;
end;
TButton(Components[b1]).Left := L2;
TButton(Components[b2]).Left := L1;
if ShowModal() <> mrYes then
result := false
else
result := true;

finally
Free();
end;

end;


اگه کاربر روی دکمه "بله" کلیک کنه، مقدار true وگرنه مقدار false توسط تابع فوق برگردانده میشه.