今回はDelphi/400で入力された組み合わせキーのハンドリング方法をご紹介いたします。
Delphi/400で入力されたキーを制御する場合、OnKeydownイベントを使用します。
例えばEdit1でEnterキーを押下された場合には、以下のようにハンドリングすることができます。
例)
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// 入力キーがEnter(13)だった場合にメッセージ
if Key = 13 then
begin
ShowMessage('Enterキー押下');
end;
end;
キー入力は単一キーだけで行われる場合もありますが、
ShiftキーやCtrlキーなど特殊キーと組み合わせて押下することで別動作となる場合もあります。
しかし、上記のプログラムではShiftキーとEnterキーを同時に押下しても
Enterキーの入力としてしか反応することができません。
そうした制御をプログラム上で行う場合、
OnKeydownイベントに用意されたShiftパラメータを使用することで判断することができます。
例)
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// 入力キーがShift(ssShift)+Enter(13)だった場合にメッセージ
if (ssShift in Shift) and (key = 13) then
begin
ShowMessage('Shift+Enterキー押下');
end;
end;
この例ではShift+Enterキーを同時に押下した場合のみメッセージを表示することができます。
ShiftパラメータはTShiftStateクラスを使用しており、
よく利用するもので以下のようなキーを判断できます。
- ssShift:Shiftキー
- ssCtrl :Ctrlキー
- ssAlt :Altキー
ショートカットや特殊操作などのキー制御で便利な機能ですので是非ご活用ください。