お世話になってます。
初歩的な質問かもしれませんが、Tabキー押下で任意のコントロールに
フォーカスを移す処理で悩んでいます。
画面にはSSTabのTabが複数あり、各タブのEnabled=Trueになっている
コントロールの最下のコントロールにフォーカスがある際、Tabキーで
実行cmdボタンに移動させたいのですが、KeyDownもKeyUpもKeyPressも
Tab押下イベントを拾ってくれません。
Lostfocus時に無理やり実行cmdボタンにSetFocusすると、動作的には
問題ないのですが、cmd実行以外のコントロールにマウスで移動した際、
フォーカスはcmd実行に残ってしまって見た目的にちょっと変です。
色々探したのですが、いいAPIなど見つかりません。
何か良い方法があったような気もしますが思い出せなく、
どなたかご存知の方がいればご教授お願いします。
WinXP Pro VB6.0 SP5
TabIndexを設定しておけば特に何もする必要は無いんじゃないかと思うんですが…。
お返事ありがとうございます。
SSTabのTabが3つもあるので、各タブの最下のコントロールから
Tabキーを押下した際、直ぐにはcmd実行へ飛ばないのです。
Screen.ActiveForm.ActiveControl.Tagで、各コントロールの
TabStop=False・Tagにインデックスを設定する方法を取ってみましたが、
Form_KeyDownでTabキー押下自体を拾ってくれません。
別なサンプルではTabStop=Falseで拾ってくれるのですが・・。
特殊な環境として、SSTabはわざと古いバージョンを使ってます。
("TABCTL32.ocx"のVer5.1.43.19)
関係ない気もしますが・・。
自己解決しました。
調べまくった結果、古いバージョンにはTabキーで次のタブへ飛んでしまう
MSのバグがあったようですが、同じ環境で新しいプロジェクトを作っても
現象はでなく、原因は不明ですが、皆さんはPictureBoxを貼り付ける
などして対処していたようです。
私は面倒なので、見えないダミーコントロールを各タブに貼り付け、
Tabindexで各タブの最下にし、GotFocusでcmd実行にSetFocusする
方法で取り敢えず対処しました。
ありがとうございました。
ツイート | ![]() |