我有一个文件的字符串列表和一个日期作为他们的名字(分隔符可以是不同的:“ - |。”;掩码:yyyy/mm/dd
):
2011-03-12.jpeg 2011|10-15.doc 2011.08-09.rar 2011.10-15.txt 2011-03-14.jpeg 2011.06.23.mp3 2011|07|01.zip 2011-07-05.rar
如何使用它们创建树视图?所有文件必须按月和日排序+分配到月份部分,如:
非常感谢您的帮助!!!
答案 0 :(得分:3)
由于您已经填充了TStringList
,我只需使用其CustomSort()
方法对其进行排序,然后您可以根据需要循环遍历将节点添加到树中,例如:
function SortFilesByMonthAndDay(List: TStringList; Index1, Index2: Integer): Integer;
var
Value1, Value2: Integer;
begin
Value1 := StrToInt(Copy(List[Index1], 6, 2));
Value2 := StrToInt(Copy(List[Index2], 6, 2));
if Value1 = Value2 then
begin
Value1 := StrToInt(Copy(List[Index1], 9, 2));
Value2 := StrToInt(Copy(List[Index2], 9, 2));
end;
Result := Value2 - Value1;
end;
var
I: Integer;
FileMonth, CurrentMonth: Integer;
CurrentMonthNode: TTreeNode;
begin
CurrentMonth := 0;
CurrentMonthNode := nil;
Files.CustomSort(@SortFilesByMonthAndDay);
for I := 0 to Files.Count-1 do
begin
FileMonth := StrToInt(Copy(Files[I], 6, 2));
if FileMonth <> CurrentMonth then
begin
CurrentMonth := FileMonth;
CurrentMonthNode := TreeView1.Items.Add(nil, SysUtils.LongMonthNames[CurrentMonth]);
end;
TreeView1.Items.AddChild(CurrentMonthNode, Files[I]);
end;
end;
答案 1 :(得分:0)
我假设您已经知道如何解析单个字符串,如何实现自定义排序顺序,以及如何填充字符串列表,以及您的问题是如何从高级别解决问题。