bei unserem letzten Treffen der XUG OS, hatte ich ein Phänomen gezeigt, das der Cursor im Textmodus innerhalb der Get Maske springt wie doll.
Es läuft so ab:
Es gibt mehrere Get Felder, in die Werte zum Suchen eingetragen werden können. Sobald eins der Get Felder mit einem Wert belegt ist und verlassen wird, werden die weiteren Get Felder abgefragt, ob irgendeines der Serie mit einem Wert belegt ist. Wenn ja, darf kein weiteres GET Felder der Serie mehr aktiviert werden. Das heißt, jedes GET Feld wird mit einer WHEN Abfrage vorher überprüft. Das Ergebnis ist, das bei langsamerern Rechnern, der Cursor bei dieser Aktion mehrfach über den Bildschirm springt, bevor er im Promptmenue landet. Anfangs dachte ich es wären die When Abfragen, bei jedem GET Feld. Auf der Devcon hatte ich dieses Andreas Herdt gezeigt. Nachdem ich ihm den Code davon zugeschickt hatte, gab er vorab schon mal den Tipp, ich sollte mir meine erweiterte SEND Funktion des GetReaders ansehen, die ich eingebaut habe. Er vermutet adhoc, das diese es wohl verursacht.
Code: Alles auswählen
IF GetPreValidate(oGet)
oGet:setFocus()
DO WHILE oGet:exitState == GE_NOEXIT
DO WHILE oGet:exitState == GE_NOEXIT // das muß drinbleiben, weil sonst eine Endlosschleife
nKey := INKEY(0) // bzw. Cursorzucken am Bildschirm angezeigt wird
GetApplyKey(oGet,nKey)
ENDDO
IF ! GetPostValidate(oGet) // das muß drinbleiben, weil sonst das GET Feld
oGet:exitState := GE_NOEXIT // jedesmal gelöscht wird
ENDIF
ENDDO
oGet:killFocus()
ENDIF
Es sieht so aus:
Code: Alles auswählen
@ x,y GET ::var PICTURE "!!!!";
WHEN funktion();
VALID funktion();
SEND reader := {|o| Funktionoben(o,"Text am unteren Bildschirmrand")}