ピクチャーボックスを2つ使用し、その左にスクロールバーを付けて、ピクチャー
をスクロールできるようにしました。ピクチャーボックスにはリアルタイムで
データが下方向に描画されていく感じになっています。
わからないのは、下方向に描画されていく最新データに、自動的にスクロール
していくようにするところです。
(よく似た例だと、テキストボックスのデータをSelStartで最新テキストに
スクロールしていく感じ)
リアルタイムの描画を停止させ、手動でスクロールさせることは可能なの
ですが・・・・。
スクロールバーのvalueを変える事により可能です。
スクロールバーを動かした時の処理=ピクチャーボックスのTopを変える
ですよね?だったら、
タイマー割り込みで強制的にスクロールバーを動かした事にする、つまり通り巣鴨さんが言ったようにValue値を変えてスクロールバーのScrollイベントやChangeイベントに飛ばす
ようにすればいいわけです
>スクロールバーを動かした時の処理=ピクチャーボックスのTopを変える
その通りなのですが、どのようにしてValueの値を変えるのでしょうか?
普通に代入するとかじゃなさそうなのですが。
すいませんが、もう少し詳しく教えていただきたいです。 すいません。
質問内容から推測で聞きたい事がこんな感じなのか不明ですが
一度これを解析してみてください。
>通り巣鴨さんと通ってみたさんの意見も参考にしてくださいね。
Private Sub Timer1_Timer()
VScroll1.Value = VScroll1.Value + 5
If VScroll1.Max < VScroll1.Value + 5 Then VScroll1.Max = Scroll1.Max + 100
End Sub
まぁなんていうか、もしかしたらこうなのか?という感じで
なにかの処理でPictureBoxに描画されたら、Max及びValueの値をPictureBoxのスクロール最大値にしてやればいいのではないかな?
例:
Picture1.Height = Picture1.Height + 10
Scroll1.Max = Picture1.Height - (表示領域の縦幅)
Scroll1.Value = Scroll1.Max
こんな感じでどう?
どこまでスクロールさせるのかわからないけど、縦が3000ピクセルを越えるってことはないよね・・・
できなかったらスンマソ
>>縦が3000ピクセルを越えるってことはないよね・・・
30000だったorz
Scrollの最大値が大体この辺なので、という意味で
できました! 最終的に、データとスクロールを更新後に
If HeightData > BaseHeight Then
vsbPicture.Value = vsbPicture.Max
End If
としました。
(HeightDataは更新データの高さ、BaseHeightは表示領域を格納済み)
If文を使っているのは、そのままだとデータが下から受信されてしまうからです。
通り巣鴨さん・通ってみたさん・あんびさん ありがとうございました!m(_ _)m
ツイート | ![]() |