Ich möchte den Pfad für eine TShellListView festlegen, um ein Verzeichnis von Dateien mit Delphi 2007 anzuzeigen. Ich kann TShellListView.Root zunächst verwenden, um den Stammpfad festzulegen dies und es zeigt das Verzeichnis ich möchte:Abrufen/Festlegen von TShellListView-Pfad/Ordner als Zeichenfolge (ohne .Root)
View := TShellListView.Create(Self);
// ...
View.Root := 'C:\Windows';
Aber wenn der Benutzer aus dem Verzeichnis mit Backspace navigiert weg und ich versuche, die .root wieder auf den ursprünglichen Verzeichnis gesetzt, angezeigt das Verzeichnis ändert sich nicht. Es sieht aus wie .Root soll den Stamm des Shell-Namespace definieren, nicht das aktuelle Verzeichnis.
Wenn der Benutzer herum navigiert (mit Rücktaste usw.), wird die Eigenschaft .Root nicht aktualisiert, um den aktuell angezeigten Pfad wiederzugeben. Es gibt keine .Path-Eigenschaft wie für TShellTreeView.
Was ich will ist eine Möglichkeit, den aktuellen Pfad als String zu erhalten und setzen, ohne die TShellListView mit einem TShellTreeView verknüpfen und TShellTreeView.Path oder hack ShellCtrls.pas, da die relevanten Methoden von TShellListView alle privat aussehen. Es fällt mir schwer zu glauben, dass es keinen einfachen Weg gibt, den Pfad zu bestimmen, also nehme ich an, dass ich etwas Einfaches vermisse, aber diese Komponente ist überhaupt nicht dokumentiert.
Die vorgeschlagene Problemumgehung zum Hinzufügen/Entfernen des Schrägstrichs scheint gut zu funktionieren. Ich habe einen ähnlichen Umgehungscode zu einer neuen Path-Eigenschaft hinzugefügt, die ich zu einem TShellListView-Nachfolger hinzugefügt habe, den ich anstelle des Standard-Objekts verwenden werde. – Anagoge