# Native Code > برنامه نویسی در Delphi >  messagebox در دلفی

## lajevardi106

چگونه میتوان دکمه پیش فرض به messagebox داد
یعنی مثلا پیش فرض آنرا که Yes است به No‌ تبدیل نماییم

----------


## dkhatibi

به این صورت می تونی!

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

----------


## Hamid_PaK

چطوری نام YES رو به بله تبدیل کنیم ...
البته MessageBox رو می خواهم با MessageDlg امکان پذیر هست و کد رو دارم .

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

----------


## dkhatibi

نمی دونم چه لزومی داره که از 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 }
  { &Uuml;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

لزومی در استفاده از MessageBox که از توابع API هست نداریم ، می خواستم بدونم این کار امکان پذیر هست یا نه ...

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

----------


## dkhatibi

> لزومی در استفاده از MessageBox که از توابع API هست نداریم ، می خواستم بدونم این کار امکان پذیر هست یا نه ...
> 
> با تشکر ، یا حق ...


شما می خواستید بدونید یا آقای ajevardi106

----------


## سینا سلگی نهاوندی

سلام. لطفا یکی کار با messagebox رو یاد بده. ممنون

----------


## vahidenglish

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

----------

