• ベストアンサー

VB6.0 テキストボックス マルチラインでの表示

初心者です。 VB6.0で、ある測定機器から測定値を読み込み、テキストボックスをマルチラインにして、毎回追加して表示したいのです。 測定値の読み込みは出来ています。 改行して毎回追加する方法を教えていただけませんか? (順次追加になるので、一番上が最新データになるようにしたいです。) 例 123.0・・・・・・最新のデータ 345.5 256.0 653.1 567.6・・・・・・最初のデータ テキストボックス内は記載できなくて結構です。単に取り込むだけでOK

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

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.6

#2です。 > Txt_1.Text = inttmp2 '・・・・・・画面上text1にモニタ値を表示 > inttmp3 = inttmp2 & Chr(13) & Chr(10) & inttmp3 (1)リストボックスに改行コードは必要ありません。 #「Chr(13) & Chr(10)」はいらない。 (2)リストボックスは、1行1データなので、以前に設定済みの物に追加する必要はありません。 #「& inttmp3」はいらない。 #ちなみに、テキストボックは、全体で1データなので、 #改行が必要ですし、設定済みのデータに追加しなければなりません。 つまり、「inttmp2」のままでよいということです。 > List1.AddItem "inttmp3" '・・・・・・画面上リスト1にモニタ値を順次表示 (3)コレでは、「inttmp3」と言う文字になってしまいます。 変数名を指定するのに、"~"は不要です。 (4)先頭に追加したいのですから、追加位置(先頭なら「0」)を指定しておかなければなりません。 って事で、 > inttmp3 = inttmp2 & Chr(13) & Chr(10) & inttmp3 この行は、完全に必要なく、 > List1.AddItem inttmp2,0 '・・・・・・画面上リスト1にモニタ値を とするだけでよさそうですけど・・・

wasp_001
質問者

お礼

どうもありがとうございました。m(__)m 順次表示できました。あともうちょっと味付けが必要なようですがw 大変お世話になりました。また、よろしくお願い致します。

その他の回答 (5)

回答No.5

こんばんは 単純に追加するのではNGなんでしょうか?  Texbox.Text = "測定値" & vbNewLine & Textbox.Text

wasp_001
質問者

お礼

ご回答ありがとうございました。 すみません。dsuekichi様の案にて進行中でしたので、そちらを採用させて頂きました。 今後の参考にさせて頂きます。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.4

#2です。 > それでリストボックスで組んでみたんですが、うまく出来ません;; とりあえず、組んでみたコードを見せてください。 後、どう「うまくいかない」かも教えてください。 #「XXXXとなると思ったが、XXXXとなってしまう」とかのレベルで構いません。 単純に、 > 現在inttmpと言う変数に毎回測定値が書き換わるようにして > Text1.textに表示できるようになってるのですが と同じタイミングで、AddItemメソッドを実行するだけで済むと思うんですが・・・

wasp_001
質問者

お礼

文字数に制限がありましたので、補足に記載しました。ちょっと恥ずかしいのですが(´・ω・`) リストに順次現れるのですが、「inttmp3」がずらずらと現れてしまいます。

wasp_001
質問者

補足

Private Sub Timer3_Timer() Timer3.Enabled = False 'レスポンス受信で正常・異常判定 buf = MSComm1.Input kioku1 = Mid(buf, 42, 1) response1 = Mid(buf, 36, 4) '・・・・・・レスポンスコードで正常か異常か判定する Select Case response1 Case "0000" '・・・・・・0000(正常なら、イベントか計測値か判定) 'イベントか計測レスポンスかを判定 Select Case response2 Case "1" '・・・・・・イベントレスポンスだった場合 taiming = Mid(buf, 42, 1) '・・・・・タイミングを計って記録する Timer2.Enabled = True '・・・・・・計測コマンドを送信 Case "2" '・・・・・・計測レスポンスだった場合 strmidstring = Mid(buf, 40, 8) 'MID関数で右から40番目から8番目までを抜き取り inttmp = Val("&H" & strmidstring) '16進数を10進数に変換 inttmp2 = Val(inttmp / 1000) Txt_1.Text = inttmp2 '・・・・・・画面上text1にモニタ値を表示 inttmp3 = inttmp2 & Chr(13) & Chr(10) & inttmp3 List1.AddItem "inttmp3" '・・・・・・画面上リスト1にモニタ値を順次表示 Open "test_kiroku.csv" For Append As #1 Write #1, Now, inttmp2 '・・・記録ファイルに保存 Close #1 Timer1.Enabled = True '・・・・・イベントコマンドを送信 End Select Case Else 'ケースが"0000”以外の時の処理 Timer1.Enabled = True 'レスポンスコードが異常の場合、再度イベントコマンドを送信 End Select End Sub

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

#2です。 > リストボックスでも考えましたが、表示画面一杯になった場合次はどうなるのでしょう? どうなるとは?? 「あふれた分は、下に隠れて、スクロールバーで表示できます。」 と言う答えで良いのかな?? リストボックスも、追加する場所が指定できますから、 先頭に追加するようにすれば済むと思いますが・・・ #そうすれば、古いデータから順に、下に隠れていく。

wasp_001
質問者

お礼

そうだったんですか・・了解しました。 それでリストボックスで組んでみたんですが、うまく出来ません;; 現在inttmpと言う変数に毎回測定値が書き換わるようにしてText1.text に表示できるようになってるのですが、このinttmpを使用してリスト ボックスに表示していくには、どうのような構文にすればいいのでしょう? 具体的にご教授お願い出来ないでしょうか?m(__)m

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

「SelStartプロパティ」で、先頭を指定して、 「SelTextプロパティ」で、追加する。 と言うのが、簡単だと思います。 #改行コードを追加するのを忘れないように。 > テキストボックス内は記載できなくて結構です。単に取り込むだけでOK だったら、テキストボックスじゃなくても良さそうですが・・・ 例えば、リストボックスとか・・・

wasp_001
質問者

お礼

ご回答ありがとうございます。 リストボックスでも考えましたが、表示画面一杯になった場合次はどうなるのでしょう? 測定値は目に見える範囲は10個ぐらいで、過去の測定値(表示画面からはみ出た数値を、マルチラインで履歴を見るみたいなことがしたいのですが・・・ うまく表現が出来ず申し訳ございません。

noname#140971
noname#140971
回答No.1

Dim DataValues(4) As Double Private Sub Form_Load()   DataValues(0) = 567.6   DataValues(1) = 653.1   DataValues(2) = 256#   DataValues(3) = 345.5   DataValues(4) = 123# End Sub Private Sub Timer1_Timer()   Static I As Integer      If I = 0 Then     Me.Text1 = ""   End If   Me.Text1 = Format(DataValues(I), "0.0") & Chr$(13) & Chr$(10) & Me.Text1   I = (I + 1) Mod 5 End Sub このコードを実行すると望みの結果が得られていることが確認できると思います。

wasp_001
質問者

お礼

ご回答ありがとうございました。 測定値の読み込みは出来ています。と書かせて頂きましたが、測定値は その都度変動します。 Text1.textには受信の都度、毎回表示できています。 と同時にText2.textに履歴を残したいのですが・・・ 上記ですと、数値が固定してないとできないと思うのですが・・・ 質問の仕方が悪くてもうしわけございませんでした。

関連するQ&A