Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 help plz.  [new]
Ildar
Guest
Люди, ситуация такая ...

Написал компоненту.
Как в ней сделать так чтобы при помешении ее на форму она
начинала обрабатывать некоторы сообщения приходящие в форму.
Например WM_NCPAINТ ...

Заранее спасибо ...
19 апр 01, 18:05    [30298]     Ответить | Цитировать Сообщить модератору
 RE:help plz.  [new]
Commander
Guest
Если где неправ - пусть меня зубры поправят :О)
Главная форма походу пересылает компоненте все сообщения из очереди для которых у этой компоненты написан обработчик. Т.е. чтобы TTitler обрабатывала WM_NCPAINT надо так:

TTitler = class(TComponent)
private
FParentForm: TForm;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
public
constructor Create(AOwner: TComponent); override;
end;

implementation

constructor TTitler.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ParentForm:=TForm(AOwner);
end;

procedure TTitler.WMPaint(var Message: TWMPaint);
begin
//Your code here
end;


Коментарии:
наверное можно не заводить указатель на форму FParentForm и ссылаться на неё в обработчике, пользуясь TForm(SOwner)
но почему-то у меня это в аналогичной ситуации не работало, и в результате - такой код.
20 апр 01, 08:34    [30299]     Ответить | Цитировать Сообщить модератору
 RE:help plz.  [new]
Commander
Guest
Если где неправ - пусть меня зубры поправят :О)
Главная форма походу пересылает компоненте все сообщения из очереди для которых у этой компоненты написан обработчик. Т.е. чтобы TTitler обрабатывала WM_NCPAINT надо так:

TTitler = class(TComponent)
private
FParentForm: TForm;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
public
constructor Create(AOwner: TComponent); override;
end;

implementation

constructor TTitler.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ParentForm:=TForm(AOwner);
end;

procedure TTitler.WMPaint(var Message: TWMPaint);
begin
//Your code here
end;


Коментарии:
наверное можно не заводить указатель на форму FParentForm и ссылаться на неё в обработчике, пользуясь TForm(SOwner)
но почему-то у меня это в аналогичной ситуации не работало, и в результате - такой код.
20 апр 01, 08:39    [30300]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить