有可选的标签控件吗?

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)

它现在是透明的,但还需要做其他事情,因为在选择文本时绘画无法正常工作.这个行为很难解释,我会进一步调查并在这里更新......

Wou*_*ick 8

标签不可编辑.TLabel甚至无法获得焦点,因为它不会从TWinControl继承.

我使用TEdit模仿你的截图:

object Edit1: TEdit
  BorderStyle = bsNone
  ParentColor = True
  ReadOnly = True
  Text = 'Editable label'
end
Run Code Online (Sandbox Code Playgroud)

(您可以将上述代码复制并粘贴到您的表单中)


And*_*and 3

正常的方法是使用无边框 ( BorderStyle := bsNone) 和只读 ( ReadOnly := true) TEdit,可能与Color := clBtnFace您所说的结合使用。然而,渐变背景并不常见,而且也没有现成的支持。不过,自己做也不是太难。我将尝试在几分钟内找到一个简单的解决方案。

更新

在 Windows 编辑框中绘图并非易事。您确定需要渐变背景吗?您当然可以编写自己的控件——编写类似 TEdit 的控件并不是那么困难。我已经这样做过几次了。(证明

更新2

我自己没有尝试过,它可能不适用于视觉主题,但您可以尝试创建一个透明的“TEdit”控件:http://www.delphi3000.com/articles/article_935.asp?SK=

现在我尝试了一下,在带有Aero的Windows 7下根本不起作用。