AGB  ·  Datenschutz  ·  Impressum  







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

Aktualisierung ListView mit FindAllFiles

Ein Thema von bluescreen25 · begonnen am 24. Okt 2006 · letzter Beitrag vom 28. Okt 2006
 
bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#1

Aktualisierung ListView mit FindAllFiles

  Alt 24. Okt 2006, 21:44
Hallo,
ich bringe durch FindAllFiles gesuchte Dateien in meine ListView.

In FindallFiles adde ich direkt in Stringlisten, damit die Anzeige kontinuierlich File für File kommt.
Für den schnelleren virtual-Mode muss ich jedoch ListView.beginupdate bzw endupdate einfügen, das ist mir innerhalb der Repeatschleife gelungen.

Klappt jetzt wunderbar schnell und kontinuierlich, wenn ich jedoch während des addens mit der Maus über das ListView fahre, hängt das Programm.

Es liegt wohl daran, das ich in der Schleife das ListView daran hindere sich neu zu zeichnen und beim Überfahren mit der Maus muss ein Event kommen, welche wahrscheinlich das ListView neuzeichnen lassen will, nur was genau kann es sein ???

Hier mal der Code:
Delphi-Quellcode:
procedure FindAllFiles(DirList:TStrings; FileList: TStrings; RootFolder: string; Mask: string; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
var Tick : Cardinal;
  procedure LFindAllFiles(AParentFolder: String);
  var LSearchRec: TSearchRec;
  begin
    if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
    begin
      repeat
        ListMedia.BeginUpdate;

        if GetTickCount <= Tick then
        begin
          Tick := GetTickCount + 200;
          Application.ProcessMessages;
        end;

        if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
        begin

          if LSearchRec.Attr and faDirectory = faDirectory then
          begin
            if AddFolderNames and
               (IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
              begin
               DirList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
               ListMedia.Items.AddVirtual(DirLst);
              end;

            if Recurse then
              LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
          end
          else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
             begin
              FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
              ListMedia.Items.AddVirtual(FileLst);
             end;
         end;
        ListMedia.EndUpdate;
       until FindNext(LSearchRec) <> 0 ;
      FindClose(LSearchRec);
     end;
   end;

  begin
  tick:=gettickcount;
  Mask := AnsiLowerCase(Mask);
  LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
  
end;
Gruß bluescreen25
  Mit Zitat antworten Zitat
 


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 00:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz