Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Edit-Feld im Exit-Ereignis prüfen (https://www.delphipraxis.net/75730-edit-feld-im-exit-ereignis-pruefen.html)

mkinzler 24. Aug 2006 11:14

Re: Edit-Feld im Exit-Ereignis prüfen
 
Zitat:

Kann ich das in diesem Fall umgehen??
Beim Klicken des claen-Buttons, den Focus wechseln.

Jürgen Thomas 24. Aug 2006 11:18

Re: Edit-Feld im Exit-Ereignis prüfen
 
Zitat:

Zitat von mkinzler
Zitat:

Kann ich das in diesem Fall umgehen??
Beim Klicken des claen-Buttons, den Focus wechseln.

Und zwar zuerst SetFocus, erst danach aufräumen!

Außerdem kann in OnExit geprüft werden, ob Sender <> CleanButton usw. ist.

Jürgen

Ati 24. Aug 2006 11:35

Re: Edit-Feld im Exit-Ereignis prüfen
 
SetFocus klappt nicht. Aber wie kann ich den Sender ermittlen??

mkinzler 24. Aug 2006 11:39

Re: Edit-Feld im Exit-Ereignis prüfen
 
Zitat:

Aber wie kann ich den Sender ermittlen??
Parameter Sender :)

Ati 24. Aug 2006 11:55

Re: Edit-Feld im Exit-Ereignis prüfen
 
:wiejetzt:

oldmax 24. Aug 2006 12:06

Re: Edit-Feld im Exit-Ereignis prüfen
 
Hi
Wie wär's einfach mit einem Ausblenden der OnExit _ Ereignisprocedure ?
Delphi-Quellcode:
Procedure MyForm.MyButtonClick(Sender: Tobject);
Begin
  MyEdit.OnExit:=Nil;
   ....
    aufräumen
   ....
  MyEdit.OnExit:=MyEditExit;
end;
oder so ungefähr, da ich deinen Quellcode nicht kenne.
Gruß oldmax

Ati 24. Aug 2006 12:12

Re: Edit-Feld im Exit-Ereignis prüfen
 
Hat leider auch nicht geklappt. Hier mal der Code des onExit-Ereignisses:
Delphi-Quellcode:
procedure TfrmMain.edliefExit(Sender: TObject);
var i,j:Integer;
    lief:String;
begin
  lief:= edlief.text;
  j:=length(lief);
  if j <> 6 then
  begin
  showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
  edlief.clear;
  edlief.SetFocus;
  exit;
  end;
  for i := 1 to length(lief) do
  begin
    if not (lief[1] in ['A'..'Z']) then
    begin
    showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
    edlief.Clear;
    edlief.SetFocus;
    exit;
    end;
    if not (lief[2] in ['A'..'Z']) then
    begin
    showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
    edlief.Clear;
    edlief.SetFocus;
    exit;
    end;
    if not (lief[3] in ['A'..'Z']) then
    begin
    showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
    edlief.Clear;
    edlief.SetFocus;
    exit;
    end;
    if not (lief[4] in ['A'..'Z']) then
    begin
    showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
    edlief.Clear;
    edlief.SetFocus;
    exit;
    end;
    if not (lief[5] in ['0'..'9']) then
    begin
    showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
    edlief.Clear;
    edlief.SetFocus;
    exit;
    end;
    if not (lief[6] in ['0'..'9']) then
    begin
    showmessage('Fehlerhafte Lieferanteneingabe. Bitte prüfen!!');
    edlief.Clear;
    edlief.SetFocus;
    exit;
    end;
  end;
end;
Die Clear-Prozedur sieht wie folgt aus:

Delphi-Quellcode:
Procedure TfrmMain.clear();
var i:Integer;
begin
  for i := 0 to frmMain.ComponentCount -1 do
  begin
  if (Components[i] is TEdit) then
  begin
    (TEdit(frmMain.Components[i]).Clear);
  end;
  end;
  dcb.Text:='';
end;

Christian Seehase 24. Aug 2006 12:35

Re: Edit-Feld im Exit-Ereignis prüfen
 
Moin Ati,

also ich würde die Prüfung erst einmal in eine eigene Funktion auslagern:

Delphi-Quellcode:
function IsValidLieferantenNummer(const AsLiefNr : string) : boolean;

var
  i : integer;

begin
  Result := false;
  if length(AsLiefNr) <> 6 then exit;
  for i := 1 to length(AsLiefNr) do begin
    if i <= 4 then begin
      if not (AsLiefNr[i] in ['A'..'Z']) then exit;
    end else begin
      if not (AsLiefNr[i] in ['0'..'9']) then exit;
    end;
  end;
  Result := true;
end;

Ati 24. Aug 2006 12:41

Re: Edit-Feld im Exit-Ereignis prüfen
 
Das hatte ich jetzt gerade auch schon gemacht...wobei Deine Funktion um ein vielfaches einfacher/besser ist als meine. Danke!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.
Seite 2 von 2     12   

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