在Delphi中,有没有一种方法可以调整TMemo的行间距?

4

我正在使用TMemo组件在有限的空间中显示一些文本。目前它使用了一种truetype字体,这种字体不随Windows一起提供,而是在应用程序运行时安装。

在我的电脑上(运行Windows XP),每行文本之间的间距似乎大约为8像素。在另一台运行Windows 7的电脑上,行距似乎为14像素,这将把备忘录的底部行推出可见范围。

因此,我的问题实际上是:

  1. 这是由于不同版本的Windows引起的吗?这是我能想到的唯一不同之处。
  2. 是否有一种方法可以调整此值,使其在应用程序的所有实例中始终保持一致,无论它在哪里运行?

或者,是否有其他组件可以让我调整这个值?


TMemo只是标准Windows控件的包装器,因此它不是用Delphi编写的。基本上,TMemo只是告诉操作系统“嘿,你能在这些坐标处放置一个很酷的多行编辑控件吗?”。因此,更合适的标题应该是“在Windows中,有没有一种方法...” - Andreas Rejbrand
我正在使用Delphi编程,使用TMemo。如果我说:“在Windows中,有没有一种方法……”,我可能会收到C++代码。 - Kieran
不错,你说得对,它确实不是;但是,我正在使用TMemo在Delphi中编写代码——可能有一种使用TMemo而不是通过使用Windows API调用的方法。这就是我所问的问题。 - Kieran
2个回答

2

TMemo是Windows公共控件的后代,其行为取决于当前Windows配置,因此使用它可能会得到不同的结果。

如果您只想显示一些信息,最好使用组件,这些组件可以让您精确地设置文本位置和样式,例如TRichView。该组件不是免费的,但它有自己的文本渲染引擎,并且让您使用类似于CSS的选择器来设置文本样式,这在不同版本的Windows中看起来相同。


1
除了Mohsen的回答之外,我想提一下LMD ElPack及其ElEdit组件,它也有自己的文本渲染引擎。与TRichView不同,ElEdit是一个纯文本编辑/备忘录组件,因此它可以直接替换TEdit/TMemo。而且行高度也是可配置的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接