Autor Beitrag
ConditionZero
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Di 03.04.07 19:05 
tach,
möcht in meine form ein SaveDialog aufrufen der auf Button1.Click aufgehen soll.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 03.04.07 19:30 
Probiers so :
ausblenden 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"

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: 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';

ausblenden 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;

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: 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 :)

_________________
Bravery calls my name in the sound of the wind in the night...
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: 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:

ausblenden 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;

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
Mindforce
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 358

Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
BeitragVerfasst: 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

ausblenden Delphi-Quelltext
1:
SaveDialog1.Execute;					


Mindforce

_________________
Our force; in mind.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 04.04.07 21:31 
user profile iconFighter#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 ... :
user profile iconJayEff 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: Mi 04.04.07 22:08 
und der dialog wird immer noch nicht freigegeben!

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 04.04.07 22:19 
Muss Er denn überhaupt selbst erzeugt werden, oder kann man Ihn nicht einfach aufs Formular ziehen !?.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 04.04.07 23:02 
user profile iconJayEff 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.


user profile iconFighter#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!


user profile iconJayEff hat folgendes geschrieben:
Mag ja sein, aber ... :
user profile iconJayEff 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Do 05.04.07 08:48 
user profile iconJayEff hat folgendes geschrieben:
user profile iconJayEff 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.


user profile iconFighter#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!


user profile iconJayEff hat folgendes geschrieben:
Mag ja sein, aber ... :
user profile iconJayEff 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: