Frage

Ich habe eine TCheckListBox auf einem Formular bekommt. Seine Eigenschaft Spalten auf 2 gesetzt ist, und wenn es mehr Einzelteile sind als auf dem Bildschirm in zwei Spalten passen kann, bringt es einen horizontalen Scrollbalken über die Unterseite der Steuerung.

Das Ding ist, die Art und Weise diese Form es angelegt, wäre es viel bequemer, vertikal zu scrollen. Aber ich kann nicht scheinen, um herauszufinden, wie die Box zu machen, dass tun. Ich dachte, Columns 1 sollte funktionieren Einstellung, aber es funktioniert nicht.

Wer weiß, wie ein TCheckListBox machen scrollen vertikal statt horizontal?

War es hilfreich?

Lösung

Sie müssen Set Columns auf 0.

Für alle positiven Werte sendet die VCL eine LB_SETCOLUMNWIDTH Nachricht an den zugrunde liegenden nativen Listenfeld-Steuerelement, mit der Breite Parametersatz in das Listenfeld Client-Breite durch die Anzahl der Spalten unterteilt. Gegenstände, die nicht anfangen, eine neue Spalte mit der gleichen Spaltenbreite passen, so dass die horizontale Bildlaufleiste sichtbar wird.

Wenn Columns 0 ist, dann gibt es eine einzige Spalte, erstreckt sich über die gesamte Client Breite des Listenfeld und Gegenstände, die nicht passen wird die vertikale Bildlaufleiste sichtbar machen, und blenden Sie die horizontalen Bildlaufleiste.

Edit:

Es scheint echtes Interesse zu sein, was passiert, wenn ein negativer Wert für die Columns Eigenschaft verwendet wird.

Das Verfahren TCustomListBox.CreateParams() setzt den LBS_MULTICOLUMN Listenfeld Stil je nach Columns Eigenschaft verschieden von 0. Für negative Werte des Stil-Flag gesetzt ist, aber die VCL nicht die LB_SETCOLUMNWIDTH Nachricht senden, so dass die native Steuerung der Standard-Spalte verwendet Breite. Es ist dokumentiert sein:

  

15-mal die durchschnittliche Zeichenbreite für die Schrift durch das Listenfeld verwendet wird.

(Suche nach "The LBS_MULTICOLUMN Stil gibt an" die entsprechende Passage des Textes zu finden.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top