Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 718

/ вопрос открыт /

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

Качурин Антон Павлович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Качурин Антон Павлович (статус: Посетитель)
Вопрос отправлен: 9 июля 2007, 22:36
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Качурин Антон Павлович!
>>да еще при этом и бешено мигала
За такие программы надо давать по ушам. Сижу работаю, а тут выкидывает окно, ругается. Вам не жалко свою маму, которую будут вспоминать все пользователи вашей проги???
А теперь о более прозаичном.
вот так можно заставить мигать кнопку на пенели задач
FlashWindow(Application.Handle, True);
По поводу всплытия окна. в 95 виндовс появилась функция для перемешения окна на передный план. программисты пользовались её при любой возможности. пользователи жаловались и майкрософт поправила код. теперь, если окно свёрнуто, то оно не появиться на переднем фоне. Но для своих оставили функцию. Вот она
procedure SwitchToThisWindow(h1: hWnd; x: bool); stdcall;
external user32 Name 'SwitchToThisWindow';
{x = false: Size unchanged, x = true: normal size}


procedure TForm1.Button2Click(Sender: TObject);
begin
SwitchToThisWindow(FindWindow('notepad', nil), True);
end;

Только не спрашивайте меня как это заставить работать. И применяйте на свой страх и риск

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 10 июля 2007, 00:28

Ответ #2. Отвечает эксперт: min@y™

Хочу добавить кусочек своего кода. Я обычно пишу программы, которые при сворачивании пропадают с панели задач и тихо сидят в трее. Если юзер тыкнет 2 раза мышью на её иконке, то она вылезет наверх. Функцию FlashWindow() можешь вставить туда по желанию, я ей не пользуюсь. См. приложение.

Приложение:
  1. procedure TMainForm.AppEventsMinimize(Sender: TObject);
  2. begin
  3. FMinimized:= True;
  4. end;
  5.  
  6. procedure TMainForm.AppEventsRestore(Sender: TObject);
  7. begin
  8. FMinimized:= False;
  9. end;
  10.  
  11. procedure TMainForm.TrayIconDblClick(Sender: TObject);
  12. begin
  13. if FMinimized
  14. then begin
  15. Application.Restore;
  16. Application.BringToFront;
  17. SetActiveWindow(Application.Handle);
  18. SetForegroundWindow(Application.Handle);
  19. end
  20. else Application.Minimize;
  21. end;


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 10 июля 2007, 08:13


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.02 сек.