小问题,那位大虾出手帮帮我~~~~(50分)

  • 主题发起人 主题发起人 blacksnow
  • 开始时间 开始时间
B

blacksnow

Unregistered / Unconfirmed
GUEST, unregistred user!
定义一个form,上面有许多button,其中3个对应h,l,d
3个键,要求任何时候,按h,l,d时,与之对应的3个button
要有按下去的动作,就像鼠标点下去一样,并激活3个button
对应的窗口,我该怎么作?
 
>并激活3个button对应的窗口,我该怎么作?
这个简单:
button1click(sender)
 
将form的keypreview set true
在form的keypress事件中加入如下语句:
if key='h' then button1Click(sender);
if key='l' then button2Click(sender);
if key='d' then button3Click(sender);
在button的click事件中,
formN.showModal;
 
Form1.KeyPreview := True;

procedure TForm1.FormKeyPress(...);
begin
case Key of
'h': Button1.Click;
'l': Button2.Click;
'd': Button3.Click;
end;
end;

procedure TForm1.Button1Click(...);
begin
FormH.Show;
end;

procedure TForm1.Button2Click(...);
...
 
shangjintong
这样虽然可以,但是不能产生button按下的动作(视觉上的),对应的
。。。。。。。。。。。。。。。。。。。
button上的焦点也没有移动!
 
诸位,这样会有“按下去”的效果吗?
试试下面的
procedure Tform1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
form1.ActiveControl:=button1;
SendMessage(button1.handle,WM_MOUSEMOVE,-1,1);
SendMessage(button1.handle,WM_LBUTTONDOWN,-1,1);

end;

procedure Tform1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
SendMessage(button1.handle,WM_LBUTTONUP,-1,1);
end;
 
试了,不行!呵呵

不如用TPANEL控件模拟一个按钮,因为它有不同的外观!
 
多人接受答案了。
 
后退
顶部