![]() |
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:
um zu sehen, was der eigentlich ausließt wenn man mehrere Dateien auswählt.
OpenDialog1.Options := [ofAllowMultiSelect];
OpenDialog1.Execute(); ShowMessage(OpenDialog1.FileName); 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? |
AW: OpenDialog Mehrfachauswahl, Filename
.. sollte so funktionieren:
Delphi-Quellcode:
Wenn Du allerdings mit Multiselselect arbeitetest solltest Du dir OpenDialog1.Files anschauen.
ShowMessage(extractFilename(OpenDialog1.FileName));
Grüße Klaus |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
Ich wollte allerdings mehrere Dateien auf einmal anwählen und deren "Filenames" dann einzeln anzeigen lassen. |
AW: OpenDialog Mehrfachauswahl, Filename
.. habe ich oben bereits ergänzt.
![]() Dies ist eine Liste mit den Dateinamen. Grüße Klaus |
AW: OpenDialog Mehrfachauswahl, Filename
Super, Danke!
|
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. |
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:
Damit wird aber nur eins eingetragen. Weil dieses Programm aber unbedingt effizient werden muss, bräuchte ich hier dringend einen Lösungsansatz. :?
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; |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
BTW: Das Zitat:
Delphi-Quellcode:
if OpenDialog1.Execute then
begin ... end; |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
|
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; |
AW: OpenDialog Mehrfachauswahl, Filename
Muss man dem StringGrid nicht noch vorher sagen, wieviele Rows es hat?
Delphi-Quellcode:
StringGrid1.RowCount := StringGrid.FixedRows + OpenDialog1.Files.Count; // Eintragungen StringGrid for iNummer := 0 to OpenDialog1.Files.Count-1 do begin StringGrid1.Cells[0, StringGrid.FixedRows + iNummer + 1] := OpenDialog1.Files[iNummer]; // <= !! StringGrid1.Cells[1, StringGrid.FixedRows + iNummer + 1] := inttostr(VersionsNummer); end; |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
|
AW: OpenDialog Mehrfachauswahl, Filename
Nochmal gleiches Thema:
Ich habe jetzt folgende Prozedur um die XML-Datei rekursiv zu durchsuchen:
Delphi-Quellcode:
Damit möchte ich jetzt bei Button-Klick auslesen lassen, das sieht so aus:
var
i: integer; begin if pParentNode.NodeName = 'VerInfo_Keys' then begin fVersionInfo := pParentNode; end else begin for i := 0 to pParentNode.ChildNodes.Count - 1 do begin GetVersionInfo(pParentNode.ChildNodes[i]); end; end;
Delphi-Quellcode:
... funktioniert aber nicht. Mir ist auch bewusst das die Eintragungen ins StringGrid gerade leere Strings sind. Weiß einer von euch wie ich die Prozedur jetzt richtig aufrufe?
var
lFileName: string; iZaehler: integer; begin OpenDialog1.Execute(); // InternalName = FileName for iZaehler := 0 to MaxAnzahl -1 do begin // XML-Dokument laden CurrentXML := NewXMLDocument; CurrentXML.LoadFromFile(String(OpenDialog1.FileName)); CurrentXML.Active := True; // XML-Dokument auslesen GetVersionInfo(CurrentXML.DocumentElement); GetFileName(CurrentXML.DocumentElement); if fVersionInfo <> nil then begin end; if fFileInfo <> nil then begin end; // Überschriften StringGrid StringGrid1.Cells[0, 0] := 'Projekt'; StringGrid1.Cells[1, 0] := 'Version'; // Eintragungen StringGrid begin StringGrid1.Cells[0, iZaehler] := ''; StringGrid1.Cells[1, iZaehler] := ''; end; // Aktualisieren sichtbar Button1.Visible := True; end; |
AW: OpenDialog Mehrfachauswahl, Filename
Du liest MaxAnzahl mal dieselbe Datei ein, wozu soll das gut sein?
|
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
Die Prozedur hab ich vor kurzem erst geschrieben und steh jetzt extrem auf dem Schlauch. Das Auslesen hatte sogar schon funktioniert.:lol: |
AW: OpenDialog Mehrfachauswahl, Filename
OpenDialog1.Files[iZaehler]...
Der Kreis schließt sich ;-) |
AW: OpenDialog Mehrfachauswahl, Filename
Und immer schön
Delphi-Quellcode:
Denn wo der Benutzer keine Datei ausgewählt hat, steht in Files / Filename auch nichts drinnen ;)
if OpenDialog1.Execute then begin
.. end; |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
Hat jemand eine Lösung zu meiner eigentlichen Frage? Der Rest wird nachher überarbeitet, versprochen :lol: |
AW: OpenDialog Mehrfachauswahl, Filename
Zeig mal, was Du bisher hast (simples aber komplettes Beispielprojekt), damit ich verstehen kann, was Du nicht verstehst.
Weil nämlich - wenn das Ganze in einer Prozedur ist, dann hat die einen Namen. Und mittels dem Namen kann man sie dann auch aufrufen. Sollte daran etwas nicht klar sein oder nicht funktionieren, dann seh ich lieber das ganze Bild als nur einen Ausschnitt. |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
|
AW: OpenDialog Mehrfachauswahl, Filename
So schwer ist das doch gar nicht:
Delphi-Quellcode:
Dabei wird DateiAuswerten eine eigene Routine mit einem String-Parameter für den Dateinamen, feddich is die Laube.
if OpenDialog1.Execute then
for i := 0 to OpenDialog1.Files.Count - 1 do DateiAuswerten(OpenDialog1.Files[i]); |
AW: OpenDialog Mehrfachauswahl, Filename
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 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