Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.059 c
15-1274432547
boriskb
2010-05-21 13:02
2010.08.27
Можно не всё сразу а выборочно?


2-1269178623
Delphist2
2010-03-21 16:37
2010.08.27
динамический массив


2-1271953943
Б
2010-04-22 20:32
2010.08.27
Как убрать заголовок окна с панели задач?


2-1267947335
tippa
2010-03-07 10:35
2010.08.27
по структуре LVITEM


2-1265736517
dmitry1208197320
2010-02-09 20:28
2010.08.27
Как можно считать значение не текущей ячейки таблицы?




   Наверх