高手快来救我(50分)

  • 主题发起人 主题发起人 刘麻子
  • 开始时间 开始时间

刘麻子

Unregistered / Unconfirmed
GUEST, unregistred user!
请教几个问题,谢谢!

想做一个象‘金山打字通’的程序,可以练习输入汉字,错误的话就将错误的汉字显示为红色。
问题是,中文输入有时候可能传给文本框的是几个汉字(词组),所以我想到了在onchang事件
中判断输入是否正确。现在关键的问题是,需要将文本框中已经存在的(刚打入的)字改颜色,我
用的方法是先自动选中错的文字,再edchedit.selattributes.color:=clred;,变颜色....
可是上面的方法不行,只有直接输入e文时才会变颜色,输入汉字时无效。(即使被选中的是e文)
不知如何解决?是否有这样的事件:在改变前触发或每进入文本框一个汉字时触发??
还有没有别的方法可以改变个别字符的颜色?(不要告诉我‘画’,这是万不得已的方法)

我的qq:71892967,欢迎喜欢编程的朋友加我

举例:当输入文字时自动对部分文字改变颜色,可当我输入汉字时,
下面的语句无效,好象没执行一样!
procedure TForm1.RichEdit1Change(Sender: TObject);
begin

//奇怪的是如果在这加一句showmessage('气死我了');就可以了,是否未刷新的原因?可我用了
//richedit1.Repaint;和richedit1.Refresh;也不行!!为什么??

richedit1.SelStart:=0;
richedit1.SelLength:=2;
richedit1.SelAttributes.Color:=clblue;
end;

(我用的是onchange事件。)

如何在允许汉英混输的情况下判断当前字符是汉字英文?判断当前输入法状态?
还有一个办法,就是判断字符的代码?因为ASCII码最高位是0,
而汉字占两个字节,(GB)好象至少有一个字节的最高位为1??

还有一个问题,就是想实现模拟按键以选中部分文本,用的是API
(我知道可用selstart和sellength,只是作技术探讨)
keybd_event(VK_SHIFT,mapvirtualkey(VK_SHIFT,0),0,0);
//SHIFT键
keybd_event(VK_RIGHT,mapvirtualkey(VK_RIGHT,0),0,0);
//'向右'方向键
keybd_event(VK_RIGHT,mapvirtualkey(VK_RIGHT,0),keyeventf_keyup,0);
keybd_event(VK_SHIFT,mapvirtualkey(VK_SHIFT,0),keyeventf_keyup,0);
结果只动光标,不选中,为什么?

 
我也看了一下,输入汉字时是不太好用
 
難道不能用這個?
richedit1.font.Color:=clblue;
至少Edit可以
 
RichEdit1.SelStart :=0;
RichEdit1.SelLength :=2;
RichEdit1.SelAttributes.Color :=clRed;
RichEdit1.SelLength :=0;
 
不过在里面的位置控制也比较麻烦啊
 
汉字还是不行,我刚才看错了
 
这样不行,谢谢你仙剑奇侠
 
(2003-12-19 11:30:18) Coldew
with richedit1do

begin

SelStart:=0;
SelLength:=2;
SelAttributes.Color:=clRed;
SelStart:= SelStart + 2;
SelLength:= 0;
end;

我改了一下这样的话可以好一点。
我的是D7+Win2000Pro+万能五笔
 
我用的是智能abc,和这个没关系吧?
 
RichEdit1.SelStart :=0;
RichEdit1.SelLength :=2;
RichEdit1.SelAttributes.Color :=clRed;
Sleep(10);
RichEdit1.SelLength :=0;
 
这回应该好用了,我试了
 
回答问题的都给分
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2364224
也可以回答这个问题,更多分
 
倒,我理解錯樓主的意思了
同時nod 仙剑奇侠
 
后退
顶部