開始繼承控件的正確位置/時間是什麼?德爾福:適當的時間來繼承和恢復控件?
什麼是恢復原始窗口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