Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verhindern der Öffnung eines Formulars bei Bedingung (https://www.delphipraxis.net/38865-verhindern-der-oeffnung-eines-formulars-bei-bedingung.html)

mr.floppy81 25. Jan 2005 11:56


Verhindern der Öffnung eines Formulars bei Bedingung
 
Moin,

in meinem Programm arbeite ich mit dbedit feldern.
Diese dbedit felder werden bei drücken des Knopfes "Füllen" mit verschiedenen Daten gefüllt.
Mit diesen Daten sollen Berechnungen durchgeführt werden wenn man auf den Knopf "Berechnen" drückt.
Ein weiteres Ereignis das auftritt wenn man den Knopf "Berechnen" drückt, ist dass sich Form1 schliesst und Form2 öffnet.
Auf Form2 werden dann die Ergebnisse angezeigt.

Wenn nun die Felder auf Form1 nicht mit daten gefüllt werden(der Anwender vergisst den Knopf Füllen zu drücken), so zeigt mir das Programm nach drücken des Knopfes die Fehlermeldung " '' ist kein gültiger Gleitkommawert an". Das ist klar weil eben die dbedit felder leer sind.

Wie kann ich diese Fehlermeldung verhindern??? und wie kann ich verhindern dass wenn ein Fehler auftritt, sich die Form2 öffnet???

LG Andreas

Bernhard Geyer 25. Jan 2005 12:37

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
Schau mal die möglichen Ereignisse zu deinem Datensensitiven Controls an. Bei TDataset-Nachfahren gibt es viele OnBeforeXXX-Events, mit welchen man Überprüfungen durchführen könnte bevor ein Post zur Datenbank erfolgt.

Dani 25. Jan 2005 12:38

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
Hi, mit Button2.Enabled := false kannst du verhindern, dass der Benutzer den Button klickt, bevor die Felder ausgefüllt sind.
Einfach am Ende von Button1.OnClick den anderen Button mit Button2.Enabled := true wieder aktivieren.

malo 25. Jan 2005 13:37

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
Laufzeitfehler kannst du mit Delphi-Referenz durchsuchentry und Delphi-Referenz durchsuchenexcept abfangen.

Ansonsten kannst du auch den Code zum Schließen / Öffnen der Forms mit einer if-Abfrage nur dann ausführen lassen, wenn alle DBEdit-Felder gefüllt sind :zwinker:

Sharky 25. Jan 2005 13:51

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
Ich würde einfach den Button "Berechnen" so lange sperren bis in allen Feldern Werte stehen.
Das ist in meinen Augen die einzige saubere Art und Weise.

mr.floppy81 26. Jan 2005 09:12

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
jepp,

hatte ja gehofft dass das vielleicht mit einem mir unbekanntem Befehl gehen könnte^^.
Nun hab ich 8 if...then...else schleifen eingebaut und es geht...
(oder besser gesagt der Knopf geht nicht zu drücken ;) )

Gut dann Danke für die Hilfe
Grüsse Andreas

Sharky 26. Jan 2005 09:17

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
Zitat:

Zitat von mr.floppy81
...Nun hab ich 8 if...then...else schleifen eingebaut ...

Warum das denn? Zeige mal deinen Code ;-)

Sharky 27. Jan 2005 08:34

Re: Verhindern der Öffnung eines Formulars bei Bedingung
 
Hai mr.floppy81,

hier mal eine Beispiel wie ich es gemacht hätte:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  // Alle Edits haben das gleiche OnChange-Ereigniss
  Edit1.OnChange := EditChange;
  Edit2.OnChange := EditChange;
  Edit3.OnChange := EditChange;
  Edit4.OnChange := EditChange;
end;

procedure TForm1.EditChange(Sender: TObject);
begin
  // Button wird enebled wenn in allen Edits etwas steht
  Button1.Enabled := (Length (Trim(Edit1.Text)) > 0)
                  AND (Length (Trim(Edit2.Text)) > 0)
                  AND (Length (Trim(Edit3.Text)) > 0)
                  AND (Length (Trim(Edit4.Text)) > 0);
end;


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