程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 自定義“組合”組件使用 VCL Style

自定義“組合”組件使用 VCL Style

編輯:Delphi

這類組件繼承自“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;

問題解決。

 沒有處理的效果更改後

摘自 海利鳥
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved