[リストへもどる]
一括表示

投稿時間:2004/07/13(Tue) 18:08
投稿者名:T&S
URL :
タイトル:
テキストボックスのカーソル位置
VB6でテキストボックス内に表示されているボックス以上の文字列を入力します。
そして、カーソルを右端に持っていくとカーソルが5文字分くらい左に移動してしまいます。
これを防ぎたいのですが、何か良い方法は有りませんでしょうか?
既存のプロパティ、イベントで処理できるのが望ましいのですが。
どなたか宜しくお願いします。

投稿時間:2004/07/13(Tue) 18:41
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: テキストボックスのカーソル位置
> VB6でテキストボックス内に表示されているボックス以上の文字列を入力します。
> そして、カーソルを右端に持っていくとカーソルが5文字分くらい左に移動してしまいます。

そのようにはなりませんが?
どのような設定の時になるのでしょうか、プロパティの値等の設定も含めて再現できる
コードを投稿願います。 因みに下記のような標準の状態ではなりませんでした。

Private Sub Form_Load()
    Text1.Text = "あいうえおかきくけこさしすせそ"
    Text1.Move 600, 600, 1600, 350
End Sub

Private Sub Text1_GotFocus()
    Text1.SelStart = Len(Text1.Text)
End Sub

投稿時間:2004/07/14(Wed) 00:14
投稿者名:だい
URL :
タイトル:
Re: テキストボックスのカーソル位置
> VB6でテキストボックス内に表示されているボックス以上の文字列を入力します。
> そして、カーソルを右端に持っていくとカーソルが5文字分くらい左に移動してしまいます。

解釈が違ってたら失礼。
カーソルが ではなく、文字列の表示が左に移動する という意味ですか?
具体例としては、
花ちゃんさんの例をお借りして...
「あいうえおかきくけこ」
と表示されているところで、
矢印キーでカーソルを右端(「こ」の位置)に移動すると、
「かきくけこさしすせそ」
と表示されますよね?
それを
「あいうえおかきくけこ」
のままで表示しておきたい ということでしょうか?

だとすると、無理やり気味ですが、
Private Sub Form_Load()
Me.Text1.Text = "1234567890ABCDEF"
    Text1.Text = "あいうえおかきくけこさしすせそ"
    Text1.Move 600, 600, 1600, 350
End Sub

Private Sub Text1_Click()
    Me.Text1.SelStart = 0 'クリックされたらカーソルを強引に先頭に戻す
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print "KeyDown ", KeyCode, Me.Text1.SelStart
If Text1.SelStart > 8 Then
    Select Case KeyCode
        Case 39, 40 '右矢印と下矢印なら
            KeyCode = 0 'キーを無視する
    End Select
End If
End Sub

#本来はMaxLengthを設定して、
#ボックスのサイズ以上の文字が入らないようにすべきものかもしれませんが。

投稿時間:2004/07/14(Wed) 09:11
投稿者名:T&S
URL :
タイトル:
Re: テキストボックスのカーソル位置
花ちゃん様、だい様、ありがとうございます。
説明不足ですみません。
だい様の仰る通りです。
参考にさせて頂きます。
ありがとうございました。