上次我看到了一段代码如下
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldWndProc: TWndMethod;
procedure MyMessage(var Message: TMessage);
public
{ Public declarations }
end;
粗体部分是如何加到Form的private里的啊?直接写会提示没有对应的组件
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldWndProc: TWndMethod;
procedure MyMessage(var Message: TMessage);
public
{ Public declarations }
end;
粗体部分是如何加到Form的private里的啊?直接写会提示没有对应的组件
SomeMethod: TWndMethod;
begin
SomeMethod := Form1.MainWndProc; // 正确。这时 SomeMethod 包含 MainWndProc和 Form1 的指针,可以用 SomeMethod(Msg)来执行。
SomeMethod := TForm.MainWndProc; // 错误!不能用类引用。
end;
我的方法是在formcreate里先将form.WndProc赋给OldWndProc
再将自己写的窗口过程赋给form.WndProc
然后在Form的private字段再加入粗体的那一句,就不报错了