[開発環境:Win98/XP,VB6SP6]
こんにちは。久しぶりに質問致します。
リストビューを内部的に操作してスクロールさせるには、SendMessageを使えば実現できることを過去ログで理解しました。
さてそこで質問なんですが、例えばリストビュー内のある項目の検索を行い、ヒットした行を一番上の行に自動スクロールさせて表示させたい場合、何かよい方法はないものでしょうか。
過去ログで行きますと、
下に120スクロール
SendMessage ListView1.hwnd, WM_MOUSEWHEEL, &HFF880000, 0
のようになっていまして、3つめのパラメータの値をヒットした行に応じて変化させればいいように思うのですが、その具体的な策が思いつきません。どなたかヒントを頂けないでしょうか。
SendMessage を使わない方法の情報です。
ヘルプで FindItem メソッドの使用例に
EnsureVisible メソッドを利用した方法が
載ってます。
まぁ、このままでは一番上に表示されるとは
限りませんので GetFirstVisible メソッドや
HitTest メソッド等を利用して工夫する必要は
ありますが。
簡単にリストをクリアして
もう一度、作成しなおしたらダメ。
レスが遅くなりました。すみませんでした。
特攻隊長まるるうさん、namelessさん、貴重なアドバイスありがとうございました。
FindItem を使ってやってみましたらうまくいきました。
ただ、一番上の行に表示はできませんが、選択行が画面内に表示されれば十分なので、これでOKです。
どうもありがとうございました。\(^o^)/
ツイート | ![]() |