掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数のリストボックスのスクロールをスムーズに連動するには? (ID:4459)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
少しだけ改良。 何も考えずに作ったので、もっと簡単な方法があるかもしれません。 ScrollBarの更新部分で、もしかしたらTopIndexと同じ値ではダメかもしれません。 その場合は、GetScrollInfoで範囲を取得し、正しい値を入れてやってください。 procedure TForm1.ScrollBar1Change(Sender: TObject); var Value: integer; begin Value := ScrollBar1.Position; // 描画の禁止 ListBox1.Perform(WM_SETREDRAW, 0, 0); ListBox2.Perform(WM_SETREDRAW, 0, 0); ListBox3.Perform(WM_SETREDRAW, 0, 0); //値の設定 SendMessage(ListBox1.Handle, LB_SETTOPINDEX, Value, 0); SendMessage(ListBox2.Handle, LB_SETTOPINDEX, Value, 0); SendMessage(ListBox3.Handle, LB_SETTOPINDEX, Value, 0); // 描画の許可(まだ描画しない) ListBox3.Perform(WM_SETREDRAW, 1, 0); ListBox2.Perform(WM_SETREDRAW, 1, 0); ListBox1.Perform(WM_SETREDRAW, 1, 0); // 再描画(スクロール部分は再描画されない) InvalidateRect(ListBox1.Handle, nil, TRUE); InvalidateRect(ListBox2.Handle, nil, TRUE); InvalidateRect(ListBox3.Handle, nil, TRUE); // スクロールバーを更新 SetScrollPos(ListBox1.Handle, SB_VERT, Value, TRUE); SetScrollPos(ListBox2.Handle, SB_VERT, Value, TRUE); SetScrollPos(ListBox3.Handle, SB_VERT, Value, TRUE); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.