Validierung XbpSLE

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Validierung XbpSLE

Beitrag von mkersch »

Guten Morgen,

für einige Eingabemasken möchte ich meine Eingabevalidierung (XbpSLE) optimieren.

Welche Vorgehensweise würdet ihr empfehlen ?


mfg.

Michael
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Michael,
schau Dir mal den KillInputFocus()-Callback an. Dieser feuert, sobald das Control den Fokus verlier (also z.B. das SLE verlassen wird).
Du mußt nur höllisch aufpassen, was Du in der dann aufrufenden Funktion machst - setzt Du z.B. den Fokus wieder auf das Control zurück (um es optisch sozusagen nicht zu verlassen), kann das in einer Endlosschleife enden, wenn Du in Deiner Maske ein weiteres Control (z.B. SLE) hast, das Du genauso prüfst :!:
Beispiel:
Du hast die Eingabefelder Vorname und Nachname. Beide dürfen nicht leer sein. Wird eines der Felder verlassen und enthält keine Werte, wird mit SetAppFocus() das Control wieder aktiviert.
Wenn nun der Benutzer das leere Feld Vorname verlässt, indem er in das ebenfalls leere Feld Nachname klickt, so wird der Cursor immer zwischen den beiden Feldern hin- und herspringen!
Wichtig also zu wissen: KillInputFocus feuert erst dann, wenn das Control den Fokus wirklich verloren hat! Und das ist erst dann der Fall, wenn ein anderes Control den Fokus erhalten hat!
Wenn Du also so etwas abbilden willst, musst Du ein wenig mehr Gehirnschmalz investieren :D

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Beitrag von mkersch »

Vielen Dank für die schnelle Antwort.

Ich muss meine Frage noch ein wenig prezisieren.

Es soll bereits bei der Eingabe des ersten Zeichens (z.B. in ein Nummernfeld) nur die Nummern zugelassen werden usw.


mfg.

Michael
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Ah,
also nicht (nur) mit KillInputFoucs(), sondern auch mit der picture-Methode!
Oder wird es noch komplizierter? Z.B. nur Ziffern von 3 bis 9 und Buchstaben von b bis G?
Wenn ja, dann musst Du den keyboard-Callback Deines Fensters überlagern und Dich dort um die Auswertung der Tasten kümmern.
Dies natürlich abhängig vom Control, in dem die Tasten gedrückt wurden.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Hallo Michael,

du kannst auch den Keyboar-Callback von jedem XBPSLE bestimmen:

Code: Alles auswählen

::xbpsle:keyboard:= {|nkey| ::test(nkey) }
Damit kannst du dann für jeden Objekt eigene Überprüfungsroutine anstossen.
Gruß,

Andreas
VIP der XUG Osnabrück
mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Beitrag von mkersch »

Hallo Martin,

du schreibst man kann dies auch mit der Picture-Methode erledigen.

Dies habe ich noch nicht ganz verstanden.

Was meinst du damit ?


mfg Michael
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Michael,

wenn es nur numerische Eingaben in einem bestimmten Bereich sein dürfen, warum nimmst Du dann nicht XbpSpinButton? Es kann von "Hand" eingegeben werden, oder mit Cursor rauf und runter und es wird validiert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Michael,
sorry, das ist bei mir in XClass++ enthalten - unter Xbase++ nur bei Get(), TBColumn() und XbpColumn().

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Picture geht sehr gut mit der SLEPic-Klasse von Jim. Arbeite ich auch mit, ganz toll.

http://www.gogalthorp.com/splash/

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

ich habe mal in die Wissensbasis meine SpezialSLE eingestellt, vielleicht nützen sie dem einen oder anderen

http://www.xbaseforum.de/viewtopic.php?p=4734#4734
Gruß
Hubert
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Beitrag von Gerd König »

Hallo Michael,

eine Möglichkeit ist auch beim create() des Fensters einen Thread zu erzeugen der sämtliche SLEs und MLEs auf gültige Zeichen überwacht und bei Eingabefehlern den Fokus auf das entsprechende Xbp setzt. Parallel dazu kann man noch in einer Statuszeile (wenn vorhanden) einen Hinweistext anzeigen.

Viele Grüße Gerd
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

s. Beispiel von Alaska unter G:\ALASKA\XPPW32\Source\samples\solution\calcsle
Gruß,

Andreas
VIP der XUG Osnabrück
Antworten