Form1有一个按钮, 按下去创建Form2
Form2一个Action, ShortCut为Ctrl+Shift+Z, 当Form2被Show出来的时候, 快捷键不起作用, 只有当窗口被鼠标点了一下, 快捷键才起了作用,为何, 各位有什么办法
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, StdCtrls;type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
begin
Application.Minimize;
Form2 := TForm2.Create(nil);
Form2.ShowModal;
Form2.Free;
end;end.
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, ExtCtrls;type
TForm2 = class(TForm)
actlst1: TActionList;
act1: TAction;
pnl1: TPanel;
procedure act1Execute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.act1Execute(Sender: TObject);
begin
pnl1.Caption := 'Shift+Ctrl+Z MouseDown'
end;procedure TForm2.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
end;procedure TForm2.FormShow(Sender: TObject);
begin
//????怎么激活
end;end.
Form2一个Action, ShortCut为Ctrl+Shift+Z, 当Form2被Show出来的时候, 快捷键不起作用, 只有当窗口被鼠标点了一下, 快捷键才起了作用,为何, 各位有什么办法
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, StdCtrls;type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
begin
Application.Minimize;
Form2 := TForm2.Create(nil);
Form2.ShowModal;
Form2.Free;
end;end.
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, ExtCtrls;type
TForm2 = class(TForm)
actlst1: TActionList;
act1: TAction;
pnl1: TPanel;
procedure act1Execute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.act1Execute(Sender: TObject);
begin
pnl1.Caption := 'Shift+Ctrl+Z MouseDown'
end;procedure TForm2.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
end;procedure TForm2.FormShow(Sender: TObject);
begin
//????怎么激活
end;end.
解决方案 »
- 求助学习delphi的经典资料
- 请教批量缩放JPG图片效率最好的方法
- 一个关于pipe联接的问题?为了不产生监时文件,我用CreateNamedPipe来代替临时文件,但在ConnectNamedPipe时总是通不过!
- sql server2000表如何导入excel表中
- 数据库报表查询,请赐教!!!
- vcwfs.dll 函数的引用
- 请问有没有根据指定的EXE文件的路径来判断该EXE版本等有关信息的函数?
- 在线求助:DELPHI 二维数组的使用
- 关于帧控件的问题。。。。。。。。。。高手问题。。在线等待
- 如何将字符串 ‘2001-12-4 12:00:00’转化为Tdatetime类型!!
- 如何取得内存总量?
- DELPHI中如何利用ExcelWorksheet对象插入一行?
-----------
好像是点击鼠标触发了Action,而不是快捷键触发的。试一下改成这样:
procedure TForm2.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
KeyPreview := True;
end;procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=Ord('Z'))and (ssCtrl in Shift)and(ssShift in Shift)then
pnl1.Caption := 'Shift+Ctrl+Z MouseDown'
end;
1、在 From2 上放一个 TButton
2、把 TButton.Action 设置成 act1
3、把 TButton.Visible 设置成 False;
应该可以了。