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

解決


カオリ  2005-07-15 13:28:23  No: 123520  IP: [192.*.*.*]

環境は、VB6.0です。

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

編集 削除
いな  2005-07-15 13:51:08  No: 123521  IP: [192.*.*.*]

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

編集 削除
通ってみた  2005-07-15 14:02:05  No: 123522  IP: [192.*.*.*]

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

編集 削除
カオリ  2005-07-15 14:03:46  No: 123523  IP: [192.*.*.*]

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

編集 削除
id_rsa+  2005-07-15 14:20:35  No: 123524  IP: [192.*.*.*]

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-15 15:07:49  No: 123525  IP: [192.*.*.*]

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

編集 削除
特攻隊長まるるう  2005-07-15 15:24:35  No: 123526  IP: [192.*.*.*]

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

編集 削除
id_rsa+  2005-07-15 15:39:24  No: 123527  IP: [192.*.*.*]

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

編集 削除
カオリ  2005-07-15 17:25:45  No: 123528  IP: [192.*.*.*]

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

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

編集 削除
ささ  2005-07-15 17:44:55  No: 123529  IP: [192.*.*.*]

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

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

編集 削除
特攻隊長まるるう  2005-07-15 17:47:28  No: 123530  IP: [192.*.*.*]

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

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

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

編集 削除
カオリ  2005-07-15 17:49:35  No: 123531  IP: [192.*.*.*]

すみません。

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

上記の部分で、

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

と出ます。

編集 削除
id_rsa+  2005-07-15 17:57:49  No: 123532  IP: [192.*.*.*]

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-15 20:47:20  No: 123533  IP: [192.*.*.*]

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

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

編集 削除
id_rsa+  2005-07-16 00:08:47  No: 123534  IP: [192.*.*.*]

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 10:45:20  No: 123535  IP: [192.*.*.*]

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

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

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

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

編集 削除