OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VB6でテキストボックスに入力した内容をリアルタイムにテキストファイルに書き出していく方法は?

  • 困ってます
  • 質問No.202824
  • 閲覧数386
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 67% (55/82)

テキストボックスに書き出した内容をテキストファイルに書き出すのに、最後に「保存」ボタンを作りまとめて行っていますが、これを、テキストボックスに内容を入力し始めたらそのままテキストファイルとして保存されるとともに、どんどん追加書き出しされるような方法はありませんか?
多分Keydownとかを使うのでは、と思うのですが、やり方が全然分かりません。どなたか教えてください!!!よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 40% (230/562)

テキストボックスに追加された文字に対する操作は、変数やファイルというものの構造上好ましくないですね。
また、BackSpaceやDeleteキーで消されたときにも対応できません。
TAGOSAKU7さまのコードのように、内容が変更されたら、テキストファイルのすべてを書きなおすという方法をとるのが理想です。
しかし、この方法では内容が長くなってきたときに、1文字1文字入力するたびに、ディスクアクセスが発生することになり、文字を打っている人にストレスを与えてしまいます。

ということで最後に文字を入力してからおよそ3秒後にファイルを保存するという方法を紹介します。

○ フォームにテキストボックスを貼り付け、MultiLineプロパティをTrueにする。
○ フォームにタイマーコントロールを貼り付け、Intervalプロパティを1000にして、EnabledプロパティをFalseにする。

○ 次のコードをフォームのコードに貼り付ける。

Const TEST_FILE = "c:\test.txt"
Const N_SEC = 3

Private Sub Text1_Change()

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

On Error Resume Next

Static Cnt As Long
Dim strText As String
Dim lngFile As Long

Cnt = Cnt + 1

If Cnt = N_SEC Then

Timer1.Enabled = False
Cnt = 0
Kill TEST_FILE
strText = Me.Text1.Text
lngFile = FreeFile
Open TEST_FILE For Binary Access Write As #lngFile
Put #lngFile, , strText
Close #lngFile

End If

End Sub

-------------------

ってな感じでどうでしょう。
真中ら辺はTAGOSAKU7さまのコピーです。
ちなみに
Const N_SEC = 3
の3を変えれば何秒後でもできます。
お礼コメント
fujiyama2002

お礼率 67% (55/82)

なるほど。そういう方法もあるんですね。Timerっていうのは思いつきませんでした。目からうろこです。ありがとうございます!
投稿日時 - 2002-01-22 21:01:08
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

キーダウン、キープレスだと、マウス操作による変更が反応しません。 リアルタイムということなら、チェンジイベントを使用しましょう。 サンプルは、テキストボックスのMultiLineをTrueにして使用した方が、見栄えがいいかも? Private Sub Text1_Change()   Const TEST_FILE = "c:\test.txt"      Dim ...続きを読む
キーダウン、キープレスだと、マウス操作による変更が反応しません。
リアルタイムということなら、チェンジイベントを使用しましょう。

サンプルは、テキストボックスのMultiLineをTrueにして使用した方が、見栄えがいいかも?

Private Sub Text1_Change()
  Const TEST_FILE = "c:\test.txt"
  
  Dim strText As String
  Dim lngFile As Long
  
  strText = Me.Text1.Text
  
  lngFile = FreeFile
  Open TEST_FILE For Binary Access Write As #lngFile
    Put #lngFile, , strText
  Close #lngFile
End Sub
お礼コメント
fujiyama2002

お礼率 67% (55/82)

ありがとうございます!Text1_Changeって全然知りませんでした。なるほど、テキストを更新する度にそういうイベントが発生しているわけですね。試してみます。
投稿日時 - 2002-01-22 21:03:48


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ