Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Вниз

TListView про сортировку   Найти похожие ветки 

 
newanat   (2007-09-11 19:51) [0]

Сделал в стандартном TListView сортировку при клике по Columns. Но захотелось всё это сделать, как делают другие умные дядя - а именно добавить в Columns Header при сортировке стрелку указывающую в каком направлении произведена сортировка и окрасить столбец, который был отсортирован в другой цвет.

Я конечно понимаю, что могу попытаться сделать, но возможно есть готовые примеры или решения?


 
{RASkov} ©   (2007-09-11 20:15) [1]

> [0] newanat   (11.09.07 19:51)
> но возможно есть готовые примеры или решения?

Стандартных нет...... или если только в "левых" компонентах.... ищи. Или делай сам.


 
Korneley ©   (2007-09-11 22:21) [2]

Если не особо "лениво", и хочется быстро, то 2 переменные (по какой колонке сортируем и направление сортировки) + эвенты:
procedure TOperW.LV1ColumnClick(Sender: TObject; Column: TListColumn);
var i : integer;
begin
 for i := 0 to LV1.Columns.Count - 1 do LV1.Columns[i].ImageIndex := -1;
 if   ColumnToSort = Column.Index
 then DirectToSort := (DirectToSort xor 1)
 else DirectToSort := 0;
 Column.ImageIndex := DirectToSort + 10;// просто у меня 10 и 11 - стрелки вниз/вверх
 ColumnToSort := Column.Index;
 (Sender as TCustomListView).AlphaSort;
 if LV1.Selected <> nil then LV1.Selected.MakeVisible(true);
end;

procedure TOperW.LV1Compare(Sender: TObject; Item1, Item2: TListItem;
 Data: Integer; var Compare: Integer);
begin
 if ColumnToSort = 0 then
   Compare := CompareText(Item1.Caption,Item2.Caption)
 else
 if ColumnToSort > 0 then  begin
  Compare := CompareText(Item1.SubItems[ColumnToSort - 1],Item2.SubItems[ColumnToSort - 1]);
 end;
 if DirectToSort = 1 then  Compare := -Compare;
end;

Column.ImageIndex назначается из ImageList, назначеных для ListView.  Сумбурно, но работает...


 
newanat   (2007-09-12 08:50) [3]

Да, спасибо, я этим я вроде разобрался.

Но остался вопрос, у меня при этом в первом Columns появляется отступ равный ширине картинки в ImageList"e. Хотя при создании записи в ListView, я указываю Items.....ImageIndex := -1; Самой картинки нет, но отступ появляется. Как этого избежать?

И как все же окрасить в другой цвет Columns который был отсортирован?


 
Korneley ©   (2007-09-12 09:15) [4]

Если просто фон изменить, то пользуй эвент TListView.OnCustomDrawSubItem, только DefaultDraw там не трогай. Просто измени Brush.Color на нужный тебе для нужной колонки (параметр Subitem). Если что-то посложнее, см.
http://delphimaster.net/view/2-1189508158/
там как раз про отрисовку сабитемов ветка.


 
newanat   (2007-09-12 09:26) [5]

Ещё раз спасибо. Буду с этим работать.

Но у меня все ещё остается не решенным вопрос с отступом, в первой колонке. Я не придумал как этого избежать. ?

Может можно как-то назначить картинки для Column.ImageIndex, не через присвоенный SmallImages в ListView?


 
newanat   (2007-09-12 09:40) [6]

И ещё вопрос по отрисовке как изменить расположение картинок в Column, хочу что бы картинка была показана после текста, а не до него.


 
korneley ©   (2007-09-12 09:41) [7]


> Но у меня все ещё остается не решенным вопрос с отступом,
>  в первой колонке

Может поможет совет из той же ветки?
"Я бы вообще посоветовал выставить ListView стиль OwnerDraw := true и выполнять отрисовку всего в OnDrawItem" (с)DVM



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

Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.051 c
9-1160475693
grouzd)ev
2006-10-10 14:21
2007.10.07
Конкурсы по кодингу игр


15-1189315977
Не пират
2007-09-09 09:32
2007.10.07
USB как работать с ними? Команды и т.д.


2-1189342976
lllll00
2007-09-09 17:02
2007.10.07
в чем ошибка


2-1189490393
Washington
2007-09-11 09:59
2007.10.07
Форма поверх окон


2-1188712738
ПРОФан
2007-09-02 09:58
2007.10.07
Нажатие F6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский