Bei der Textsuche in unseren internen Anwendung kann der Benutzer mit den Pfeil-hoch/runter-Tasten im Eingabefeld früher benutzte Suchbegriffe zurückrufen. Dies wird durch eine VALID-Funktion bewirkt, z.B.
Code: Alles auswählen
cBegriff:=SPACE(30)
@ 1,0 SAY "Begriff:" GET cBegriff VALID BegHist(cBegriff)
READ
Code: Alles auswählen
FUNC BegHist(cBegriff)
// Suchbegriffshistorie
LOCAL nKey:=LASTKEY(), go:=GETACTIVE(), i:=0
STATIC aBegriffe:={} // Schon benutzte Begriffe zur Auswahl
IF EMPTY(cBegriff)
i := LEN(aBegriffe) + 1
ELSE
cBegriff := UPPERG(cBegriff)
i := ASCAN(aBegriffe, cBegriff)
IF i == 0
AADD(aBegriffe, cBegriff)
i := LEN(aBegriffe)
END
END
DO CASE
CASE nKey == K_DOWN .AND. i > 1
go:VarPut(LEFT(aBegriffe[i-1], LEN(cBegriff)))
go:changed := .t.
CASE nKey == K_UP .AND. i < LEN(aBegriffe)
go:VarPut(LEFT(aBegriffe[i+1], LEN(cBegriff)))
go:changed := .t.
END
RETURN .t.
Ich habe auch READUPDATED(.t.) probiert, bringt nichts.
Der Code in XPPW32\SOURCE\SYS\GetSys.prg Funktion GetPostValidate() scheint den Updated-Status immer zurückzusetzen nachdem die VALID-Funktion ausgeführt wurde.
Ich werde erstmal das Problem mithilfe globalen Variablen für Xbase++ umgehen, dies ist aber natürlich unschön.
Hat jemand vielleicht eine elegantere Lösung?
Viele Grüße,
David