Delphi备忘录为什么光标始终向左移动

时间:2016-06-14 16:58:25

标签: delphi delphi-2010 tmemo

在我的VCL项目中,我有TMemo,其中包含以下文字(|是插入符号):

|                   |  
|Hello world |      |  
|                   |  
|test               |  
|                   |  
|                   |    

当我按 Down 按钮时,插入符号移动到此处:

|                   |  
|Hello world        |  
||                  |  
|test               |
|                   |  
|                   |  

我需要的是它转移到这里:

|                   |  
|Hello world        |  
|               |   |   
|test               |  
|                   |  
|                   | 

2 个答案:

答案 0 :(得分:7)

我认为您会发现为此设计自己的解决方案是有益的。响应 Down 键的TMemo的默认行为取决于下一行中有多少个字符。如果下一行至少与当前行上的数量相同,则插入符号将保留在相同的列号中。

所以一个简单的解决方案可能是

  • 当您检测到由 Down 键引起的OnKeyDown事件时,请检查下一行中的字符数,以及是否少于下一行中的字符数插入符号左侧的当前行,用空格右键填充下面的行,直到字符数相等。如果备忘录使用定点字体,屏幕外观将只精确保持列位置;使用比例字体,光标仍然会#34;摆动"有点左右,因为空格比大多数其他字符要窄。

  • 当然,您也需要为Up键执行此操作,并且无论您是否为鼠标点击执行类似操作,都由您决定。

通过一些谷歌搜索,您可以轻松找到Delphi代码,以检测TMemo中插入符号的当前行号和列号。

答案 1 :(得分:4)

Delphi中的TMemo只是将内部控件包装在Windows本身 - 这本身并不支持您想要的功能。可以将其修改为以这种方式运行,但更容易使用已经为此设计的东西。可以做到这一点的一个很受欢迎的控件是SynEdit,它面向代码编辑器和语法高亮。它可能比您需要的更多,但它解决了您正在寻找的问题。