Я пытаюсь выяснить, как предоставить свой собственный метод сортировки для элементов и строк в TListBox
.
Мой список хранит пользовательский объект в свойстве Object
, и мне нужно использовать его в пользовательской сортировке.
Я основываю приведенный ниже код на этом посте (Delphi): Можно ли отсортировать TListBox с помощью пользовательского компаратора сортировки?
Моя пользовательская функция сортировки выглядит так
int __fastcall SortListByValue (TStringList* sl, int item1, int item2)
{
IniKey* k1 = (IniKey*) sl->Objects[item1];
IniKey* k2 = (IniKey*) sl->Objects[item2];
return k1->mValue < k2->mValue;
}
Значения ключа являются строками. В настоящее время они могут быть «-», «Да», «Нет» и «Пропустить».
И код, где он называется, выглядит так:
void __fastcall TMainForm::sortByValueAExecute(TObject *Sender)
{
Log(lInfo) << "Sorting list based on Values";
TStringList* sl = new TStringList();
sl->Assign(imagesLB->Items);
sl->CustomSort(SortListByValue);
imagesLB->Items->Assign(sl);
}
Приведенный выше код «что-то» делает со списком, но он не отсортирован.
Полученный список начинается с элементов «-», а все элементы «Да» являются последовательными. Элементы «Нет» и «Пропустить» и «-» затем шифруются.
Есть какие-нибудь подсказки?