Application.Messagebox Kullanımı

Application.Messagebox Kullanımını işleyelim.

Application.Messagebox Kullanımını işleyelim.

Kütüphane: Forms

Orjinal Function:


function TApplication.MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;

var

  ActiveWindow, TaskActiveWindow: HWnd;

  WindowList: Pointer;

  MBMonitor, AppMonitor: HMonitor;

  MonInfo: TMonitorInfo;

  Rect: TRect;

  FocusState: TFocusState;

begin

  ActiveWindow := ActiveFormHandle;

  if ActiveWindow = 0 then

    TaskActiveWindow := Handle

  else

    TaskActiveWindow := ActiveWindow;

  MBMonitor := MonitorFromWindow(ActiveWindow, MONITOR_DEFAULTTONEAREST);

  AppMonitor := MonitorFromWindow(Handle, MONITOR_DEFAULTTONEAREST);

  if MBMonitor <> AppMonitor then

  begin

    MonInfo.cbSize := Sizeof(TMonitorInfo);

    GetMonitorInfo(MBMonitor, @MonInfo);

    GetWindowRect(Handle, Rect);

    SetWindowPos(Handle, 0,

      MonInfo.rcMonitor.Left + ((MonInfo.rcMonitor.Right - MonInfo.rcMonitor.Left) div 2),

      MonInfo.rcMonitor.Top + ((MonInfo.rcMonitor.Bottom - MonInfo.rcMonitor.Top) div 2),

      0, 0, SWP_NOACTIVATE or SWP_NOREDRAW or SWP_NOSIZE or SWP_NOZORDER);

  end;

  WindowList := DisableTaskWindows(ActiveWindow);

  FocusState := SaveFocusState;

  if UseRightToLeftReading then Flags := Flags or MB_RTLREADING;

  try

    Result := Windows.MessageBox(TaskActiveWindow, Text, Caption, Flags);

  finally

    if MBMonitor <> AppMonitor then

      SetWindowPos(Handle, 0,

        Rect.Left + ((Rect.Right - Rect.Left) div 2),

        Rect.Top + ((Rect.Bottom - Rect.Top) div 2),

        0, 0, SWP_NOACTIVATE or SWP_NOREDRAW or SWP_NOSIZE or SWP_NOZORDER);

    EnableTaskWindows(WindowList);

    SetActiveWindow(ActiveWindow);

    RestoreFocusState(FocusState);

  end;

end;



Parametreleri [Buttonlar]

-> MB_OK => Tamam
-> MB_OKCANCEL => Tamam - İptal
-> MB_ABORTRETRYIGNORE => Bitir - Tekrar Dene - Yoksay
-> MB_YESNOCANCEL => Evet - Hayır - İptal
-> MB_YESNO => Evet - Hayır
-> MB_RETRYCANCEL => Tekar Dene - iptal


Parametreleri [Iconlar]
Delphi 2007'deki sıraya göre arkadaşlar, Delphi 7'de sanırım daha azdı :)

MB_ICONHAND
Önizleme:





MB_ICONQUESTION
Önizleme:




MB_ICONEXCLAMATION

Önizleme:




MB_ICONASTERISK
Önizleme:




MB_ICONWARNING

Önizleme:




MB_ICONERROR
Önizleme:




MB_ICONINFORMATION
Önizleme:




MB_ICONSTOP
Önizleme:




MB_ICONMASK
Kendi Seçtiğiniz bi icon



Kullanımı :


Application.MessageBox('MESAJ' , 'BAŞLIK', BUTTONLAR or DİALOG ICONU);



öRNEK:


Application.MessageBox('Değişiklikleri Kaydetmek İstiyormusunuz?','abc v1.0', MB_OKCANCEL or MB_ICONQUESTION);



Tıklanan Buttona Göre İşlem Yapmak:

Örnek:

Bir editör yaptınız ve editörde memo kullandığımızı varsayıyoruz.. ve diyoruz ki benim memo düzenlendiyse form kapanırken bana kaydetmek isteyip istemediğimi sorsun...

formun onCloseQuery olayına aşağıdaki kodu yazmamız yeterli olucak...


if Memo1.Modified then  // memo düzenlendiyse ...

  begin

  // değişikliklerin kaydedilim kaydedilmeyeceğini sorsun

   case Application.MessageBox('Değişiklikleri Kaydetmek İstiyormusunuz?','abc v1.0', MB_YESNO or MB_ICONQUESTION) of

    IDYES:  // cevap evetse

     begin

       if SaveDialog1.Execute then  // save dialog penceresini çalıştırsın (çalıştırdıysa)

      memo1.Lines.SaveToFile(SaveDialog1.FileName); // memo nun içindeki veriyi save dialogda seçilen yer ve isme kaydetsin

     end;

    IDNO : // hayır seçilirse ( kaydedilmesin )

  // programın kapatılıp kapatılıcağını sorsun  

    CASE Application.MessageBox('Programı Kapatmak İstediğinizden Eminmisiniz?','ABC V1.0', MB_YESNO or MB_ICONQUESTION) OF

    IDYES : Application.Terminate; // cevap evetse programı sonlandırsın

    IDNO  : abort; // hayır sa işlemi durdursun... 

 end;

 end;

  end;



Ders bana aittir.
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

emeğe saygı çok güzel yapmışsınız teşekkürler

Yukarı Git