Kullanıcı

Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.
E-posta adresinize aktivasyon iletisi gelmediyse lütfen buraya tıklayın.
30 Temmuz 2010 09:44:35

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Sohbet Penceresi

Son 5 Notlar:

09 Temmuz 2010 15:09:00
merhaba arkadaÅŸlar ilk defa bi soru soracam
son olarak üzerinde çalıştığım bi proğramda sorun var
datadan belirli bi kritere göre arama yapıyor bunlardan çift olanları teke düşürüp gride nasıl yazdıra bilirim
örnek vererek anlatırsam daha sağlam olur sanırsam

datadan k
10 Temmuz 2010 03:07:46
GÜZEL SİTE SEVDİM ;D
14 Temmuz 2010 14:45:20
aloo nasılsınız...
15 Temmuz 2010 18:16:38
 maske msnden bi konuÅŸalım kanky.
17 Temmuz 2010 15:16:16
ınterbase procedure soruma cevap verecek sevgili bir kul yokmu arkadaşlar ?

Show 50 latest

Gönderen Konu: application.messagebox kullanımı  (Okunma sayısı 1223 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı barutali

  • Global Moderatör
  • *****
  • İleti: 1.316
  • Rep: +38/-0
  • Cinsiyet: Bay
  • Falan filan ...
application.messagebox kullanımı
« : 30 Haziran 2009 11:34:27 »
Kütüphane : Forms

Orjinal Function :

Kod: (delphi) [Seç]

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ı :

Kod: (delphi) [Seç]


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


öRNEK:

Kod: (delphi) [Seç]

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...
Kod: (delphi) [Seç]

 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;



Bazı Açıklamalar :


1 ) Konunun yazımı tamamen bana aittir... Yazıda eksik veya yanlış gördüğünüz yerleri lütfen söyleyiniz..

2 ) Bu yazı burdan ( ç )alınır gider başka sitelerde yayınlancak olursa adımı yazmayın ama www.delphidunyasi.net ten alıntıdır demenizi rica ediyorum..

3) resimlerden bazıları için "Yanlış yüklemiş galiba bunlardan bazıları birbirine benziyor" demeyin ben yapmadım delphi öyle yapmış bazılarının icon ları aynı.. çıkardıkları sesler farklı ....








« Son Düzenleme: 30 Haziran 2009 12:12:57 by barutali »
En İyi Öğrenme Metodu Yaparak ve Yaşayaraktır.
M.Kemal ATATÜRK

Çevrimdışı Opt2000

  • Global Moderatör
  • *****
  • İleti: 240
  • Rep: +9/-1
  • Cinsiyet: Bay
Ynt: application.messagebox kullanımı
« Yanıtla #1 : 30 Haziran 2009 12:06:51 »
Selam,

Kodda ufak bir hata var gibi geldi bana. Memo1'de değişiklik yapın ve programı kapatmaya çalışın. Programı kapatmak istiyor musunuz? diye sormayacak. Bunu bilerek yapmış olabilirsiniz. Eğer öyle ise bence bir mantık hatası var. Olması gereken, önce programı kapatmak istiyor musunuz diye sorması, daha sonra da eğer evet cevabı vermişse, değişiklikleri kaydetmek istiyor musunuz sorusunu sormalı. Ya da tam tersi, ama kullanıcı programı kapatmayacaksa niye kaydettirelim?

Önemli bir detay değil, ama ben illa en doğru kodu yazacağım diyorsanız, aşağıdaki gibi düşünmelisiniz.
Application.MessageBox('MESAJ' , 'BAŞLIK', BUTTONLAR or DİALOG ICONU);

Fark 3. parametrede + yerine or kullanımıdır. OR bu fonksiyonda + ile aynı şekilde çalıştığı için fark belli olmuyor, ama normalde yapılması gereken işlem toplama değil, OR işlemidir. Bu sadece takıntılı olanlar için geçerli (Mesela ben :) )

Kolay gelsin,
Bahadır Alkaç

Çevrimdışı barutali

  • Global Moderatör
  • *****
  • İleti: 1.316
  • Rep: +38/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: application.messagebox kullanımı
« Yanıtla #2 : 30 Haziran 2009 12:12:12 »
@Opt2000 hocam düzeltme yaptığınız için çok teÅŸekkür ederim orda "or" kullanılabildiÄŸini bilmiyordum. Alışkanlıktan gelme "+" koydum :D bu yüzden zaten bazı açıklamalar kısmında ilk seçenekte yanlış gördüğünüz yerleri lütfen belirtin diye söyledim mesajımı hemen düzenliyorum. Yeniden TeÅŸekkür ederim sayenizde yeni birÅŸey daha öğrenmiÅŸ oldum ve bu mesajı gören belkide birçok kiÅŸide benim gibi yeni öğrenmiÅŸ olcak :)
« Son Düzenleme: 30 Haziran 2009 12:13:49 by barutali »
En İyi Öğrenme Metodu Yaparak ve Yaşayaraktır.
M.Kemal ATATÜRK