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/)
-   -   TFileOpenDialog für Dir mit Delphi 7 (https://www.delphipraxis.net/207756-tfileopendialog-fuer-dir-mit-delphi-7-a.html)

Poelser 29. Apr 2021 12:31

TFileOpenDialog für Dir mit Delphi 7
 
Hallo zusammen!

Ich such' mir im Netz 'nen Wolf und werd' nicht fündig.:?

Für ein altes D7-Projekt muss ich eine Verzeichnis-Auswahl einbauen. Eigentlich ganz einfach, wenn man den Standard-Dialog von D7 nimmt (TSelectDirectory). Da aber kein altes OS mehr läuft, dachte ich, man kann ja TFileOpenDialog mit der Einstellung [..DirOnly oder so] nehmen.

Aber den gibt's ja nicht in D7. Alles, was ich gefunden habe, um das mit der API zu machen, hat in den Code-Beispielen nur den Standard-Dialog.:evil:

Hat jemand Code oder 'nen Link für D7 + moderner SelectDirectory-Dialog?

himitsu 29. Apr 2021 13:27

AW: TFileOpenDialog für Dir mit Delphi 7
 
da wirdst'e wohl im MSDN selbsr suchen müssen
und die APIs nach Delphi portieren.

Das sind die neuen Vista-Dialoge, weil es seit da diese API gab und somit D7 es noch nicht kennen kann.

Delphi-Quellcode:
CLSID_FileOpenDialog: TGUID = '{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}'
Delphi-Quellcode:
{ TCustomFileOpenDialog }

function TCustomFileOpenDialog.CreateFileDialog: IFileDialog;
var
  LGuid: TGUID;
begin
{$IF DEFINED(CLR)}
  LGuid := Guid.Create(CLSID_FileOpenDialog);
{$ELSE}
  LGuid := CLSID_FileOpenDialog;
{$ENDIF}
  CoCreateInstance(LGuid, nil, CLSCTX_INPROC_SERVER,
    StringToGUID(SID_IFileOpenDialog), Result);
end;

function TCustomFileOpenDialog.GetResults: HResult;
begin
  if not (fdoAllowMultiSelect in Options) then
    Result := inherited GetResults
  else
  begin
    Result := (Dialog as IFileOpenDialog).GetResults(FShellItems);
    if Succeeded(Result) then
      Result := GetFileNames(FShellItems);
  end;
end;

Bernhard Geyer 29. Apr 2021 15:11

AW: TFileOpenDialog für Dir mit Delphi 7
 
LMD hat auch entsprechende TOpen/Save-Dialog im Vista-Style für älter Delphi.
Hier musst du aber evtl. eine älteren Stand der Bibliotheken versuchen zu bekommen.
Mit der neuesten 2021er Version/Edition unterstützen sie keine Antiken Versione mehr die älter als Delphi XE2 sind.

Poelser 30. Apr 2021 06:40

AW: TFileOpenDialog für Dir mit Delphi 7
 
Moin,

@Himitsu: Das hatte ich mir schon gedacht, ich werd' das auf der Basis mal umsetzen. Wenn's zu kompliziert wird, muss die alte Anwendung eben im alten Style bleiben.
@Bernhard: Die LMD-Tools sind doch kostenpflichtig, oder? Ich glaub', da bekomm' ich kein Geld für locker gemacht - wäre auch mit Kanonen auf Spatzen schießen...

Bernhard Geyer 30. Apr 2021 08:26

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von Poelser (Beitrag 1488244)
@Bernhard: Die LMD-Tools sind doch kostenpflichtig, oder? Ich glaub', da bekomm' ich kein Geld für locker gemacht - wäre auch mit Kanonen auf Spatzen schießen...

Wenn das im Beruflichen Umfeld unterwegs bist, ist selbst machen immer teurer als kaufen.

himitsu 30. Apr 2021 08:48

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zeit gegen Geld.

Oben die sehen ja zuerst das Geld, was "jetzt" rausgeht ... ob/was das Andere mit der "Zeit" kosten könnte, ist halt ne andere Sache.

Frickler 30. Apr 2021 09:03

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von Poelser (Beitrag 1488166)
Hat jemand Code oder 'nen Link für D7 + moderner SelectDirectory-Dialog?

Bei StackOverflow gibts mehrere Beispiele für Delphi 7 und sogar für Delphi 4.

Rolf Frei 30. Apr 2021 12:23

AW: TFileOpenDialog für Dir mit Delphi 7
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Poelser (Beitrag 1488166)
Hallo zusammen!

Ich such' mir im Netz 'nen Wolf und werd' nicht fündig.:?

Für ein altes D7-Projekt muss ich eine Verzeichnis-Auswahl einbauen. Eigentlich ganz einfach, wenn man den Standard-Dialog von D7 nimmt (TSelectDirectory). Da aber kein altes OS mehr läuft, dachte ich, man kann ja TFileOpenDialog mit der Einstellung [..DirOnly oder so] nehmen.

Aber den gibt's ja nicht in D7. Alles, was ich gefunden habe, um das mit der API zu machen, hat in den Code-Beispielen nur den Standard-Dialog.:evil:

Hat jemand Code oder 'nen Link für D7 + moderner SelectDirectory-Dialog?

Habe hier eine Freeware ShellBrowser Komponente angehängt, die ich seit Jahren nutze und die ich selber noch etwas erweitert habe. Die läuft in D7 seit Jahren produktiv in meinen Anwendungen. Das müsste genau das sein was du suchst. Die anderen Posts hier leiten dich leider in die Irre und bringen dich nicht zu dem was du eigentlich suchst. Mit dem Open/Save Dialog hat das nichts zu tun.

Im Zip fehlt noch ein Package (dpk), das es aber bei mir nicht gibt, weil ich die Komponente selber in einem eigenen Packge mit diversen anderen Komponenten integriert habe. Ein eigenes Package dafür zu ertellen solltest du aber sicher hinkriegen. Die Registrierungs-Unit und das dcr sind ja dabei.

Bernhard Geyer 30. Apr 2021 13:08

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Habe hier eine Freeware ShellBrowser Komponente angehängt, die ich seit Jahren nutze und die ich selber noch etwas erweitert habe. Die läuft in D7 seit Jahren produktiv in meinen Anwendungen. Das müsste genau das sein was du suchst. Die anderen Posts hier leiten dich leider in die Irre und bringen dich nicht zu dem was du eigentlich suchst. Mit dem Open/Save Dialog hat das nichts zu tun.
Dein Wissenstand ist hier Pre-Vista.
Ab Vista ist der Verzeichnis-Auswahldialog gleich dem Datei Öffnen-Dialog und nur über ein Flag wird das verhalten gesteuert.
Dein Dialog ist der (Ur-)alte dedizierte Verzeichnis-Auswahldialog.

Poelser 30. Apr 2021 13:12

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von Rolf Frei (Beitrag 1488288)
Habe hier eine Freeware ShellBrowser Komponente angehängt, die ich seit Jahren nutze und die ich selber noch etwas erweitert habe. Die läuft in D7 seit Jahren produktiv in meinen Anwendungen. Das müsste genau das sein was du suchst. Die anderen Posts hier leiten dich leider in die Irre und bringen dich nicht zu dem was du eigentlich suchst. Mit dem Open/Save Dialog hat das nichts zu tun.

Im Zip fehlt noch ein Package (dpk), das es aber bei mir nicht gibt, weil ich die Komponente selber in einem eigenen Packge mit diversen anderen Komponenten integriert habe. Ein eigenes Package dafür zu ertellen solltest du aber sicher hinkriegen. Die Registrierungs-Unit und das dcr sind ja dabei.

Ganz großes Danke, das ist genau das was ich gesucht habe. Dafür gibt's auch ein virtuelles Bier :cheers:

Rolf Frei 30. Apr 2021 13:17

AW: TFileOpenDialog für Dir mit Delphi 7
 
Hast du mir da ein Beispiel einer Anwendung bei der man diesen neuen Dialog in der Praxis sieht? Die obige Komponente kapselt die MS ShellFolder Interfaces und hat mit dem originalen D7 TSelectDirectory überhaupt nichts zu tun. In allen Programmen die ich nutze, erhalte ich immer diesen Dialog, wenn es um die Auswahl eines Verzeichnisses geht. Daher ist das eine ernsthaft gemeinte Frage.

himitsu 30. Apr 2021 13:51

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von Rolf Frei (Beitrag 1488288)
Habe hier eine Freeware ShellBrowser Komponente angehängt,
...

Leider ist grade diese Komponente echt grauenhaft zu benutzten.
Besser wird es, wenn man noch das Input-Edit einblenden lässt, damit man Pfade eingeben/reinkopieren und direkt auswählen kann, anstatt grauenhaft sich durch den Tree klicken zu müssen.

Auch in der Delphi-IDE hatten wir grade erst den Hersteller dazu gebracht diesen Dialog durch den neuen Dialog zu ersetzen.


Aktueller Standard:
Der FileOpenDialog, welcher aber statt Datei die Auswahl des Verzeichnisses erlaubt.

Rolf Frei 30. Apr 2021 14:04

AW: TFileOpenDialog für Dir mit Delphi 7
 
Für was brauchst du denn da eine Editfeld? Dieser Dialog hat doch garkein Eingabefeld, zumindest diese Komponente nicht. Ehrlich gesagt verstehe ich nicht was daran grauenhaft sein soll. Vieleicht ist die grundlegene MS Implementation dieser Komponente grauenhaft, aber an diese Komponente wüsste ich nicht, was da grauenhaft sein soll.

Die Frage steht immer noch im Raum: Wo finde ich eine Anwendung, in der man den "neuen" Dialog sehen kann?

EDIT: Habe eben gecheckt, dass Delphi das selber so macht. Aber ehrlich gesagt finde ich des kein Stück besser, im Gegeneteil, da wird mir ein riesigs Fenster angezeigt, das einen Baum als auch einen Fileauswahlbereich hat. Was soll das? Was nützt mir das? Da ziehe ich die ShellBorwser Version mit der einfachen Baumstruktur doch deutlich dieser FileOpen Variante vor.

Bernhard Geyer 30. Apr 2021 14:13

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von Poelser (Beitrag 1488300)
Ganz großes Danke, das ist genau das was ich gesucht habe. Dafür gibt's auch ein virtuelles Bier :cheers:

Das ist aber jetzt nicht was du wolltest:
Zitat:

Da aber kein altes OS mehr läuft, dachte ich, man kann ja TFileOpenDialog mit der Einstellung [..DirOnly oder so] nehmen.
Was du jetzt hast ist ein etwas aufgehübschte Version deiner SelectDir-Funktion.
Da gab auch eine Win9x und XP-Style mit Zusatzbutton und Textfeld.

himitsu 30. Apr 2021 14:14

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Dieser Dialog hat doch garkein Eingabefeld
Doch, das kann man aktivieren. (gibt genügend Beiträge im Form/Internet zu finden)

Um per Tastatur Verzeichnisnamen/Pfade eingeben zu können, oder eben Copy&Paste eines kompletten Pfades (z.B. aus dem Explorer oder einem anderem Programm), anstatt im Tree zu suchen.


Ja, der "neue" Dialog ist größer, aber für die meißten User wesentlich benutzerfreundlicher.
Und egal ob Verzeichnis- oder Dateiauswahl, es ist der gleiche Dialog. (einheitliches Design und Bedienung)

Rolf Frei 30. Apr 2021 14:24

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von himitsu (Beitrag 1488317)
Zitat:

Dieser Dialog hat doch garkein Eingabefeld
Doch, das kann man aktivieren. (gibt genügend Beiträge im Form/Internet zu finden)

Um per Tastatur Verzeichnisnamen/Pfade eingeben zu können, oder eben Copy&Paste eines kompletten Pfades (z.B. aus dem Explorer oder einem anderem Programm), anstatt im Tree zu suchen.


Ja, der "neue" Dialog ist größer, aber für die meißten User wesentlich benutzerfreundlicher.
Und egal ob Verzeichnis- oder Dateiauswahl, es ist der gleiche Dialog. (einheitliches Design und Bedienung)

Ja das Editfeld kann man in der Grund MS Inplementation aktivieren, aber nicht bei dieser Komponente. Da wird das Ertellen eines Verzeichnisses anderst gelöst. Da gibt es keinen Grund für eine Eidtbox.

Ich sehe da nicht wirklich einen Nachteil zur neuen Version und vorallem läfut das in D7 wie er es wollte.

Poelser 30. Apr 2021 14:29

AW: TFileOpenDialog für Dir mit Delphi 7
 
Zitat:

Zitat von Rolf Frei (Beitrag 1488318)
Ich sehe da nicht wirklich einen Nachteil zur neuen Version und vorallem läfut das in D7 wie er es wollte.

Ja, so ist es. Natürlich wäre das mit dem Eingabefeld nicht schlecht, aber mit der Ordnerauswahl sollen einfache Mäuseschubser umgehen. Schulligung wenn ich das so sage, aber Copy-Paste ist da ein Fremdwort...:roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 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