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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2011, 18:22   #1
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию Закрытие формы при потере фокуса

Здравствуйте.
Подскажите пожалуйста, как сделать, чтобы при потере фокуса главная форма (или любая дочерняя) закрывалась?

Процедура TForm1.FormDeactivate(Sender: TObject); не подходит, так как не работает за пределами окна программы.
Нужно, чтобы при клике на любое открытое окно в системе или по рабочему столу форма закрывалась.

Последний раз редактировалось werrey; 18.11.2011 в 18:32.
werrey вне форума Ответить с цитированием
Старый 18.11.2011, 21:17   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А что, в хэлп заглянуть религия не позволяет ?
Там даже пример приведен...
Цитата:
OnDeactivate event (TApplication)
OnDeactivate, Minimize example
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;
mihali4 вне форума Ответить с цитированием
Старый 18.11.2011, 23:17   #3
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

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

Последний раз редактировалось werrey; 18.11.2011 в 23:42.
werrey вне форума Ответить с цитированием
Старый 18.11.2011, 23:48   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А что, все еще остались "непонятки" ?
mihali4 вне форума Ответить с цитированием
Старый 18.11.2011, 23:59   #5
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А что, все еще остались "непонятки" ?
Ну я не спец как Вы, мне нужен полноценный пример, хотя я уже знаю, что Вы даёте только приблизительный ответ, для дальнейшими дошевелениями мозгами, но мне хотелось бы рабочий пример!
werrey вне форума Ответить с цитированием
Старый 19.11.2011, 00:40   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Я дал полноценный пример...
Вам трудно поменять
Код:
Application.Minimize;
на
Код:
Close;
???
Ну, тогда я бессилен...
mihali4 вне форума Ответить с цитированием
Старый 19.11.2011, 00:41   #7
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Код:
procedure TForm1.FormDeactivate(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnDeactivate := Form1.FormDeactivate;
end;
ДралсяСошибками вне форума Ответить с цитированием
Старый 19.11.2011, 01:03   #8
pastuhdima
Немного нуб
Пользователь
 
Аватар для pastuhdima
 
Регистрация: 01.10.2011
Сообщений: 41
Подмигивание Ешьте на здоровье

Создал таймер и прописал в MouseLeave(хотя это может быть и не обязательно)
Код:
procedure TForm1.FormMouseLeave(Sender: TObject);
begin
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if form1.focused=false then form1.close;
end;
pastuhdima вне форума Ответить с цитированием
Старый 19.11.2011, 02:09   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от pastuhdima Посмотреть сообщение
Создал таймер и ...[/CODE]
Вы хотя бы удосужились внимательно прочитать первый пост :
Цитата:
Сообщение от werrey Посмотреть сообщение
Нужно, чтобы при клике на любое открытое окно в системе или по рабочему столу форма закрывалась.
mihali4 вне форума Ответить с цитированием
Старый 19.11.2011, 02:16   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Mihali4, но в первом посте в начале есть это
Цитата:
Подскажите пожалуйста, как сделать, чтобы при потере фокуса главная форма (или любая дочерняя) закрывалась
и оно в общем практически не противоречит
Цитата:
Нужно, чтобы при клике на любое открытое окно в системе или по рабочему столу форма закрывалась.
Хотя закрытие по таймеру не лучший вариант

ADD И вообще фокус не обязательно по клику на другое окно может уйти
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.11.2011 в 02:20.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытие или закрытие главной формы mental Общие вопросы Delphi 6 11.10.2011 13:46
Цикл при создании главной формы Anfall Общие вопросы Delphi 8 19.08.2010 19:09
Закрытие формы при работе с SelectDirectory Shouldercannon Общие вопросы Delphi 5 14.07.2010 19:51
Закрытие главной формы Nantaur Общие вопросы C/C++ 0 14.05.2010 16:47
Можно ли отлавливать событие потери фокуса Control'ом tolikman Microsoft Office Excel 2 09.01.2009 15:02