none
ListView にて縦スクロールバーが表示されているか? RRS feed

  • 質問

  • お世話様です。(VS2005、VB.NET)

    件名のとおりなのですが、Listviewにて縦スクロールバーが表示されているか

    どうか状態を取得する方法はないでしょうか?

     

    2006年5月23日 13:12

回答

  • 標準ではできないかな?

    APIを使う方法であれば、LVM_GETCOUNTPERPAGEで完全に表示可能な行数を求めて
    Items.Count - TopItem.Index > 行数 ならスクロールバーが表示されているとか。

    ちなみにスクロールバーを除いた横幅ならClientRectangleで求めることができます。
    そういうことではない?

    2006年5月23日 16:07
  •  まどか さんからの引用

    Items.Count - TopItem.Index > 行数 ならスクロールバーが表示されているとか。

    TopItem.Index が 0 以外なら必ずスクロールバーが表示されてると思います(w;

     

    View が Details ならこれで良いでしょうけど、それ以外なら Win32API の GetScrollInfo 関数あたりを使う必要があるかも。

    2006年5月23日 16:44
  •  まどか さんからの引用

    ちなみにスクロールバーを除いた横幅ならClientRectangleで求めることができます。
    そういうことではない?

    まどかさん、Hongliangさん有難う御座います。

    やりたかったのは、 スクロールバーを除いた横幅だったのです。

    ですので、ClientRectangleで解決できました。有難う御座いました。

    2006年5月24日 1:58

すべての返信

  • 標準ではできないかな?

    APIを使う方法であれば、LVM_GETCOUNTPERPAGEで完全に表示可能な行数を求めて
    Items.Count - TopItem.Index > 行数 ならスクロールバーが表示されているとか。

    ちなみにスクロールバーを除いた横幅ならClientRectangleで求めることができます。
    そういうことではない?

    2006年5月23日 16:07
  •  まどか さんからの引用

    Items.Count - TopItem.Index > 行数 ならスクロールバーが表示されているとか。

    TopItem.Index が 0 以外なら必ずスクロールバーが表示されてると思います(w;

     

    View が Details ならこれで良いでしょうけど、それ以外なら Win32API の GetScrollInfo 関数あたりを使う必要があるかも。

    2006年5月23日 16:44
  •  Hongliang さんからの引用

    TopItem.Index が 0 以外なら必ずスクロールバーが表示されてると思います(w;

    ひぃ、VB6のときのコードをそのまんま移してそのまんまになってましたぁ
    これ書くときにTopItemを意識したのにそこへ頭がまわりませんでした。

    2006年5月24日 0:34
  •  まどか さんからの引用

    ちなみにスクロールバーを除いた横幅ならClientRectangleで求めることができます。
    そういうことではない?

    まどかさん、Hongliangさん有難う御座います。

    やりたかったのは、 スクロールバーを除いた横幅だったのです。

    ですので、ClientRectangleで解決できました。有難う御座いました。

    2006年5月24日 1:58