我想要一個可選擇的標籤控件,就像截圖中的一個。它可以用無邊界的TEdit來完成,但我想知道是否有另一種方法可以用於漸變背景?是否有可選的標籤控件?
example http://usera.ImageCave.com/brk303/SelectableLabel.png.jpg
爲了澄清,我用一個簡單的PageControl,這是自Win XP的有梯度圖紙,無邊界TEDIT放在頁面上並沒有融入完美:
Edit on a PageControl http://usera.ImageCave.com/brk303/Gradient.png.jpg
更新:
我設法通過增加
獲得了一半procedure CNCtlColorStatic(var AMsg: TWMCtlColorStatic); message CN_CTLCOLORSTATIC;
procedure TTransparentEdit.CNCtlColorStatic(var AMsg: TWMCtlColorStatic);
begin
with ThemeServices do
if ThemesEnabled then
begin
SetBkMode(AMsg.ChildDC, Windows.TRANSPARENT);
DrawParentBackground(Handle, AMsg.ChildDC, nil, False);
AMsg.Result := GetStockObject(NULL_BRUSH);
end
else
inherited;
end;
它現在是透明的,但還需要做其他事情,因爲選擇文本時的繪畫不能正常工作。該行爲是很難解釋,我將進一步調查,並更新在這裏......
在Windows對話框中顯示的控制確實是只是一個普通的編輯控件。爲了在您的程序中獲得相同的效果,我認爲這只是在編輯控件和頁面控件上正確獲取配置的問題。另外,對我而言,「簡單的PageControl」這個短語意味着你使用了Delphi提供的TPageControl類,但這不是你在圖片中顯示的內容。 – 2010-07-27 17:32:39
是的,我也懷疑windows對話框使用普通的編輯控件,但它的背景恰好是單一顏色,所以工作。 我使用的DevEx TabControl的行爲方式與Delphi TPageControl相同,所以它沒有區別。 至於「只是在編輯控件和頁面控件上獲得配置的問題」,我不認爲這是可能的,因此這個問題。 – 2010-07-27 18:29:47
Windows XP對話框使用漸變,並且這些對話框上的「可選標籤」(編輯控件)可以正確顯示漸變,即使在對焦時也是如此。所以,它*是*可能的。 – 2010-07-27 23:05:32