Вниз
Скачать: 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.046 c
2-1271431396
Nikru
2010-04-16 19:23
2010.08.27
WebBrowser


6-1217230489
workbench
2008-07-28 11:34
2010.08.27
IdFTP + FTPWork


2-1271699684
SyrBrandon
2010-04-19 21:54
2010.08.27
Как сделать чтобы в объекте TEdit вводились тока латинские буквы


2-1274172165
Irissss
2010-05-18 12:42
2010.08.27
FireBird хранимые процедуры


6-1224232718
DVM
2008-10-17 12:38
2010.08.27
Active Directory и самописный сервер. Авторизация.




   Наверх