![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перехват закрытия окна
Vazelin © (2006-08-06 19:57:00)Привет всем!
Как можно перехватить нажатие кнопки Х на форме?
Desdechado (2006-08-07 11:47:00) [1]> А если имеется в виду после нажатия не закрывать форму,
> а делать еще что-то
А разве в FormClose нельзя прописать Action:=caNone ?
Ketmar (2006-08-07 10:49:00) [2]> [4] Юрий Зотов © (06.08.06 21:12)
а так, видимо, интересней.
Юрий Зотов (2006-08-06 21:12:00) [3]1. if Msg.CmdType and $FFF0= SC_CLOSE...
2. А зачем вообще все это? Событие OnClose уже отменили?
Zeqfreed (2006-08-06 20:21:00) [4]> Как можно перехватить нажатие кнопки Х на форме?
type
TForm1 = class(TForm)
private
{ Private declarations }
public
procedure WMClose(var Msg : TWMClose); message WM_CLOSE;
procedure WMNCLButtonDown(var Msg : TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
end;
. . .
procedure TForm1.WMClose(var Msg: TWMClose);
begin
if (Tag = 1) then ShowMessage('OMG!!! You hit the close button!');
inherited;
end;
procedure TForm1.WMNCLButtonDown(var Msg: TWMNCLButtonDown);
begin
if (Msg.HitTest = HTCLOSE) then
Tag := 1
else
Tag := 0;
inherited;
end;
DprYg (2006-08-06 20:14:00) [5]А если имеется в виду после нажатия не закрывать форму, а делать еще что-то, то так:
Объявление
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
Реализация
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_CLOSE then ... else inherited;
end;
Rial (2006-08-06 20:10:00) [6]Событие
OnCloseQuery