如何在 Inno Setup Form 中检测 Tab 按下
How to detect Tab press in Inno Setup Form
我想检测用户何时在设置中按下 Tab 键(例如,当焦点从一个控件更改到另一个控件时)。
这是我的代码,但是 MsgBox 从未执行过。
我做错了什么?
[Code]
procedure OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
MsgBox('Hello.', mbInformation, MB_OK);
end;
procedure OnKeyPress(Sender: TObject; var Key: Char);
begin
MsgBox('Hello.', mbInformation, MB_OK);
end;
procedure OnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
MsgBox('Hello.', mbInformation, MB_OK);
end;
procedure InitializeWizard();
begin
MainForm.OnKeyDown := @OnKeyDown;
MainForm.OnKeyPress := @OnKeyPress;
MainForm.OnKeyUp := @OnKeyUp;
end;
您应该使用 WizardForm
而不是 MainForm
并将 KeyPreView
设置为 true:
procedure InitializeWizard();
begin
WizardForm.OnKeyDown := @OnKeyDown;
WizardForm.OnKeyPress := @OnKeyPress;
WizardForm.OnKeyUp := @OnKeyUp;
WizardForm.KeyPreview:=true;
end;
但我不确定它是否捕捉到虚拟键。
我想检测用户何时在设置中按下 Tab 键(例如,当焦点从一个控件更改到另一个控件时)。
这是我的代码,但是 MsgBox 从未执行过。
我做错了什么?
[Code]
procedure OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
MsgBox('Hello.', mbInformation, MB_OK);
end;
procedure OnKeyPress(Sender: TObject; var Key: Char);
begin
MsgBox('Hello.', mbInformation, MB_OK);
end;
procedure OnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
MsgBox('Hello.', mbInformation, MB_OK);
end;
procedure InitializeWizard();
begin
MainForm.OnKeyDown := @OnKeyDown;
MainForm.OnKeyPress := @OnKeyPress;
MainForm.OnKeyUp := @OnKeyUp;
end;
您应该使用 WizardForm
而不是 MainForm
并将 KeyPreView
设置为 true:
procedure InitializeWizard();
begin
WizardForm.OnKeyDown := @OnKeyDown;
WizardForm.OnKeyPress := @OnKeyPress;
WizardForm.OnKeyUp := @OnKeyUp;
WizardForm.KeyPreview:=true;
end;
但我不确定它是否捕捉到虚拟键。