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

解決


 2005-09-02 14:47:43  No: 124773  IP: [192.*.*.*]

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

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

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

編集 削除
通り巣鴨  2005-09-02 16:30:10  No: 124774  IP: [192.*.*.*]

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

編集 削除
通ってみた  2005-09-02 16:36:37  No: 124775  IP: [192.*.*.*]

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

ですよね?だったら、

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

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

編集 削除
 2005-09-06 14:09:35  No: 124776  IP: [192.*.*.*]

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

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

編集 削除
あんび  2005-09-06 14:21:27  No: 124777  IP: [192.*.*.*]

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

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 14:33:06  No: 124778  IP: [192.*.*.*]

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

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

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

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

できなかったらスンマソ

編集 削除
通ってみた  2005-09-06 14:34:39  No: 124779  IP: [192.*.*.*]

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

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

編集 削除
 2005-09-09 14:11:56  No: 124780  IP: [192.*.*.*]

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

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

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

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

編集 削除