Я только недавно начал активно использовать TFrames (хорошо, да, я жил под камнем ...). Я думал, что фреймы поддерживают объявление метода передачи сообщений - и я видел много примеров этого. Так почему же этот простой тестовый модуль для TFrame никогда не видит сообщения, которое он отправляет самому себе? (Я создал тест, когда выяснил, что обработчики сообщений не вызываются в моем большом приложении.)
unit JunkFrame;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
const
DO_FORM_INITS = WM_USER + 99;
type
TFrame1 = class(TFrame)
Panel1: TPanel;
private
procedure DoFormInits(var Msg: TMessage); message DO_FORM_INITS;
public
constructor Create(AOwner: TComponent); override;
end;
implementation
{$R *.dfm}
constructor TFrame1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
PostMessage(self.Handle, DO_FORM_INITS, 0, 0);
end;
procedure TFrame1.DoFormInits(var Msg: TMessage);
begin
ShowMessage('In DoFormInits!');
end;
end.
Этот фрейм содержит только TPanel, а фрейм используется в простой основной форме, которая содержит только фрейм и кнопку «Закрыть».
Что мне не хватает?