在我的VCL项目中,我有TMemo
,其中包含以下文字(|
是插入符号):
| | |Hello world | | | | |test | | | | |
当我按 Down 按钮时,插入符号移动到此处:
| | |Hello world | || | |test | | | | |
我需要的是它转移到这里:
| | |Hello world | | | | |test | | | | |
答案 0 :(得分:7)
我认为您会发现为此设计自己的解决方案是有益的。响应 Down 键的TMemo
的默认行为取决于下一行中有多少个字符。如果下一行至少与当前行上的数量相同,则插入符号将保留在相同的列号中。
所以一个简单的解决方案可能是
当您检测到由 Down 键引起的OnKeyDown
事件时,请检查下一行中的字符数,以及是否少于下一行中的字符数插入符号左侧的当前行,用空格右键填充下面的行,直到字符数相等。如果备忘录使用定点字体,屏幕外观将只精确保持列位置;使用比例字体,光标仍然会#34;摆动"有点左右,因为空格比大多数其他字符要窄。
当然,您也需要为Up键执行此操作,并且无论您是否为鼠标点击执行类似操作,都由您决定。
通过一些谷歌搜索,您可以轻松找到Delphi代码,以检测TMemo
中插入符号的当前行号和列号。
答案 1 :(得分:4)
Delphi中的TMemo
只是将内部控件包装在Windows本身 - 这本身并不支持您想要的功能。可以将其修改为以这种方式运行,但更容易使用已经为此设计的东西。可以做到这一点的一个很受欢迎的控件是SynEdit,它面向代码编辑器和语法高亮。它可能比您需要的更多,但它解决了您正在寻找的问题。