Thema: Delphi Schneller als findfirst

Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Schneller als findfirst

  Alt 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)
  Mit Zitat antworten Zitat