gpt4 book ai didi

delphi - 在 Delphi TEdit 中获取单词的像素坐标

转载 作者:行者123 更新时间:2023-12-03 15:46:43 25 4
gpt4 key购买 nike

向互联网上的奇才们问好。

我正在尝试在 TEdit(实际上是来自 Berg NextSuite 的 TNxEdit - 但它是 TEdit 的衍生版本)中的特定单词下划线。然而,为了做到这一点,我需要知道该单词的像素坐标。

如果文本的开头可见,那么这很容易做到,但是如果文本的开头已滚动到末尾,我无法弄清楚如何执行此操作。

是否有某种方法可以直接确定给定单词的确切坐标?如果做不到这一点,确定哪些文本在编辑中可见,哪些文本不可见?或者其他一些巧妙的方法。

编辑1:涵盖一些当前的答案:

要求是在 TNxGrid 组件的列上实现拼写检查器,这限制了我只能使用 TNxEdit。如果我可以选择使用哪个组件,我现在就已经切换了:(

我可以画线。 TNxEdit 有一个 Canvas ,只要我能算出正确的坐标,我就可以很高兴地绘制下划线。

如果编辑文本的开头可见,即没有滚动到前面,那么我可以使用 TextExtent 确定正确的开始位置和行的长度。

问题出现在文本开头滚动到前面的情况下。无法确定从前面滚动了多少意味着我无法计算出该行的起始位置。如果我想要突出显示的单词也部分滚动,则行的长度就会成为问题。

最佳答案

尝试使用(发送消息)EM_POSFROMCHAR用于获取文本特定部分的坐标。例如:

pPoint: TPoint;
SendMessage(Wnd, EM_POSFROMCHAR, WPARAM(@pPoint), charIndex);

但请记住,下划线很可能需要您对控件进行子类化并实现自定义绘制。因此@GolesTrol 提出的建议是值得的,即尝试从现有控件中进行选择,这些控件已经支持所需的功能。

关于delphi - 在 Delphi TEdit 中获取单词的像素坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554646/

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