スクロールバーを自動スクロールさせるには?

解決


  2005-09-02 23:47:43  No: 124773

ピクチャーボックスを2つ使用し、その左にスクロールバーを付けて、ピクチャー
をスクロールできるようにしました。ピクチャーボックスにはリアルタイムで
データが下方向に描画されていく感じになっています。

わからないのは、下方向に描画されていく最新データに、自動的にスクロール
していくようにするところです。
(よく似た例だと、テキストボックスのデータをSelStartで最新テキストに
スクロールしていく感じ)

リアルタイムの描画を停止させ、手動でスクロールさせることは可能なの
ですが・・・・。


通り巣鴨  2005-09-03 01:30:10  No: 124774

スクロールバーのvalueを変える事により可能です。


通ってみた  2005-09-03 01:36:37  No: 124775

スクロールバーを動かした時の処理=ピクチャーボックスのTopを変える

ですよね?だったら、

タイマー割り込みで強制的にスクロールバーを動かした事にする、つまり通り巣鴨さんが言ったようにValue値を変えてスクロールバーのScrollイベントやChangeイベントに飛ばす

ようにすればいいわけです


  2005-09-06 23:09:35  No: 124776

>スクロールバーを動かした時の処理=ピクチャーボックスのTopを変える

その通りなのですが、どのようにしてValueの値を変えるのでしょうか?
普通に代入するとかじゃなさそうなのですが。
すいませんが、もう少し詳しく教えていただきたいです。  すいません。


あんび  2005-09-06 23:21:27  No: 124777

質問内容から推測で聞きたい事がこんな感じなのか不明ですが
一度これを解析してみてください。
>通り巣鴨さんと通ってみたさんの意見も参考にしてくださいね。

Private Sub Timer1_Timer()
    VScroll1.Value = VScroll1.Value + 5
    If VScroll1.Max < VScroll1.Value + 5 Then VScroll1.Max  = Scroll1.Max + 100
End Sub


通ってみた  2005-09-06 23:33:06  No: 124778

まぁなんていうか、もしかしたらこうなのか?という感じで

なにかの処理でPictureBoxに描画されたら、Max及びValueの値をPictureBoxのスクロール最大値にしてやればいいのではないかな?

例:
Picture1.Height = Picture1.Height + 10
Scroll1.Max = Picture1.Height - (表示領域の縦幅)
Scroll1.Value = Scroll1.Max

こんな感じでどう?
どこまでスクロールさせるのかわからないけど、縦が3000ピクセルを越えるってことはないよね・・・

できなかったらスンマソ


通ってみた  2005-09-06 23:34:39  No: 124779

>>縦が3000ピクセルを越えるってことはないよね・・・
30000だったorz

Scrollの最大値が大体この辺なので、という意味で


  2005-09-09 23:11:56  No: 124780

できました!  最終的に、データとスクロールを更新後に

If HeightData > BaseHeight Then
    vsbPicture.Value = vsbPicture.Max
End If

としました。
(HeightDataは更新データの高さ、BaseHeightは表示領域を格納済み)
If文を使っているのは、そのままだとデータが下から受信されてしまうからです。

通り巣鴨さん・通ってみたさん・あんびさん  ありがとうございました!m(_ _)m


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加