PDA

View Full Version : نحوه ایجاد message box با دکمه های فارسی



amir_pro
سه شنبه 17 بهمن 1385, 17:16 عصر
سلام به دوستان
آیا روش یا کام÷وننتی وجود داره که بشه توسط اون دکمه های message box را فارسی کرد
ممنون

m-khorsandi
سه شنبه 17 بهمن 1385, 17:58 عصر
جستجو کن،
قرار دادن یک combobox در یک message (http://www.barnamenevis.org/forum/showthread.php?t=60596)

amir_pro
سه شنبه 17 بهمن 1385, 20:50 عصر
ممنون از جوابتون
ولی فکر کنم که این جواب سوال من نبود
سوالم اینه:
چه طور میشه دکمه های یک messagebox را به صورت فارسی به کاربر نشان داد
ممنون

Valadi
سه شنبه 17 بهمن 1385, 20:57 عصر
سرچ کن پیدا می کنی
آقای احدی یک نمونه برنامه در سایتش قرار داده است

dkhatibi
سه شنبه 17 بهمن 1385, 21:22 عصر
ممنون از جوابتون
ولی فکر کنم که این جواب سوال من نبود
سوالم اینه:
چه طور میشه دکمه های یک messagebox را به صورت فارسی به کاربر نشان داد
ممنون

از ابزار TNT استفاده کن.

mohssen_mz
چهارشنبه 18 بهمن 1385, 02:05 صبح
شما میتونی سورس دلفی رو به دلخواه خورت دربیاری به نظر من راحتترین کار همینه

Mohammadi_F
چهارشنبه 18 بهمن 1385, 03:56 صبح
یکی دو سال پیش که دنبال چینین موضوعی بودم کمپوننتی رو بنام MessageDlgs پیدا کردم که همین کار رو می کرد یعنی علاوه بر تمام پارامترهای تابع MessageDlg خود دلفی یک پارامتر اضافی برای زبان داشت و توی خود کمپوننت هم چندین زبان(البته طبق معمول بجز فارسی) پیش بینی شده بود ولی با کمی وقت گذاشت و مطالعه کد برنامه به راحتی تونستم فارسی رو اضافه کنم .
شما یه سرچی توی اینترنت بکن اگه پیدا نشد برات آپ لود می کنم. الان هرچی تو هاردم گشتم نبود.

mzjahromi
چهارشنبه 18 بهمن 1385, 06:45 صبح
یکی از راههائی که برای فارسی کردن کلیه پیغامها و کپشنها میشه استفاده کرد Resource DLL wizard است

vcldeveloper
چهارشنبه 18 بهمن 1385, 07:50 صبح
جستجو کنید............
http://www.barnamenevis.org/forum/showthread.php?t=1022

Mohammadi_F
پنج شنبه 19 بهمن 1385, 03:34 صبح
سلام
من هر چی توی هاردم گشتم نتونستم فایلشو پیدا کنم چون خیلی وقته که ازش استفاده نمی کنم و احتمالا با یک سری فایلهای قدیمی پاکش کردم ولی توی اینترنت که گشتم فایل اصلیش رو پیدا کردم که می تونی از این مسیر دانلود کنی
ftp://ftp.sac.sk/pub/sac/utilprog/messdlgs.zip
یه فایل .pas داره که برای تغییر متن دکمه های Messagedlg در دلفیه ، یه خورده نگاش کنی خودت براحتی می تونی زبان فارسی رو هم اضافه کنی .
بعدش کافیه توی برنامه بجای MessageDlg ، از MessageDlgI استفاده کنی که یه پارامتر اضافه بنام زبان داره .
موفق باشی.

amir_pro
پنج شنبه 19 بهمن 1385, 09:37 صبح
ممنون از دوستان عزیز که جواب دادند
دوست عزیز Mohammadi_F: لینک مشکل داشت-امتحان کردم میگفت این آدرس وجود نداره
ftp://ftp.sac.sk/pub/sac/utilprog/messdlgs.zip

amir_pro
پنج شنبه 19 بهمن 1385, 10:29 صبح
توسط تابعی که یکی از دوستان (SyntaxCheck) نوشته بود کارم حل شد

function FarsiMsg(m:string;mtype:TMsgDlgType):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;

mjdeveloper
جمعه 20 بهمن 1385, 09:56 صبح
من یه تابع نوشتم

ین تابع رو استفاده کنید


ا//------------------Farsi message Dialog ------------------------------------
function msgdlg(CONST Msg:string; DlgTypt:TmsgDlgType;
button:TMsgDlgButtons; Caption:ARRAY OF string;dlgcaption:string): integer;
var
aMsgdlg:TForm;
i:integer;
Dlgbutton:Tbutton;
Captionindex:integer;
begin
amsgdlg:= createMessageDialog(Msg,DlgTypt,button);
aMsgdlg.Caption:=dlgcaption;
aMsgdlg.BiDiMode:=bdRightToLeft;
Captionindex:=0;
for i:= 0 to amsgDlg.componentcount-1 Do
begin
if(amsgDlg.components[i] is Tbutton) then
Begin
dlgbutton:=Tbutton(amsgdlg.components[i]);
if Captionindex <= High(Caption) then
dlgbutton.caption:=caption[captionindex];
inc(captionindex);
end;
end;
Result:=amsgdlg.Showmodal;
end;
//---------------------------------------------------------------------------
طریقه استفاده
MsgDlg('خطا در ',mtError,[mbOk],['تائید'],'خطا');
یا
if MsgDlg('آیا مطمئن هستید؟',mtWarning,[mbYes,mbNo],['بله','خیر'],'اخطار')=mryes then
-------------------------------------------------------------------

موفق باشید
مهدی جعفری

nasr
جمعه 20 بهمن 1385, 14:43 عصر
کد ها را اینطور بنویسید بهتره

//------------------Farsi message Dialog ------------------------------------
function msgdlg(CONST Msg:string; DlgTypt:TmsgDlgType;
button:TMsgDlgButtons; Caption:ARRAY OF string;dlgcaption:string): integer;
var
aMsgdlg:TForm;
i:integer;
Dlgbutton:Tbutton;
Captionindex:integer;
begin
amsgdlg:= createMessageDialog(Msg,DlgTypt,button);
aMsgdlg.Caption:=dlgcaption;
aMsgdlg.BiDiMode:=bdRightToLeft;
Captionindex:=0;
for i:= 0 to amsgDlg.componentcount-1 Do
begin
if(amsgDlg.components[i] is Tbutton) then
Begin
dlgbutton:=Tbutton(amsgdlg.components[i]);
if Captionindex <= High(Caption) then
dlgbutton.caption:=caption[captionindex];
inc(captionindex);
end;
end;
Result:=amsgdlg.Showmodal;
end;
//---------------------------------------------------------------------------
طریقه استفاده
MsgDlg('خطا در ',mtError,[mbOk],['تائید'],'خطا');
یا
if MsgDlg('آیا مطمئن هستید؟',mtWarning,[mbYes,mbNo],['بله','خیر'],'اخطار')=mryes then

Mohammadi_F
شنبه 21 بهمن 1385, 04:48 صبح
خوشحالم که مشکلتون حل شد ولی من لینک رو یه بار دیگه از آخرین تاپیکتون اجرا کردم و بدون مشکل خاصی اجرا شد.
به هر حال موفق باشید.

Valadi
شنبه 21 بهمن 1385, 08:20 صبح
این هم نمونه برنامه MessageDlg - Farsi
این برنامه توسط آقای احدی نوشته شده است

dkhatibi
شنبه 21 بهمن 1385, 16:20 عصر
رو کامپیوتر من کد بالا جواب مطلوب نمی داد ، یک خط بهش اضافه کردم.

mjdeveloper
پنج شنبه 10 اسفند 1385, 12:04 عصر
ممنون از جوابتون
ولی فکر کنم که این جواب سوال من نبود
سوالم اینه:
چه طور میشه دکمه های یک messagebox را به صورت فارسی به کاربر نشان داد
ممنون

من در این بخش نوشتم جستجو کن

mjdeveloper
پنج شنبه 10 اسفند 1385, 12:05 عصر
من در این بخش نوشتم جستجو کن

//------------------Farsi message Dialog ------------------------------------
function msgdlg(CONST Msg:string; DlgTypt:TmsgDlgType;
button:TMsgDlgButtons; Caption:ARRAY OF string;dlgcaption:string): integer;
var
aMsgdlg:TForm;
i:integer;
Dlgbutton:Tbutton;
Captionindex:integer;
begin
amsgdlg:= createMessageDialog(Msg,DlgTypt,button);
aMsgdlg.Caption:=dlgcaption;
aMsgdlg.BiDiMode:=bdRightToLeft;
Captionindex:=0;
for i:= 0 to amsgDlg.componentcount-1 Do
begin
if(amsgDlg.components[i] is Tbutton) then
Begin
dlgbutton:=Tbutton(amsgdlg.components[i]);
if Captionindex <= High(Caption) then
dlgbutton.caption:=caption[captionindex];
inc(captionindex);
end;
end;
Result:=amsgdlg.Showmodal;
end;
//---------------------------------------------------------------------------
طریقه استفاده
MsgDlg('خطا در ',mtError,[mbOk],['تائید'],'خطا');
یا
if MsgDlg('آیا مطمئن هستید؟',mtWarning,[mbYes,mbNo],['بله','خیر'],'اخطار')=mryes then

mjdeveloper
پنج شنبه 10 اسفند 1385, 12:10 عصر
//------------------Farsi message Dialog ------------------------------------
function msgdlg(CONST Msg:string; DlgTypt:TmsgDlgType;
button:TMsgDlgButtons; Caption:ARRAY OF string;dlgcaption:string): integer;
var
aMsgdlg:TForm;
i:integer;
Dlgbutton:Tbutton;
Captionindex:integer;
begin
amsgdlg:= createMessageDialog(Msg,DlgTypt,button);
aMsgdlg.Caption:=dlgcaption;
aMsgdlg.BiDiMode:=bdRightToLeft;
Captionindex:=0;
for i:= 0 to amsgDlg.componentcount-1 Do
begin
if(amsgDlg.components[i] is Tbutton) then
Begin
dlgbutton:=Tbutton(amsgdlg.components[i]);
if Captionindex <= High(Caption) then
dlgbutton.caption:=caption[captionindex];
inc(captionindex);
end;
end;
Result:=amsgdlg.Showmodal;
end;
//---------------------------------------------------------------------------
طریقه استفاده
MsgDlg('خطا در ',mtError,[mbOk],['تائید'],'خطا');
یا
if MsgDlg('آیا مطمئن هستید؟',mtWarning,[mbYes,mbNo],['بله','خیر'],'اخطار')=mryes then

babak869
پنج شنبه 10 اسفند 1385, 12:33 عصر
این هم نمونه برنامه MessageDlg - Farsi
این برنامه توسط آقای احدی نوشته شده است

جناب ولدی عزیز سلام
از محبت شما ممنونم .اما من این برنامه رو ننوشتم .من فقط کدی رو که توی سایت دوستان زحمت کشیده بودند و نوشته بودند بصورت نمونه درآوردم اما متاسفانه نام منبع و نویسنده اون خاطرم نیست
موفق باشید

ashkan2005
یک شنبه 12 فروردین 1386, 12:21 عصر
با سلام خدمت همه دوستان
می خواستم ببینم میشه در دگمه های که در messagedlg به وجود میاند کاری کرد که اگه دگمه yes رو فشار بدیم یه پیغام و اگه no رو فشار بدیم یه پیغام دیگه رو نشان بده (منظورم اینه که چطور میشه به rersult دگمه ها دسترسی پیدا کرد)

hr110
یک شنبه 12 فروردین 1386, 12:29 عصر
messagedlg یک مقدار word برمیگرداند که همان کلید فشار داده شده است.



MessageDlg returns the value of the button the user selected. The following table lists the TMsgDlgBtn values for each type of button that can appear in the message box, and the corresponding value that is returned if the user selects that button:
TMsgDlgBtn Value Corresponding return value :

mbOk > mrOk
mbOK > mrOk
....

ashkan2005
یک شنبه 12 فروردین 1386, 13:13 عصر
messagedlg یک مقدار word برمیگرداند که همان کلید فشار داده شده است.



MessageDlg returns the value of the button the user selected. The following table lists the TMsgDlgBtn values for each type of button that can appear in the message box, and the corresponding value that is returned if the user selects that button:
TMsgDlgBtn Value Corresponding return value :

mbOk > mrOk
mbOK > mrOk
....

با سلام
من همان مثالی رو که در help دلفی وجود داره استفاده کردم بدون هیچ error ی اجرا می شه ولی هر یک از دگمه ها رو فشار می دم یه کار مشخص رو انجام می ده(یعنی mr رو نممی شناسه)
procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlg('Welcome to my Delphi application. Exit now?',
mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then
begin
MessageDlg('Exiting the Delphi application.', mtInformation,
[mbOk], 0, mbOk);
Close;
end;
end;
در ضمن Unit
QDialogs رو هم اضافه کردم .

Hamid_PaK
یک شنبه 12 فروردین 1386, 14:04 عصر
از ID (بطور مثال ID_YES و یا IDYES) استفاده کنید ...

یا حق ...

ashkan2005
یک شنبه 12 فروردین 1386, 18:04 عصر
از ID (بطور مثال ID_YES و یا IDYES) استفاده کنید ...

یا حق ...
با تشکر از شما
بله باید از idاستفاده کرد و Qdialog هم جواب نمی ده باید از خود dialog در قسمت uses استفاده کرد.

jafari1
یک شنبه 12 فروردین 1386, 18:55 عصر
یکی از راههائی که برای فارسی کردن کلیه پیغامها و کپشنها میشه استفاده کرد Resource DLL wizard است
__________________


جناب آقای مدیر ارشد
ضمن سلام حال که لطف کردید و این مسئله را مطرح کردید اگر زحمتی نیست در باره نحوه ایجاد و نیز چگونگی استفاده آن توضیح دهید

jafari1
پنج شنبه 17 خرداد 1386, 21:19 عصر
با سلام خدمت مدیر ارشد
من 2 ماه است که منتظر جواب شمایم

Hamid_PaK
جمعه 18 خرداد 1386, 04:24 صبح
دوست عزیز تغییر ریسورسها تنها برای استفاده در پیغامهایی است که در نمایش آن به نحوی از ریسورس استفاده شود ، ولی MessageBox ریسورسهایش را از داخل برنامه شما فراخوانی نمی کند که با تغییر ریسورس برنامه بتوان آنها را تغییر داد ...

یا حق ...