Dan*_*rić 5 windows delphi controls vcl
我想要一个可选择的标签控件,就像截图中的那个一样.它可以使用无边框TEdit完成,但我想知道是否有另一种方法可以使用渐变背景?
例如http://usera.ImageCave.com/brk303/SelectableLabel.png.jpg
为了澄清,我使用了一个简单的PageControl,由于Win XP具有渐变绘图,放置在页面上的无边框TEdit不能完美地融合:
在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;
Run Code Online (Sandbox Code Playgroud)
它现在是透明的,但还需要做其他事情,因为在选择文本时绘画无法正常工作.这个行为很难解释,我会进一步调查并在这里更新......
标签不可编辑.TLabel甚至无法获得焦点,因为它不会从TWinControl继承.
我使用TEdit模仿你的截图:
object Edit1: TEdit
BorderStyle = bsNone
ParentColor = True
ReadOnly = True
Text = 'Editable label'
end
Run Code Online (Sandbox Code Playgroud)
(您可以将上述代码复制并粘贴到您的表单中)
正常的方法是使用无边框 ( BorderStyle := bsNone
) 和只读 ( ReadOnly := true
) TEdit
,可能与Color := clBtnFace
您所说的结合使用。然而,渐变背景并不常见,而且也没有现成的支持。不过,自己做也不是太难。我将尝试在几分钟内找到一个简单的解决方案。
在 Windows 编辑框中绘图并非易事。您确定需要渐变背景吗?您当然可以编写自己的控件——编写类似 TEdit 的控件并不是那么困难。我已经这样做过几次了。(证明)
现在我尝试了一下,在带有Aero的Windows 7下根本不起作用。
归档时间: |
|
查看次数: |
1930 次 |
最近记录: |