5

フォームにTCheckListBoxがあります。そのColumnsプロパティは2に設定されており、画面上で2列に収まるよりも多くの項目がある場合は、コントロールの下部に水平スクロールバーを配置します。

このフォームのレイアウトでは、垂直方向にスクロールする方がはるかに便利です。しかし、私は箱にそれをさせる方法を理解できないようです。列を1に設定すると機能するはずだと思いましたが、機能しません。

TCheckListBoxを水平方向ではなく垂直方向にスクロールさせる方法を知っている人はいますか?

4

1 に答える 1

7

Columns0に設定する必要があります。

すべての正の値について、VCLLB_SETCOLUMNWIDTHは基になるネイティブリストボックスコントロールにメッセージを送信します。幅パラメーターは、リストボックスクライアントの幅を列数で割った値に設定されます。収まらないアイテムは、同じ列幅で新しい列を開始するため、水平スクロールバーが表示されます。

が0の場合Columns、リストボックスのクライアント幅全体にまたがる単一の列があり、収まらない項目は垂直スクロールバーを表示し、水平スクロールバーを非表示にします。

編集:

Columnsプロパティに負の値が使用された場合に何が起こるかについては、真の関心があるようです。

このメソッドTCustomListBox.CreateParams()は、0とは異なるプロパティにLBS_MULTICOLUMN応じてリストボックスのスタイルを設定します。負の値の場合、スタイルフラグが設定されますが、VCLはメッセージを送信しないため、ネイティブコントロールはデフォルトの列幅を使用します。次のように文書化されています。ColumnsLB_SETCOLUMNWIDTH

リストボックスで使用されるフォントの平均文字幅の15倍。

(「LBS_MULTICOLUMNスタイル指定」を検索して、関連するテキストのパッセージを見つけます。)

于 2010-02-19T00:00:48.737 に答える