Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 1
Регистрация: 08.02.2010
Сообщений: 34
1

Как определить что вызвало событие FormCloseQuery?

20.12.2010, 20:14. Показов 3764. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как в этой процедуре определить что это пользователь пытается закрыть окно а не компьютер пытается выключится или перезагрузиться? То есть закрывать приложение если попытка закрыть его была вызвана системой а не пользователем. А то не удается ни выключить ни перезагрузить комп при запущенном приложении.

Delphi
1
2
3
4
5
procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:=false; //Окно не может быть закрыто.
  GoTray(); //Свернуть приложение в трей.
end;
Добавлено через 4 часа 3 минуты
Если кто то сюда забредет то вот так можно отличить является ли попытка закрытия окна действием пользователя или попыткой ОС перезагрузиться или завершить работу.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  private
    { Private declarations } 
    procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession;
  public
    { Public declarations }
    SysClose:integer;
  end;
 
var
..........................
 
implementation
 
...............................
 
procedure TfrMMain.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  SysClose:=1;
  frmMain.Close;
  Msg.Result := 1; //Можно закрывать
end;
 
 
...............................
 
procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if SysClose = 1 then
  begin
  Disconnect();
  CanClose:=true;
  end
  else
  begin
  CanClose:=false;
  frmMain.Hide;
  end;
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2010, 20:14
Ответы с готовыми решениями:

Default_Handler. Как узнать что вызвало.
Всем привет. Пишу в CooCox для f103. Всё отладил. Но, программа начала вываливаться в...

Что вызвало такую ошибку? Fatal error: Uncaught exception 'InvalidFileException' with message 'Invalid file
Кто подскажет чем вызвана ошибка и как её лечить? Fatal error: Uncaught exception...

Определить вероятность того, что событие появится в указанном интервале
В каждом из независимых испытаний событие А появляется с вероятностью 0.9. Определить вероятность...

MaskedTextBox1 событие по системным часам - что должно вызывать это событие?
Добрый день! Помогите разобраться с ситуацией пожалуйста. На форме висит элемент maskedTextBox с...

0
20.12.2010, 20:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2010, 20:14
Помогаю со студенческими работами здесь

Где находится оброботчик FormCloseQuery?
Где находится оброботчик FormCloseQuery?

В каждом из n независимых испытаний событие А происходит с вероятностью p. Найти вероятность того, что событие А произошло
В каждом из n независимых испытаний событие А происходит с вероятностью p. Найти вероятность того,...

убрать из процедуры FormCloseQuery if then else и заставить работать
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if...

Как прописать то, что должно делать событие?
Как прописать то, что должно делать событие?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru