回车键的问题(100分)

B

beyzhzj

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个edit1的事件keypress中的过程:
procedure Tbomfz.phKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end;

end;
但是我在EDIT1中按下ENTER键,程序并不进行任何动作,如果把key=#13 改为key:='p'
就可实现TAB键的功能,我不知这是为什么?因为同样的代码在其他窗体中执行是正常的。
 
当前窗体中的某个按键的Default属性被设为True
把它设为False就可以了
 
把perform(WM_NEXTDLGCTL,0,0);去掉试试
 
QuickSilver的答案是正确的
 
同意QuickSilver
 
你看一下你的窗体的keypreview属性是不是设成true了?
而且在form的keypress事件中写了语句:
if key=#13 then
begin
key:=#0;
end;
这样就会出现你说的情况,因为窗体的keypress事件先执行了,把key赋为#0了,
当你的edit事件处理时,key就不是回车而是#0了。
 
Formde KeyPrivew设置为Ture了没有?
 
建议在form的keypress事件中处理回车按键,这样你就不用每个EDIT都处理一下了。把
你的form的keypreview属性设为true.然后在form的keypress事件中写你的代码:
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end;
 
在OnKeyUp里面写
 
注意你的 Formde KeyPrivew 默认属性的设置
 
QuickSilver说的对,该问题解决了,谢谢大家!
 
顶部