리스트박스에 key=value 형태로 저장이 되어있을 때 Value 기준으로 소팅하고 싶으면,
문자데이터가 아니고 숫자데이터 일때
procedure TForm2.Button2Click(Sender: TObject);
var
idx: Integer;
begin
for idx := 0 to 30 do
ListBox1.Items.AddPair(idx.ToString, IntToStr(Random(100)));
end;
var
idx: Integer;
begin
for idx := 0 to 30 do
ListBox1.Items.AddPair(idx.ToString, IntToStr(Random(100)));
end;
// function TForm2.TStringsSort(List: TStringList; L, R: integer): integer;
// 이 아님에 주의!
function TStringsSort(List: TStringList; L, R: integer): integer;
begin
Result:= StrToint(List.ValueFromIndex[L])-StrToInt(List.ValueFromIndex[R]);
end;
// 이 아님에 주의!
function TStringsSort(List: TStringList; L, R: integer): integer;
begin
Result:= StrToint(List.ValueFromIndex[L])-StrToInt(List.ValueFromIndex[R]);
end;
procedure TForm2.Button3Click(Sender: TObject);
var
istrings: TStringList;
begin
istrings:= TStringList.Create;
try
istrings.Assign(Listbox1.Items);
istrings.CustomSort(@TStringsSort);
Listbox1.Items.Assign(iStrings);
finally
istrings.Free;
end;
var
istrings: TStringList;
begin
istrings:= TStringList.Create;
try
istrings.Assign(Listbox1.Items);
istrings.CustomSort(@TStringsSort);
Listbox1.Items.Assign(iStrings);
finally
istrings.Free;
end;