Domanda

Ho una TCheckListBox in un modulo. La sua proprietà Columns è impostato su 2, e se ci sono più elementi che possono stare su schermo in due colonne, mette una barra di scorrimento orizzontale nella parte inferiore del controllo.

La cosa è, il modo in cui questa forma disposto, sarebbe molto più conveniente per scorrere verticalmente. Ma io non riesco a capire come rendere la casella farlo. Ho pensato che l'impostazione Colonne a 1 dovrebbe funzionare, ma non è così.

Qualcuno sa come fare un rotolo TCheckListBox verticale anziché in orizzontale?

È stato utile?

Soluzione

È necessario impostare Columns a 0.

Per tutti i valori positivi della VCL invia un messaggio LB_SETCOLUMNWIDTH alla sottostante controllo casella di riepilogo nativa, con il parametro di larghezza impostato la larghezza cliente casella di riepilogo diviso per il numero di colonne. Gli elementi che non rientrano inizieranno una nuova colonna con la stessa larghezza della colonna, in modo che la barra di scorrimento orizzontale diventa visibile.

Se Columns è 0 allora c'è una sola colonna che si estende per l'intera larghezza del client della casella di riepilogo, e gli elementi che non si adattano farà la barra di scorrimento verticale visibile, e nascondono la barra di scorrimento orizzontale.

Modifica

Sembra che ci sia interesse genuino cosa succede quando un valore negativo viene utilizzato per la proprietà Columns.

Il metodo TCustomListBox.CreateParams() imposta la lista LBS_MULTICOLUMN scatola di stile a seconda della proprietà Columns essere diverso da 0. Per valori negativi è impostato il flag stile, ma la VCL non invia il messaggio LB_SETCOLUMNWIDTH, in modo che il controllo nativo utilizza la colonna di default larghezza. E ' documentato di essere:

  

15 volte la larghezza media dei caratteri per il tipo di carattere utilizzato dalla casella di riepilogo.

(Ricerca per "Lo stile LBS_MULTICOLUMN specifica" per trovare il relativo passaggio di testo.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top