eine Rebar kann ja ein Chevron enthalten wo ich dann eine Menu habe.
nun benötige, für den ausführenden Codeblock, leider eine PRIVATE und damit eine eigene Event Schleife "in" meinem native Control.
( was kein Top-Level Windows ist wo ich ein Xbase++ Event hin schicken kann )
Code: Alles auswählen
::oMenu:PopUp ( ::oMain:drawingArea, aPopPos, 0 , XBPMENU_PU_DEFAULT )
nEvent := xbe_None
::lMenuExit := .F.
DO WHILE !::lMenuExit
nEvent := AppEvent ( @mp1, @mp2, @oXbp,100 )
DO CASE
CASE nEvent == xbe_None
CASE nEvent == xbeP_Quit
QUIT // AppQuit()
CASE nEvent == xbeMyRB_Takeit
EXIT
CASE nEvent == xbeP_Keyboard .AND. mp1 = xbeK_ESC
EXIT
OTHERWISE
oXbp:HandleEvent ( nEvent, mp1, mp2 )
ENDCASE
ENDDO
::oMenu:destroy()
TONE(1234)
ELSE
IF lToolbar = .T.
* Msgbox("Problem mit XbpToolbar()")
TONE(1234)
ENDIF
ENDIF
// while PRIVATE
RELEASE oTransfer
RELEASE nMenuItem
isRunning := .F.
RETURN oRet
METHOD DXE_ReBar:MenuExit()
::lMenuExit := .T.
PostAppEvent(xbeP_Keyboard, xbeK_ESC,,self)
RETURN self
tatsächlich kommt nun das ESC in der Main Event Schleife an*** aber ohne die Event Schleife im native Control kennt er meine PRIVAT nicht (auch wenn ich die nicht RELEASE).
***
Frage : liegt es daran das ich ::oMain:DrawingArea als Parent vom Popup-Menu benutze ?
Da er in der Main Event Scheife ankommt hab ich die nun so erweitert
Code: Alles auswählen
CASE nEvent == xbeP_Keyboard .AND. mp1 = xbeK_ESC
oDlg:oRebar:MenuExit()
ich muss aber 2 x ESC drücken damit er die Event Schleife verlässt und ich einen TONE() höre ... warum ?
spätestens beim "Timeout" müsste er doch merken das ::lMenuExit = .T. ist und die Schleife verlassen ... oder was übersehe ich ?