请问一下setfocus的问题 ( 积分: 50 )

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

siso

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;

Shift: TShiftState);

begin

if char(key)=#97 then

begin

button1.SetFocus;

button1click(sender);
小键盘数字键1
end;

end;

上面的为按小键盘对应数字键所对应的执行语句,为了看出按的是哪个键,所以每次先用setfocus
语句来取得焦点,即按数字键1就焦点跑到界面上1对应的button1,并执行相应的语句,按2就焦点定位到界面上的button2.
可是当焦点在数字键例如button1时,当按小键盘的Enter(本意是作为等于号计算结果时)时,
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;

Shift: TShiftState);

begin

if char(key)=#13 then

begin

button12.setfocus //button12为等于号,并没有取得焦点
end;

end;
此时由于焦点定位在button1上,按回车时并没有使button12即等于号取得焦点,而是变成在button1上再次执行了。
请问该如何解决,已经设数字键button的default为false,而回车是还是执行了该按键,而没有使button12取得焦点。
后来在csdn得到了一些回答,可总是不能成功! 具体请看:
http://community.csdn.net/expert/Topicview2.asp?id=4123293
谢谢了!
 
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;

Shift: TShiftState);

begin

if char(key)=#97 then

begin

button1.SetFocus;

button1click(sender);
小键盘数字键1
end;

end;

上面的为按小键盘对应数字键所对应的执行语句,为了看出按的是哪个键,所以每次先用setfocus
语句来取得焦点,即按数字键1就焦点跑到界面上1对应的button1,并执行相应的语句,按2就焦点定位到界面上的button2.
可是当焦点在数字键例如button1时,当按小键盘的Enter(本意是作为等于号计算结果时)时,
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;

Shift: TShiftState);

begin

if char(key)=#13 then

begin

button12.setfocus //button12为等于号,并没有取得焦点
end;

end;
此时由于焦点定位在button1上,按回车时并没有使button12即等于号取得焦点,而是变成在button1上再次执行了。
请问该如何解决,已经设数字键button的default为false,而回车是还是执行了该按键,而没有使button12取得焦点。
后来在csdn得到了一些回答,可总是不能成功! 具体请看:
http://community.csdn.net/expert/Topicview2.asp?id=4123293
谢谢了!
 
if char(key)=#13 then

begin

button12.setfocus //button12为等于号,并没有取得焦点
Key:=0;
///////////////加上这个应该就可以了 如果还不行就试
FormKeyDown(button12,Key,Shift);
/////////////////////
end;
 
后退
顶部