![]() |
|
|
Регистрация | << Правила форума >> | 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 с нужными мне свойствами
и уже от него наследую все свои формы |