开始继承控件的正确位置/时间是什么?德尔福:适当的时间来继承和恢复控件?
什么是恢复原始窗口proc的正确时间?
现在,我的形式创建在子类:
procedure TForm1.FormCreate(Sender: TObject);
begin
FOldPanel1WindowProc := Panel1.WindowProc;
Panel1.WindowProc := Panel1WindowProc;
end;
和我的形式破坏中恢复的子类:
procedure TForm1.FormDestroy(Sender: TObject);
begin
Panel1.WindowProc := FOldPanel1WindowProc;
end;
这工作得很好,只要我不使用ThemeManager,其子类控制自己。只要试图对ThemeManager也进行子类化的控件进行子类化,我会得到非常令人讨厌的错误。
我以为这是监守我不应该启动期间子类创建,并在恢复它摧毁。那么什么是适当记录的时间来对Delphi中的控件进行子类化和取消子类化?
尝试在源代码中查找ThemeManager以查看它何时执行子类化。 – 2009-11-18 17:28:16
糟糕的是,它将表单放在延迟列表中,因为基础窗口句柄不是在对象构造过程中创建的(就像使用.NET控件包装Win32控件一样) – 2009-11-18 18:21:51
您是否可以入侵相同的延迟列表? – 2009-11-18 19:22:46