![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие приложения [D6, XP]
webpauk © (2007-11-28 15:04:00)Подскажите какое сообщение обрабатывать, если программа закрывается из панели задач.
WM_SYSCOMMAND не реагирует...
Leonid Troyanovsky (2007-11-28 20:27:00) [1]
> Igor Zorkov © (28.11.07 19:03) [6]
> var
> Form1: TForm1;
> MayClose: boolean = false;
Glob var - MD.
> if MayClose = false then
> begin
> CanClose:= false;
> end else
> CanClose:= true
CanClose := MayClose
--
Regards, LVT.
Igor Zorkov (2007-11-28 19:03:00) [2]
var
Form1: TForm1;
MayClose: boolean = false;
implementation
{$R *.dfm}
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MayClose = false then
begin
CanClose:= false;
end else
CanClose:= true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MayClose:= true;
Close;
end;
KSergey (2007-11-28 16:52:00) [3]> webpauk © (28.11.07 15:19) [3]
жестоко...
Вообще-то справка есть, вот и clickmaker выжимку оттуда приводит.
clickmaker (2007-11-28 15:21:00) [4]
> webpauk © (28.11.07 15:19)
Msg.Result := 1;
webpauk (2007-11-28 15:19:00) [5]
if Msg.message = WM_SYSCOMMAND then
begin
if Msg.wParam=sc_close then abort;
inherited;
end;
во!
так работает!!!
webpauk (2007-11-28 15:18:00) [6]
procedure TFormMain.FormCreate(Sender: TObject);
begin
Application.OnMessage:=AppMessage;
end;
procedure TFormMain.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_SYSCOMMAND then
begin
if Msg.wParam=sc_close then exit
else inherited;
end;
end;
сообщение обрабатывается...
только форма усё-равно закрываетца...
Юрий Зотов (2007-11-28 15:10:00) [7]Видимо, все же WM_SYSCOMMAND, но для Application, а не для формы.
См. Application.OnMessage
Но проще - обработать OnClose(Query) главной формы.