Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закрытие приложения [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) главной формы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо