XbpBrowse:Itemselected Unterscheidung möglich?

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

XbpBrowse:Itemselected Unterscheidung möglich?

Beitrag 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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse:Itemselected Unterscheidung möglich?

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: XbpBrowse:Itemselected Unterscheidung möglich?

Beitrag 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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpBrowse:Itemselected Unterscheidung möglich?

Beitrag 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
gruss by OHR
Jimmy
Antworten