问题标签 [tlabel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
779 浏览

delphi - 将图形添加到 TLabel 的问题

我正在尝试使用 Delphi 创建一个从 TLabel 继承的组件,并在 TLabel.Paint 上添加了一些自定义图形。我希望图形位于文本的左侧,所以我覆盖了 GetClientRect:

该解决方案有我想解决的主要问题:无法单击控件的“图形区域”,只能单击标签区域。如果标题为空字符串,则根本无法通过单击在设计器中选择组件。有任何想法吗?

0 投票
4 回答
12954 浏览

delphi - 如何使 TLabel 表现得像 Delphi 中的超链接?

如何使 TLabel 表现得像 Delphi 中的超链接?

注意:由于向后兼容性问题,我对使用 TLinkLabel 不感兴趣。

0 投票
2 回答
2058 浏览

delphi - 如何最好地以编程方式判断 TLabel 的标题是否被剪裁(即使用省略号绘制)?

我有一个TLabel设置EllipsisPositionepEndEllipsis,我需要能够判断文本当前是否被剪辑。除了自己计算显示文本所需的区域并将其与标签的实际尺寸进行比较之外,有没有人想出一种更简单/更优雅的方法来做到这一点?

实际上,以故障安全方式计算所需区域似乎也并不像听起来那么简单……例如TCanvas.GetTextHeight,不考虑换行符。

TCustomLabel.DoDrawText在内部使用DrawTextWDrawThemeTextExDT_CALCRECT标志一起确定它是否应该使用省略号。那里涉及到相当多的代码,所有这些都是声明的private。简单地复制所有这些代码在我的书中并不完全符合“优雅”的条件......

有任何想法吗?

(我正在使用 Delphi 2010,以防有人提出特定于 Delphi 版本的解决方案)

更新 1:我现在发现我可以简单地TCustomLabel.DoDrawText(lRect, DT_CALCRECT)直接调用(仅声明protected)让标签执行所需的大小计算,而无需复制其代码。我只需要确保临时设置EllipsisPositionepNone或完全使用临时标签实例。这实际上并没有那么糟糕,如果没有人能想到更简单的解决方案,我可能会接受它。

更新 2:我现在已将我的解决方案添加为单独的答案。事实证明它比我预期的更直接,所以可能没有更简单/更好的方法来做到这一点,但无论如何我都会把这个问题留一段时间,以防万一。

0 投票
4 回答
2176 浏览

delphi - 如何为 TLabel (TGraphicControl) 创建调整大小事件

我正在尝试创建 TLabel 后代,当文本宽度超过标签宽度时,它将显示带有整个标题的提示。我已将 EllipsisPosition 属性设置为 epEndEllipsis,并且我的标题在末尾自动被省略号缩短。没关系。

但是需要通知我,文本已被缩短以设置提示。在我的情况下,这可能仅在更改文本(消息 CM_TEXTCHANGED)和调整组件大小时发生。

这就是我的问题 -如何通知我 TLabel 已调整大小?我在那里有锚点,所以它与表单一起调整大小,但我想将它包装在单独的 TLabel 后代中。

此代码有效,但没有更好的方法吗?像 WM_EXITSIZEMOVE 之类的东西,但为 TGraphicControl 工作?

非常感谢 :)

0 投票
2 回答
3171 浏览

delphi - 如何将delphi上以TPanel为父的所有TLabels复制到另一个TPanel?

我在 delphi 表单上有一个 TPanel,当我按下按钮并将它们放在其他面板中时,我想复制所有以该 TPanel 为父的 TLabel。有没有办法做到这一点?谢谢。

0 投票
2 回答
8568 浏览

delphi - 将 Delphi TLabel 的字体更改为斜体会砍掉尾巴 - 为什么?

下面显示了字体设置为 Arial Regular 16 的默认 TLabel 的简单演示。 在此处输入图像描述

单击按钮时的代码是:

单击按钮时,最后一个字符将被截断,即:

在此处输入图像描述

默认情况下, TLAbel.AutoSize 为 true,所以这应该没问题,对吧?这在 XE 和 Delphi 7 中是一样的。这是一个错误吗?

0 投票
1 回答
1660 浏览

delphi - Delphi TLabel 标题中制表符的行为是否已定义?

如果我将制表符放入字符串中,然后从字符串中分配标签的 Caption 属性,制表符会做什么?

CR 字符会导致返回,这对于显示多行标题很有用。制表符似乎确实执行某种制表动作 - 我想知道这种行为是否已定义或可预测。(我猜行为是由 Windows 决定的,而不是 Delphi)。

0 投票
2 回答
1087 浏览

delphi - Delphi XE2 TLabel glowsize 导致屏幕左上角出现图形问题

自从将应用程序从 XE 移植到 XE2 后,我注意到一个奇怪的错误,只是在 ide 中打开表单或运行应用程序,屏幕左上角(在表单外)绘制了一个白色方框,如下所示将鼠标悬停在上方或窗口上方。我将此追踪到 TLabel,只需将一个放在表单上并将 Glowsize 设置为 0 以上就会导致问题。

我重新安装并更新到最后一个 XE2 update3,问题仍然存在。有人知道发生了什么吗?

示例 1

示例 2

在此处输入图像描述

0 投票
2 回答
661 浏览

delphi - 获取 MaxLen 参数以与 MinimizeName 一起使用

我正在尝试使用 Vcl.FileCtrl 单元中的 MinimizeName 函数在 TLabel 上放置一个很长的文件名,但我无法弄清楚如何获取该函数使用的 MaxLen 参数如果我硬编码一个值,我可以看到一个有效的结果。但由于表单可以调整大小,我希望它是动态的 = 在调整大小事件时发生变化。

我尝试过的一些事情是 lblLicenseFile.Width // 字符串太长 lblLicenseFile.Width - 10 // 字符串太长 Trunc(lblLicenseFile.Width / lblLicenseFile.Font.Size) // 字符串很短

必须有某种方法来计算这个像素数

MinimizeName(const Filename: TFileName; Canvas: TCanvas; MaxLen: Integer): TFileName; MaxLen 是可用于在画布上绘制文件名的长度(以像素为单位)。

0 投票
2 回答
8922 浏览

ruby - 在 Ruby 中,tLABEL 到底是什么意思?

当我得到它时,我通常会掩盖这个错误并修复导致它的任何语法错误,但出于好奇,tLABEL 在意外 tLABEL 中究竟是什么意思?

我试过寻找答案,但只是让很多人试图就他们的错误寻求帮助。

我还找到了这个定义:

tlabel 是一个非窗口 VCL 控件,它在表单上显示不可编辑的文本。它在 StdCtrls.pas 单元中定义。

但我认为这不是一个非常容易理解的定义。