Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.04.2012, 12:59
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию Помогите разобраться с перехватом сообщений

Есть динамический массив разных форм, у этих форм нужно перехватить событие 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  
Старый 27.04.2012, 13:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
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  
Старый 27.04.2012, 13:21
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от NumLock
Код:
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;

Это я вкурсе, накрайняк придётся так и сделать, проблема в том что форм много и они разные, + создаются динамически и на некоторые мне нужно обрабатывать это сообщение, а на некоторые нет.
Я пишу некий контейнер в котором хронятся ссылки на эти формы и их параметры и хочу чтоб там же обрабатывалось событие миимизации
Ответить с цитированием
  #4  
Старый 28.04.2012, 08:51
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию

Решение нашёл создал наследника TForm с нужными мне свойствами
и уже от него наследую все свои формы
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter