2つのチェックボックスを備えたフォームがあります(1つは保持用ですCTRL-1つは保持用ですALT)。KeyDown Event
フォームのが正しく機能するように、両方のチェックボックスが無効になっています。/キーを押すとTTimer
10msごとに同期するもあります。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ます(他のキーを組み合わせて押した場合はありません)。
それはなぜですか、どうすればこれを修正できますか?