質問

私は、フォーム上の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のスタイルを指定」を検索します。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top