tab移動について


TOTO  2003-04-23 01:34:39  No: 106838

Option1ボタンにいる時TABを押したとき
Option2ボタンにいどうするにはどうすればいいのですか。


nanashi  2003-04-23 01:58:37  No: 106839

出来ないことはないですが処理が面倒臭くなりますよ。

方法1.
  オプションボタンをそれぞれ別のコンテナに突っ込む。
  一つ一つが別のグループのオプションボタンだと認識されるので各オプションボタンのClickイベントで
  同じグループのオプションボタンを自分以外全てFalseに変更する必要がある。
  (そうしないとオプションボタンの役割を果たさなくなる)

方法2.
  フォームのKeyPreviewをTrueにし、フォーム上の全てのオブジェクトのTabStopをFalseにして
  全てのTab移動を自力で行う。

他のやり方を知ってる方、フォローお願いしますm(_ _)m


R&K  2003-04-23 02:53:10  No: 106840

KeyPressイベントでKeyAsciiがvbTabだったら
Option2をSetFocusするのは駄目でしょうか?

それぞれのOptionButtonがコントロール配列
の場合には、Indexを指定してSetFocusすれば
一応それっぽくなりますよね?

こんな感じですか?

Private Sub Option1_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii = vbTab Then Option2(0).SetFocus
End Sub
Private Sub Option2_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii = vbTab Then Option1(0).SetFocus
End Sub


nanashi  2003-04-23 03:10:40  No: 106841

通常TABキーはKeyDown、KeyPress、KeyUpイベントでは取得できません。

フォーム上の全てのコントロールのTabStopがFalseになっているか、
オプションボタン(全て同じグループ)以外フォーカスを持てるコントロールがないならTABキーも取得は出来ますが。


R&K  2003-04-23 03:25:16  No: 106842

nanashiさんへ

そうですか〜、テストしたときはオプションボタン
だけだったからか。ありがとうございます。

あ、キーフックでタブキーが押されたことを取得するってのは
どうでしょうか?でも、やっぱり面倒くさそうですねぇ。


マッシュ  2003-04-24 05:12:09  No: 106843

TabIndexプロパティじゃ駄目ですか?
値が小さい順に移動しますが。


ぢゃわ  2003-04-25 02:31:40  No: 106844

ひとつのオプションボタンにフォーカスが当たった時点で
同じグループのほかのオプションボタンのTabStopはFalseに
設定されるようです。

なので、各オプションボタンのGotForcusイベント内で、
同グループのオプションボタン全てについてTabIndexを
Trueに設定し直してあげればTab移動できるようになります。

オプションボタンがコントロール配列なら

Private Sub Option1_GotFocus(Index As Integer)
    For i = 0 To Option1.UBound
        Option1(i).TabStop = True
    Next
End Sub

という感じでいいのですが、質問の通りOption1、Option2
と別名になっているのであれば、それぞれのオプションボタンの
GotForcusイベントについて記述する必要があると思います。

Private Sub Option1_GotFocus()
    Option2.TabStop = True
End Sub
Private Sub Option2_GotFocus()
    Option1.TabStop = True
End Sub


ぢゃわ  2003-04-25 02:45:51  No: 106845

自己補足でスミマセン。
GotForcusイベントはクリックでオプションボタンに
フォーカス移動した場合には処理されないようです。
Clickイベントでも同様の処理をする必要があるようです。


nanashi  2003-04-25 03:11:02  No: 106846

おー、スゲーッ!!
この方法は全く知りませんでした、というより

> ひとつのオプションボタンにフォーカスが当たった時点で
> 同じグループのほかのオプションボタンのTabStopはFalseに
> 設定されるようです。

この事実を初めて知りました。
ありがとうございます、今後の参考にさせて頂きます。


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

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






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