31 Temmuz 2014 Perşembe

Formun handle ile eventini yakalama

Merhabalar,

Kolay bi olay fakat her zaman ki gibi unutup tekrar aramamak için bloğumda yayınlıyorum :)

Olayımız delphinin bize sunduğu eventler haricinde eventleri yakalamaktır.

XE5 ile test ettim sorunsuz çalışmakta. Eğer ekli değilse "Winapi.Windows, Winapi.Messages" Kütüphanelerini eklemenizi rica edicem.


  
//Tanımlanması gereken procedure 
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;


procedure TMainForm.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType = SC_MINIMIZE) then
  begin
//Burası eğer küçültme işlemi yapılırsa ne yapmak istediğiniz.
  end;

   DefaultHandler(Msg) ;
end;



Sizlere "SC_MINIMIZE" haricinde kontrol edebileceğiniz eventleri aşağıda yazmış bulunmaktayım artık gerisi amaca hizmet edecek olan kodlardır.


SC_SIZE = 61440;
SC_MOVE = 61456;
SC_MINIMIZE = 61472;
SC_MAXIMIZE = 61488;
SC_NEXTWINDOW = 61504;
SC_PREVWINDOW = 61520;
SC_CLOSE = 61536;
SC_VSCROLL = 61552;
SC_HSCROLL = 61568;
SC_MOUSEMENU = 61584;
SC_KEYMENU = 61696;
SC_ARRANGE = 61712;
SC_RESTORE = 61728;
SC_TASKLIST = 61744;
SC_SCREENSAVE = 61760;
SC_HOTKEY = 61776;
SC_DEFAULT = 61792;
SC_MONITORPOWER = 61808;
SC_CONTEXTHELP = 61824;
SC_SEPARATOR = 61455;