Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.021 c
1-1096778795
Никита
2004-10-03 08:46
2004.10.17
Замена в строке


1-1096628964
It06
2004-10-01 15:09
2004.10.17
Формат даты


14-1095363542
GROL
2004-09-16 23:39
2004.10.17
Delphi 9 - мертвый ребенок?


6-1092160530
new developer
2004-08-10 21:55
2004.10.17
Заголовок письма


3-1095229040
Доктор наук
2004-09-15 10:17
2004.10.17
dbExpress




   Наверх