Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi】OnKeydown 組み合わせキーのハンドリング

今回は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キー

ショートカットや特殊操作などのキー制御で便利な機能ですので是非ご活用ください。

 

 

 

(ミガロ.情報マガジン「MIGARO News!!」Vol.165 2014年8月号より)