2010-12-03 45 views
13

Je souhaite dimensionner automatiquement toutes les colonnes dans TListView. J'utilise le code ci-dessous, mais il ne fait rien.Colonnes Autosize pour TListView

ListView1.Columns.Add.Caption := 'Field Name'; 
ListView1.Columns.Items[0].Autosize := True; 

Comment puis-je auto-dimensionner les colonnes de TListView dans Delphi. J'ai défini mon ViewStyle to vsReport.

Merci à l'avance

Répondre

17

j'ai eu la réponse. Définir la largeur de colonne à -1 ou -2 a résolu le problème.

Utilisation -1 réglage pour régler l'en-tête de colonne à la taille du plus grand texte de sous-élément dans la colonne,

et un -2 réglage pour régler la tête de la colonne à la taille du texte dans l'en-tête de colonne.

ListView1.Columns[0].Width := -1 or -2; 
+14

Bien sûr, il est préférable d'utiliser les constantes appropriées: 'ColumnHeaderWidth = LVSCW_AUTOSIZE_USEHEADER,' 'ou ColumnTextWidth = LVSCW_AUTOSIZE;'. –

+3

Je voulais juste ajouter que cela ne fonctionne pas si vous définissez la largeur à partir de l'inspecteur d'objets. – Aaron

-2

Essayez ceci:

// Assign vsReport;  
ListView1.ViewStyle := vsReport; 

    { // Add your items } 

// Assign vsList again; 
ListView1.ViewStyle := vsList; 
+0

Cela n'a absolument rien à voir avec la question posée. –