Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - [VisualCLX] TSaveDialog aufrufen
ConditionZero - Di 03.04.07 19:05
Titel: TSaveDialog aufrufen
tach,
möcht in meine form ein SaveDialog aufrufen der auf Button1.Click aufgehen soll.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.SaveAsClick(Sender: TObject); begin
Create(self:TSaveDialog); TSaveDialog.Execute;
end; |
aber das klappt irgendwie nicht wie ich will, was ist da falsch?
LG
Fighter#1 - Di 03.04.07 19:30
Probiers so :
Delphi-Quelltext
1: 2: 3: 4: 5:
| With TSaveDialog.Create(self) do begin If Execute Then begin ShowMessage(Filename); end; end; |
Dein Fehler : du hast einen TSaveDIalog einfach so erstellt ohne ihn zu benutzen, TSaveDialog ist nach Create auch noch keine Variable!
Du musst das "kombineren"
ConditionZero - Di 03.04.07 19:39
ah ok danke hat geklappt,
öhm mal noch so ne frage: kann man die liste im SaveDlg wo de dateityp steht noch benutzen also was reinschreiben?
JayEff - Di 03.04.07 19:43
Ich empfehl dir, mal die Komponente TSaveDialog auf die Form zu ziehen, da siehst du ihre Eigenschaften. Was du suchst, müsste 'Filter' sein.
Fighter#1 - Mi 04.04.07 11:58
Warum denn das JayEff???
Man muss nich aufs Formular ziehen, das geht mit Filter so:
Also so "dynamisch" ist das doch viel geschickter!
Filter funktioniert so:
Filter:='Bitmap|*.bmp';
Der User wählt Dateityp Bitmap und sieht alle Dateien mit *.bmp.
Um mehr als einen Dateityp einzutragen einfach mehrere solcher Trennzeichen nutzen:
Filter:='Bitmap|*.bmp|Jpegs|*.jpg';
Und wenn man jetzt noch mehrere Dateiendungen pro Dateityp nutzen woll sieht das so
aus:
Trennzeichen für Endungen ist ein Semikolon
Filter:='Bilder|*.jpg;*.bmp|Lieder|*.mp3;*.wav';
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| With TSaveDialog.Create(self) do begin Filter:='Bilder|*.bmp;*.jpg;*.gif|Lieder|*.mp3;*.wav'; If Execute Then begin ShowMessage(Filename); end; end; |
noidic - Mi 04.04.07 12:12
Ich hab heut irgendwie meinen Klugscheißertag...
auf Konstrukte wie 'with TSomeClass.create do' sollte man möglichst verzichten, stattdessen das erzeugte Objekt in eine Variable schreiben und damit arbeiten.
Grund:
Bei einer Erweiterung des Code kann man auch außerhalb des with-Blocks auf das Objekt zugreifen. Ausserdem werden diese with-Geschichten bei längerem Code schnell unübersichtlich.
In unseren Programmierrichtlinien ist das Konstrukt deshalb auch verboten, hat zu oft zu Fehlern geführt wie auch hier, der Dialog wird hier niemals freigegeben und schimmelt im Speicher rum.
Bitte das nicht als Angriff verstehen, nur als Anregung :)
Chatfix - Mi 04.04.07 12:16
Nur der Form halber, es ist üblich die Benutzen Filter nochmal in Klammern beim Name aufzuführen.
Ebenfalls wäre eventuell ein "Alle Dateien" sinnvoll.
Es würde dann so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| With TSaveDialog.Create(self) do begin Filter:='Bilder (*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif|Lieder (*.mp3;*.wav)|*.mp3;*.wav|Alle Dateien (*.*)|*.*'; If Execute Then begin ShowMessage(Filename); end; end; |
Mindforce - Mi 04.04.07 12:35
HI,
erstell doch einfach erstmal ein SaveDialog in der Liste "Dialoge".
Dann einfach den Filter im OM ändern und dann
Mindforce
JayEff - Mi 04.04.07 21:31
Fighter#1 hat folgendes geschrieben: |
Warum denn das JayEff???
Man muss nich aufs Formular ziehen, das geht mit Filter so:
Also so "dynamisch" ist das doch viel geschickter! |
Mag ja sein, aber ... :
JayEff hat folgendes geschrieben: |
| [...], da siehst du ihre Eigenschaften. Was du suchst, müsste 'Filter' sein. |
Übersichtlicher als im Objektinspektor bekommst du selbige nicht aufgelistet, ausserdem sieht man dort, nach welchem Schema man Filter einen String zuweisen muss... :roll:
HelgeLange - Mi 04.04.07 22:08
und der dialog wird immer noch nicht freigegeben!
Blackheart666 - Mi 04.04.07 22:19
Muss Er denn überhaupt selbst erzeugt werden, oder kann man Ihn nicht einfach aufs Formular ziehen !?.
JayEff - Mi 04.04.07 23:02
JayEff hat folgendes geschrieben: |
| Ich empfehl dir, mal die Komponente TSaveDialog auf die Form zu ziehen, da siehst du ihre Eigenschaften. Was du suchst, müsste 'Filter' sein. |
Fighter#1 hat folgendes geschrieben: |
Warum denn das JayEff???
Man muss nich aufs Formular ziehen, das geht mit Filter so:
Also so "dynamisch" ist das doch viel geschickter! |
JayEff hat folgendes geschrieben: |
Mag ja sein, aber ... :
JayEff hat folgendes geschrieben: | | [...], da siehst du ihre Eigenschaften. Was du suchst, müsste 'Filter' sein. |
Übersichtlicher als im Objektinspektor bekommst du selbige nicht aufgelistet, ausserdem sieht man dort, nach welchem Schema man Filter einen String zuweisen muss... :roll: |
Beantwortet das deine Frage, Blackheart? ;)
Blackheart666 - Do 05.04.07 08:48
JayEff hat folgendes geschrieben: |
JayEff hat folgendes geschrieben: | | Ich empfehl dir, mal die Komponente TSaveDialog auf die Form zu ziehen, da siehst du ihre Eigenschaften. Was du suchst, müsste 'Filter' sein. |
Fighter#1 hat folgendes geschrieben: | Warum denn das JayEff???
Man muss nich aufs Formular ziehen, das geht mit Filter so:
Also so "dynamisch" ist das doch viel geschickter! |
JayEff hat folgendes geschrieben: | Mag ja sein, aber ... :
JayEff hat folgendes geschrieben: | | [...], da siehst du ihre Eigenschaften. Was du suchst, müsste 'Filter' sein. |
Übersichtlicher als im Objektinspektor bekommst du selbige nicht aufgelistet, ausserdem sieht man dort, nach welchem Schema man Filter einen String zuweisen muss... :roll: |
Beantwortet das deine Frage, Blackheart? ;) |
Nein - Ich meinte
ConditionZero muss es denn unbedingt ein dynamisch erstellter SaveDialog sein ? (Wenn Ja dann ist meine Frage beantwortet) :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!