TabOrderが最後のコントロールの後にTabキーでフォーカスが消える

解決


T2  2016-11-14 19:41:04  No: 48396

TabOrderが最後のコントロールの後にTabキーを押すとフォーカスが消えるフォームがあります。
フォーカスが消えた後は何度Tabキーを押してもフォーカスがどこにも戻りません。
デバッグで確認したところ見えないコントロールにフォーカスしている等ではなくActiveControl=nilになっています。
通常は最後のコントロールでTabキーを押すと、最初のコントロールにフォーカス移動してループするものだと思いますが、このような動きになる原因は何でしょうか。

また、Shift + Tabキーの場合は最初のコントロールの後、フォーカスが消えますが、もう一度Tabキーを押すと最後のコントロールにフォーカスが戻ってきます。

KeyDown等のイベントでTabキーを拾うような処理は行っていません。
このような動作となる原因は何が考えられますか?

環境はWindows7、Delphi XEです。


通りすがり  2016-11-14 23:29:37  No: 48397

フォーカスを持ったコントロールが破棄されるとそんな動きになるかもしれません。
とりあえずTCustomForm.SetActiveControlあたりにブレークポイントを置いて
動作を確認してみるといいかも?


T2  2016-11-15 01:54:03  No: 48398

SetActiveControlにブレークを貼ってデバッグしてみて解決しました。
TabOrder=0のコンポーネントがOnEnterでEnabled=False、OnExitでEnabled=Trueという変わった処理をしていました・・・。
恥ずかしい見落としで恐縮です。

通りすがりさん、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加