リストビューで選択行を一番上に自動表示させるには

解決


マロン  2006-02-13 19:43:26  No: 130190

[開発環境:Win98/XP,VB6SP6]

こんにちは。久しぶりに質問致します。

リストビューを内部的に操作してスクロールさせるには、SendMessageを使えば実現できることを過去ログで理解しました。
さてそこで質問なんですが、例えばリストビュー内のある項目の検索を行い、ヒットした行を一番上の行に自動スクロールさせて表示させたい場合、何かよい方法はないものでしょうか。

過去ログで行きますと、

    下に120スクロール
    SendMessage ListView1.hwnd, WM_MOUSEWHEEL, &HFF880000, 0

のようになっていまして、3つめのパラメータの値をヒットした行に応じて変化させればいいように思うのですが、その具体的な策が思いつきません。どなたかヒントを頂けないでしょうか。


特攻隊長まるるう  2006-02-14 00:36:37  No: 130191

SendMessage を使わない方法の情報です。
ヘルプで FindItem メソッドの使用例に
EnsureVisible メソッドを利用した方法が
載ってます。

まぁ、このままでは一番上に表示されるとは
限りませんので GetFirstVisible メソッドや
HitTest メソッド等を利用して工夫する必要は
ありますが。


nameless  2006-02-14 19:41:25  No: 130192

簡単にリストをクリアして
もう一度、作成しなおしたらダメ。


マロン  2006-02-22 01:57:12  No: 130193

レスが遅くなりました。すみませんでした。
特攻隊長まるるうさん、namelessさん、貴重なアドバイスありがとうございました。

FindItem を使ってやってみましたらうまくいきました。
ただ、一番上の行に表示はできませんが、選択行が画面内に表示されれば十分なので、これでOKです。

どうもありがとうございました。\(^o^)/


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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