Я пытаюсь сортировать элементы ListView по их показателям изображения. Итак, если элемент установлен для изображения 4, он останется перед всеми другими элементами. Я не могу понять этого. Может кто-то указать мне верное направление?пытается сортировать список по индексу изображения
-1
A
ответ
0
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
if Item1.ImageIndex = 4 then
Compare := -1 // Item1 should be first
else if Item2.ImageIndex = 4 then
Compare := 1 // Item2 should be first
else
Compare := 0; // the order doesn't matter
end;
Это положит все элементы с ImageIndex 4 спереди, но в любом случае у всех предметов будет естественный порядок.
Если вы хотите получить больше контроля над тем, как элементы изображения сортируются по отношению друг к другу, и как другие элементы сортируются по отношению друг к другу, вы можете расширить сравнения:
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
if Item1.ImageIndex = 4 then
begin
if Item2.ImageIndex = 4 then
begin
// two image items, do other comparisons here...
Compare := ...;
end else
begin
// image and non-image items, image item goes first...
Compare := -1;
end;
end
else if Item2.ImageIndex = 4 then
begin
// non-image and image items, image item goes first...
Compare := 1;
end else
begin
// two non-image items, do other comparisons here...
Compare := ...;
end;
end;
Показать, что у вас есть, и попросить о помощи. –
как вы форматируете код в сообщениях здесь? –
Я получил код от поиска Google http://delphi.about.com/od/adptips2005/qt/qtsortlistview.htm модифицирован его немного, чтобы использовать ImageIndex, но не было ничего хорошего –