![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день. Есть форма на которой есть компонент TValueListEditor
в цикле в компонент вставляются значения ValueListEditor1.InsertRow(Stemmings,IntToStr(Rati ng),True); число строк от 10 до 1000 первый столбец - слова втрой столбец - цифры далее нужно провести сортировку по значениям второго столбца(цифры), большие значения должны попасть наверх Вопрос: - есть ли в ValueListEditor1 встроенная сортировка? если есть то где? что то процедура Sort нигде в свойствах не видна - если нет, то как можно сделать сортировку? есть два параметра: строка=число, сортировать нужно по значению число |
|
#2
|
||||
|
||||
|
Стандартная сотрировка есть, но она такая же как и у базового класса TStringList - т.е. по алфавиту, с цифрами сложнее
Код:
procedure TForm1.Button1Click(Sender: TObject);
function SortByValue(List: TStringList; index1, index2: integer): integer;
begin
with List do Result:= CompareText(ValueFromIndex[index1], ValueFromIndex[index2]);
end;
begin
TValueListStrings(ValueListEditor1.Strings).CustomSort(@SortByValue);
end; |
|
#3
|
|||
|
|||
|
Спасибо за вариант, есть еще один, как раз для меня подходит:
Код:
procedure SortVLE;
function MyCompare(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := AnsiCompareStr(List.ValueFromIndex[Index2], List.ValueFromIndex[Index1])
end;
var
fSL : TStringList;
begin
fSL := TStringList.Create;
try
fSL.Text := SeoController.ValueListEditor1.Strings.Text;
fSL.CustomSort(@MyCompare);
SeoController.ValueListEditor1.Strings.Text := fSL.Text;
finally
fSL.Free;
end
end; |