掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スクロールボックスのスクロール領域全体のサイズを得るには? (ID:20835)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
どやささん、ちゃうやんさん、メッセージありがとうございます。 ちゃうやんさん、やっぱり何か方法があるものですね。 とても奥が深いですね。 ScrollBox1の上に、Width=1000のPanelを置き実験しました。 ScrollBox1はAlign=Clientにして、フォームのサイズに合わせて大きさが変わるようにしました。 ScrollBoxの幅がPanelより小さい場合、 Panelの幅に合わせた領域がスクロール領域になり、Rangeで取得できます。 次のコードで確認しました。 procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('X=' + IntToStr(ScrollBox1.HorzScrollBar.Range)); ShowMessage('Width='+ IntToStr(ScrollBox1.Width)); end; ScrollBoxの幅がPanelより大きい場合は、 スクロールの必要がなくなるため、スクロールバーが表示されません。 その場合、Rangeは1000のままになりました。 スクロールバーが出る/出ないの境界は微妙で、次のようになりました。 No|Width|Range|スクロールバーの有無| 1| 800| 1000|有 | 2| 1000| 1000|有 | 3| 1001| 1000|有 | 4| 1003| 1000|有 | 5| 1004| 1000|無 | No.4の状態でもスクロールできました。スクロール領域は1004になりそうです。 いずれにしても、WidthかRangeの大きいほうをスクロールボックスの「スクロール領域」と考えられると思います。 厳密にはスクロールバーがないとクライアント領域なんですけど、感覚的にはこの感じで把握できました。 ありがとうございます。 ※WidthとClientRect.Right - ClientRect.Leftが一致したので、上記ではWidthだけを使って整理しました
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.