Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Öffnen-Fenster (https://www.delphipraxis.net/75495-oeffnen-fenster.html)

Cöster 20. Aug 2006 11:56


Öffnen-Fenster
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi!

Ich schreib gerade ein kleines Bildbearbeitungs-Programm. Wenn man im MainMenu unter Datei auf Öffnen klickt, soll ein neues Fenster sichtbar werden, auf dem man das Bild auswählen kann, die geladen werden soll (siehe Screenshot "so soll's sein").
Weiß vielleicht jemand von euch, wie man das machen kann?
Ich krieg's nämlich nur so weit hin, dass man den vollständigen Pfad in ein Edit-Feld eingeben muss (siehe Screenshot "so ist es") und nicht bequem aus einer ComboBox den Pfad auszuwählen und in dem Feld darunter alle Bilder in diesem Pfad anzuzeigen.

EDatabaseError 20. Aug 2006 11:58

Re: Öffnen-Fenster
 
Schau dir ml den Opendialog / OpenImageDialog an ;-)

Mfg

BenjaminH 20. Aug 2006 12:00

Re: Öffnen-Fenster
 
Einfach die Komponente TOpenDialog in das Formular einfügen.
Und so öffnest du den dann:
Delphi-Quellcode:
If OpenDialog1.Execute Then
   Memo1.LoadFromFile(OpenDialog1.FileName;

Cöster 20. Aug 2006 12:27

Re: Öffnen-Fenster
 
Erstmal danke für die schnellen Antworten.

Zitat:

Zitat von BenjaminH
Einfach die Komponente TOpenDialog in das Formular einfügen.
Und so öffnest du den dann:
Delphi-Quellcode:
If OpenDialog1.Execute Then
   Memo1.LoadFromFile(OpenDialog1.FileName;

Hab ich nicht ganz verstanden. Wofür Memo1?

Was muss ich in die Procedure schreiben, die aufgerufen wird sobald ich unter Datei auf öffnen klicke?

Wie stelle ich das geladene Bild in einer Image-Komponente dar?

EDatabaseError 20. Aug 2006 12:33

Re: Öffnen-Fenster
 
Delphi-Quellcode:
procedure bildoeffnen;
begin
 if OpenDialog1.Execute then
  Image1.LoadFromFile(OpenDialog1.FileName);
end;
Mfg

Daniel B 20. Aug 2006 12:34

Re: Öffnen-Fenster
 
Die Memo1 war nur ein Beispiel, wie man an die Dateinamen der im OpenDialog angeklickten Dateien kommt. Brauchst Du also nicht. Du willst also ein Bild anzeigen.

Nimm ein TImage und setze es auf dein Formular. In den Eigenschaften des OpenDialogs, da gibt es Filter, stelle dort die gewünschte Dateiendung ein, der Formate die im Dialog anzeiget werden sollen. An den Dateinamen kommst du eben mit OpenDialog Filename, daher das Beispiel mit der Memo, diesen Namen weist du nicht einer Memo zu, sondern dem TImage, das ist deine Komponente die das Bild dann anzeigen wird.

fkerber 20. Aug 2006 12:37

Re: Öffnen-Fenster
 
Hi!

Eine kleine Bitte:
Könntest du die Bilder im ersten Beitrag als Jpgs anhängen? Dann wäre es deutlich komfortabler, sich diese anzuschauen, da sie dann deutlich kleiner wären!


Danke.
Ciao, Frederic

Cöster 20. Aug 2006 12:52

Re: Öffnen-Fenster
 
Zitat:

Zitat von EDatabaseError
Delphi-Quellcode:
procedure bildoeffnen;
begin
 if OpenDialog1.Execute then
  Image1.LoadFromFile(OpenDialog1.FileName);
end;
Mfg

Das kommt dann wahrscheinlich ins OnClose des OpenDialogs.

Und wie öffne ich den Dialog? Da muss es doch was geben wie OpenDialog1.Show oder so

@fkerber: hab ich gemacht

Gausi 20. Aug 2006 12:55

Re: Öffnen-Fenster
 
Den Dialog öffnest du per OpenDialog1.Execute. Wenn er beendet wird, wird ein Boolean-Wert zurückgeliefert (True: eine Datei wurde ausgewählt, False: der Dialog wurde abgebrochen).

Der Code kommt also ins OnClick des Buttons, auf dem "Bild laden" steht ;-)

Cöster 20. Aug 2006 13:12

Re: Öffnen-Fenster
 
Also ich kann den OpenDialog jetzt öffnen, aber wenn ich in diesem Dialog dann auf "Öffnen" oder "Abbrechen" klicke, passiert nichts. Der Dialog bleibt geöffnet. Erst wenn ich ca. 20 mal auf "Öffnen" bzw. "Abbrechen" geklickt hab, schließt der Dialog auch wirklich.

Hier sind die beiden Procedures:
Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
begin
  OpenPictureDialog1.Execute;
end;
{...}
procedure TForm1.OpenPictureDialog1Close(Sender: TObject);
begin
  If OpenPictureDialog1.Execute then
    ImMain.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
Was hab ich noch falsch gemacht?

EDatabaseError 20. Aug 2006 13:14

Re: Öffnen-Fenster
 
Zitat:

Zitat von Cöster
Also ich kann den OpenDialog jetzt öffnen, aber wenn ich in diesem Dialog dann auf "Öffnen" oder "Abbrechen" klicke, passiert nichts. Der Dialog bleibt geöffnet. Erst wenn ich ca. 20 mal auf "Öffnen" bzw. "Abbrechen" geklickt hab, schließt der Dialog auch wirklich.

Hier sind die beiden Procedures:
Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
begin
  OpenPictureDialog1.Execute;
end;
{...}
procedure TForm1.OpenPictureDialog1Close(Sender: TObject);
begin
  If OpenPictureDialog1.Execute then
    ImMain.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
Was hab ich noch falsch gemacht?

:roll: les dir mal alles nochmals genau durch...

Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
begin
  If OpenPictureDialog1.Execute then
    ImMain.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;

SirThornberry 20. Aug 2006 13:17

Re: Öffnen-Fenster
 
das ist ja logisch. Schließlich rufst du im OnClose des Dialoges den Dialog wieder auf. Der OpenDialog und alle anderen Dialog der Sorte werden wie folgt benutzt (sollte bei dir ins Click-Ereignis und gegebenfalls solltest du dir mal die Hilfe zu den Dialogen durchlesen):
Delphi-Quellcode:
//OpenDialog1.Execute öffnet den Dialog und gibt "true" zurück wenn er nicht abgebrochen wurde (durch klick auf Kreuz, Alt + F4, Abbrechen etc.)
if OpenDialog1.Execute then
begin
  //Jetzt ist in OpenDialog1.FileName der Dateiname enthalten welcher im Dialog gewählt wurde
  //Beispiel:
  ShowMessage('Folgende Datei wurde ausgewählt: ' + OpenDialog1.FileName);
end;

Daniel G 20. Aug 2006 13:19

Re: Öffnen-Fenster
 
Wie oben schon stand:

Der Code gehört in das OnClick - Event des Buttons. OpenPictureDialog1.Execute ist eine Funktion. Wird die beendet, liefert sie einen bool'schen Rückgabewert, je nachdem, ob "OK" (true) oder "Abbrechen" (false) gedrückt wurde.

Das hier

Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then //do sth.
end;
ist also dasselbe wie das:

Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
var
test: Boolean;
begin
test := OpenPictureDialog1.Execute;
if test then //do sth.
end;
//Edit: Jetzt habe ich mir soviel Mühe gegeben, jetzt wollte ich das auch abschicken. :stupid:

Cöster 20. Aug 2006 13:50

Re: Öffnen-Fenster
 
Aah, jetzt hab ich's kapiert.
Zitat:

Zitat von Gausi
Den Dialog öffnest du per OpenDialog1.Execute.

Das hatte ich erst so verstanden, dass Execute auch eine procedure wäre.

Jetzt hab ich also gar kein OnClose-Ereignis, nur noch das OnClick.
Danke nochmal an alle!


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