どのように私はTCheckListBoxが垂直方向にスクロールするのですか?
-
21-09-2019 - |
質問
私は、フォーム上のTCheckListBoxを持っています。その列プロパティが2に設定され、より多くのアイテムがある場合は2列に画面上に収まりきらない、それはコントロールの下部に水平スクロールバーを置きます。
事がある、それがレイアウトされ、このフォームは、それがはるかに便利だろうな方法は、垂直方向にスクロールします。しかし、私は箱はそれを行うようにする方法を見つけ出すように見えることはできません。私は、1に列を設定すると動作するはずと思ったが、それはしていません。
TCheckListBoxを作成する方法誰もが知っている垂直スクロールの代わりに、水平に?
解決
あなたは0にセットColumns
する必要があります。
は、すべての正の値についてVCLは、列の数で割ったリストボックスのクライアント幅に幅パラメータセットで、基礎となるネイティブのリストボックスコントロールにLB_SETCOLUMNWIDTH
メッセージを送信します。水平スクロールバーが見えるようになるので、適合しない項目は、同じ列の幅を持つ新しい列を開始します。
Columns
が0であれば、そこに単一の列がリストボックスのスパン全体のクライアント幅ということで、収まりきらないアイテムが垂直スクロールバーを表示させると、水平スクロールバーが非表示になります。
の編集の
負の値がColumns
プロパティに使用されたときに何が起こるか純粋な興味があるようです。
は、メソッドTCustomListBox.CreateParams()
スタイルフラグがセットされている負の値の場合は0と異なるLBS_MULTICOLUMN
特性に応じColumns
リストボックススタイルを設定しますが、VCLはLB_SETCOLUMNWIDTH
メッセージを送信しません幅。これでなるように文書化するます:
リストボックスで使用されるフォントのための15回の平均文字幅ます。
(テキストの関連経路を見つけるために、「LBS_MULTICOLUMNのスタイルを指定」を検索します。)