我最近才开始大量使用 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,并且该框架用于一个简单的主窗体,该主窗体仅包含该框架和一个关闭按钮。
我错过了什么?