• ベストアンサー

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

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

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

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

テキストボックスに追加された文字に対する操作は、変数やファイルというものの構造上好ましくないですね。 また、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
質問者

お礼

なるほど。そういう方法もあるんですね。Timerっていうのは思いつきませんでした。目からうろこです。ありがとうございます!

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

キーダウン、キープレスだと、マウス操作による変更が反応しません。 リアルタイムということなら、チェンジイベントを使用しましょう。 サンプルは、テキストボックスの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
質問者

お礼

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

関連するQ&A

  • テキストボックスに入力された内容を他のテキストボックスにコピーしたい

    テキストボックスA、Bがあるとして、テキストボックスAに何らかの文字列を入力します。 その状態でボタンを押すと、テキストボックスAの内容をテキストボックスBにコピーするようにしたいのですが、このようなことはjavascriptで可能でしょうか?

  • テキストファイル印刷 .net VB2005

    .net VB2005初心者です。 テキストファイルを、画面上、テキストボックスに出力するとこが出来ました。 そこで、そのテキストボックスの内容を、ボタンを押下しただけで、紙に印刷する方法を教えてください。

  • VB.NET テキストボックスの入力チェック

    Visual Basic 2008 に関する質問です。 画面のテキストボックスの入力値をチェックする処理として、 Validatingイベントを使用しています。 例えば、 画面上に配置しているボタンをクリックして画面を閉じさせたい場合(Application.Exit()等)、 テキストボックスの値が未入力であると、上記の入力チェックが先にはしってしまい、 画面を閉じることができません。 閉じるボタンの処理を最優先させる方法について、 どなたかご教授いただけませんでしょうか? (※初歩的なご質問で大変申し訳ございません。)

  • テキストファイルへの書き込み方法について

    テキストファイルがある場合は、データを読んでリストボックスに表示をさせ、追加の場合はテキストボックスに入力した項目をテキストファイルの一番後ろの 入れる事は出来ましたか? また、テキストファイルのデータの並び方からを昇順で保存することは出来ますか? 文章が適切ではないかもしれませんがよろしくお願いします。

  • テクストボックスからセレクトボックスへ

    1.テキストボックスにテキストを入力 2.追加ボタンを押す 3.セレクトボックスに表示 4.セレクトボックスに追加した項目を選択し削除ボタンで削除できる 以下のようなプログラムを教えていただけますでしょうか?

  • テキストボックスの入力をリセット

    ボタンが押されたら、テキストボックスの入力内容を削除するにはどうしたらいいでしょうか?

  • テキストボックスを空白にする方法

    テキストボックスに数字が入力されている場合はいいんですが、何も入力されていないときに、其のテキストボックスの値をゼロとすると、どうしてもテキストボックスに0と入力しなければ其のテキストを計算式に使えないので困っています。テキストボックスに何も表示されていないままにしたいのですが。(値はセロということのまま)   例えばテキストボックス1には10、テクストボックス2には何も入力しないでそのままにする。ボタンをクリックすると、二つの値が足されて合計10とでるようにしたいのです。その際テキストボックス2には何も入力されないままでお願いします。 わかりにくい説明ですみませんがよろしくお願いします。

  • 【Access】 テキストボックスへの入力

    毎回お世話になっております。 現在、フォームの編集をしております。 フォームはヘッダー部分と詳細部分に分かれており、ヘッダーの部分に「テキストボックスAに取引先コードを入力し、検索ボタンを押すと、同ヘッダーのテキストボックスBに該当する取引先情報が表示される」仕組みになっています。 詳細の部分には、新規の顧客情報を入力するテキストボックスが並んでおり、各レコードをテーブルに保存できるようになっています。 現在解決したい点なのですが、ヘッダーのテキストボックスBに表示された取引先情報を、ボタンを押す等の何らかの方法で、詳細の中のテキストボックスCに入力されるような仕組みが出来れば、と考えております。 (テキストボックスCのコントロールソースを変更する方法も考えましたが、各項目のソースはクエリとリンクしているので、この方法は止めました。) アイディアをお持ちの方、アドバイスを頂けますと幸甚です。 宜しくお願いします。

  • C#のフォームでテキストボックスをセットで追加したい。

    C#のフォームでテキストボックスをセットで追加したい。 添付画像の様なフォームを作成しようと考えています。 テキストボックスの3つを入力すれば、重量が算出できる様にしています。 この3つのテキストボックスをブロックの追加ボタンで、 3つをまとめて追加する方法が解りません。 ブロック数はいくつになるのか、予想できない為、 ボタンで追加させていき、最後に重量の合計を算出したいです。 コントロールの追加と、算出された重量の集計を取る良い方法の アドバイスよろしくお願いいたいます。m(_ _)m

  • テキストボックスに直接入力ができない。

    ある日突然、ワードのテキストボックスに直接入力ができなくなりました。画面左上に入力画面が出てきて確定するとテキストボックスに入ります。 環境はOS:Win7 Word2010  互換性で保存すればできます。 半角英数は直接入力できます。 Exel2010で試してみましたが入力できました。 セーフモードで起動・システムの復元も試してみましたが駄目でした。 解決方法があれば教えてください。