Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
FreePascal / Lazarus
|
Re: Schneller als findfirst
15. Aug 2006, 20:12
der explorer zeigt die einträge viel schneller an als mein programm es tut. und ihr habt recht es liegt an der icon zu weiseung:
Delphi-Quellcode:
procedure TForm2.TVMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{ Dateien aus Verzeichnis mit entsprechender MAske auslesen }
procedure DateiListe(sPfad, sMaske: String; aList: TListView);
var SR: TSearchRec;
Pfad: String;
TempIcon:TIcon;
FileItem:tFileItem;
begin
Pfad := IncludeTrailingBackSlash(sPfad);
if FindFirst (PChar(Pfad+ sMaske), faAnyFile, SR) = 0 Then
repeat
if sr.name[1] <> '.' then begin
FileItem:=tFileItem.Create;
fileItem.FileName:=pfad+sr.Name;
fileItem.isDir:= (sr.Attr and faDirectory > 0);
// alist.add
with alist.Items.Add do begin
Data:=FileItem;
Caption:=sr.name;
ImageIndex:=GetIndex(pfad +sr.name);
end;
end;
until FindNext (SR ) <> 0;
FindClose(SR);
end;
var aNode, ElternKnoten: TTreeNode;
Pfad: String;
begin
Listview1.Clear;
ListView1.Items.BeginUpdate;
aNode := tv.Selected;
//--feststellen, ob MausKlick auf einem Knoten erfolgte
if (htOnItem in tv.GetHitTestInfoAt(X,Y)) then
begin
Pfad := aNode.Text;
ElternKnoten := aNode.Parent;
while ElternKnoten <> nil do begin
Pfad := ElternKnoten.Text+ '\' + Pfad ;
ElternKnoten := ElternKnoten.Parent;
end;
// aNode.Parent.ImageIndex:=GetIndex(pfad);
// ShowmEssage(Pfad);
DateiListe(Pfad , '*.*', Listview1);
end;
ListView1.Items.EndUpdate;
end;
function GetIndex(Datei:String):integer;
var
li : TListItem;
fi : TSHFileInfo;
begin
ZeroMemory(@fi,sizeof(fi));
SHGetFileInfo(pchar(Datei),0,fi,sizeof(fi),
SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME or SHGFI_SYSICONINDEX);
result:=fi.iIcon;
end;
den code habe ich verwendet... evlt. liegt es an getindex die solangsamm arbeitet.... und BeginUpdatet und EndUpdate hatte ich auch schon eingebaut !
Michael Springwald MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
|
|
Zitat
|