Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2008, 11:26   #1
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию Отлов событий

Здравствуйте.скажите пож... как можно отловить событие CLOSE формы.
Событие MINIMIZE формы я отлавливаю след. образом:
Код:
Procedure TForm1.WindowMessage (Var Msg:TMessage);
begin
  if Msg.WParam=SC_MINIMIZE then
    begin
      //Сворачиваю прогу в Tray
      Form1.Hide;
      TrayIcon1.IconVisible := True;
    end
  else inherited;
end;
А вот с CLOSE никак не получается.
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Старый 22.10.2008, 11:44   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это, ну очень сложно...
FormClose или Form.OnClose
Стандартное событие у формы, наблюдается в инспекторе объектов, на 2-й вкладке...
mihali4 вне форума Ответить с цитированием
Старый 25.10.2008, 22:38   #3
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

mihali4, конечно большое спасибо, но жаль что Вы не заметили кода, который указан в моем вопросе. Хотя конечно возможно я недостаточно четко пояснил условия задачи. Дело в том, что моя прога должна сворачиватся в Tray и на событие MINIMIZE и на событие CLOSE, а если зделать при помощи обработки события формы OnCloseQuery, то прога не даст перезагрузить или выключить комп.

Вообщем то решение я нашел это:
Код:
//Отлавливаем события формы, когда MINIMIZE или CLOSE сворачиваем её в Tray
Procedure TForm1.WindowMessage (Var Msg:TMessage);
begin
  if (Msg.WParam=SC_MINIMIZE) or (Msg.WParam=SC_CLOSE) then
    begin
      Form1.Hide;
      TrayIcon1.IconVisible := True; // минимизируемся
      Msg.result:=1; // и больше ни чего не делаем
    end
  else
    inherited; //Делаем, что положено
end;
Надеюсь кому-нибудь это решение пригодится...
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Старый 26.10.2008, 10:20   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Но все равно должна быть возможность закрыть программу (например, из меню в трее)?
Почему бы не сделать глобальную переменную
aClose: Boolean;
При создании формы
aClose := False;
В обработчике OnCloseQuery
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := aClose;
  Application.Minimize;
end;
А при клике в меню (где нужно действительно закрыть)
Код:
 
 aClose := True;
  Close;
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обраьотка событий Geddar PHP 5 04.07.2008 23:53
Проверка событий в onCreate Михаил Юрьевич Общие вопросы Delphi 5 12.06.2008 13:17
Отлов кликов мыши LAFUDR Помощь студентам 9 24.05.2008 01:32
Sreen Saver отлов событий Alexoid Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 28.04.2008 15:41
обработчик событий ben95 Помощь студентам 5 28.01.2008 17:46