Hej Kasper,
hvorfor i alverden bruger TStringGrid eller TListBox?
For mig virker det lidt underligt.
Brug da TListView komponentet, det er bygget til netop dette formål. Jeg har kodet et lille eksempel jeg håber du kan bruge.
TFileInfo Record.
Bruges til kort at gemme en masse info om filerne.
TFileInfo = record
Icon : hIcon;
Image : Integer;
DisplayName : String;
TypeName : String;
Size : Integer;
SizeDescription : String;
DateTime : TDateTime;
AttrArchive : Boolean;
AttrReadOnly : Boolean;
AttrSystem : Boolean;
AttrHidden : Boolean;
AttrVolume : Boolean;
AttrDirectory : Boolean;
end;
Find filerne og indsæt i TListView
procedure TMainForm.ChangeFolder(Path:String);
var
SearchRec: TSearchRec;
FileAttrs:integer;
FileInfo:TSHFileInfo;
anItem: TlistItem;
Info: TFileInfo;
begin
FileAttrs:= FaAnyFile;
if FindFirst(Path+'*.*', FileAttrs, SearchRec) = 0 then
Repeat
ShGetFileInfo(PChar(Path+SearchRec.Name), 0, FileInfo, SizeOf (TSHFileInfo),
SHGFI_TYPENAME or SHGFI_DISPLAYNAME or SHGFI_SYSICONINDEX or SHGFI_ICON);
with Info do
begin
Icon := FileInfo.hIcon;
Image := FileInfo.iIcon;
DisplayName := FileInfo.szDisplayName;
TypeName := FileInfo.szTypeName;
end;
anItem:= TListItem.Create(ListView.Items);
anItem.SubItems.Add(Info.Typename);
anItem.SubItems.Add(ReturnTime(searchRec.Time));
anItem.SubItems.Add(FileSizeToString(searchRec.Size));
ListView.Items.AddItem(anItem);
anItem.Caption:= Info.DisplayName;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
Lidt funktioner så vi kan vise dataene ordenligt til brugeren
function TMainForm.ReturnTime(time:integer):string;
var aDate: TDateTime;
begin
aDate:= FileDateToDateTime(time);
result:= DateTimeToStr(aDate);
end;
function TMainForm.FileSizeToString(const IntSize : Int64) : String;
begin
if IntSize < 1024 then
Result := IntToStr(IntSize)+' bytes'
else
begin
if IntSize < (1024 * 1024) then
Result := FormatFloat('####0.##',IntSize / 1024)+' Kb'
else
if IntSize < (1024 * 1024 * 1024) then
Result := FormatFloat('####0.##',IntSize / 1024 / 1024)+' Mb'
else
Result := FormatFloat('####0.##',IntSize / 1024 / 1024 / 1024)+' Gb';
end;
end;
Du kan downloade et eksempel her:
http://kenman.dk/temp/file_ex.zip