多窗体的问题(100分)

  • 主题发起人 主题发起人 pingpingniu
  • 开始时间 开始时间
P

pingpingniu

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一个主窗体,两个(以后可能更多)子窗体,主窗体用菜单来调用
两个子窗体。现在调用了一个子窗体,希望通过键盘切换到另一个子窗
体(即只按某个键就可在两个窗体间切换),有办法吗?
 
procedure TForm1.N111Click(Sender: TObject);
begin
form1.show;
form2.hide;
end;

procedure TForm1.N121Click(Sender: TObject);
begin
form2.show;
form1.hide;
end;
 
你这样做的话,首先得让主窗体的到焦点,然后再
用菜单的热键启动窗体。不符合要求。
我的用户不用鼠标,只希望通过一个键来切换子窗
体。下面是我的方法:
我在子窗体的KeyPress事件中添加以下代码(其中FrmMain是主窗体,F12是
主窗体启动另一个子窗体的菜单热键)
procedure TFrmOperat.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
begin
//FrmMain.SetFocus;
POSTMessage( FrmMain.handle, WM_KEYDOWN, VK_F12 ,0);
end;
end;

我在主窗体的KeyDown事件中添加以下代码:
procedure TFrmMain.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
showmessage(inttostr(key));
end;
我想要用户在按下回车键就可以模拟主窗体按下F12,启动另一个窗体。
结果确实也截获到了发送过来的Key值。
但是另一个窗体没有出来,为什么?是不是我的方法不对?
还有,我如何向主窗体发送例如(Shift + A)的消息?
 
我的问题已经解决了!!^o^
原来根本就用不着发消息!!
不过按理说这样做也不错呀!
有谁能告诉我原因,分数马上
就属于你了也!!!
 
其实,窗体有一个SHORTCUT事件(好像是这个名字),只要你在里面写了代码,保准有效)
既然已经做好了,就不说了。
 
多人接受答案了。
 
后退
顶部