![]() |
shelllistview & shellcombobox Verzeichnis zuweisen
Hallo
ich habe folgendes Problemchen : In meinem Programm befindet sich eine ShellListView Komponente und eine ShellComboBox - beim Beenden "merke" ich mir das zuletzt geöffnete Verzeichnis. Beim Neustart des Programms möchte ich nun das alte Verzeichnis wieder öffnen :
Delphi-Quellcode:
Die ComboBox ist mit der ShellListView Komponente verknüpft. wenn ich über die Combo ein anderes Verzeichnis (per Maus) auswähle dann aktualisiert sich auch die ShellListView - nur bei der oben genannten Methode wird der Verzeichniswechsel nicht auf das ShellListView vererbt
ShellComboBox1.Path := DirLast; //wobei DirLast den absoluten Pfad enthält Bsp: 'C:\test\test2\'
Wenn ich das ganze mit einer ShellTreeView (anstatt der Combo) versuche - funktioniert es ohne weiteres
Delphi-Quellcode:
leider kann ich diese aus Platzgründen nicht verwenden
ShellTreeView1.Path := DirLast;
die Eigenschaften AutoNavigate & AutoRefresh der ShellListView Komponente stehen auf True und das Root Verzeichnis der Komponenten ist jeweils auf "rfDesktop" Soweit ich weiss kann man der ShelListView Komponente keinen Pfad direkt zuweisen (lediglich auslesen über die Funktion ShellListView1.RootFolder.Pathname) ich danke euch schonmal im voraus für eure Hilfe mfG TeeKay p.s. ich verwende Delphi Enterprise 7.0 |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Ich habe nochmal darüber nachgedacht
die HOLZHAMMER-METHODE wäre die TreeView Komponente auf dem Form zu belassen mit dem ShellListView zu verknüpfen und dann auf TreeView.visible := false; zu setzen dann könnte ich beim Start Das Verzeichnis zuweisen, jedoch gefällt mir diese Lösung gar nicht... also wenn noch jemanden ws einfällt - bin ich für alle vorschläge offen mfg TeeKay |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Hallo,
ich habe jetzt auch das Problem. Hat dafür jemand eine Lösung gefunden? Dem ShellListview kann man ja leider keinen Ordner als Startverzeichnis zuweisen. |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Ähh... wie wärs mit
Delphi-Quellcode:
?
ShellListView1.Root := DirLast;
Aktualisiert bei mir auch die ShellComboBox... Edit: Allerdings wird auch der Root der ComboBox geändert sehe ich gerade ... :? mfG mirage228 |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Dann kann ich nur leider nicht über das Verzeichnis DirLast hinausnavigieren, da dies ja dann der Root für den ShellListview ist. Und das ist ja nicht Sinn der Sache. Ich will nur ein Startverzeichnis setzen.
|
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Ich hatte das Problem auch mal (mit meinem SmallFTP) und habe es damals so gelöst, dass ich folgende Kompo abgeleitet habe:
Delphi-Quellcode:
Wie man sieht, wird die Sichbarkeit von "Change" von protected auf public verändert. Nun kann man mittels
TShellcomboBox1 = class(TShellComboBox)
public procedure Change; override; end;
Delphi-Quellcode:
Einen Pfad festlegen ;)
ShellComboBox1.Path := StartDir;
ShellComboBox1.Change; Ich weiß auch nicht, was sich die Entwickler da gedacht haben ... aber mit diesem Workaround funktioniert es, weil in der Change Methode die List und Treeview geupdated werden. imho muss man die Shellcontrols ableiten und ein bisschen an ihnen rumfummeln, dmit man sie verwenden kann ... :? |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Puh, nur wegen diesem einem feature eine ganze Kompo neu ableiten, compilieren ud Installieren? Ganz schöner Overkill. Die Alernative ist aber auch nicht schöne: Von Hand im OnCreate erstellen. :wall:
|
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Also ich hatte auch diverse Probleme mit den TShell* Komponenten. Ich bin deshalb auf VirtualExplorer Komponenten von
![]() ![]() Vielleicht lohnt sich ja ein Umstieg für dich :) mfG mirage228 |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Da muss ich ja noch eine ganzen Rattenschwanz von anderen Komponenten installieren. Und wie sieht es mit der Lizenz aus? Ich brauche das für ein kommerzielles Projekt. Und mein Chef ist auch nicht begeistert, wenn man tausend Fremdkomponenten einsetzt. Er hat gerade wieder einen halben Tag gebraucht, um ein altes Projekt wegen der vielen Fremdkomponeten zum Laufen zu bringen.
Ich habe es jetzt so gemacht, dass ich die ShellComboBox zur Laufzeit erstelle:
Delphi-Quellcode:
Leider bekomme ich eine AccessViolation in Zeile 20, wenn der Root-Folder zugewiesen werden soll. Ich schätze mal, da fehlt irgendeine Initialisierung. Nur welche?
type
TShellcomboBoxEx = class(TShellComboBox) public procedure Change; override; end; // [..] procedure TfrmLoadTemplate.FormCreate(Sender: TObject); begin ShellComboBox1 := TShellComboBoxEx.Create(Self); with ShellComboBox1 do begin Name := 'ShellComboBox1'; Parent := Self; Left := 74; Top := 3; Width := 343; Height := 22; Root := 'rfMyComputer'; ShellListView := ShellListView1; UseShellImages := True; TabOrder := 0; end; end; |
Re: shelllistview & shellcombobox Verzeichnis zuweisen
Hmm was ist dabei herausgekommen?
Ich stehe genau vor dem selben Problem! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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