テキストボックスで、任意の文字数で改行するには?

解決


カオリ  2005-07-15 22:28:23  No: 123520

環境は、VB6.0です。

テキストファイルから読み込んできたデータを、
テキストボックスに表示させます。
データは小論文なので少し長いです。
そこで、テキストボックスで、たとえば100文字目で改行を入れる、
とかやりたいのですが、方法がよく分かりません。
教えてください。よろしくお願いします。


いな  2005-07-15 22:51:08  No: 123521

本ホームページの
「VISUAL BASIC  技術テクニック (37tips)」を探してください。


通ってみた  2005-07-15 23:02:05  No: 123522

任意文字数毎にvbCrLfを挿入すればオケ


カオリ  2005-07-15 23:03:46  No: 123523

レスありがとうございます。
ホームページを見てみたら、
TEXTBOX1.TEXT="aaaaa" + Chr$(13) + Chr$(10) + "bbbbb" 
となっていました。
これは、"aaaaa"と"bbbbb"の間に改行が入るということだと思うのですが、
100文字目、とかを指定する処理はどこに書けばいいでしょう?
申し訳ないです、プログラミングは初めてで、
あまり常識が分かっていないかも知れません。


id_rsa+  2005-07-15 23:20:35  No: 123524

Private Sub Command1_Click()
    Text1.SelStart = 100
    Text1.SelText = vbNewLine 'vbNewLine = vbCrLf
End Sub
Private Sub Form_Load()
    Text1.Text = String(200, "a")
End Sub


カオリ  2005-07-16 00:07:49  No: 123525

サンプルプログラムありがとうございます。
Private Sub Form_Load()
    'データの表示
    txt1.Text = strReadData
    txt1.SelStart = 10
    txt1.SelText = vbNewLine
End Sub
のように書いてみたのですが、10文字目の所に
「・・」とカーソルは入るのですが、改行がされません。
strReadDataには、長文が入っています。
どこかコードがおかしいのでしょうか?


特攻隊長まるるう  2005-07-16 00:24:35  No: 123526

txt1.MultiLine = True
テキストボックスに複数行が許可されてません。


id_rsa+  2005-07-16 00:39:24  No: 123527

特攻隊長まるるうさん、ありがとう。


カオリ  2005-07-16 02:25:45  No: 123528

レスありがとうございます。
プロパティの設定でMultiLineをTrueにしたら、
10文字目で改行が出来ました!
スクロールバーも出て来ました。
次はこれを1行目だけでなくファイルの終わりまでLoopさせたいと
思い以下のコードを書いたのですが、エラーで抜けてしまいます。
デバッグしてみるとデータは入っているように思うのですが、
読み込むデータが間違っているのでしょうか?

    'データの表示
    Do Until EOF(strReadData)
        txt1.Text = strReadData
        txt1.SelStart = 10
        txt1.SelText = vbNewLine
    Loop


ささ  2005-07-16 02:44:55  No: 123529

>エラーで抜けてしまいます

エラーの内容によります。


特攻隊長まるるう  2005-07-16 02:47:28  No: 123530

>    Do Until EOF(strReadData)
なにコレ?適当に書いても動かないよ。

・コードを書き込む場合は、全ての変数のデータ型を明示して下さい。
プログラムの先頭に 
    Option Explicit
と書いておく事をお勧めします。

・関数やプロパティは1度ヘルプで使い方を確認してから使って下さい。


カオリ  2005-07-16 02:49:35  No: 123531

すみません。

    'データの表示
    Do Until EOF(strReadData)    ←ココ
        txt1.Text = strReadData
        txt1.SelStart = 10
        txt1.SelText = vbNewLine
    Loop

上記の部分で、

実行時エラー'13';
型が一致しません。

と出ます。


id_rsa+  2005-07-16 02:57:49  No: 123532

Dim p As Long

txt1.Text = ""
For p = 1 To Len(strReadData) Step 10
  txt1.SelText = Mid$(strReadData,p,10) & vbNewLine
Next p

って感じかな?
良いコードじゃないけど・・・
間違ってたら、ごめん。


通ってみた  2005-07-16 05:47:20  No: 123533

EOFってそうやって使うもんだっけ・・・

まずファイルオープンしてる?
してたとして、処理先は完全にテキストボックスなんですが・・・いいのかな?


id_rsa+  2005-07-16 09:08:47  No: 123534

Dim iFile As Integer
Dim strReadData As String
Dim p As Long

'テキストファイル読み込み。
Open FileName For Binary Access Read Lock Read Write As #iFile
strReadData = StrConv(InputB(LOF(iFile), #iFile), vbUnicode)
Close iFile

'10文字ずつ改行。
txt1.Text = ""
For p = 1 To Len(strReadData) Step 10
    txt1.SelText = Mid$(strReadData,p,10) & vbNewLine
Next p


kaori  2005-07-19 19:45:20  No: 123535

すみません、パソコンは学校でしか見れないので、
お返事が遅くなってしまいました。
みなさんありがとうございます。
id_rsa+さんのコード、まるまるそのままでいけました。
丁寧なサンプルコード、ありがとうございました。

>特攻隊長まるるうさん
レスありがとうございます。
Option Explicit  は、意識していなかったのですが
最初から書いてあったみたいです。

>通ってみたさん
レスありがとうございます。
EOFの使い方は思いきり間違ってました、すみません。
ファイルオープンまでは、何とかたどり着いていました。
処理先は、テキストボックスです。

プログラムについて、まだほとんど何も知らない状態ですので、
みなさんのアドバイスを参考に
がんばって勉強していきたいと思います。
どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加