[Delphi] Enterキーで次のフィールドに移動する

コンポーネントのKeyPressイベントを使います。
KeyPressイベントでEnterキーが押されたときに、次のコントロールに移動するWindowsのメッセージを送ってフォーカスを移動させます。
任意のコントロールにフォーカスを移動させる場合には、コントロール名.SetFocusを使用します。

procedure Edit1KeyPress(var Key: Char);
begin
  if (Ord(Key) = VK_RETURN) and (Shift = []) then
  begin
    // Enterキーが押されたら、次フィールドへ移動する。
    // Delphi関数を使う方法
    SelectNext(ActiveControl, GetKeyState(VK_SHIFT) >= 0, true);
    // ...Windows Messageを使用する方法
    //SendMessage(Handle, WM_NEXTDLGCTL, Ord(GetKeyState(VK_SHIFT) < 0), 0);
    // 通常のEnterキーの処理をしないようにクリアしてしまおう。
    Key := #0;
  end;
end;

コメント (2件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0001