Autosize columns for TListView
11,727
I got the answer. Setting the column width to LVSCW_AUTOSIZE
or LVSCW_AUTOSIZE_USEHEADER
solved the problem.
Use LVSCW_AUTOSIZE
setting to set the column header to the size of the largest subitem text in the column,
and a LVSCW_AUTOSIZE_USEHEADER
setting to set the column header to the size of the text in the column header.
uses CommCtrl;
ListView1.Columns[0].Width := LVSCW_AUTOSIZE or LVSCW_AUTOSIZE_USEHEADER;
Comments
-
Bharat almost 2 years
I want to auto-size all the columns in the TListView. I am using below code, but its not doing any thing.
ListView1.Columns.Add.Caption := 'Field Name'; ListView1.Columns.Items[0].Autosize := True;
How can i auto-size the columns of TListView in Delphi.
I set my
ViewStyle to vsReport
.Thanks in advance
-
Uli Gerhardt over 13 yearsOf course, it's better to use the appropriate constants:
ColumnHeaderWidth = LVSCW_AUTOSIZE_USEHEADER;
orColumnTextWidth = LVSCW_AUTOSIZE;
. -
Aaron over 10 yearsJust wanted to add that this doesn't work if you set the width from the Object Inspector.
-
Ken White about 8 yearsThis has absolutely nothing to do with the question asked.
-
user1580348 almost 6 yearsUnfortunately, this overrides the MinWidth property. It should be vice versa.
-
Armin Taghavizad over 5 yearsshould this size be set after every time I add an item or just once?
-
dan-gph over 2 yearsI've updated the answer to use the constants.
-
dan-gph over 2 yearsI think you just need
LVSCW_AUTOSIZE_USEHEADER
. That will auto-size the column to fit the largest of the header or the items. Or-ing the two constants doesn't appear to work.