im Forum gibt es einen Beitrag "Focus Verlust bei Wechsel zu anderem Programm". Den habe ich mir gründlich durchgelesen und habe ihn aber nicht verstanden. Gibt es auch eine leichtere Version dazu?
Meine Problem:
In einem CRT Fenster habe ich ein Objekt mit einer Klasse, in einer Methode wird ein xbpdialog Fenster und diverse Buttons erstellt und in einer 2. Methode mit einem xbpbrowse die Daten angezeigt. Das funktioniert.
Code: Alles auswählen
oLFZEingabe:=ArrayBrowse():New( , , {210,15} , {942,460} , , ,Daten, Fensterueberschrift, abuttons):Create()
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oxbp )
?setAppWindow() // dient nur zum Testen
?setAppFocus()
?seconds()
do case
case nEvent = xbe_None // dies wird ausgeführt wenn die Zeit in appevent überschritten ist
* z.B. Daten alle 2 Minuten neu auslesen
case nEvent = xbeP_Keyboard
do case
case mp1 = xbeK_ESC .or. (mp1 = asc("e") .or. mp1 = asc("E")) // immer Konstanten aus appevent.ch nutzen, wenn möglich
oLFZEingabe:destroy()
setAppWindow ( oCrt )
exit
case mp1 ......
..........
otherwise
oxbp:HandleEvent ( nEvent, mp1, mp2 )
endcase
enddo
Ab hier war es für mich in dem anderen Beitrag nicht mehr verständlich.Ich mach das so ähnlich, wie Jimmy das beschrieben hat. Beim Sprung in ein XBPart wird der Name des Parts in eine Variable geschrieben. Wenn dann das Programm wieder den Fokus bekommt, dann wird der SetInputFocus-Slot mit SetAppFocus(XbPartInDerVariablen) aufgerufen. Klappt einwandfrei.
mfg
Wolfgang