Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

сворачивание программы на панель задач   Найти похожие ветки 

 
Mery   (2010-02-05 09:12) [0]

Каким образом организовать сворачивание запущенной программы на панель задач при сворачивании какого-либо формы программы?


 
И. Павел ©   (2010-02-05 10:09) [1]

Открывайте формы через ShowModal и таких проблем не возникнет.
Если ShowModal не подходит, может быть стоит перейти на MDI?


 
И. Павел ©   (2010-02-05 10:17) [2]

Если и MDI не устроит, то ловите сообщение WM_SYSCOMMAND, в параметрах смотрим SC_MINIMIZE. И пишете: Application.Minimize;


 
И. Павел ©   (2010-02-05 10:19) [3]

Хотя правильнее ловить WM_SIZE:

void OnSize( UINT nType, int cx, int cy );

nType
Specifies the type of resizing requested. This parameter can be one of the following values:
SIZE_MAXIMIZED   Window has been maximized.
SIZE_MINIMIZED   Window has been minimized.
SIZE_RESTORED   Window has been resized, but neither SIZE_MINIMIZED nor SIZE_MAXIMIZED applies.
SIZE_MAXHIDE   Message is sent to all pop-up windows when some other window is maximized.
SIZE_MAXSHOW   Message is sent to all pop-up windows when some other window has been restored to its former size.
cx
Specifies the new width of the client area.
cy
Specifies the new height of the client area.


 
Mery   (2010-02-05 13:21) [4]

>И. Павел ©   (05.02.10 10:19) [3]
>Хотя правильнее ловить WM_SIZE:
прошу прощения за тупость, но не понимаю, где конкретно, в каком свойстве окна ловить сообщение и вообще как это выглядит.
то что Application.Minimize свернёт всё моё приложение я понимаю, но не знаю куда это вставить при минимизации дочерней формы.
кстати да, использую я ShowModal.


 
Mery   (2010-02-05 14:09) [5]

исчерпывающий ответ нашла здесь
http://www.delphisources.ru/pages/faq/base/min_not_main.html


 
И. Павел ©   (2010-02-05 14:15) [6]

1) Помещаете на форму компонент TApplicationMessage (из Additional)
2) Создаете обработчик события OnMessage
3) В этом обработчике определяете - нужное ли сообщение поймалось и, если да - реагируете на него.
Вот, например, код, переводящий прокрутку колеса мышки в нажатие клавим управления курсором:
procedure TMainForm.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
var
 i: SmallInt;
begin
 if Msg.message = WM_MOUSEWHEEL then
 begin
   Msg.message := WM_KEYDOWN;
   Msg.lParam := 0;
   i := HiWord(Msg.wParam);
   if i > 0 then
     Msg.wParam := VK_UP
   else
     Msg.wParam := VK_DOWN;
     Handled := False;
 end;
end;

Ну есть и другие способы: http://www.cyberguru.ru/programming/delphi/message-methods.html


 
И. Павел ©   (2010-02-05 14:17) [7]

Опоздал :)
Правда, если не ошибаюсь, у WM_SYSCOMMAND была какая-то тонкость. Какая - уже не помню - но вроде бы он перехватывал только сворачивание из системного меню.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.244 c
2-1272851119
Delphist2
2010-05-03 05:45
2010.08.27
присваивание обработчика


2-1274871683
AbdreyZAA
2010-05-26 15:01
2010.08.27
Как узнать заряд каждой батареии?


15-1274128191
Юрий
2010-05-18 00:29
2010.08.27
С днем рождения ! 18 мая 2010 вторник


2-1268287795
zod2009
2010-03-11 09:09
2010.08.27
Получить дату первого числа, тякущего месяца


2-1267776768
Константин
2010-03-05 11:12
2010.08.27
Сортировака с помощью TObjectList