Главная страница
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.13 c
2-1273166923
worldmen
2010-05-06 21:28
2010.08.27
Ошибка при копиляции из Delphi 7 в Delphi 2010


2-1269947335
Delphist2
2010-03-30 15:08
2010.08.27
EDatabaseError


15-1274560189
Юрий
2010-05-23 00:29
2010.08.27
С днем рождения ! 23 мая 2010 воскресенье


15-1273548240
Учащийся
2010-05-11 07:24
2010.08.27
Схемы хранения матриц.


2-1274121378
man_of_sense
2010-05-17 22:36
2010.08.27
Компонент WebBrowser