FORM中键盘的控制问题(30分)

  • 主题发起人 主题发起人 shermanxie
  • 开始时间 开始时间
S

shermanxie

Unregistered / Unconfirmed
GUEST, unregistred user!
在一个FORM中有一个EDIT控件,当前FOCUS在其他控件上,当键盘输入
任意字符时,需要将FOCUS自动转移到EDIT控件中,并输入刚才键盘输入的
字符,当EDIT中有字符的情况下,需添加在原有字符后面。
 
你可以在其它控件的keypress中加入
Edit1.Text:=Edit1.Text+Key;
Edit1.SetFocus;
 
以下方法
if edit1.enabled then
begin
edit1.setfocus;
edit1.text:=edit1.text+key;
end;
 
截取键盘消息,当发现有KeyPress事件是就
...
Edit.SetFoucus;
Edit.Text := Edit.Text + Key;
...
当界面上控件不多时,也可用唐晓锋的方法。
 
若界面上控间叫多,
可截获FORM的KEYPRESS
设置FORM的KEYPREVIEW=TRUE;
...
IF ACTIVECONTROL<>EDIT1 then

begin
edit1.text := edit1.text + key;
edit1.setfocus;
end
 
form 的 KeyPreview 为 True
然后在 OnKeyPress 中:
IF (ACTIVECONTROL<>EDIT1) and (Edit1.enabled) then

begin

edit1.text := edit1.text + key;
edit1.setfocus;
end;
//代码过分吧 :-8
 
大家都说一样的代码和原理这不想争分嘛!
 
orm 的 KeyPreview 为 True
然后在 OnKeyPress 中:
IF (ACTIVECONTROL<>EDIT1) and (Edit1.enabled) then

begin

edit1.text := edit1.text + key;
edit1.setfocus;
edit1.selstart := length(edit1.text);
edit1.sellength := 0;
end;
不然光标位置不对喽.
 
同意Another_yes的意见,只有这样才能正确反映光标位置,
不过可以不用判断
edit1.text := edit1.text+key;
key:=#0;
也可以实现同样的功能.
 
多人接受答案了。
 
后退
顶部