Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизсворачивание программы на панель задач Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.063 c