初歩的な質問ですが宜しくお願いします。
Form1にタブダイアログコントロール(SSTab1)を1つ追加します。
Tab0、Tab1、Tab2 という3つのタブを作成します。
SSTab1上の各タブにコマンドボタンを4つずつ追加します。
以上の様にして、VBにてメニュー画面を作成しているのですが、
矢印キーやタブキーでコマンドボタンを選択していると、
SSTab1で隠れているタブ上のコントロールにフォーカスが移動
してしまい、うまくカーソルを制御出来ません、よい方法はな
いでしょうか。
あとSSTab1のTab1を選択したさい、先頭のコマンドボタンに
フォーカスを移動したいのですがうまく出来ません。
お願いします。
プロパティのTabIndexでスキップさせる。
もしくは、SetForcusメソッドにて移動させたいコマンドボタンへ
フォーカスを与える。
でうまく行きませんか。
試してません・・・
試してみましたが、まだ気になる個所があります。
tab1、tab2、tab3にカーソルがフォーカスされません
←→キーでタブ移動をしたいのですが。
作成したvbソースです、宜しくお願いします。
Private Sub Form_Load()
SSTab1.Tab = 1
Call SSTab1_Click(0)
End Sub
Private Sub SSTab1_GotFocus()
Select Case SSTab1.Tab
Case 0
Command1(0).SetFocus
Case 1
Command2(0).SetFocus
Case 2
Command3(0).SetFocus
End Select
End Sub
Private Sub SSTab1_Click(PreviousTab As Integer)
Dim sw As Boolean
Dim i As Integer
'
If SSTab1.Tab = 0 Then
sw = True
Else
sw = False
End If
For i = 0 To 3
Command1(i).Enabled = sw
Next i
'
If SSTab1.Tab = 1 Then
sw = True
Else
sw = False
End If
For i = 0 To 3
Command2(i).Enabled = sw
Next i
'
If SSTab1.Tab = 2 Then
sw = True
Else
sw = False
End If
For i = 0 To 3
Command3(i).Enabled = sw
Next i
End Sub
SSTab1.SetFocus
でもダメですか?
余計なお世話ですがSSTabは使いにくいのよね。
TabStripの方に浄土あり。
昔からバグが多い傾向がありますね。
元々サードパーティ製の「気合いの入っていないおまけ」だったという経緯がありますから
(VB4の頃はOCXファイルのプロパティを見るとちゃんと提供元のベンダ情報が入っていましたので、VB付属のActiveXコントロールの多くがお試し版というのは公然の事実でした)。
目立つところはこの辺ですが・・・ なんとなく 193021が図星のような気がします。
http://support.microsoft.com/default.aspx?scid=kb;ja;193021
http://support.microsoft.com/default.aspx?scid=kb;ja;257661
http://support.microsoft.com/default.aspx?scid=kb;ja;279739
http://support.microsoft.com/default.aspx?scid=kb;en-us;154885
他にもVB4の頃まで遡るとこの通り。
また、何故か今はKBから消えてしまいまったので実は不適切な方法なのかもしれませんが、文書番号 J044337(英語版の Q178469の日本語訳)には、FormのLoadとタブのClickでタブに含まれているコントロールのLeftプロパティを参照してEnabledを強制的に変更するという対策コード例が出ています。
Dim c As Control
For Each c In Controls
If (c.Container Is SSTab1) Then
c.Enabled = (c.Left >= 0)
End If
Next
いろいろと回答を頂きありがとうございます。
早速、試してみたいと思います。
ツイート | ![]() |