刘
刘麻子
Unregistered / Unconfirmed
GUEST, unregistred user!
请教几个问题,谢谢!<br><br>想做一个象‘金山打字通’的程序,可以练习输入汉字,错误的话就将错误的汉字显示为红色。<br>问题是,中文输入有时候可能传给文本框的是几个汉字(词组),所以我想到了在onchang事件<br>中判断输入是否正确。现在关键的问题是,需要将文本框中已经存在的(刚打入的)字改颜色,我<br>用的方法是先自动选中错的文字,再edchedit.selattributes.color:=clred;,变颜色....<br>可是上面的方法不行,只有直接输入e文时才会变颜色,输入汉字时无效。(即使被选中的是e文)<br>不知如何解决?是否有这样的事件:在改变前触发或每进入文本框一个汉字时触发??<br>还有没有别的方法可以改变个别字符的颜色?(不要告诉我‘画’,这是万不得已的方法)<br><br> 我的qq:71892967,欢迎喜欢编程的朋友加我<br><br>举例:当输入文字时自动对部分文字改变颜色,可当我输入汉字时,<br> 下面的语句无效,好象没执行一样!<br>procedure TForm1.RichEdit1Change(Sender: TObject);<br>begin<br>//奇怪的是如果在这加一句showmessage('气死我了');就可以了,是否未刷新的原因?可我用了<br>//richedit1.Repaint;和richedit1.Refresh;也不行!!为什么??<br><br> richedit1.SelStart:=0;<br> richedit1.SelLength:=2;<br> richedit1.SelAttributes.Color:=clblue;<br>end;<br>(我用的是onchange事件。)<br><br>如何在允许汉英混输的情况下判断当前字符是汉字英文?判断当前输入法状态?<br>还有一个办法,就是判断字符的代码?因为ASCII码最高位是0,<br>而汉字占两个字节,(GB)好象至少有一个字节的最高位为1??<br><br>还有一个问题,就是想实现模拟按键以选中部分文本,用的是API<br>(我知道可用selstart和sellength,只是作技术探讨)<br>keybd_event(VK_SHIFT,mapvirtualkey(VK_SHIFT,0),0,0); //SHIFT键<br>keybd_event(VK_RIGHT,mapvirtualkey(VK_RIGHT,0),0,0); //'向右'方向键<br>keybd_event(VK_RIGHT,mapvirtualkey(VK_RIGHT,0),keyeventf_keyup,0);<br>keybd_event(VK_SHIFT,mapvirtualkey(VK_SHIFT,0),keyeventf_keyup,0);<br>结果只动光标,不选中,为什么?<br><br>