|
||
解説: 通常、コントロールのフォーカスは、タブキーを押すと次のコントロールへ移動します。 ここでは、TWinControl の SelectNext メソッドで、フォーカスを次のコントロールに移してみます。 SelectNext メソッドを呼び出すと、現在のコントロールの次のコントロールが見つけられます。 SelectNext は以下の引数を渡して使います。 第一引数:検索を開始する現在のコントロールを指定。 第二引数:検索方向の指定。 true であればタブ順で順方向に、false であれば逆方向にコントロールを検索。 第三引数:true にすることで、TabStop プロパティを true に設定したコントロールに移動。 使用例: フォームが表示したら、アップ(↑)ダウン(↓)キーを押してみてください。 タブ順で順方向、あるいは逆方向のコントロールにフォーカスが移動します。 準備として Edit 三つと CheckBox、RadioButton をひとつずつ配置しておきます。 まず、コンストラクタで、アクティブコントロールより先に、フォームにキーボードイベントが発生するように KeyPreview プロパティを true にしておきます。 OnKeyDown イベントハンドラでアップ(↑)ダウン(↓)キーに応じて、フォーカスが移動するように SelectNext を記述します。 //------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { KeyPreview = true; } //------------------------------------------------------------------- void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_DOWN) SelectNext(ActiveControl, true, true); if (Key == VK_UP) SelectNext(ActiveControl, false, true); } //------------------------------------------------------------------- |