자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi [공유] 파이어몽키 ListView를 정렬하고 싶어요.
2017.08.31 10:09
Q,
파이어몽키 ListView를 정렬하는 방법을 알고 싶습니다.
A,
다음 코드를 참고하세요.
참고로 TListViewItem의 Detail에 float 데이터 타입으로 데이터가 들어가 있어
StrToFloatDef(XXX, 0.0)으로 비교했습니다.
만약, Integer와 같은 다른 데이터 타입을 사용하는 경우 변환 방법을 맞춰서 구현해야 합니다.
uses
System.Generics.Defaults;
procedure TForm1.Button1Click(Sender: TObject);
var
Comparer: IComparer<TListViewItem>;
begin
Comparer := TDelegatedComparer<TListViewItem>.Create(
function(const LeftItm, RightItm: TListViewItem): Integer
begin
Result := 0; //no change
if StrToFloatDef(LeftItm.Detail, 0.0) > StrToFloatDef(RightItm.Detail, 0.0) then
Result := 1 //depend on sort order asc/desc
else if StrToFloatDef(LeftItm.Detail, 0.0) < StrToFloatDef(RightItm.Detail, 0.0) then
Result := -1; //depend on sort order asc/desc
end
);
ListView1.Items.Sort(Comparer);
end;
댓글 0
Delphi [공유] 파이어몽키 ListView를 정렬하고 싶어요.
2017.08.31 10:09
Q,
파이어몽키 ListView를 정렬하는 방법을 알고 싶습니다.
A,
다음 코드를 참고하세요.
참고로 TListViewItem의 Detail에 float 데이터 타입으로 데이터가 들어가 있어
StrToFloatDef(XXX, 0.0)으로 비교했습니다.
만약, Integer와 같은 다른 데이터 타입을 사용하는 경우 변환 방법을 맞춰서 구현해야 합니다.
uses
System.Generics.Defaults;
procedure TForm1.Button1Click(Sender: TObject);
var
Comparer: IComparer<TListViewItem>;
begin
Comparer := TDelegatedComparer<TListViewItem>.Create(
function(const LeftItm, RightItm: TListViewItem): Integer
begin
Result := 0; //no change
if StrToFloatDef(LeftItm.Detail, 0.0) > StrToFloatDef(RightItm.Detail, 0.0) then
Result := 1 //depend on sort order asc/desc
else if StrToFloatDef(LeftItm.Detail, 0.0) < StrToFloatDef(RightItm.Detail, 0.0) then
Result := -1; //depend on sort order asc/desc
end
);
ListView1.Items.Sort(Comparer);
end;