Get Focus entziehen aber trotzdem validieren
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Get Focus entziehen aber trotzdem validieren
Hi,
ich versuche gerade etwas im Textmodus:
Der Cursor wartet auf eine Eingabe in einem Getfeld, oder aber auf den Druck einer F-Taste, bei dem genau das Getfeld automatisch gefüllt und abgeschlossen werden soll. Wenn die F-Taste nicht gedrückt wird, dann wird die Eingabe validiert. Das soll aber nach der F-Tastenfunktion auch passieren.
Wenn ich :killfocus() mache, dann wird die Validierung nicht ausgeführt, sondern das Read direkt beendet, weil kein weiteres Getfeld danach kommt.
Ich kriege es nicht hin. Geht das überhaupt?
ich versuche gerade etwas im Textmodus:
Der Cursor wartet auf eine Eingabe in einem Getfeld, oder aber auf den Druck einer F-Taste, bei dem genau das Getfeld automatisch gefüllt und abgeschlossen werden soll. Wenn die F-Taste nicht gedrückt wird, dann wird die Eingabe validiert. Das soll aber nach der F-Tastenfunktion auch passieren.
Wenn ich :killfocus() mache, dann wird die Validierung nicht ausgeführt, sondern das Read direkt beendet, weil kein weiteres Getfeld danach kommt.
Ich kriege es nicht hin. Geht das überhaupt?
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!!
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Get Focus entziehen aber trotzdem validieren
hi,
solange du in deinen Fx-Tasten Funktionen ein ReadKill() oder "clear gets"
hast klappt das nicht mit der validierung weil er hinter das "read" geht.
du solltes ein "RETURN (KEYBOARD(cRetvar)+CHR(13))" am Ende
deiner Fx-Tasten Funktionen versuchen.
gruss by OHR
Jimmy
... waren wir nicht schon mal an diesem Punkt mit "read/killread"Manfred hat geschrieben:Hi,
ich versuche gerade etwas im Textmodus:
...
Wenn ich :killfocus() mache, dann wird die Validierung nicht ausgeführt, sondern das Read direkt beendet, weil kein weiteres Getfeld danach kommt.
Ich kriege es nicht hin. Geht das überhaupt?
solange du in deinen Fx-Tasten Funktionen ein ReadKill() oder "clear gets"
hast klappt das nicht mit der validierung weil er hinter das "read" geht.
du solltes ein "RETURN (KEYBOARD(cRetvar)+CHR(13))" am Ende
deiner Fx-Tasten Funktionen versuchen.
gruss by OHR
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
und das ganze in GUI
... und bevor jemand wieder denkt ... "Textmode" hier eine GUI Lösung
wie man Cl*pper ähnlich (deshalb SLEPic) mit Fx-Tasten arbeiten kann.
gruss by OHR
Jimmy
wie man Cl*pper ähnlich (deshalb SLEPic) mit Fx-Tasten arbeiten kann.
Code: Alles auswählen
::Z31b := SLEPIC():new( ::oPosBox, , { 4,Zeile03}, { 24,20},;
{ { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
::Z31b:Picture := "@! AA"
::Z31b:XbpSle:Keyboard := {|nKey| IF(nKey = xbeK_F2,;
PostAppEvent(xbeP_Activate,,,::PushButton1),NIL ) }
::Z31b:bufferLength := 2
::Z31b:tabStop := .T.
::Z31b:dataLink := {|x| IIf( PCOUNT()==0, ;
Trim( (::ZOLLIPOS)->Z31B ), (::ZOLLIPOS)->Z31B := x ) }
::Z31b:Validate := {|o| Valtest(o)}
AAdd( ::editControls, ::Z31b )
::PushButton1 := XbpPushButton():new( ::oPosBox, , { 32,Zeile03},;
{20,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE },;
{ XBP_PP_FGCLR, -58 } } )
::PushButton1:caption := 1001
::PushButton1:tabStop := .F.
::PushButton1:activate := {|| cRet := ZOLLWAHL(;
::oPosBox,"31B",::Z31b:getdata()) ,;
IF(EMPTY(cRet),,::Z31b:setdata(;
SUBSTR(cRet,1,::Z31b:bufferLength))) ,;
setAppFocus(::Z31b) }
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Get Focus entziehen aber trotzdem validieren
Moin,
Keyboard "text" + chr(13) bringt es auch nicht.
Ich schreibe den Wert jetzt über :varput in die Var, mache display() dahinter und lasse es mit RETURN bestätigen, das ist auch OK so. Ich hatte nur gedacht es wäre direkt möglich abzuschließen. Mal sehen was die Zukunft bringt, vielleicht habe ich ja noch eine andere Idee.
Sorry, aber das war ein anderer Schuh. Hier ist kein clear gets vorhanden.AUGE_OHR hat geschrieben:hi,
... waren wir nicht schon mal an diesem Punkt mit "read/killread"
solange du in deinen Fx-Tasten Funktionen ein ReadKill() oder "clear gets"
hast klappt das nicht mit der validierung weil er hinter das "read" geht.
Das klappt auch nicht. Du hast doch Keyboard als Funktion aufgerufen? Oder sehe ich das falsch? Und die Funktion gibt es doch nicht. Andererseits die Methode keyboard() ist zu dem Zeitpunkt auch nocht bekannt.du solltes ein "RETURN (KEYBOARD(cRetvar)+CHR(13))" am Ende
deiner Fx-Tasten Funktionen versuchen.
gruss by OHR
Jimmy
Keyboard "text" + chr(13) bringt es auch nicht.
Ich schreibe den Wert jetzt über :varput in die Var, mache display() dahinter und lasse es mit RETURN bestätigen, das ist auch OK so. Ich hatte nur gedacht es wäre direkt möglich abzuschließen. Mal sehen was die Zukunft bringt, vielleicht habe ich ja noch eine andere Idee.
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: 16509
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Get Focus entziehen aber trotzdem validieren
Hallo Manfred,
Wenn letzteres, dann ist doch alles OK!
Wenn ersteres, dann nutze doch PostAppEvent(), um an Dein SLE ein XbeK_RETURN zu senden.
Viele Grüße,
Martin
wie meinst Du das? Muss der Nutzer noch zusätzlich Return drücken oder passiert das automatisch?Manfred hat geschrieben:... und lasse es mit RETURN bestätigen, das ist auch OK so.
Wenn letzteres, dann ist doch alles OK!
Wenn ersteres, dann nutze doch PostAppEvent(), um an Dein SLE ein XbeK_RETURN zu senden.
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.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
der User gibt ein RETURN von Hand ein.
Ich habe doch gar kein SLE. Es ist reine Textausgabe am Bildschirm.
der User gibt ein RETURN von Hand ein.
Ich habe doch gar kein SLE. Es ist reine Textausgabe am Bildschirm.
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: 16509
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Du hast doch von einem GetFeld gesprochen (ist doch ein SLE für Arme )
Poste doch einfach ein Return an das GetFeld - dann wird es verlassen.
Viele Grüße,
Martin
Du hast doch von einem GetFeld gesprochen (ist doch ein SLE für Arme )
Poste doch einfach ein Return an das GetFeld - dann wird es verlassen.
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.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
verflixt, das war es was ich gesucht hatte. Mit KEyboard alleine klappt es nicht, aber mit dem PostAppEvent() geht es. Sowas blödes aber auch. Danke.
verflixt, das war es was ich gesucht hatte. Mit KEyboard alleine klappt es nicht, aber mit dem PostAppEvent() geht es. Sowas blödes aber auch. Danke.
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: 16509
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
gerne!
Jetzt brauchst Du nur noch 6... Ob Du das noch schaffst vor 12 Uhr (Forumsabschaltung für 1 Stunde...)
Viele Grüße,
Martin
gerne!
Jetzt brauchst Du nur noch 6... Ob Du das noch schaffst vor 12 Uhr (Forumsabschaltung für 1 Stunde...)
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.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
was? wer? wo? wie? Forumsabschaltung, klar..... Ich verstehe Dein Posting nicht.
Jou, alles klar. Wink mit dem Zaunpfahl.
Noch 5
was? wer? wo? wie? Forumsabschaltung, klar..... Ich verstehe Dein Posting nicht.
Jou, alles klar. Wink mit dem Zaunpfahl.
Noch 5
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!!
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Get Focus entziehen aber trotzdem validieren
Hallo Manfred,
Ich habe gerade diese Hinweise von euch gefunden und es scheint, als ob ich nach derselben Lösung suche. Ich muss allerdings zugeben, dass ich den Lösungshinweis nicht verstanden habe ".... mit dem posten an das GET...". Wäre es möglich die Löungszeilen zu veröffentlichen oder zu schicken ?
Ich weiss es ist schon lage her.
Vielen Dank ...
Schorsch
Ich habe gerade diese Hinweise von euch gefunden und es scheint, als ob ich nach derselben Lösung suche. Ich muss allerdings zugeben, dass ich den Lösungshinweis nicht verstanden habe ".... mit dem posten an das GET...". Wäre es möglich die Löungszeilen zu veröffentlichen oder zu schicken ?
Ich weiss es ist schon lage her.
Vielen Dank ...
Schorsch
Gruß
Schorsch
Schorsch
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Get Focus entziehen aber trotzdem validieren
Moin Schorsch,
Du hast Recht, es ist wirklich etwas her. Ich weiß auch gar nicht so ad hoc, ob ich es auf die Schnelle gefunden habe, worum es damals ging. Aber das Postappevent an ein Get wäre zunächst sowas:
Du hast Recht, es ist wirklich etwas her. Ich weiß auch gar nicht so ad hoc, ob ich es auf die Schnelle gefunden habe, worum es damals ging. Aber das Postappevent an ein Get wäre zunächst sowas:
Code: Alles auswählen
PostAppEvent(xbeK_RETURN)
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!!
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Get Focus entziehen aber trotzdem validieren
Hallo Schorsch,
wenn man in Clipper bzw. Xbase++ in einem GET Feld zur Bearbeitung steht
(also eigentlich im READ) und ENTER drückt, kommt man ins nächste GET Feld.
Davor wird validate aufgerufen.
Möchte man nun mit einer Funktionstaste die Eingabe beenden, kann man
das ENTER mit dem Befehl Keyboard chr(13) erzeugen.
Wenn noch Text dazu soll, kann man den voranstellen:
Keyboard cText+chr(13)
Sobald man aber in Xbase++ die Maus einschaltet oder aber ein XbpPart benutzt,
kann man nicht mehr keyboard und inkey nutzen, sondern muss PostAppEvent nutzen.
Dort wird als erster Parameter der Event und als 2. die Taste übergeben:
PostAppEvent(xbeP_Keyboard,nKeyAscWert,,oXbp)
Ich vermute mal, dass bei GET das GetActive() als oXbp übergeben werden muss,
allerdings arbeite ich schon lange nicht mehr mit Gets
wie ich gerade sehe hat Manfred schon geantwortet ... und ich hatte doch den speziellen Event glatt vergessen
wenn man in Clipper bzw. Xbase++ in einem GET Feld zur Bearbeitung steht
(also eigentlich im READ) und ENTER drückt, kommt man ins nächste GET Feld.
Davor wird validate aufgerufen.
Möchte man nun mit einer Funktionstaste die Eingabe beenden, kann man
das ENTER mit dem Befehl Keyboard chr(13) erzeugen.
Wenn noch Text dazu soll, kann man den voranstellen:
Keyboard cText+chr(13)
Sobald man aber in Xbase++ die Maus einschaltet oder aber ein XbpPart benutzt,
kann man nicht mehr keyboard und inkey nutzen, sondern muss PostAppEvent nutzen.
Dort wird als erster Parameter der Event und als 2. die Taste übergeben:
PostAppEvent(xbeP_Keyboard,nKeyAscWert,,oXbp)
Ich vermute mal, dass bei GET das GetActive() als oXbp übergeben werden muss,
allerdings arbeite ich schon lange nicht mehr mit Gets
wie ich gerade sehe hat Manfred schon geantwortet ... und ich hatte doch den speziellen Event glatt vergessen
Gruß
Hubert
Hubert