gpt4 book ai didi

Delphi - 访问提示窗口的 Canvas

转载 作者:行者123 更新时间:2023-12-03 18:16:00 26 4
gpt4 key购买 nike

是否有访问提示窗口 Canvas 的简洁方法?我不想在 Canvas 上绘制任何东西 - 我将只分配给组件的 Hint 属性 - 但我确实想找出 Windows 使用正在使用的任何字体呈现的文本宽度用于提示窗口文本。

* 原因 *

我正在尝试构建带有选项卡式列的提示窗口,例如

SomeControl.Hint := 
'Item 1: ' + #9 + 'Tom' + #13 +
'Item 2: ' + #9 + 'Dick' + #13 +
'Another Item: ' + #9 + 'Harry' + #13 ;

我希望所有选项卡的名称一个接一个。仅当提示字体为等宽字体时,上面显示的示例才会正确跳格。我可以通过用正确数量的空格填充行来通过反复试验使用给定的比例字体来实现它,但我希望它适用于任何字体。我见过的大多数例子似乎都是为了改变提示窗口的外观——我想要做的就是能够调用 Canvas.TextWidth 这样我就可以计算出我需要添加的填充将该行“推”到下一个制表位。

* 更新 *

我一直在误解中工作 - 我假设提示控件尊重制表符,但实际上它似乎忽略了它。另一方面,TLabel 组件确实尊重制表符 - 它似乎移动到下一个 10 左右空格宽度的倍数。

最佳答案

有两种方法可以实现你想要的。

  1. Screen.HintFont 属性,您可以将其分配给所需的任何 Canvas 并获取提示文本尺寸。
  2. Delphi 应用程序使用全局 HintWindowClass 创建提示窗口,您可以创建自己的提示窗口并使用其 Canvas 进行文本测量。

你可以这样使用它:

var
HintCtrl: THintWindow;

HintCtrl := HintWindowClass.Create(nil);
HintCtrl.Canvas.TextWidth('abc');
...

关于Delphi - 访问提示窗口的 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com