Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.06;
Скачать: CL | DM;

Вниз

Колонки в TListView   Найти похожие ветки 

 
Fr   (2009-07-05 10:56) [0]

Как подогнать ширину колонки в ListView по содержимому?


 
Юрий Зотов ©   (2009-07-05 11:17) [1]


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.


 
Fr   (2009-07-05 12:10) [2]

Спасибо. У меня ListView лежит на PageControl. Если поставить SendMessage на обработчик на Tfrm1.ts1Show, то он замечательно отрабатывает при переключении с вкладки на вкладку, а при создании формы, до того, как я ткнусь на вкладку, не хочет ... Как это победить?


 
Юрий Зотов ©   (2009-07-05 12:12) [3]

Вызвать тот же обработчик из FormShow.


 
Fr   (2009-07-05 12:41) [4]

Обработчик Tfrm1.ts1Show срабатывает до Tfrm1.FormShow. Но, хотя он и посылает SendMessage, все равно не выравнивает ширину колонки по-содержимому. Ширина колонок выравнивается по ширине названия колонки, не учитывая данные Items.


 
Юрий Зотов ©   (2009-07-05 12:44) [5]

Значит, в момент FormShow еще нет Items. Вывод - вызывать надо сразу после того, как они появляются.


 
Fr   (2009-07-05 12:55) [6]

Спасибо! Переклинило меня :)


 
Юрий Зотов ©   (2009-07-05 13:07) [7]

Возможно, проще делать подгонку в обработчиках AdvancedCustomDraw...
на стадии cdPostPaint (только проследить, чтобы не возникло рекурсии). Тогда все будет подгоняться всегда и автоматически.


 
Fr   (2009-07-05 13:12) [8]

с помощью все того же SendMessage?


 
Юрий Зотов ©   (2009-07-05 13:14) [9]

Конечно.


 
Эстет   (2009-07-05 13:40) [10]

Юрий, а в чем отличие SendMessage от ListView.Perform, всмысле от ListView.Perform(LVM_SETCOLUMNWIDTH, i, LVSCW_AUTOSIZE)


 
Юрий Зотов ©   (2009-07-05 13:59) [11]

> Эстет   (05.07.09 13:40) [10]

Для оконных контролов отличия, можно сказать, нет. Для графических - только Perform.


 
Эстет   (2009-07-05 14:06) [12]

Ага, ясно.



Страницы: 1 вся ветка

Текущий архив: 2009.09.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-1214219828
Alik
2008-06-23 15:17
2009.09.06
Выделение контура региона


15-1246600795
Olleg
2009-07-03 09:59
2009.09.06
Создание картов маршрутов.


6-1206347840
SpellCaster
2008-03-24 11:37
2009.09.06
Ошибка 10055: WSAENOBUFS no buffer space available


15-1246617399
vajo
2009-07-03 14:36
2009.09.06
Как правильно написать заявление на увольнение?


15-1246518647
stas
2009-07-02 11:10
2009.09.06
3D фото