Seite 1 von 1

XbpBrowse:Itemselected Unterscheidung möglich?

Verfasst: Fr, 07. Sep 2018 9:23
von mini990
Hallo,
kann man bei Xbpbrowse:Itemselected zwischen "Maus: Doppelklick" und "Tastatur:Enter" unterscheiden?
ich hab da in der Doku nichts gefunden...

Gruß Stefan

Re: XbpBrowse:Itemselected Unterscheidung möglich?

Verfasst: Sa, 08. Sep 2018 7:52
von AUGE_OHR
mini990 hat geschrieben: Fr, 07. Sep 2018 9:23 kann man bei Xbpbrowse:Itemselected zwischen "Maus: Doppelklick" und "Tastatur:Enter" unterscheiden?
ich hab da in der Doku nichts gefunden...
Frage : wie würdest du denn das Keyboard abfragen :?:

ein Tastendruck erzeugt genau so wie ein Maus klick einen Event und wenn man den "abfängt" dann geht er nicht an andere Controls sprich dem oBrowse.

wenn du z.b. eine inkrementelle Suche in deinem Browse schreiben willst würde ich den oBrowse:Keyboard Callback Slot mit einem Codeblock bestücken.

wenn du eine einfache Lösung suchst siehe diese Eventloop an

Code: Alles auswählen

   oBrowse:itemSelected := {|uNIL1, uNIL2, self| Msgbox("select via Mouse") }

   nEvent := xbeP_None
   DO WHILE .NOT. lExit = .T.
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      DO CASE
         // hier den Keyboard Event abgefangen -> nicht weiter zum Browse
         //             |||||||||||||
         CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_ENTER
            Msgbox("select via Keyboard","forward to Browse")
            // so per Keyboard das Browse aktivieren
            PostAppEvent(xbeBRW_ItemSelected,,,oBrowse)

         CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_ESC
            EXIT
      OTHERWISE
         // andere Events werden weiter geleitet
         oXbp:HandleEvent( nEvent, mp1, mp2 )
      ENDCASE
   ENDDO
Anmerkung : man sollte nicht zu viel CASE Abfragen haben bevor man zum OTHERWISE kommt [-X

Re: XbpBrowse:Itemselected Unterscheidung möglich?

Verfasst: So, 09. Sep 2018 9:55
von mini990
Habe mein Problem geklärt, danke.
Vorher:

Code: Alles auswählen

DO WHILE ! lExit
	nEvent := AppEvent( @mp1, @mp2, @oXbp )
	oXbp:handleEvent( nEvent, mp1, mp2 )
	IF nEvent == xbeP_Keyboard 
		Do Case
			case mp1 =  xbeK_ESC
				lExit:= .T.
			case mp1 =  xbeK_ENTER
				GE_KAL_Sicher(NIniFile)
				lExit:= .T.
		Endcase
	Endif
ENDDO
Jetzt:

Code: Alles auswählen

DO WHILE ! lExit
	nEvent := AppEvent( @mp1, @mp2, @oXbp )
	IF nEvent == xbeP_Keyboard 
		Do Case
			case mp1 =  xbeK_ESC
				lExit:= .T.
			case mp1 =  xbeK_ENTER
				GE_KAL_Sicher(NIniFile)
				lExit:= .T.
			Otherwise
				oXbp:handleEvent( nEvent, mp1, mp2 )
		Endcase
	Else
		oXbp:handleEvent( nEvent, mp1, mp2 )
	Endif
ENDDO

Re: XbpBrowse:Itemselected Unterscheidung möglich?

Verfasst: So, 09. Sep 2018 10:50
von AUGE_OHR
mini990 hat geschrieben: So, 09. Sep 2018 9:55

Code: Alles auswählen

	IF nEvent == xbeP_Keyboard 
damit sind ja alle Keyboard Events gemeint ... was dann noch ein OTHERWISE erfordert ...

Code: Alles auswählen

CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_ENTER
wenn du es kombinierst ist nur eine bestimme Taste gemeint