我有一个TListView,有4个列(当然都是字符串),但是我将数据存储在它们中,如下:
我看了这篇文章 "如何根据subitem [x]对Tlistview进行排序", 但我无法考虑不同的列类型。
如何考虑整数和日期列,使其不被视为字符串进行排序?
谢谢。
Caption
:任何字符串SubItems [0]
:整数,例如'5016'
SubItems [1]
:日期,例如'03/22/13'
Subitems [2]
:任何字符串
我看了这篇文章 "如何根据subitem [x]对Tlistview进行排序", 但我无法考虑不同的列类型。
procedure TfrmFind.lvwTagsColumnClick(Sender: TObject; Column: TListColumn);
begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
end;
procedure TfrmFind.lvwTagsCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var
ix: Integer;
begin
if ColumnToSort = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)
else begin
ix := ColumnToSort - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;
end;
如何考虑整数和日期列,使其不被视为字符串进行排序?
谢谢。
OnColumnClick
会告诉你哪一列被点击了。此时,你可能已经知道该列中包含什么内容,并可以从那里做出决定。 - David HeffernanCompareValue
在Math
中,而CompareDateTime
在DateUtils
中。这些信息可以在帮助文档中找到:http://docwiki.embarcadero.com/RADStudio/XE3/en/Main_Page 只需将函数名称输入搜索框即可。 - David Heffernan