Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Закрытие окна   Найти похожие ветки 

 
Major   (2004-10-03 00:48) [0]

Подскажите пожалуйста,   мне нужно сделать так, чтобы окно закрывалось сразу после того, как становится неактивным. Простым способом вызывает ошибку:

procedure TForm1.ApplicationDestroy(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
  ApplicationDestroy:TNotifyEvent;
begin
Application.OnDeactivate:=ApplicationDestroy;
end;

ПОМОГИТЕ PLEASE!


 
KilkennyCat ©   (2004-10-03 00:54) [1]

хм... мож стоит отлавливать потерю фокуса?


 
Palladin ©   (2004-10-03 00:55) [2]

ну и объясни свои мысли в FormCreate...


 
Major   (2004-10-03 00:57) [3]

Потерю фокуса отлавливал, но не получается, приложение либо сразу закрывается, либо вовсе не закрывается....


 
KilkennyCat ©   (2004-10-03 00:58) [4]

Я! я могу!
в онкреате назначается событию ондеактивате выполнять процедурку аппликатиондестрорерррр... где, собссно, пргоа и выключается. Хотя, она уге выклюкается, патамучта одеактиватеруется...


 
KilkennyCat ©   (2004-10-03 01:01) [5]

WM_ACTIVATEAPP
WM_ACTIVATE


 
Palladin ©   (2004-10-03 01:01) [6]

да нет... глупо надеятся что Application.OnDeactivate назначится TForm1.ApplicationDestroy... осталось лишь догадатся почему это глупо..


 
Palladin ©   (2004-10-03 01:03) [7]


>  KilkennyCat ©   (03.10.04 00:58)

На OnDeactivate прога не выключается, просто активной становится не она. Теряет "фокус".


 
KilkennyCat ©   (2004-10-03 01:08) [8]


> Palladin ©   (03.10.04 01:01) [6]


Если серъезно, не знаю. наверное, надо справку читать.

The following code minimizes an application when it’s deactivated. Note that AppDeactivate should be declared a method of TForm1.

procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnDeactivate := AppDeactivate;
end;

procedure TForm1.AppDeactivate(Sender: TObject);
begin
 Application.Minimize;
end;


 
KilkennyCat ©   (2004-10-03 01:09) [9]


> Palladin ©   (03.10.04 01:03) [7]


точно... нетрезв немного... путаюсь. подумал, что это ласт-событие...


 
Palladin ©   (2004-10-03 01:09) [10]


> Если серъезно, не знаю.

Внимательней надо быть.
procedure TForm1.FormCreate(Sender: TObject);
Var
 ApplicationDestroy:TNotifyEvent;

begin
Application.OnDeactivate:=ApplicationDestroy;
end;

и как результат... мусор...


 
KilkennyCat ©   (2004-10-03 01:11) [11]


> Palladin ©   (03.10.04 01:09) [10]


ага. ето и из доки видно.


 
Major   (2004-10-03 01:13) [12]

Кстати пример из справки не работает сам по себе, а при вылавливании потери фокуса программа закрывается сразу после запуска, если так:

If Form1.Focused=false then Application.Terminate;


 
Palladin ©   (2004-10-03 01:18) [13]

ну естественно... TForm.OnCreate вызывается до того как форма получает фокус...


 
KilkennyCat ©   (2004-10-03 01:19) [14]


> Major   (03.10.04 01:13) [12]


что тут можно сказать... если какое-то событие происходит раньше, чем нужно, его обходят флагом.
Пример прекрасно работает, вот полный исходник...

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   procedure AppDeactivate(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AppDeactivate(Sender: TObject);
begin
 Application.Minimize;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnDeactivate := AppDeactivate;
end;

end.


 
Major   (2004-10-03 01:20) [15]

Все, понял ошибку, большое СПАСИБО за помощь!


 
KilkennyCat ©   (2004-10-03 01:20) [16]

Application.Minimize; поменять на терминатора - и все.



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.058 c
14-1096063536
Мазут Береговой
2004-09-25 02:05
2004.10.17
Нашелся советский шатл и гн знают откуда он!


1-1096814924
V l a d i m i r
2004-10-03 18:48
2004.10.17
Экземпляр формы (создание)


1-1096932113
vt
2004-10-05 03:21
2004.10.17
TFrame versus WM_NCHITTEST


14-1096452458
__RusLAN
2004-09-29 14:07
2004.10.17
Админы помогите! Бесплатный прокси + Антивирус


1-1096479492
Trim
2004-09-29 21:38
2004.10.17
Работа с TListView