Eingabefeld mit Valid über Abruchtaste verlassen

Moderator: Moderatoren

Antworten
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Eingabefeld mit Valid über Abruchtaste verlassen

Beitrag von uwe.24 »

Hallo.

Ich hab eine Eingabemaske (mit dcget) in der eine Eingabe über eine Valid Funktion auf 'schon vorhanden' geprüft wird.
Dann wird das Feld mit Return .f. nicht verlassen, sonst geht es mit Return .t. weiter.

Die komplette Eingabemaske kann man über Zwei Buttons (DCPUSHBUTTONXP) 'Speichern' und 'Abbrechen' verlassen.
Nutzt man nun die Abrrechenfunktion, wird trozdem die Valid Überprüfung aktiviert und eben nicht abgebrochen.
Wie kann man das umgehen?

Codeschnipsel

Code: Alles auswählen

@ 10,115 dcget cGruppeNeu        picture "!!!" getsize 0 ;
                                    VALID {||suchGruppeNeu(cGruppeNeu),DC_GetRefresh(GetList)} ;
                                    WHEN {||lNeueGruppe} ;
                                    object oGruppeNeu ;
                                    parent oTabPage3
...
 @ 28,130 DCPUSHBUTTONXP SIZE 14,1.6 CAPTION "Abbrechen" ACTION {||lNeueGRuppe := .f., neuvarGruppe(),  DC_GetRefresh(Getlist)} ;
      TOOLTIP "Aktuelle Eingabe abrechen ohne Speichern" ;
      WHEN {||lNeueGruppe} ;
      COLOR GRA_CLR_WHITE,GRA_CLR_DARKRED FONT "10.Arial" PARENT oTabPage3
...

function suchGruppeNeu(cGruppeNeu)
   local cSuch, lReturn

   if len(alltrim(cGruppeNeu)) = 0     
      lWeiter := .t.
   else
      cSuch := "H" + alltrim(cGruppeNeu) + space(3-len(alltrim(cGruppeNeu)))
      sele 2
      go top
      seek cSuch
      if found()
         DC_Alert ("Die Gruppe " + cGruppeNeu + " ist bereist angelegt! Bitte andere eingeben!")
         lReturn := .f.         
      else
         lReturn := .t.
      endif
   endif

return lReturn


Uwe aus OS
Uwe aus OS
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Eingabefeld mit Valid über Abruchtaste verlassen

Beitrag von Koverhage »

ACTION {|| DC_ReadGuiEvent( DCGUI_EXIT_ABORT, GetList )}
Gruß
Klaus
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Re: Eingabefeld mit Valid über Abruchtaste verlassen

Beitrag von uwe.24 »

Hallo Klaus.

Vielen Dank für die Antwort.
Aber ich breche den Dailog nicht ganz ab, sondern blende über den Wechsel der Varaiblen lNeueGRuppe die Eingabefelder nur ein oder aus.
Beim Betätigen des Buttons 'Speichern' wird eben gepeichert, die Eingabfeldvariablen geleert und lNeueGRuppewird False.
Beim Betätigen des Buttons 'Abrechen' werden nur die Eingabfeldvariablen geleert und lNeueGRuppe wird False.

Was ich suche ist:
Wie bekomme ich raus, welche Betätigung die Validfunktion aufruft (Return, Maus oder der eigene Button Abbrechen).
Wenn ich das habe, kann ich reagieren.

Uwe aus OS
Uwe aus OS
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Eingabefeld mit Valid über Abruchtaste verlassen

Beitrag von Tom »

Indem Du die Slots verwendest. Du initialisierst eine Variable, die diese Information enthalten soll, etwa "cExitSource". Dann setzt Du in den Action-Slot Deines Buttons <cExitSource := "Button">. In den Keyboard-Slot des Gets reagierst Du auf Keyboard-Events mit dem Zeichencode 13 und setzt <cExitSource := "Enter">. Was meinst Du mit "Maus"? Wo?
Herzlich,
Tom
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Re: Eingabefeld mit Valid über Abruchtaste verlassen

Beitrag von uwe.24 »

Hallo Tom.

Das mache ich praktisch schon so.
Im Action Slot steht lNeueGruppe := .f.
Aber wenn ich das Eingabefeld (das mit der Validfunktion) mit Return verlasse oder mit der Maus ins nächste Feld springe oder den Abruchbutton anwähle,
wird erst die Validfunktion ausgeführt und danach geht es mit der Action Bedingung weiter.

Uwe aus OS
Uwe aus OS
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Eingabefeld mit Valid über Abruchtaste verlassen

Beitrag von Wolfgang Ciriack »

Ergänze mal deinen Abbruch-Button um CARGO "CANCEL".
Viele Grüße
Wolfgang
Antworten