RichEdit 问题 ( 积分: 50 )

  • 主题发起人 主题发起人 赛特
  • 开始时间 开始时间

赛特

Unregistered / Unconfirmed
GUEST, unregistred user!
我在RichEdit 的 onKeyDown 里面: //selstart,sellength 都是全局变量
selstart:=richedit1.selstart;
sellength:=richedit1.sellength;
然后在RichEdit 的 onChange 里面想通过selstart和sellength得到richedit1改变之前的值。
可问题是同样的代码,如果是用“微软拼音”就会得到错误的结果,而其他比如“智能ABC”、英文等,却都能得到正确想要的结果,该怎么解决呢?或者不用这种办法,目的是要在 onchange 事件中获得改变之前的 selstart 和 sellength 值?
我试过了RxRichEdit控件,同样是如此;但是Memo控件就不存在这种情况!怪哉!
非常感谢!
 
如果你的最终目标是要做UnDelete和ReDo功能的话,
建议你搜一下别人的文本编辑器源代码。
 
不是做那个。
如果是 TRichedit 的话,除了“微软拼音”,其它输入法输入的都能得到正确结果;而如果是 TMemo 的话,倒是所有输入法输入的都能得到预期结果。
看能不能通过参考 TMemo 控件,来继承更改 TRichedit 控件的方法,解决这个问题?该怎么做呢?或者直接屏蔽某个richedit的“微软拼音输入法”,该怎么做呢?
 
你可以查看一下TMemo和TRichEdit的源代码,追溯它们的继承关系,
应该都有继承自TCustomMemo,出现你所说的问题可能是TCustomMemo之后,
TRichEdit有处理过与按键有关的某个消息所导致的。
自己创建一个控件。
 
或者能不能告诉一个办法,让某个richedit控件不能切换到“微软拼音”
 
搜一下,有api可以判断当前是何输入法,
当某个RichEdit获得焦点后,屏蔽掉“微软拼音”
 
接受答案了.
 
后退
顶部