Главная страница
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.14 c
2-1265830771
fford
2010-02-10 22:39
2010.08.27
копировать файл на расшареный ресурс


2-1267297747
Первокурсница
2010-02-27 22:09
2010.08.27
Две задачи для первого курса,Delphi


15-1268120656
TUser
2010-03-09 10:44
2010.08.27
В башку сапог!


15-1265999141
OneYoungMan
2010-02-12 21:25
2010.08.27
Linux для старого компьютера...


15-1265651858
OneYoungMan
2010-02-08 20:57
2010.08.27
Речевое общение