Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка TListView по колонкам [D7]


френк ©   (2005-12-29 19:20:00) 

Как быть? Посоветуйте как отловить клик по header'у ListView, определить по какой кнопке заголовка кликнули. Хочу просто сделать сортировку по одной из колонок.

Интуиция подсказывает что надо обработать сообщение, но вот какое. Как лучше организовать subj )


Наиль   (2006-01-03 17:10:00) [1]

Можно и без MSDN.
ListColumns[x].Width:=-1; - выравнивание по тексту в столбце
ListColumns[x].Width:=-2; - выравнивание по заголовку столбца.

Почему-то исчезло из хелпа D7, раньше было.
Надёжнее вместо чисел -1 и -2 использовать
LVSCW_AUTOSIZE и LVSCW_AUTOSIZE_USEHEADER, соответственно.


Igor_thief   (2006-01-01 21:33:00) [2]

В интернете есть полно готовых решений.


begin...end   (2005-12-29 21:05:00) [3]

> френк   (29.12.05 20:55) [7]

И то, и другое.
:-)


френк   (2005-12-29 20:55:00) [4]

мое почтение. респект. где информацию черпаешь? MSDN / собственный опыт? или и то и другое? мне на будующее. чтобы я с дуратскими вопросами не сувался )


begin...end   (2005-12-29 20:44:00) [5]

> френк   (29.12.05 20:38) [5]

Попробуйте заменить в [3] LVSCW_AUTOSIZE на LVSCW_AUTOSIZE_USEHEADER.


френк   (2005-12-29 20:38:00) [6]

вот бы еще при подобном автосайзе размер не становился меньше, чем caption в header'e. а то данные то вмещаются to fit :) а caption часто пропадает, если к примеру данных нет в столбце =(


френк   (2005-12-29 20:30:00) [7]

большое спасибо, как раз то, что надо.
с наступающим!


begin...end   (2005-12-29 19:51:00) [8]

> френк   (29.12.05 19:29) [2]

Возможно, есть более простое решение, но я вижу только такое:

uses CommCtrl;

var
 I: Integer;
begin
 for I := 0 to Pred(ListView.Columns.Count) do
   SendMessage(ListView.Handle, LVM_SETCOLUMNWIDTH, I, LVSCW_AUTOSIZE)
end


френк   (2005-12-29 19:29:00) [9]

пошел, убил себя об стенку. простите дурня.

еще вопрос: при нажатии CTRL+SHIFT+серый+ происходит автовыравнивание ширины колонок. как бы это сделать программно, подскажите, плиз.


begin...end   (2005-12-29 19:25:00) [10]

Обратите внимание на событие OnColumnClick.


Наверх

Титульная страница Поиск, карта сайта Написать письмо