這類組件繼承自“TwinControl”或其子類如“TCustomControl”,其實大多數特性都已經繼承過來了,但是有個問題,背景不能應用屬性。
如:
我最開始的想法是 用主要窗體背景Color替換控件窗體的Color;
constructor TLyStateLabel.Create(AOwner: TComponent);
begin
…
self.Color:=AOwner.Color;
…
end;
並且重載 procedure Paint; virtual;
結果沒有效果。
後來想參見Delphi XE2自己的組合組件的寫法,看了好多,就一個簡單的問題(就沒有耐心),那麼完整的代碼……,看了5~6個小時,也沒有太多頭緒,後來看看Rz的代碼實現(兩個方案實現有些區別),也沒有太多頭緒,他們畢竟都有各自的體系。
但我認為開始的方向是沒有太多錯誤的。
一天後決定還是使用原來的方法,不過改改,仍舊放在Create裡面;
if TStyleManager.Enabled then
begin
LColor := StyleServices.GetStyleColor(TStyleColor.scWindow);
if (Self.Color <> LColor) then
begin
Self.Color := LColor;
// Invalidate;
end;
end;
問題解決。
摘自 海利鳥