【发布时间】:2012-09-23 17:42:52
【问题描述】:
问候互联网的集体奇迹。
我正在尝试在 TEdit(实际上是来自 Berg NextSuite 的 TNxEdit - 但它是 TEdit 的衍生产品)中为特定单词加下划线。然而,为了做到这一点,我需要知道所说单词的像素坐标。
如果文本的开头可见,这很容易做到,但是如果文本的开头已经滚动到结尾,我不知道该怎么做。
有没有办法直接确定给定单词的精确坐标?如果做不到这一点,确定哪些文本在编辑中可见,哪些不可见?或者其他一些巧妙的方法。
Edit1:涵盖当前的一些答案:
要求是在 TNxGrid 组件的列上实现拼写检查器,这将我限制为 TNxEdit。如果我可以选择我使用的组件,我现在会切换 :(
我可以画线。 TNxEdit 有一个画布,只要我能计算出正确的坐标,我就可以很高兴地绘制下划线。
如果编辑文本的开头可见,即前面没有滚动,那么我可以使用 TextExtent 确定正确的开始位置和行的长度。
问题出现在文本开头滚动到前面的场景中。无法确定从前面滚动了多少意味着我无法计算出该行的起始位置。如果我要突出显示的单词也部分滚动,则行长会成为问题。
【问题讨论】:
-
也许使用原生支持标记的类似 TRichEdit 的组件更明智。
-
我会和@GolezTrol一起去这个。只是在这方面做一个微不足道的开始将需要永远。
-
遗憾的是我不能,否则我早就做了。有问题的表单使用 TNextGrid 组件,并且要求在其中一列的就地编辑器上实现拼写检查器。这意味着它们必须是 TNxEdit 衍生品,而后者又是 TEdit 衍生品。碰巧我可以很容易地绘制(除非我错过了什么),只要我能得到正确的坐标来绘制。
标签: delphi