我有一个带有 2 个复选框的表格(1 个用于持有CTRL- 1 个用于持有ALT)。两个 CheckBoxes 都被禁用,因此KeyDown Event
表单的正常工作。如果按下/键,还有一个TTimer
每 10 毫秒同步一次。ALTCTRL
我的timer
:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
CheckBox1.Checked := ALTDOWN; // ALTDOWN IS GLOBAL
CheckBox2.Checked := CTRLDOWN; // CTRLDOWN IS GLOBAL
end;
我的KeyDown Event
:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_MENU then begin
ALTDOWN := TRUE;
exit;
end;
if Key = VK_CONTROL then begin
CTRLDOWN := TRUE;
exit;
end;
end;
我的KeyUP Event
:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_MENU then begin
ALTDOWN := FALSE;
exit;
end;
if Key = VK_CONTROL then begin
CTRLDOWN := FALSE;
exit;
end;
end;
这对密钥没有任何问题CTRL。但是ALT键有时会卡住甚至根本不显示。当我只按下ALT键(没有任何其他组合键)时会发生这种情况。
为什么会这样,我该如何解决?