Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Edit-Felder auf Eingaben prüfen (https://www.delphipraxis.net/59379-alle-edit-felder-auf-eingaben-pruefen.html)

Sharky 22. Dez 2005 11:14

Re: Alle Edit-Felder auf Eingaben prüfen
 
Zitat:

Zitat von Ati
... Auch auf die Gefahr hin das sich hier einige gleich ausschütten werden vor Lachen anbei mal mein gesamter Quelltext.

Wer lacht sollte sich daran erinnern wie er angefangen hat :!:

So, jetzt zu dem "Problem"
Das mit dem AfterPost kann natürlich nicht gehen da Du das Query ja ganz anders benutzt als ich dachte (ist aber auch gut so).

Die Ereignisse BeforPost, AfterPost usw. würde nur ausgelöst werden wenn Du über eine TDataSource irgendwelche DBxxxx-Komponenten verwendest oder im Code so etwas stehen hast:
Delphi-Quellcode:
begin
  Query1.Edit
  Query1.FieldByName ('blubb').AsString := Edit1.Text
  Query1.FieldByName ('meow').AsInteger := 0815;
  Query1.Post;
end
Du arbeitest aber "direkt" mit SQL-Kommandos (INSTERT,UPDATE).

Bei dir müsstest Du also nur, wie von mir vorgeschlagen eine Funktion schreiben welche die Fehler prüft.
Wenn diese TRUE liefert führst Du deinen Code im OnClick des Buttons aus und wenn FALSE kommt dann gibst Du die Meldung aus.

Ich würde den ganzen Code zum Eintragen der Daten aber auch noch in eine Funktion auslagern.
So das Du diesen Pseudocode hast:
Delphi-Quellcode:

procedure TForm1.btnspeichernClick(Sender: TObject);
begin
  if (EingabeTest) then
  begin
    SpeicherenNeuenDatensatz;
  end
  else
  begin
    Fehlermeldung;
  end;
end;

Ati 22. Dez 2005 11:46

Re: Alle Edit-Felder auf Eingaben prüfen
 
Es funktioniert mit einer kleiner Ausnahme. Ich benutze zur Datumseingabe das TDateEdit der RXLib. Hier ist Standardmäßig als Text " . . " hinterlegt. Bei der Prüfung der Textlänge >0 zählt er (so vermute ich jedenfalls) die Punkte. D.h. wenn alle anderen ausgefüllt sind aber die Terminangaben fehlen so nimmt er den Datensatz. Obwohl die Felder in der DB als NotNull deklariert sind (sollte dann nicht wenigstens hier Firebird meckern??). Ich benutze diese Objekte, da ich sie einfach "Benutzerfreundlich" finde und somit ein Datumsformat erzwinge.


P.S. selbst wenn ich die Prüflänge auf >2 setze nimmt er eine leeres TDateEdit-Feld.

Sharky 23. Dez 2005 08:28

Re: Alle Edit-Felder auf Eingaben prüfen
 
Hai Ati,

du könntest mal prüfen was genau in einem lehren TDateEdit steht. Im notfall versuche in einem try-except Block eine Umwandlung in ein TDate versuchen. Wenn diese fehlschlägt gibt deine Testfunktion ein False zurück.

Ati 3. Jan 2006 07:36

Re: Alle Edit-Felder auf Eingaben prüfen
 
Hai Sharky,

nicht das Du denkst ich habe Deinen Tip unter dem Tisch fallen lassen. Hier mal meine Prüffunktion für das Datumsfeld:
Delphi-Quellcode:
function DateEditTest( const aDateEdit : TDateEdit): Boolean;
var dat:Tdate;
begin
  result:=true;
  try
   dat:= strtodate(aDateEdit.Text);
  except
   result:=false;
  end;
end;
Wenn man das eleganter lösen kann bitte ich um Korrektur!!!

Ati

Sharky 3. Jan 2006 07:41

Re: Alle Edit-Felder auf Eingaben prüfen
 
Zitat:

Zitat von Ati
... nicht das Du denkst ich habe Deinen Tip unter dem Tisch fallen lassen.

Das wäre auch schlecht. Irgendwann liegen bei dir lauter Tips unter dem Tisch und Du kannst dich nicht nicht mehr daran setzen :stupid:

Alternativ könntest Du noch prüfen ob in der Eigenschaft .Text (wenn es die bei dem DateEdit gibt) etwas eingetragen wurde.

Ati 3. Jan 2006 07:45

Re: Alle Edit-Felder auf Eingaben prüfen
 
Das habe ich ja als erstes versucht. Nur vermute ich das die Pünktchen als Eingabe gewertet werden.
Aus Deiner Antwort schliesse ich aber das Du mit meiner aktuellen Lösung "zufrieden" bist.

Ati

Sharky 3. Jan 2006 07:52

Re: Alle Edit-Felder auf Eingaben prüfen
 
Zitat:

Zitat von Ati
... Nur vermute ich das die Pünktchen als Eingabe gewertet werden.

In der Theorie müsstest Du das so prüfen können:
Delphi-Quellcode:
function DateEditTest( const aDateEdit : TDateEdit): Boolean;
begin
  result := StringReplace(aDateEdit.Text,' ','',[rfReplaceAll]) <> '..';
end;
Aber ich finde das mit dem try-except besser da so auch falsch Eingaben abgefangen werden.

Ati 3. Jan 2006 07:53

Re: Alle Edit-Felder auf Eingaben prüfen
 
Danke für die Blumen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz