Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Pflichtfeld (https://www.delphipraxis.net/43536-pflichtfeld.html)

LOMBI 5. Apr 2005 14:57

Datenbank: Paradox7 • Zugriff über: DataSource

Pflichtfeld
 
Hallo,

auf einer Form habe ich ein DBEdit als Pflichtfeld. Wie bitte erreiche ich,
dass im Insert-Modus der Focus solange im Feld verbleibt, bis dort ein Eintrag gemacht wurde und erst dann weiter ins nächste Eingabefeld springt?

Mit meiner if-Abfrage im onExit/BeforePost habe ich nicht den gewünschten Erfolg bzw. es fehlt noch etwas Wesentliches ...
Delphi-Quellcode:
if DBEdit1.Text=''then
begin
ShowMessage('Pflichtfeld');
DBEdit1.SetFocus;
end else
begin
if DBEdit1.Text<>''then
?

Wer hilft mir bitte? Besten Dank vorab!

Gruß
Lombi

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

Yadon 5. Apr 2005 15:04

Re: Pflichtfeld
 
Delphi-Quellcode:

if Trim(DBEdit1.Text) = ''
then begin
  ShowMessage('Pflichtfeld');   
  DBEdit1.SetFocus;
  Exit;
end;

Sharky 5. Apr 2005 15:05

Re: Pflichtfeld
 
Hai LOMBI,

eigentlich sollte es ja so ausreichen:
Delphi-Quellcode:
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
 if (DBEdit1.Text = '') then
 begin
   ShowMessage ('Pflichtfeld');
   DBEdit1.SetFocus;
 end;
end;
Im .BeforPost ist es in diesem Fall nicht notwendig da ich ja keine Chance haben einen Speicher Button zu drücken oder (ausser mit einem Timer *g*) dafür sorgen kann das der Datensatz gespeichert wird.

Jasocul 5. Apr 2005 15:16

Re: Pflichtfeld
 
Zitat:

Zitat von Sharky
Hai LOMBI,

eigentlich sollte es ja so ausreichen:
Delphi-Quellcode:
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
 if (DBEdit1.Text = '') then
 begin
   ShowMessage ('Pflichtfeld');
   DBEdit1.SetFocus;
 end;
end;
Im .BeforPost ist es in diesem Fall nicht notwendig da ich ja keine Chance haben einen Speicher Button zu drücken oder (ausser mit einem Timer *g*) dafür sorgen kann das der Datensatz gespeichert wird.

Bist du dir sicher Sharky? Wie sieht es mit dem DBNavigator aus? Oder SpeedButtons? Die bekommen iirc keinen Focus. Damit könnte das OnExit nicht ausgelöst werden!
Ich glaube irgendwann hatte ich mal das Problem in einer meiner alten Anwendungen.

Für den Fall, dass ich micht richtig erinnere, sollte die die Prüfung schon im BeforePost gemacht werden. Allerdings muss dann dort auch eine Exception ausgelöst werden, damit das Programm das Post nicht durchführt.

Sharky 5. Apr 2005 15:22

Re: Pflichtfeld
 
Zitat:

Zitat von Jasocul
...Bist du dir sicher Sharky? Wie sieht es mit dem DBNavigator aus? Oder SpeedButtons? ...

:oops: Erwischt.
Mit dem DBNavigator arbeite ich nie und die SpeedButtons habe ich vergessen :oops:

Also:
Doch eine prüfung in das BeforPost.

LOMBI 5. Apr 2005 15:59

Re: Pflichtfeld
 
Danke für die prompte Antwort.

Leider reicht es nicht, weil das Meldungsfenster nur einmal erscheint.
Beim nächsten Mal kann das DBEdit auch ohne Eintrag und Hinweisfenster verlassen werden.

Der Cursor aber soll solange im DBEdit verbleiben, bis tatsächlich etwas eingegeben wird und erst dann weiter ins nächste Feld springen. Wenn im
Pflichtfeld nichts enthalten ist, muß bei jedem Exitversuch das Meldungs- fenster angezeigt werden.

Gruß
Lombi

shmia 5. Apr 2005 16:22

Re: Pflichtfeld
 
Delphi-Quellcode:
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
 if (DBEdit1.Text = '') then
 begin
   ShowMessage ('Pflichtfeld');
   Abort; // "stille" Exception verhindert das Verlassen von DBEdit1 
 end;
end;

Jasocul 5. Apr 2005 17:10

Re: Pflichtfeld
 
Was shmia da so dezent andeuten will, ist, dass du dann im OnExit und im OnBeforePost prüfen musst!

LOMBI 6. Apr 2005 10:25

Re: Pflichtfeld
 
Genau diese Prüfung ist das Problem.
Wie läßt sich die im onExit und BeforePost durchführen?

Gruß
Lombi

Jasocul 6. Apr 2005 11:16

Re: Pflichtfeld
 
Indem du den Prüfcode in beide Routinen einbaust oder eine Funktion schreibst, die von beiden aufgerufen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr.

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