Мне с трудом удалось решить проблему с построением дерева, перехода и чтобы не глючило. Вот кусок кода
Procedure TForm1.ShowFiles(Dir:String);
var
ListItem: TListItem;
sr: tsearchrec;
NewColumn: TListColumn;
ImgList:TImageList;
A:TDateTime;
begin
While Dir[Length(Dir)]='\' Do
Delete(Dir,Length(Dir),1);
ListView1.Items.Clear;
if FindFirst(Dir+'\*.*', faAnyFile, sr) = 0 then
begin
FindNext(sr);
ListItem := ListView1.Items.Add; // создается объект
ListItem.Caption := sr.name;
If (sr.Attr And faDirectory)<>0 Then
ListItem.ImageIndex:=0 Else
ListItem.ImageIndex:=1;
ListItem.SubItems.Add(inttostr(sr.Size));
//ListItem.SubItems.Add(datetimetostr(FileDateToDate Time(sr.time)));
If sr.Name<>'..' Then
A:=FileDateToDateTime(FileCreationTime(Dir+'\'+Sr. Name)) Else
A:=FileDateToDateTime(FileCreationTime((Dir)));
ListItem.SubItems.Add(DateTimeToStr(A));
If sr.Name<>'..' Then
A:=FileDateToDateTime(FileModifyTime(Dir+'\'+Sr.Na me))Else
A:=FileDateToDateTime(FileCreationTime((Dir)));
ListItem.SubItems.Add(DateTimeToStr(A));
If sr.Name<>'..' Then
A:=FileDateToDateTime(FileAccessTime(Dir+'\'+Sr.Na me))Else
A:=FileDateToDateTime(FileCreationTime((Dir)));
ListItem.SubItems.Add(DateTimeToStr(A));
ListItem.SubItems.Add(GetAttributesAsString(sr.Att r));
while FindNext(sr) = 0 do
begin
ListItem := ListView1.Items.Add;
ListItem.Caption := sr.name;
If (sr.Attr And faDirectory)<>0 Then
ListItem.ImageIndex:=0 Else
ListItem.ImageIndex:=1;
ListItem.SubItems.Add(inttostr(sr.size));
If sr.Name<>'..' Then
A:=FileDateToDateTime(FileCreationTime(Dir+'\'+Sr. Name)) Else
A:=FileDateToDateTime(FileCreationTime((Dir)));
ListItem.SubItems.Add(DateTimeToStr(A));
If sr.Name<>'..' Then
A:=FileDateToDateTime(FileModifyTime(Dir+'\'+Sr.Na me)) Else
A:=FileDateToDateTime(FileCreationTime((Dir)));
ListItem.SubItems.Add(DateTimeToStr(A));
If sr.Name<>'..' Then
A:=FileDateToDateTime(FileAccessTime(Dir+'\'+Sr.Na me)) Else
A:=FileDateToDateTime(FileCreationTime((Dir)));
ListItem.SubItems.Add(DateTimeToStr(A));
ListItem.SubItems.Add(GetAttributesAsString(sr.Att r));
end;
FindClose(sr);
end;
End;
|