In der Clipper-kompilierte Anwendung läßt sich ohne Probleme Text aus einer Browse-Zeile kopieren.
Wenn ich aber mit Xbase kompiliere dann wird während der Textauswahl die Markierung ständig zurückgesetzt bzw. geändert.
Dies scheint im gleichen Takt mit der sekündlichen Browse-Aktualisierung zu passieren.
Dadurch ist es nahezu unmöglich, Text aus der Browse-Zeile zu kopieren.
Hat jemand eine Idee wie ich das Problem umgehen könnte?
Ein anderes, kleineres Problem gibt es auch in diesem Zusammenhang.
Nach dem Öffnen eines Browse-Fensters gibt ein sporadisches "Raster-zucken" - als ob eine (Teil-) Pixelreihe kurz geändert wurde.
Dies passiert unregelmäßig, in durchschnitt vielleicht zehnmal pro Minute, und auf verschiedenen Stellen im Fenster.
Ich glaube nicht, dass es die (hoffentlich baldige!) Einführung der Xbase-kompilierte Anwendung verhindern wird, trotzdem kann ich mich vorstellen, dass die Benutzer nach einem ganzen Tag vor dem Bildschirm davon genervt werden könnten, also wäre ich auch diesbezüglich für jede Lösungsanregung dankbar.
Die Browse-Hauptschleife sieht wie folgt aus ("markierte Zeilen anzeigen" im Code ist übrigens eine ganz andere Geschichte, eine Satzauswahl):
Code: Alles auswählen
WHILE lMore
IF browse:colPos <= browse:freeze
browse:colPos := browse:freeze + 1
END
nKey:=0
WHILE nKey==0 .AND. !browse:stabilize()
nKey:=INKEY()
END
IF browse:stable
nrow:=ROW() //Cursorposition merken
ncol:=COL()
IF !EMPTY(fu)
EVAL(fu) //zusätzlichen (Anzeige-) Block ausführen
END
SETPOS(nrow, ncol) //Cursorposition wieder herstellen
refreshMark() //markierte Zeilen anzeigen
IF browse:hitBottom .AND. .NOT. IS_APPEND_MODE(browse) .AND. edit
TURN_ON_APPEND_MODE(browse)
nKey := K_DOWN
lNoKeyWait := .T. // 1. Refresh sofort, nicht erst nach 1 Sekunde
ELSE
IF browse:hitTop .OR. browse:hitBottom
TONE(880,1)
END
#ifdef __XPP__
WHILE lNoKeyWait .OR. (nKey:=INKEY(1)) == 0
lNoKeyWait := .F.
#else
WHILE (nKey:=INKEY(1)) == 0
#endif
DISPBEGIN()
browse:refreshAll() //Gültigkeit aufheben
browse:forceStable() //für Novell-Netz
refreshMark()
DISPEND()
END
END
END
EApplyKey(browse, nKey) //Tastatureingabe auswerten
END
Vielen Dank und schöne Pfingsten,
David Mackenzie
Leipzig