Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Opendialog-Fehler wegen zweiter Form? (https://www.delphipraxis.net/116054-opendialog-fehler-wegen-zweiter-form.html)

Moondryl 22. Jun 2008 19:40


Opendialog-Fehler wegen zweiter Form?
 
Hallo,
hatte mich zuvor bei www.delphi-forum.de gemeldet aber da konnte oder wollte mir leider keiner mehr helfen und so wende ich mich nun bitten an euch...:)
Nachzulesen alles hier.

Zum Problem nochmal:

Habe ein Opendialog und zwei Forms. WEnn man nun auf Knopfdruck den Opendialog öffnet und nun einen Dateinamen, den man öffnen will, eingibt, den es nicht gibt (kann ja durch Fehleingabe passieren) und den Dialog dan durch einen Klick auf das "X" schließt kommt eine Fehlermeldung durch den Debugger und meine Fehlermeldung wird durch das Programm angezeigt (Startet man die Exe ohne Delphi wird natürlich nur meine Fhelermeldung angezeigt),
Dies soll aber nicht passieren!. Meine FEhlermeldung soll nur angezeigt werden, wenn man auf "OK" klickt und dann ein Fehler vorliegt.

Und nun das suspekte!

Hat man nur eine Form, so wird meine Fehlermeldung bei diesem Vorgehen nicht angezeigt! Hat man zwei Forms und ist die zweite auf unsichtbar gestellt, wird sie ebenfalls nicht ausgelöst!
Stellt man sie aber beide auf visible, so wird meine Fehlermeldung ausgelöst, was in diesem Fall ja nicht sein soll...-.-

Help?

Falls ich Code nochmal hier posten bzw. das Programm hier nochmal hochladen soll einfach bescheidsagen...:)

Schonmal danke für eure Antworten..:)

LG

Moondryl

Real_Thunder 22. Jun 2008 19:47

Re: Opendialog-Fehler wegen zweiter Form?
 
ohhhm.. am einfachsten ist es wirlich wenn du mal den ensprechenen cod anbschnitt posten würdest....
und was ist mit "meine fehlermeldun" gemeint...

und beim Entwickeln.. sollte er eigend alle exceptions rauswerfen, selbst wenn du diese mit try except abfängst.....

Also wie gesagt poste einfach mal den code abschnitt...

ach ja und die genau fehlermeldung währe auch nützlich


Dazu noch welch3es betriebsystem.... welche delphi version etc...

mkinzler 22. Jun 2008 19:51

Re: Opendialog-Fehler wegen zweiter Form?
 
Zeig mal etwas Code. Welche Exception tritt den auf?

hoika 22. Jun 2008 19:56

Re: Opendialog-Fehler wegen zweiter Form?
 
Hallo,

hänge dein Projekt noch mal an.


Heiko

Moondryl 22. Jun 2008 20:03

Re: Opendialog-Fehler wegen zweiter Form?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der Code meiner Fehlermeldung:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  MessageClk: Integer;
begin
  try
    if Opendialog1.Execute then
      LabeledEdit1.Text  :=   Opendialog1.FileName;
  except
    MessageClk   :=   Application.MessageBox(
                          'Fehler beim Laden der Datei!' + #10#13 +
                          'Bitte Versuchen Sie es erneut.' + #10#13 +
                          'Achten Sie dabei auf den Dateityp!',
                          'ERROR',
                          0 + 48);
  end;
end;
Hier die Meldung durch den Debugger, wenn ich mit F9 starte:

Code:
Erste Gelegenheit für Exception bei $75B2F35F. Exception-Klasse EAccessViolation mit Meldung 'Access violation at address 759A64A1 in module 'comdlg32.dll'. Read of address 6C531954'. Prozess Project1.exe (5808)
Weitere Informationen:

Win Vista
Delphi 2007

Real_Thunder 22. Jun 2008 20:16

Re: Opendialog-Fehler wegen zweiter Form?
 
schon irgendwie seltsam das die cmdlg.dll ne exeption rauswirft.
normalerweise sollte auch beim try exept keine exeption kommen, denn wenn man das opendialog mit dem x ausmacht sollte sollte die if abfrage verneint werden. ergo währe es egal welche datei man angibt.

und das er die vorher angegeben datei nicht finden kann, sollte an sich kene exception auslösen.

WE ALL LOVE VISTA ......

Moondryl 22. Jun 2008 20:19

Re: Opendialog-Fehler wegen zweiter Form?
 
Habs eben auch unter XP getestet...meine Meldung wird trotzdem ausgelöst...
Wenn ihr nur den COde mal kopiert und shcnell ein eigenes Projekt erstellt mit nem OpenDialog könnt ihr das ja mit der zweiten Form ja mal testen...
Das verwirrt mich besonders...
Das ganze läuft nur falsch, wenn die zweite Form auf visible gestellt ist...??...

Neutral General 22. Jun 2008 20:23

Re: Opendialog-Fehler wegen zweiter Form?
 
Hi,

Habe mir das Projekt runtergeladen und da ich kein TrayIcon installiert habe, musste ich es aus dem Projekt entfernen... CSIDL_PROFILE kennt mein Delphi7 nicht und ich habe es einfach mal durch CSIDL_APPDATA ersetzt. Und bei mir funktioniert alles wunderbar.

Vielleichts liegts am TrayIcon? Keine Ahnung...

Bei mir funktionierts jedenfalls...

Gruß
Neutral General

Moondryl 22. Jun 2008 20:25

Re: Opendialog-Fehler wegen zweiter Form?
 
Mal so versucht die Fehlermeldung zu "provuzieren" wie oben beschrieben?
Hab auch schonmal ein neues Projekt erstellt und da hat auch alles wunderbar geklappt auch mit TrayIcon...
bzw. hat dann auch nicht mehr geklappt als ich eine zweite Form hinzugefügt habe (sichtbar), auch ohne TrayIcon

Neutral General 22. Jun 2008 20:31

Re: Opendialog-Fehler wegen zweiter Form?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Habe mal meine Version des Projekts angehängt.

Gruß
Neutral General

Moondryl 22. Jun 2008 20:36

Re: Opendialog-Fehler wegen zweiter Form?
 
Wieder meine Fehlermeldung ausgelöst...
Wenn sich der OpenDialog öffnet, gib mal 12345 z.B. ein, dann sollte eine Meldung kommen "Datei nicht gefunden" oder so, der OpenDialog müsste noch offen sein und dann schließen per "X"...
Wie gesagt bei mir kommt immernoch meine Fehlermeldung...

marabu 22. Jun 2008 20:41

Re: Opendialog-Fehler wegen zweiter Form?
 
Herzlich willkommen in der Delphi-PRAXiS, Moondryl.

Unabhängig von Vista, D2007 und dem CoolTrayIcon - was du mit TOpenDialog machst, scheint nicht das zu sein, was du erreichen möchtest. Wenn du die internen Meldungen des TOpenDialog unterliegenden common dialog nicht sehen willst, dann darfst du die beiden Flags ofPathMustExist und ofFileMustExist nicht setzen:

Delphi-Quellcode:
const
  CUSTOM_MSG = '"%s" doesn''t live here anymore';

procedure TDemoForm.OpenButtonClick(Sender: TObject);
begin
  with OpenDialog do
    if Execute then
      if FileExists(FileName)
        then DoProcessFile(FileName)
        else ShowMessage(Format(CUSTOM_MSG, [FileName]));
end;
Freundliche Grüße

Moondryl 22. Jun 2008 20:49

Re: Opendialog-Fehler wegen zweiter Form?
 
Kommando zurück!...;)

Funktioniert trotzdem nicht....-.-

Christian Seehase 22. Jun 2008 21:01

Re: Opendialog-Fehler wegen zweiter Form?
 
Moin Moondryl,

noch eine andere Variante:
Du könntest auch einfach das Delphi-Referenz durchsuchenOnCanClose-Event des OpenDialogs verwenden.

Moondryl 22. Jun 2008 21:09

Re: Opendialog-Fehler wegen zweiter Form?
 
Also, weiß jetzt wieder, warum ich die beiden Flags gebraucht habe...
Wenn der Dialog geöffnet wird, und man einfach eine Datei eingibt, die nicht existiert (Schreibfehler z.B.) dann wird der Pfad einfach übernommen...
Das soll ja auch nicht sein...;)

Inwiefern kann ich denn das OnClose-Event nutzen? habs schon öfters mal in Codes gelesen, wusste aber nie so richtig damit umzugehen?

Andere Möglichkeit vielleicht?:

Kann ich abfangen, ob Ok oder etwas anderes im Dialog gedrückt wurde und dann noch manuell überprüfen, ob der Pfad und die Datei existiert?

Fussball-Robby 22. Jun 2008 21:17

Re: Opendialog-Fehler wegen zweiter Form?
 
TOpenDialog.Execute gibt True zurück, wenn auf OK gedrückt wurde. Um sicher zu sein, dass die Datei existiert, kannst du im OI bei Options ofFileMustExist auf True stellen.

Moondryl 22. Jun 2008 21:32

Re: Opendialog-Fehler wegen zweiter Form?
 
Scheint aber auch auf "X" TRUE zurückzugeben...

Um nochmal auf ein Problem am Anfang hinzuweisen:

Warum funktioniert der Code denn wenn ich nur eine Form habe aber nicht wenn ich zwei habe (sofern beide visible sind)???

Moondryl 22. Jun 2008 21:36

Re: Opendialog-Fehler wegen zweiter Form?
 
Ok habe verstanden worauf du hinaus wolltest...
habe es jetzt folgendermaßen gelöst:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  MessageClk: Integer;
begin

  try
    if Opendialog1.Execute then
      LabeledEdit1.Text  :=   Opendialog1.FileName;
  except
    if Opendialog1.Execute then
      begin

        MessageClk   :=   Application.MessageBox(
                              'Fehler beim Laden der Datei!' + #10#13 +
                              'Bitte Versuchen Sie es erneut.' + #10#13 +
                              'Achten Sie dabei auf den Dateityp!',
                              'ERROR',
                              0 + 48);
      end;
  end;

end;
Aber trotzdem verwunderlich warum das mit den beiden FOrms ist oder???...

Falls der Code anders geschrieben besser wäre bitte einfach nochmal antworten (war ebend nur kurz hingeschrieben, um zu schauen, ob es geklappt hat)...

Aber noch einmal ein großes Danke an Alle die sich gemeldet haben...:)

LG

Moondryl

Christian Seehase 22. Jun 2008 22:16

Re: Opendialog-Fehler wegen zweiter Form?
 
Moin Moondryl,

nicht OnClose, sondern OnCanClose.
Darin kannst Du abfragen, ob es eine gültige Datei ist oder nicht, und dann entscheiden, ob der Dialog geschlossen werden kann oder nicht (CanClose auf true setzen, oder eben auch nicht).

Moondryl 22. Jun 2008 22:52

Re: Opendialog-Fehler wegen zweiter Form?
 
sry hatte mich auch verschrieben mit OnClose...
^^


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