TabOrderが最後のコントロールの後にTabキーを押すとフォーカスが消えるフォームがあります。
フォーカスが消えた後は何度Tabキーを押してもフォーカスがどこにも戻りません。
デバッグで確認したところ見えないコントロールにフォーカスしている等ではなくActiveControl=nilになっています。
通常は最後のコントロールでTabキーを押すと、最初のコントロールにフォーカス移動してループするものだと思いますが、このような動きになる原因は何でしょうか。
また、Shift + Tabキーの場合は最初のコントロールの後、フォーカスが消えますが、もう一度Tabキーを押すと最後のコントロールにフォーカスが戻ってきます。
KeyDown等のイベントでTabキーを拾うような処理は行っていません。
このような動作となる原因は何が考えられますか?
環境はWindows7、Delphi XEです。
フォーカスを持ったコントロールが破棄されるとそんな動きになるかもしれません。
とりあえずTCustomForm.SetActiveControlあたりにブレークポイントを置いて
動作を確認してみるといいかも?
SetActiveControlにブレークを貼ってデバッグしてみて解決しました。
TabOrder=0のコンポーネントがOnEnterでEnabled=False、OnExitでEnabled=Trueという変わった処理をしていました・・・。
恥ずかしい見落としで恐縮です。
通りすがりさん、ありがとうございました。
ツイート | ![]() |