READUPDATED-Status in VALID-Funktion ändern? [ERLEDIGT]

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

READUPDATED-Status in VALID-Funktion ändern? [ERLEDIGT]

Beitrag von dtmackenzie »

Folgendes geht um Textmodus, d.h. ohne SetMouse(.t.).

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
wobei die folgende Funktion in Clipper ganz nett funktioniert:

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.
Die Zeilen go:changed := .t. bewirken, dass nach dem READ die Funktion UPDATED() .t. liefert - aber leider nicht wenn mit Xbase++ compiliert wird.
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
Viele Grüße,
David
Benutzeravatar
dtmackenzie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Do, 22. Nov 2007 9:02
Wohnort: Leipzig
Hat sich bedankt: 66 Mal
Danksagung erhalten: 22 Mal
Kontaktdaten:

Re: READUPDATED-Status in VALID-Funktion ändern? [ERLEDIGT]

Beitrag von dtmackenzie »

OK, ich muß nicht unbedingt UPDATED() checken, in diesem Fall reicht nach dem READ

Code: Alles auswählen

#ifdef __XPP__
IF !EMPTY(cBegriff)
#else
IF UPDATED()
#endif
und es sind nicht sehr viele Stellen im Code.
Ich lösche den Beitrag aber erstmal nicht - vielleicht könnte die Funktion BegHist() jemandem von Nutzen sein.
Viele Grüße,
David
Antworten