Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   OpenDialog Mehrfachauswahl, Filename (https://www.delphipraxis.net/189767-opendialog-mehrfachauswahl-filename.html)

Freyr77 19. Jul 2016 09:15

Delphi-Version: 10 Seattle

OpenDialog Mehrfachauswahl, Filename
 
Ich würde gerne mit einem OpenDialog folgendes realisieren:

Mehrere Dateien einer bestimmten Art auswählen, die einzelnen Filenames auslesen und anschließend untereinander in einem StringGrid darstellen.

Ich hab das jetzt erstmal Testweise so gelöst:

Delphi-Quellcode:
OpenDialog1.Options := [ofAllowMultiSelect];
OpenDialog1.Execute();
ShowMessage(OpenDialog1.FileName);
um zu sehen, was der eigentlich ausließt wenn man mehrere Dateien auswählt.

Mir ist bekannt wie man die Daten in das StringGrid einträgt.

Was ich wissen wollte ist:

Ich habe dem OpenDialog gesagt er soll nach .dproj - Dateien filtern. Für den Multiselect wäre es hilfreich wenn die Ordner in denen sich die Dateien befinden nicht mit angezeigt werden. Geht das irgendwie?

Wie lese ich die gewählten Dateinamen einzeln aus um sie dem StringGrid zuzuweisen?

Klaus01 19. Jul 2016 09:23

AW: OpenDialog Mehrfachauswahl, Filename
 
.. sollte so funktionieren:
Delphi-Quellcode:
ShowMessage(extractFilename(OpenDialog1.FileName));
Wenn Du allerdings mit Multiselselect arbeitetest solltest Du dir OpenDialog1.Files anschauen.

Grüße
Klaus

Freyr77 19. Jul 2016 09:26

AW: OpenDialog Mehrfachauswahl, Filename
 
Zitat:

Zitat von Klaus01 (Beitrag 1342957)
.. sollte so funktionieren:
Delphi-Quellcode:
ShowMessage(extractFilename(OpenDialog1.FileName));
Grüße
Klaus

Ja, Danke, damit sieht das ganze schon ordentlicher aus.
Ich wollte allerdings mehrere Dateien auf einmal anwählen und deren "Filenames" dann einzeln anzeigen lassen.

Klaus01 19. Jul 2016 09:28

AW: OpenDialog Mehrfachauswahl, Filename
 
.. habe ich oben bereits ergänzt.
OpenDialog1.Files
Dies ist eine Liste mit den Dateinamen.

Grüße
Klaus

Freyr77 19. Jul 2016 09:31

AW: OpenDialog Mehrfachauswahl, Filename
 
Super, Danke!

himitsu 19. Jul 2016 13:51

AW: OpenDialog Mehrfachauswahl, Filename
 
Und nimm besser den TFileOpenDialog (VistaDialoge), statt dem TOpenDialog.

Emba war zwar auf die saudämliche geniale Idee gekommen den neuen Dialog intern zu verwenden, wenn man TOpenDialog verwendet und Windows diese API unterstützt/aktiviert hat,
aber ein paar neue Features wurden vergessen durchzureichen.

Freyr77 20. Jul 2016 08:57

AW: OpenDialog Mehrfachauswahl, Filename
 
Irgendwie komm ich trotzdem nicht weiter.

Ich brauche dringend irgendeine Möglichkeit mehrere .dprojs auswählen und verarbeiten zu können. Ob durch Mehrfachauswahl auf einmal oder mehrere einzelne Auswahlen nacheinander.

Die ganze Prozedur mit der Auslesung und der Eintragung sieht (unfertig) so aus:

Delphi-Quellcode:
procedure TVersionNumberViewer.Button2Click(Sender: TObject);
var
  ProgrammName: string;
  iNummer, iName: integer;
  Abfrage: string;
  MaxAnzahl: integer;
begin
  MaxAnzahl := 8;
  OpenDialog1.Execute();

  // Programmname auslesen
  ProgrammName := (extractfilename(OpenDialog1.FileName));
  EditNameAuswahl.Text := (extractfilename(OpenDialog1.FileName));

  // XML-Dokument laden
  CurrentXML := NewXMLDocument;
  CurrentXML.LoadFromFile(String(OpenDialog1.FileName));
  CurrentXML.Active := True;

  // Versionsnummer auslesen
  for iNummer := 1 to MaxAnzahl do
  begin
    VersionsNummern[iNummer] := '0.0';
  end;

  // Eintragungen StringGrid
  for iNummer := 1 to MaxAnzahl do
  begin
    StringGrid1.Cells[0, 1] := ProgrammName;
    StringGrid1.Cells[1, iNummer] := inttostr(VersionsNummer);
  end;
Damit wird aber nur eins eingetragen. Weil dieses Programm aber unbedingt effizient werden muss, bräuchte ich hier dringend einen Lösungsansatz. :?

uligerhardt 20. Jul 2016 09:05

AW: OpenDialog Mehrfachauswahl, Filename
 
Zitat:

Zitat von Freyr77 (Beitrag 1343033)
Damit wird aber nur eins eingetragen.

Weil du immer noch FileName und nicht Files benutzt?

BTW: Das
Zitat:

Zitat von Freyr77 (Beitrag 1343033)
Delphi-Quellcode:
OpenDialog1.Execute();
...

schreibt man besser so:
Delphi-Quellcode:
if OpenDialog1.Execute then
begin
  ...
end;

Freyr77 20. Jul 2016 09:09

AW: OpenDialog Mehrfachauswahl, Filename
 
Zitat:

Zitat von uligerhardt (Beitrag 1343034)
Zitat:

Zitat von Freyr77 (Beitrag 1343033)
Damit wird aber nur eins eingetragen.

Weil du immer noch FileName und nicht Files benutzt?

Das mit Files hat nicht so funktioniert wie ich mir das vorgestellt hatte ;) Er zeigt mir trotz Mehrfachselektierung nur einen Programmnamen an. Damit komm ich nicht weiter.

uligerhardt 20. Jul 2016 09:16

AW: OpenDialog Mehrfachauswahl, Filename
 
Dann machst du was falsch. :mrgreen:
Das funktioniert bei mir:
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var
  FileName: string;
begin
  ListBox1.Clear;
  if OpenDialog1.Execute(Handle) then
  begin
    for FileName in OpenDialog1.Files do
      ListBox1.Items.Add(FileName);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.
Seite 1 von 3  1 23      

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