谢谢大家的帮助,上面的朋友提到的几个方法我都试了!现在讲给大家听!<br><br>改变焦点好象不行耶!无论两个控件的setfocus;<br>怎么搭配,怎么变换位置,也不行的!哪位朋友作成功的<br>可以教教我吗?您具体是怎么做的?????<br>(还有,不可见的组件能获得焦点吗?这是不可能的^_^)<br>procedure TForm1.RichEdit1Change(Sender: TObject);<br>begin<br>//模仿showmessage();时的情况<br> richedit2.SetFocus; //失去焦点<br> richedit1.SelStart:=0;<br> richedit1.SelLength:=2;<br> richedit1.SelAttributes.Color:=clblue;<br> richedit1.setFocus; //获得焦点<br>end;<br><br>另外,一位朋友提醒了我。用按钮是可以的,(变色程序放在按钮单击事件里)<br>我就想,当需要变颜色时,调用按钮的click。<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> richedit1.SelStart:=0;<br> richedit1.SelLength:=2;<br> richedit1.SelAttributes.Color:=clblue;<br>end;<br><br>procedure TForm1.RichEdit1Change(Sender: TObject);<br>begin<br> keybd_event(9,mapvirtualkey(9,0),0,0); //模拟按下TAB键<br> keybd_event(9,mapvirtualkey(9,0),keyeventf_keyup,0);<br> button1.Click;//此时焦点在按纽上,其实这里的改变焦点没什么意义,<br> //前面已经试过了,没有用的!只是抱着试试看的想法加上去的<br> keybd_event(9,mapvirtualkey(9,0),0,0);<br> keybd_event(9,mapvirtualkey(9,0),keyeventf_keyup,0);<br>end;<br><br>还是不行。只好用Windows API来模拟鼠标点击按钮,这下可以了^_^<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br> dof:=(dof+1)mod 10;//防止因改变颜色而触发onchange事件<br> richedit1.SelStart:=dof;<br> richedit1.SelLength:=1;<br> richedit1.SelAttributes.Color:=clblue;<br>end;<br>procedure TForm1.RichEdit1Change(Sender: TObject);<br>var<br>ylpt,anpt:TPOINT ;//原来的位置,按纽的位置<br>begin<br> if (dof mod 2)<>0 then//防止因改变颜色而触发onchange事件<br> begin //否则会一直互相调用 <br> dof:=(dof+1)mod 10; //为下次用户输入时触发onchange事件准备<br> exit;<br> end;<br>//模拟用鼠标单击按纽<br> getcursorpos(ylpt);//鼠标当前的位置<br> anpt:=button1.ClientToScreen(point(4,4));<br> setCursorpos(anpt.X,anpt.Y); //移到按纽的位置<br> mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//按下<br> mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); //抬起<br> setcursorpos(ylpt.x,ylpt.y); //恢复原来的位置<br>end;<br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br> dof:=0;//全局变量<br>end;<br>无论输入的是汉字还是英文而导致的onchange事件,都会变颜色了!!<br><br>但是,问题还没有得到实际解决,因为我做的打字程序不可能上面放一个按钮<br>的啊,如果将按纽设为visible:=false,单击又没用了呀?怎么办?<br><br>还有一位朋友讲了,当用‘万能五笔’输入汉字时就可以,我试了一下,的确是这样,<br>为什么??但是实际使用中总不能限制用户只能用‘万能五笔输入法’吧?我想,这样<br>不好,那拼音就不能用了!(我就是用拼音的
)我不想这样!<br><br>另外,有人讲不要用onchange事件,那用什么呢??我试过了,其他的都不行。比如:<br>onkeydown: 切换输入法状态时会触发事件处理过程,当前是汉字输入法时,按键盘<br> 上按键时也会触发事件!<br>onkeypress: 输入中文时无效,因为他接受的只是ASCII码。<br>onkeyup: 与onkeydown情况相似,且根本无法输入汉字!<br>不知道还可以用什么事件?或者怎么正确使用上面的事件以达到我的需要?<br><br>(虽然情况好转,让我放弃了死亡的念头。但还是有困难的,我随时可能想不开的哦)<br>(各位朋友,救人一命胜造..,一定要帮我呀!我的qq:71892967,欢迎加我^_^)