AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi "Dieser PC" als InitialDir für OpenDialog

"Dieser PC" als InitialDir für OpenDialog

Ein Thema von Gelmo · begonnen am 18. Aug 2020 · letzter Beitrag vom 18. Aug 2020
Antwort Antwort
Gelmo

Registriert seit: 14. Sep 2006
Ort: Niederrhein
20 Beiträge
 
Delphi 10.3 Rio
 
#1

"Dieser PC" als InitialDir für OpenDialog

  Alt 18. Aug 2020, 18:53
Delphi-Version: 10.3 Rio
Hallo zusammen,
wenn ich unter Windows 10 im Explorer auf „Dieser PC“ klicke, werden neben den Bibliotheken des Benutzers die verfügbaren Laufwerke angezeigt.
Dieses Fenster hätte ich in einem Opendialog gern als Initialdir angegeben. Leider konnte ich selbst nicht den Pfad herausfinden um zu diesem Platz zu kommen. Wenn ich „Dieser PC“ mit der rechten Maustaste anklicke erscheint eine Liste mit mehreren Optionen und mit „Eigenschaften“ an unterster Stelle. Ein Klick darauf zeigt dann aber keine Eigenschaften zu „Dieser PC“ an, sondern es öffnet sich das Fenster mit den Angaben zu dem PC (Name, Betriebssystem, CPU usw.) und mit der Überschrift „Systemsteuerung > System und Sicherheit > System“. Wenn ich aber zum Beispiel „C:\System“ als InitialDir verwende, öffnet sich bei Opendialog-Execute der irgendwann zuletzt benutzte Ordner.
Auch über die Suche im Internet konnte ich keine Lösung finden. Ich wäre froh, wenn mir hier jemand erklären könnte und möchte, ob und wie ich hier weiterkommen kann
Vielen Dank
MfG Gelmo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.368 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: "Dieser PC" als InitialDir für OpenDialog

  Alt 18. Aug 2020, 19:18
Man kann beim OpenDialog das InitialDir mitgeben.

Allerdings ist in neueren Windowsen (seit mindestens Win7) eine Optimierung drin. *1
Windows merkt sich die letzte Auswahl und stellt sie beim nächsten Öffnen wieder her, wobei die Übergabe des InitialVerzeichnisses ignoriert wird.
(hätte Microsoft es richtig gemacht, dann hätten sie dafür eine Option zum Abschaltein eingebaut, oder es zumindestens nur dann gemacht, wenn man kein InitialDir angibt)
-> siehe Stevie/jfheins ... die haben den Link/Begriff schon gefunden

Das BasisVerzeichnis kann man auch definieren, also das Grundverzeichnis innerhalb dessen man navigieren kann.

Man kann sich in den DialogHook hängen und dort "nach" dem Laden das "Initial"-Verzeichnis nochmal wechseln.



*1) Das wird je Programm gepeichert.
Deswegen würde ich auch empfehlen den TFileOpenDialog (Vista-Gruppe) empfehlen.
In aktuellen Delphi nutzt aber TOpenDialog intern den TFileOpenDialog, wenn das Programm in einem passenden Windows läuft, ab Vista und davor die alte API.
Den Support für Vor-Vista/7 hab ich persönlich eingestellt, also spricht nichts gegen neuere APIs.

Und beim TFileOpenDialog kann man auch eine "ID" mitgeben. (beim TOpenDialog wird das leider nicht durchgereicht)
So hat man im Programm mehrere unterschiedliche Open-Dialoge zu unterschiedlichen Verzeichnissen zur Verfügung, bzw, kann mit der selben ID n unterschiedlichen Stellen die selbe "Optimierung" vom Windows benutzen.


Im Explorer kann man in den Einstellungen angeben welches InitialDir beim Starten benutzt werden soll.
Ansicht > Optionen > Schnellzugriff oder Dieser PC (leider nur diese Beiden als Auswahl)
Ich vermute/hofffe dass der Dialog die selbe Einstellung benutzt, wenn das Programm kein InitialDir vorgibt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (18. Aug 2020 um 19:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
3.823 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: "Dieser PC" als InitialDir für OpenDialog

  Alt 18. Aug 2020, 19:25
https://xtream.be/blog/win10shellfolders/
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.577 Beiträge
 
#4

AW: "Dieser PC" als InitialDir für OpenDialog

  Alt 18. Aug 2020, 19:25
Um die Lösung explizit zu posten statt nur einem Link:

Versuche mal, als Startverzeichnis das hier anzugeben:
InitialDir := '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}' Es gibt einige Spezalordner, die sich nur über so eine CLSID ansprechen lassen.
  Mit Zitat antworten Zitat
Gelmo

Registriert seit: 14. Sep 2006
Ort: Niederrhein
20 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: "Dieser PC" als InitialDir für OpenDialog

  Alt 18. Aug 2020, 21:09
Vielen Dank an alle,
die Zeile von jfheins klappt. Mehr schreibe ich heute nicht mehr, da während eines ausführlicheren Antwortversuch zuvor der Zugang zur Delphi-Praxis abgebrochen ist.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf