![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Есть динамический массив разных форм, у этих форм нужно перехватить событие WM_SysCommand SC_Minimize, и обработать передав управление дальше
Код:
type
TForms=array of TForm;
....
TFormCtrls=record
Forms:TForms;
....
end;
TFormController = class(TCoolBar)
private
{ Private declarations }
FFormCtrls:TFormCtrls;
OldWndProcess:TWndMethod;
procedure Prepare(_Form:TForm);
procedure MyWindowProc(var Message: TMessage);
....
end;
procedure Register;
implementation
procedure TFormController.MyWindowProc(var Message:TMessage);
begin
OldWndProcess(Message);
//Тут мне нужно вызвать изначальный обработчик
//и сделать что-то своё
end;
procedure TFormController.Prepare(_Form:TForm);
var
FormCount:Integer;
begin
FormCount:=Length(FFormCtrls.Forms);
SetLength(FFormCtrls.Forms,FormCount+1);
OldWndProcess:=_Form.WindowProc; //тут я сохраняю старый обработчик
_Form.WindowProc:=MyWindowProc; //ставлю новый
FFormCtrls.Forms[FormCount]:=_Form;
........
end;Эта замена работает для одного окна, а если я создаю много окон то обработчик работает для одного, последнего, пробовал обработчики сохранять также как формы в динамический массив, но никак не могу понять как потом к ним обратиться. Один из вопросов можно ли из процедуры MyWindowProc обратиться к объекту чей метод WindowProc вызываеться в данный момент? |
|
#2
|
||||
|
||||
|
Код:
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMSYSCOMMAND(var Msg: TMessage); message WM_SYSCOMMAND;
...
procedure TForm1.WMSYSCOMMAND(var Msg: TMessage);
begin
if Msg.WParam=SC_MINIMIZE then
begin
// do it
end;
inherited;
end; |
|
#3
|
||||
|
||||
|
Цитата:
Это я вкурсе, накрайняк придётся так и сделать, проблема в том что форм много и они разные, + создаются динамически и на некоторые мне нужно обрабатывать это сообщение, а на некоторые нет. Я пишу некий контейнер в котором хронятся ссылки на эти формы и их параметры и хочу чтоб там же обрабатывалось событие миимизации |
|
#4
|
||||
|
||||
|
Решение нашёл создал наследника TForm с нужными мне свойствами
и уже от него наследую все свои формы |