Validierung XbpSLE
Moderator: Moderatoren
Validierung XbpSLE
Guten Morgen,
für einige Eingabemasken möchte ich meine Eingabevalidierung (XbpSLE) optimieren.
Welche Vorgehensweise würdet ihr empfehlen ?
mfg.
Michael
für einige Eingabemasken möchte ich meine Eingabevalidierung (XbpSLE) optimieren.
Welche Vorgehensweise würdet ihr empfehlen ?
mfg.
Michael
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
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
Viele Grüße,
Martin
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
Viele Grüße,
Martin
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.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
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
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
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.
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Hallo Michael,
du kannst auch den Keyboar-Callback von jedem XBPSLE bestimmen:
Damit kannst du dann für jeden Objekt eigene Überprüfungsroutine anstossen.
du kannst auch den Keyboar-Callback von jedem XBPSLE bestimmen:
Code: Alles auswählen
::xbpsle:keyboard:= {|nkey| ::test(nkey) }
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
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.
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!!
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Michael,
sorry, das ist bei mir in XClass++ enthalten - unter Xbase++ nur bei Get(), TBColumn() und XbpColumn().
Viele Grüße,
Martin
sorry, das ist bei mir in XClass++ enthalten - unter Xbase++ nur bei Get(), TBColumn() und XbpColumn().
Viele Grüße,
Martin
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.
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Picture geht sehr gut mit der SLEPic-Klasse von Jim. Arbeite ich auch mit, ganz toll.
http://www.gogalthorp.com/splash/
Jan
http://www.gogalthorp.com/splash/
Jan
- brandelh
- Foren-Moderator
- Beiträge: 15688
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
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
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
Hubert
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
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
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