![]() |
AW: Probleme mit dem ListView
Zitat:
gruss |
AW: Probleme mit dem ListView
Zitat:
Michael |
AW: Probleme mit dem ListView
Hey Emil, nur mal rein um meine Neugier zu befriedigen, könntest Du mal in Deinem Source eine Sache bitte ausprobieren?
Ersetze mal bitte die "" mit nil und gebe als Handle Dein Window-Handle an, also das vom Programm nicht vom Tooltip. Ist Dein Tooltip dann gefärbt oder Windows-Grau? |
AW: Probleme mit dem ListView
Zitat:
Selber nachbasteln endet idR bei einem langsameren Ergebis. |
AW: Probleme mit dem ListView
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist ein Beispiel Projekt zu ShellListView geschrieben von Dave Murray.
Ich habs lediglich an Delphi 7 angepasst und ein Kompilat erstellt damit Du weiß worum es sich handelt. Ps: Source liegt auch bei. |
AW: Probleme mit dem ListView
Zitat:
Zitat:
Kein Chance ;) Ich will den TollTip deaktivieren nicht die komplette Anwendung. Aber ist erledigt das Thema für mich. Macht was ihr für richtig haltet. gruss |
AW: Probleme mit dem ListView
Zitat:
|
AW: Probleme mit dem ListView
Zitat:
Zwar ein kleines Problem mit dem Fokusrahmen aber hier kann man tricksen. Eine Möglichkeit die Komponente zu überschreiben, damit der Rahmen erst gar nicht gezeichnet wird, habe ich nicht gefunden. Mit "DrawFocusRect" kann man wenigstens was machen. Aber "ShellListView" kommt mal auf mein Notiz-Zettel. Vielen Dank Michael |
AW: Probleme mit dem ListView
Hallo Michael, ja tobe Dich mal mit der ListBox aus. FindFirst, FindNext und FindClose ist ein sehr sehr langsames Mittel.
Ich bin gespannt wie dein Resultat endet. Nach wie vor kannst Du Dir ja mal das ShellTreeView Demo von weiter oben anschauen und feststellen das es im Vergleich zum manuellen durchforsten eines Verzeichnisses ein gewaltiges plus an Geschwindigkeit gibt. Zur Demonstration als Vergleich empfehle ich das Windows/System32 Verzeichnis laden zu lassen. Hier hab ich ein Quelltext-Schnippsel von ![]()
Delphi-Quellcode:
Eine weitaus schnellere ListBox Methode wäre es so zu machen
var
Form1: TForm1; FilePath: TStringList; implementation {$R *.dfm} procedure FindFiles(FilesList: TStrings; FilesPath: TStrings; StartDir, FileMask: string); var SR: TSearchRec; DirList: TStringList; IsFound: Boolean; i: integer; begin if StartDir[length(StartDir)] <> '\' then StartDir := StartDir + '\'; IsFound := FindFirst(StartDir + FileMask, faAnyFile - faDirectory, SR) = 0; while IsFound do begin FilesPath.Add(StartDir + SR.Name); FilesList.Add(SR.Name); IsFound := FindNext(SR) = 0; end; FindClose(SR); DirList := TStringList.Create; IsFound := FindFirst(StartDir + '*.*', faAnyFile, SR) = 0; while IsFound do begin if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then DirList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; end; FindClose(SR); for i := 0 to DirList.Count - 1 do FindFiles(FilesList, FilePath, DirList[i], FileMask); DirList.Free; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FilePath.Free; end; procedure TForm1.sButton1Click(Sender: TObject); begin FilePath := TStringList.Create; FindFiles(sListBox1.Items, FilePath, EditStartDir.Text, '*.*'); {FilePath is where full file path saved, EditStartDir is where to search} end; procedure TForm1.sListBox1Click(Sender: TObject); begin If sListBox1.ItemIndex > -1 then sEdit2.Text := FilePath.Strings[sListBox1.ItemIndex]; end; end.
Delphi-Quellcode:
Viel Spass beim experimentieren!
var s: string;
begin s := 'c:\windows\*.*'#0; ListBox1.Perform(LB_DIR, DDL_READWRITE, LongInt(@s[1])); end; |
AW: Probleme mit dem ListView
Also mit der ListBox schaut es gut aus und ja, das "System32" Verzeichnis nehme ich auch immer. :)
Das ShellListView Demo habe ich mir angeschaut aber es ist recht vollgepackt. So viel schneller ist es auch nicht. Derzeit ist meines schneller aber ich bin ja auch noch nicht ganz fertig. Das mit FindFirst/FindNext geht bei mir auch etwas anders. Ich lade das Verzeichnis mit weiteren Infos in ein Record rein. In der Listbox hole ich mir dann im DrawItem Abschnitt die Infos, die ich benötige. Habe mich auch mal mit einem TThread probiert, um Icons im Hintergrund nachzuladen. Wäre das der richtige Weg? Das klappte aber noch nicht so ganz. Jetzt räume ich erst mal wieder das Listing auf. Das mache ich immer so. Erst ein wenig programmieren und wenn was geht, dann wird im Listing aufgeräumt, formatiert und kommentiert. Sonst verliert man den Durchblick :) Aber der Total-Commander ist schon recht schnell. Eine Meisterarbeit :) Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 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-2025 by Thomas Breitkreuz