PDA

View Full Version : messagebox در دلفی



lajevardi106
پنج شنبه 02 آذر 1385, 10:27 صبح
چگونه میتوان دکمه پیش فرض به messagebox داد
یعنی مثلا پیش فرض آنرا که Yes است به No‌ تبدیل نماییم

dkhatibi
پنج شنبه 02 آذر 1385, 13:23 عصر
به این صورت می تونی!


messagebox(0,'sdfdsf','sdfdsf',mb_yesno+MB_DEFBUTT ON2);

Hamid_PaK
پنج شنبه 02 آذر 1385, 13:45 عصر
چطوری نام YES رو به بله تبدیل کنیم ...
البته MessageBox رو می خواهم با MessageDlg امکان پذیر هست و کد رو دارم .

با تشکر ، یا حق ...

dkhatibi
پنج شنبه 02 آذر 1385, 14:19 عصر
نمی دونم چه لزومی داره که از MessageBox استفاده کنی !
اگه می خوای دیالوگ رو بمونه و از کدی مشابه اون کدی که من دیدم برای تغییر کپشن دکمه ها استفاده کردی!چون تابع CreateMessageDialog یک متغیر از نوع Tform بر می گردونه می تونی با اون مثل یک فرم رفتار کنی.یعنی خاصیت FormStyle اونو به fsStayOnTop تغییر بدی!

خطی که باستاره مشخص شده در تابع زیر ببین.


function MyMessageDialog(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; Captions: array of string): Integer;
var
aMsgDlg: TForm;
i: Integer;
dlgButton: TButton;
CaptionIndex: Integer;
begin
{ Create the Dialog }
{ Dialog erzeugen }
aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
aMsgDlg.FormStyle:=fsStayOnTop; //******************
captionIndex := 0;
{ Loop through Objects in Dialog }
{ Über alle Objekte auf dem Dialog iterieren}
for i := 0 to aMsgDlg.ComponentCount - 1 do
begin
{ If the object is of type TButton, then }
{ Wenn es ein Button ist, dann...}
if (aMsgDlg.Components[i] is TButton) then
begin
dlgButton := TButton(aMsgDlg.Components[i]);
if CaptionIndex > High(Captions) then Break;
{ Give a new caption from our Captions array}
{ Schreibe Beschriftung entsprechend Captions array}
dlgButton.Caption := Captions[CaptionIndex];
Inc(CaptionIndex);
end;
end;
Result := aMsgDlg.ShowModal;
end;

Hamid_PaK
جمعه 03 آذر 1385, 18:31 عصر
لزومی در استفاده از MessageBox که از توابع API هست نداریم ، می خواستم بدونم این کار امکان پذیر هست یا نه ...

با تشکر ، یا حق ...

dkhatibi
جمعه 03 آذر 1385, 18:45 عصر
لزومی در استفاده از MessageBox که از توابع API هست نداریم ، می خواستم بدونم این کار امکان پذیر هست یا نه ...

با تشکر ، یا حق ...
شما می خواستید بدونید یا آقای ajevardi106

سینا سلگی نهاوندی
پنج شنبه 14 اردیبهشت 1396, 22:05 عصر
سلام. لطفا یکی کار با messagebox رو یاد بده. ممنون

vahidenglish
چهارشنبه 28 تیر 1396, 23:33 عصر
سلام . بهترین زبان برای انجام کارهای جالب روی messagebox و سایر عناصر رابط گرافیکی کاربر برنامه ها ، زبان اسمبلی می باشد چون در اسمبلی دست شما کاملا باز است و با کمک توابع API و ثابتهای انها می توانید هر تغییر دلخواهی را در عناصر گرافیکی برنامه انجام دهید .
برای اینکار اسمبلرهای masm و Fasm گزینه های بسیار خوبی هستند .
اما خب حقیقتا دلفی یک زبان عالی از هر نظر می باشد زیرا بخوبی از زبان اسمبلی استفاده می کند و قدرت و انعطاف پذیری نامحدود اسمبلی را همراه با گرامر بسیار ساده خوانا قابل فهم و عالی پاسکال را یکجا به برنامه نویس تحویل می دهد .
برای استفاده از messagebox در دلفی بهتر است از تابع MessageBox استفاده کنید که تابع API ویندوز است و خودش جزئیات کار را به شما نشان می دهد . ترجیحا دلفی 6 بواسطه ی استفاده ی کامل از زبان اسمبلی و توابع ویندوز توصیه می شود . به مستندات این تابع در MSDN ویندوز مراجعه کنید .
من شخصا در میان زبانهای سطح بالا زبان پاسکال و ویراستار قدرتمندش یعنی دلفی 6 را خیلی دوست دارم .
پاسکال سطح بالاترین و قابل فهمترین زبان برنامه نویسی سیستمی ناتیو کد جهان است اما بواسطه ی استفاده از اسمبلی قدرت بسیار زیادی برای تولید برنامه های سیستمی دارد که متاسفانه کمتر کسی در دنیا به این موضوع توجه می کند .
تابع MessageBox را دقیقا به همین شکل در دلفی 6 بنویسید خودش بصورت اتوماتیک سایر اجزای انرا به شما نشان می دهد .
متاسفانه شرکت بورلند از نسخه 7 به بعد با وارد کردن دات نت به دلفی کار را خراب کرد و خاصیت سیستمی و ناتیو کد بودن دلفی را از بین برد .
می دانم که طرفداران دات نت از حرفهای من بشدت عصبانی می شوند و حتی ممکن است این پست را حذف کنند و به من اخطار دهند ولی من اعتنایی نمی کنم چون از حق دفاع می کنم و گول فناوریهای بظاهر پیشرفته اما فریبنده ی مایکروسافت را نمی خورم . مایکروسافت بزرگترین دشمن زبان اسمبلی و سایر زبانهای خالص استاندارد ناتیو کد می باشد . من با اسمبلی و دلفی 6 تحت ویندوز برنامه نویسی کرده ام و خیلی نکات جالب را کشف کرده ام . زبانهای ناتیو کد اسرار فراوان و جذاب ویندوز را به شما نشان می دهند و این اصلا به مذاق مایکروسافت خوش نمی آید . این شرکت به دلایل واهی فناوری سنگین و حجیم و کند و فریبنده ی دات نت را به زور توی حلق مردم دنیا چپاند و انها را فریب داد . ولی ما برنامه نویسان زبانهای ناتیو کد خصوصا اسمبلی هرگز فریب این سیاستهای مایکروسافت را نمی خوریم . تمامی فناوریهای جدید و پیشرفته ی دات نتی مایکروسافت در مقابل زبانهای ناتیو کد خصوصا اسمبلی هیچ حرفی برای گفتن ندارند . نباید گول ظاهر زیبا و فریبنده ی دات نت را خورد . مایکروسافت به هر دری می زند که برنامه نویسان را محدود کند و انها را تا ابد وابسته کند .