私は最近TFrameを多用し始めました(OK、はい、私は岩の下に住んでいます...)。フレームはメッセージハンダーメソッド宣言をサポートしていると思いました-そして私はその多くの例を見てきました。では、なぜ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のみが含まれ、フレームはフレームと閉じるボタンのみを含む単純なメインフォームで使用されます。
私は何が欠けていますか?