タイトル | : Re: テキストボックスのSelStartについて |
記事No | : 12879 |
投稿日 | : 2008/08/11(Mon) 01:45 |
投稿者 | : 花ちゃん |
> テキストボックスのSelStartプロパティは 12282 以上は設定できないようなのですが、 > それ以上の値を設定することはできませんでしょうか?
詳しい理由は知りませんが(バグか?仕様か?)、64KB の制限がいきているようです。 (固定長文字列の制限と同じじゃないのかな)
ヘルプの記載には、テキスト ボックス コントロールの Text プロパティに設定する 文字列は、MultiLine プロパティが真 の場合は最大で約 32KB まで、に制限されています。 とは書いてあるのですが。(VB5.0 の時から同じ内容) 実際に表示できる文字数は、OS 等によっても違ってきます。
Private Sub Command1_Click() Dim s As String s = String$(100000, "a") Text1.Text = s Debug.Print Len(Text1.Text) Text1.SelStart = Len(Text1.Text) Debug.Print Text1.SelStart Debug.Print LenB(StrConv(Text1.Text, vbFromUnicode)) & vbCrLf s = String$(100000, "花") Text1.Text = s Debug.Print Len(Text1.Text) Text1.SelStart = Len(Text1.Text) Debug.Print Text1.SelStart Debug.Print LenB(StrConv(Text1.Text, vbFromUnicode)) End Sub
上記を実行した後、表示しているテキストボックスに直接文字を書き足してから 下記を実行して見て下さい。
Private Sub Command2_Click() On Error Resume Next Debug.Print Len(Text1.Text) Text1.SelStart = Len(Text1.Text) Debug.Print Text1.SelStart End Sub
即ち、64KB 以上表示させた場合、64KB を除いた文字数が SelStart の値になって しまいます。(実際は、SelStart プロパティ でエラーが発生しますが)
ファイルサイズの大きいファイルを扱うなら RichTextBox を使用するようにしたら どうでしょうか。
|