我想要一个可选择的标签控件,就像屏幕截图中的那样。可以使用无边框 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;
它现在是透明的,但还需要做一些其他事情,因为选中文本时绘画无法正常工作。该行为很难解释,我将进一步调查并在此处更新...
最佳答案
标签不可编辑。 TLabel 甚至无法获得焦点,因为它没有继承自 TWinControl。
我会使用 TEdit 来模仿您的屏幕截图:
object Edit1: TEdit
BorderStyle = bsNone
ParentColor = True
ReadOnly = True
Text = 'Editable label'
end
(您可以将上面的代码复制并粘贴到您的表单中)
关于windows - 是否有可选择的标签控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345575/