Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Минимизация формы [D7, WinXP]


Интересующийся ©   (2007-03-06 15:19:00) 

Как отловить минимизацию формы?

В проекте существует форма которая минимизируется после запуска программы как положено, но после восстановления формы в нормальное состояние "минимизация" перестает выполняться. :(


Юрий Зотов   (2007-03-10 13:28:00) [1]

In WM_SYSCOMMAND messages, the four low-order bits of the wParam parameter are used internally by the system. To obtain the correct result when testing the value of wParam, an application must combine the value 0xFFF0 with the wParam value by using the bitwise AND operator.

if (Message.WParam and $FFF0) = SC_MINIMIZE then...


Интересующийся   (2007-03-09 09:15:00) [2]

> А глюк с минимизацией я решил, он в другом месте был.

Вот решение, но с чем была связана проблема я непонял (возможно из-за вызова формы из DLL). В обычном приложении все нормально работало и так.


If Message.WParam=SC_MINIMIZE Then
Begin
WindowState:=wsMinimized;

//Рабочий код
End;


Интересующийся   (2007-03-09 08:47:00) [3]

Спасибо за советы, но в обработке у меня примерно так и стояло...

У меня вопрос так решается:

Inherited;

 If Message.WParam=SC_MINIMIZE Then
 Begin
 //Рабочий код
 End;

А глюк с минимизацией я решил, он в другом месте был.
P.S.

Другая проблема возникла, с мень в SysTrey, но это уже вопрос не этой ветки...


Novice   (2007-03-07 07:04:00) [4]

Интересующийся:

TForm1 = class(TForm)
...
private
...
protected
procedure WMGetSysCommand(var message : TMessage); message WM_SYSCOMMAND;
...
public
...
...
...

procedure TForm1.WMGetSysCommand(var message: TMessage);
begin
if (message.wParam = SC_MINIMIZE) then begin
//Ваши действия
end;
inherited;
//Эта строчка отвечает за то, чтобы событие произошло.
//не будет этой строчке - событие минимизации не произойдет.
end;

ну а также параметры - SC_CLOSE, SC_MAXIMIZE, SC_RESTORE.


Правильный Вася   (2007-03-06 17:24:00) [5]

TForm.State


Интересующийся   (2007-03-06 17:09:00) [6]

Как определить, форма минимизирована или в нормальном состоянии?


Интересующийся   (2007-03-06 17:07:00) [7]

Отловил WM_SYSCOMMAND, событие есть - минимизации нет :(???


Юрий Зотов   (2007-03-06 16:34:00) [8]

> Как отловить минимизацию формы?

Отловить WM_SYSCOMMAND с SC_MINIMIZE.


Наверх

Титульная страница Поиск, карта сайта Написать письмо