我在窗体上有两个edit控件:edit1,edit2想在edit1中输入小写字母,edit2中立即显示转换后的大写字母 procedure TForm1.edit1keypress(Sender: TObject; var Key: Char);
begin
//if key in ['a'..'z'] then
edit2.Text :=uppercase(edit1.Text );
end;end.运行时,在edit1中输入a后,edit2显示 :EDIT1,再输入一次,便得到刚才输入转换的a----A,即 EDIT1A即要滞后这是怎么回事谢谢

解决方案 »

  1.   

    当按下一个键的时候,触发事件顺序是:OnKeyDown、 OnKeyPress、OnKeyUp
    只有OnKeyUp事件触发之后,Edit1.Text才会改变,
    所有你在OnKeyPress时间就做处理,最后按下的那个键在Edit1.Text里是没有的
      

  2.   

    你在 OnChange 中写上这样的代码   Edit1.Clear;
       Edit2.Clear;就可以把Edit1和Edit2里的EDIT1 和EDIT2去掉了。
      

  3.   

    在Edit2的属性CharCase设置为ecUpperCase.
    然后在Edit1 onChange 的代码中写入 Edit2.text := Edit1.text;