Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi shelllistview & shellcombobox Verzeichnis zuweisen (https://www.delphipraxis.net/41594-shelllistview-shellcombobox-verzeichnis-zuweisen.html)

teekay 5. Mär 2005 17:11


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:
ShellComboBox1.Path := DirLast; //wobei DirLast den absoluten Pfad enthält Bsp: 'C:\test\test2\'
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

Wenn ich das ganze mit einer ShellTreeView (anstatt der Combo) versuche - funktioniert es ohne weiteres
Delphi-Quellcode:
ShellTreeView1.Path := DirLast;
leider kann ich diese aus Platzgründen nicht verwenden

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

teekay 7. Mär 2005 12:25

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

Luckie 20. Apr 2007 10:50

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.

mirage228 20. Apr 2007 10:56

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

Luckie 20. Apr 2007 11:01

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.

jfheins 20. Apr 2007 12:20

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:
TShellcomboBox1 = class(TShellComboBox)
  public
    procedure Change; override;
  end;
Wie man sieht, wird die Sichbarkeit von "Change" von protected auf public verändert. Nun kann man mittels
Delphi-Quellcode:
ShellComboBox1.Path := StartDir;
      ShellComboBox1.Change;
Einen Pfad festlegen ;)

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 ... :?

Luckie 20. Apr 2007 12:30

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:

mirage228 20. Apr 2007 12:42

Re: shelllistview & shellcombobox Verzeichnis zuweisen
 
Also ich hatte auch diverse Probleme mit den TShell* Komponenten. Ich bin deshalb auf VirtualExplorer Komponenten von http://www.mustangpeak.net/ gewechselt, diese basieren auf dem VirtualTreeView von Mike Lische (http://www.delphi-gems.com) und mit denen habe ich zweifelsohne weniger Stress und bessere Erfahrungen gemacht, als mit den TShell* Komponenten.
Vielleicht lohnt sich ja ein Umstieg für dich :)

mfG
mirage228

Luckie 20. Apr 2007 12:51

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:
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;
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?

bennle 21. Jun 2007 20:19

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 10:21 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