お世話になっております。
VB6でフォーム上に、
テキストボックス3つ
ボタン配列2つ
を配置し、ボタンが押されたらボタンインデクスをテキスト表示して
次のテキストボックスへとフォーカスを移動するようなプログラムを
考えています。
TextX_GotFocusでテキストボックスのオブジェクトを記憶しておき、
Command_Clickでオブジェクトを判定してSetFocusでフォーカスを移動
しています。
ボタンが1つだと動くようなのですが、2つ以上にしてインデクスを
表示させた途端、予期しないテキストボックスがアクティブになりま
す。
様々なサイトを参照したのですが、解決できません。
解決策をご存じの方、できれば具体的にご指摘いただきたいのですが。
うーん。
これだけの質問文ですと、単純なプログラムミスの可能性が一番高いように思えます。
ので、まずは当該の現象が再現する最低限のコードを
提示してみてはいかがでしょうか。
・現時点のソースコードをそのまま提示するのはやめた方がいいです。
たぶんそれなりに大きなものでしょうから、読む方がヒイてしまう可能性大です。
・必要最低限のコードを書いたら、必ず動作を確認してから提示しましょう。
もしそのコードでは現象が再現しないなら、そのコードと元のコードの
違いを比較してみましょう。
意外と、その時点で原因→解決策が見つかることもよくあります。
どうも舌足らずで失礼しました。
テストに使用したコードを提示いたします。
自分が見たところでは、明らかにココがバグというところを見つけられ
ないですが。
よろしくお願いいたします。
-----------------------------------------------------------------
Private lpc As Control
Private Sub Command1_Click(Index As Integer)
Select Case lpc
Case Text1
Set lpc = Nothing
Text1.Text = Str(Index)
Text2.SetFocus
Text2.SelStart = 0
Text2.SelLength = Len(Text2.Text)
Case Text2
Set lpc = Nothing
Text2.Text = Str(Index)
Text3.SetFocus
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
Case Text3
Set lpc = Nothing
Text3.Text = Str(Index)
Text3.SetFocus
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Select
End Sub
Private Sub Text1_GotFocus()
Set lpc = Text1
End Sub
Private Sub Text2_GotFocus()
Set lpc = Text2
End Sub
Private Sub Text3_GotFocus()
Set lpc = Text3
End Sub
-----------------------------------------------------------------
Case Text3
Set lpc = Nothing
Text3.Text = Str(Index)
※ Text3.SetFocus
※ Text3.SelStart = 0
※ Text3.SelLength = Len(Text3.Text)
End Select
※部は移す時に打ち間違ただけ?それとも…
Text3が1,2,3と来て、最後のテキストボックスなのですが、
そこからフォーカスを動かさないために、text2の場合と同じにしています。
よろしくおねがいします。
ただの理解不足と勘違いとデバッグして
ないだけだと思う。
Command1_Click の中で SetFocus してる
あとの動きが予想と違うとか言ってるん
じゃないの?
要所要所に
Debug.Print("適当な行数とか")
を入れてイベントがどの時点で処理されて
いるかちゃんとデバッグすれば解決しそう
な気がします。
最初に断ってない時点で、回答する気は失せる。
http://forums.belution.com/ja/vb/000/011/84s.shtml
ツイート | ![]() |