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

投稿時間:2003/09/17(Wed) 13:12
投稿者名:ひろ
URL :
タイトル:
TextBoxに上書きで入力
こんにちは。ひろです。昨夜もこちらでお世話になりましたVB初心者です。
また小さい事(?)で足踏みしており、質問させて頂きます。

文字数制限をかけているテキストボックスに上書きで文字を入力出来る様に
したいのですが、なかなかいい方法が見付かりません。現在は以下の様に
コーディングしていますが、

Private Sub Text1_GotFocus()
    Text1.SelStart = 0
    Text1.SelLength = 10
End Sub

この方法ですと、文字が反転表示されてしまいます。出来ればそうする事なく
入力されている文字列の先頭にカーソルをもっていきたいのです。どなたか
良い方法をご存知の方がおられましたら教えてください。ちなみに、環境は
VB6.0、WindowsXPです。宜しくお願いします。

投稿時間:2003/09/17(Wed) 14:02
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: TextBoxに上書きで入力
> 入力されている文字列の先頭にカーソルをもっていきたいのです。
だけなら下記でできますが、上書き入力はできません。
Private Sub Text1_GotFocus()
     Text1.SelStart = 0
End Sub

> 文字数制限をかけているテキストボックスに上書きで文字を入力出来る様に
ならRichTextBoxを使って Insert キーを有効にすればいいかと思います。

投稿時間:2003/09/17(Wed) 15:21
投稿者名:ひろ
URL :
タイトル:
Re^2: TextBoxに上書きで入力
花ちゃんさん、お早い回答有難うございます。質問自体、要旨を逸し
気味の初心者にもきちんと対応して頂き、感謝しています。

さて、教えて頂いた件ですが、

> > 入力されている文字列の先頭にカーソルをもっていきたいのです。
> だけなら下記でできますが、上書き入力はできません。
>  Private Sub Text1_GotFocus()
>      Text1.SelStart = 0
>  End Sub

そうなんですよね。これに少々書き加えるような感じのコーディングの
技があったらと思ったんですが…。

> > 文字数制限をかけているテキストボックスに上書きで文字を入力出来る様に
> ならRichTextBoxを使って Insert キーを有効にすればいいかと思います。

すみません。Insert キーを有効にというのは、キーボード上の操作の
事ですよね? 説明が足りませんでした。出来ればコードの技だけで
何とかしたかったんです(わがままですみません)。何か他にいい方法が
ありましたら是非教えて下さい。

投稿時間:2003/09/17(Wed) 16:04
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re^3: TextBoxに上書きで入力
よく分かりませんけど、上書きってこんなんで良いんでしょうか??


Option Explicit

Private lOldPos As Long
Private bSelect As Boolean

Private Const lMaxLength As Long = 10&  'MaxLengthプロパティは設定しないで下さい。

Private Sub Text1_Change()
    Dim sBuff As String
    Dim lLen&, lNewPos As Long
    Static bChk As Boolean
    
    If bChk Then Exit Sub
    
    bChk = True
    
    With Text1
        sBuff = .Text
        lLen = Len(sBuff)
        lNewPos = .SelStart
        
        If lNewPos > lOldPos Then
            sBuff = Left$(sBuff, lNewPos) & Mid$(sBuff, lNewPos * 2 - (lOldPos - bSelect) + 1)
        End If
        
        .Text = Left$(sBuff, lMaxLength)
        .SelStart = lNewPos
        lOldPos = lNewPos
        bSelect = False
    End With
    
    bChk = False
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    
    With Text1
        lOldPos = .SelStart
        bSelect = .SelLength > 0
    End With
End Sub

投稿時間:2003/09/17(Wed) 16:40
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: TextBoxに上書きで入力
> Insert キーを有効にというのは、キーボード上の操作の
> 事ですよね? 説明が足りませんでした。出来ればコードの技だけで
> 何とかしたかったんです(わがままですみません)。

キーボードのキーをプログラムから操作する事は可能です。
ここの逆引きヘルプの[特殊キーの押下げをプログラムから実施する]を参照


nanashi さんがいい方法を投稿されているのでもういいかとは思いますが。

投稿時間:2003/09/17(Wed) 17:34
投稿者名:ひろ
URL :
タイトル:
Re^4: TextBoxに上書きで入力
nanashiさん、花ちゃんさん、有難うございました。呆れる程の
初心者ですので、教えて頂いたものを自分のソースに当てはめる
のも遅々として進みません。問題の解決をみてからですと相当
遅レスになりそうですので、先にお礼を申し上げておきます。
正直分からない内容もありましたので、自分なりに反芻してよく
勉強します。本当に有難うございました。きっとまた近いうちに
寄らせて頂く事になると思われますが、広い心で受け入れてやって
下さい。