Einzelnen Beitrag anzeigen

bluescreen25

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

Re: Listview virtual mit FindallFiles

  Alt 24. Okt 2006, 17:41
Ich habe es hinbekommen, nur an einem verzweifel ich jetzt.

Während die Daten in DirLst und FileLst übertragen werden, adde ich ebenso virtual.
Nur hier wird ja bei jedem gefundenem Eintrag das ListView aktualisiert, dann ist das virtual wieder hinfällig und es dauert wieder lange, bis der Such und Zeichenvorgang abgeschlossen ist.

Mit BeginUpdate und EndUpdate kann man das Aktualisieren des ListView verhindern, bringt aber natürlich nichts bei meinem Code folgend.

Um einen Mittelweg zwischen dem Speed vom Virtual und der kontinuierlichen Aktualisierung des ListViews zu erhalten, müsste man das BeginUpdate inkl. AddVirtual nur in bestimmten Abständen Aufrufen können, so das erstmal was sichtbares im Listview kommt und dennoch weiter im Hintergrund aktualisiert wird.

Kann hier jemand aushelfen ?

Ausschnitt vom Code:
Delphi-Quellcode:
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.BeginUpdate;
          --> ListMedia.Items.AddVirtual(DirLst);
          --> ListMedia.EndUpdate;
              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.BeginUpdate;
         --> ListMedia.Items.AddVirtual(FileLst);
         --> ListMedia.EndUpdate;
            end;
         end;
Gruß, bluescreen25
  Mit Zitat antworten Zitat