VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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、配置にも間違いない場合は間違いなく他のイベント内
でそのような動きになるような処理がされている筈です。

確認してみてください。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -