![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Колонки в TListView [D7]
Fr © (2009-07-05 10:56:00)Как подогнать ширину колонки в ListView по содержимому?
Эстет (2009-07-05 14:06:00) [1]Ага, ясно.
Юрий Зотов (2009-07-05 13:59:00) [2]> Эстет (05.07.09 13:40) [10]
Для оконных контролов отличия, можно сказать, нет. Для графических - только Perform.
Эстет (2009-07-05 13:40:00) [3]Юрий, а в чем отличие SendMessage от ListView.Perform, всмысле от ListView.Perform(LVM_SETCOLUMNWIDTH, i, LVSCW_AUTOSIZE)
Юрий Зотов (2009-07-05 13:14:00) [4]Конечно.
Fr (2009-07-05 13:12:00) [5]с помощью все того же SendMessage?
Юрий Зотов (2009-07-05 13:07:00) [6]Возможно, проще делать подгонку в обработчиках AdvancedCustomDraw...
на стадии cdPostPaint (только проследить, чтобы не возникло рекурсии). Тогда все будет подгоняться всегда и автоматически.
Fr (2009-07-05 12:55:00) [7]Спасибо! Переклинило меня :)
Юрий Зотов (2009-07-05 12:44:00) [8]Значит, в момент FormShow еще нет Items. Вывод - вызывать надо сразу после того, как они появляются.
Fr (2009-07-05 12:41:00) [9]Обработчик Tfrm1.ts1Show срабатывает до Tfrm1.FormShow. Но, хотя он и посылает SendMessage, все равно не выравнивает ширину колонки по-содержимому. Ширина колонок выравнивается по ширине названия колонки, не учитывая данные Items.
Юрий Зотов (2009-07-05 12:12:00) [10]Вызвать тот же обработчик из FormShow.
Fr (2009-07-05 12:10:00) [11]Спасибо. У меня ListView лежит на PageControl. Если поставить SendMessage на обработчик на Tfrm1.ts1Show, то он замечательно отрабатывает при переключении с вкладки на вкладку, а при создании формы, до того, как я ткнусь на вкладку, не хочет ... Как это победить?
Юрий Зотов (2009-07-05 11:17:00) [12]
uses
CommCtrl;
procedure TForm1.FormShow(Sender: TObject);
var
i: integer;
begin
with ListView1 do
for i := 0 to Columns.Count - 1 do
SendMessage(Handle, LVM_SETCOLUMNWIDTH, i, LVSCW_AUTOSIZE_USEHEADER)
end;
Если не нужно учитывать ширину текста заголовков колонок, то LVSCW_AUTOSIZE_USEHEADER заменяем на LVSCW_AUTOSIZE.