投稿日 | : 2004/02/13(Fri) 11:11 |
投稿者 | : ak |
Eメール | : |
URL | : |
タイトル | : Re: もう一つだけ教えてください!! |
> Private Sub imText1_Change(Index As Integer)
> If imText1(Index).SelStart = imText1(Index).MaxLength Then
> select case Index
> case 3
> SendKeys "{TAB 2}"
> case else
> SendKeys "{TAB}"
> end select
> End Sub
> としようとしたのですが、カーソルが移動してくれません。
Changeイベント内のコードはこれでOKです。
しかしこれだけでは文字列を変更した時には移動するけど「Enter」押下時には移動
しませんよね。
よく考えてみてください。
Changeイベントはテキストに変更があった場合だけ発生するイベントです。
「Shift+Enter」または「Enter」押下時にはテキストに変更が無い為発生しません。
そこでKeyDownイベントでも処理してあげる必要があります。
KeyDownイベントに下記コードを追加してみてください。
Private Sub imText1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
If Index = 3 And KeyCode = 13 And Shift = 0 Then imText1(5).SetFocus
End Sub
これで思っていた通りの動きになる筈です。
> また、このときShift+Enterキーを押すと2つ前のテキストボックスに移動してしまいます。
> (imText1(3)でShift+Enterキーを押すとimText1(1)にカーソルが移動する。正解はimText1(2))
上記でも述べましたが「Shift+Enter」または「Enter」押下時にはChangeイベントは
発生しないので全く関係ありません。
恐らくTabIndexが配列順になっていないのではないでしょうか?
TabIndexが配列順になっているのであれば配置が配列順になって
いない可能性もあります。(良くありがちです。)
TabIndex、配置にも間違いない場合は間違いなく他のイベント内
でそのような動きになるような処理がされている筈です。
確認してみてください。