アプリ版:「スタンプのみでお礼する」機能のリリースについて

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


123.0・・・・・・最新のデータ
345.5
256.0
653.1
567.6・・・・・・最初のデータ

テキストボックス内は記載できなくて結構です。単に取り込むだけでOK

A 回答 (6件)

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

このコードを実行すると望みの結果が得られていることが確認できると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
測定値の読み込みは出来ています。と書かせて頂きましたが、測定値は
その都度変動します。
Text1.textには受信の都度、毎回表示できています。
と同時にText2.textに履歴を残したいのですが・・・

上記ですと、数値が固定してないとできないと思うのですが・・・
質問の仕方が悪くてもうしわけございませんでした。

お礼日時:2007/04/06 15:33

「SelStartプロパティ」で、先頭を指定して、


「SelTextプロパティ」で、追加する。

と言うのが、簡単だと思います。
#改行コードを追加するのを忘れないように。

> テキストボックス内は記載できなくて結構です。単に取り込むだけでOK

だったら、テキストボックスじゃなくても良さそうですが・・・
例えば、リストボックスとか・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/06 15:41

#2です。



> リストボックスでも考えましたが、表示画面一杯になった場合次はどうなるのでしょう?

どうなるとは??

「あふれた分は、下に隠れて、スクロールバーで表示できます。」

と言う答えで良いのかな??

リストボックスも、追加する場所が指定できますから、
先頭に追加するようにすれば済むと思いますが・・・
#そうすれば、古いデータから順に、下に隠れていく。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/06 18:08

#2です。



> それでリストボックスで組んでみたんですが、うまく出来ません;;

とりあえず、組んでみたコードを見せてください。
後、どう「うまくいかない」かも教えてください。
#「XXXXとなると思ったが、XXXXとなってしまう」とかのレベルで構いません。

単純に、
> 現在inttmpと言う変数に毎回測定値が書き換わるようにして
> Text1.textに表示できるようになってるのですが
と同じタイミングで、AddItemメソッドを実行するだけで済むと思うんですが・・・

この回答への補足

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

補足日時:2007/04/06 18:44
    • good
    • 0
この回答へのお礼

文字数に制限がありましたので、補足に記載しました。ちょっと恥ずかしいのですが(´・ω・`)

リストに順次現れるのですが、「inttmp3」がずらずらと現れてしまいます。

お礼日時:2007/04/06 18:49

こんばんは


単純に追加するのではNGなんでしょうか?
 Texbox.Text = "測定値" & vbNewLine & Textbox.Text
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/06 19:48

#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にモニタ値を
とするだけでよさそうですけど・・・
    • good
    • 0
この回答へのお礼

どうもありがとうございました。m(__)m

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

お礼日時:2007/04/06 19:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!