AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schneller als findfirst

Ein Thema von mimi · begonnen am 15. Aug 2006 · letzter Beitrag vom 19. Aug 2006
Antwort Antwort
mimi

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

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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz