windows - 是否有可选择的标签控件?

标签 windows delphi controls vcl

我想要一个可选择的标签控件,就像屏幕截图中的那样。可以使用无边框 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/

相关文章:

delphi - 如何在注册表中为COM服务器的多个版本进行配置?

c - 在 C 中打印控制字符的图形表示

c# - 在 C# 中使用 ControlArrays 减少代码冗余的想法

c# - 强制控制宽度或高度?

windows - 启用 WSL2 的 Docker Desktop 无法在 Windows 10 中启动

windows - 如何在 Windows 10 的命令行中运行路径中包含空格的可执行文件?

c++ - 在异步模式下使用 FtpFindFirstFile unicode 版本的访问冲突

Delphi - 使用 Indy 使用 cookie 登录和下载文件

multithreading - 在 TidHTTPServer.OnCommandGet 内创建对象(带有计时器)失败

c# - 在 Windows 上构建 Mono 的类库