Hola Antonio y Daniel
Estimado Daniel, agradezco tus explicaciones y tu ejemplo, ya que de manera fácil me has hecho ver como construir una aplicación convirtiéndola en una clase. Eso para mí es POO, mientras que comandos sería lo clásico
- Code: Select all Expand view
Define Windows.....
Define Ribbon....
Add groups ......
Add Button ....
Activate Windows......
Espero que ahora me entiendas, lo que quiero decir.
Lo siento no he sido capaz de trasladar tu ejemplo a mi programa, más que nada porque no encontraba nOldOption fuera de su ámbito en el method SetOption.
La solución ha sido mucho más fácil de lo que pensaba, sólo que he tenido que tocar la clase Ribbon que era lo que no quería hacer, pero como decía anteriormente,
faltaba algo en la clase Lo único que he tenido que hacer es declarar la variable nOldOption que está como local en el method SetOption como data de la clase Ribbon y en el method SetOption
- Code: Select all Expand view
METHOD SetOption( nOption ) CLASS TRibbonBar
local nAt
::nOldOption := ::nOption <---------------
nOption = ::ScanOption( nOption )
if ::oBackStage != nil .and. IsWindowVisible( ::oBackStage:hWnd )
if nOption != ::nOption
::BackStage()
endif
endif
if nOption != ::nOption .and. ::aEnable[ nOption ]
::nOption = nOption
::aDialogs[ ::nOldOption ]:Hide() <-----------------
::PaintOver( ::nOption, 1 )
::Resize( 0, ::nWidth, ::nHeight )
::aDialogs[ ::nOption ]:Show()
if !Empty( ::aDialogs[ ::nOption ]:aControls )
aeval( ::aDialogs[ ::nOption ]:aControls, {| oControl | oControl:Show(), oControl:Refresh() } )
endif
::aDialogs[ ::nOption ]:SetFocus()
::Refresh()
if ! Empty( ::bAction )
Eval( ::bAction, nOption, ::nOldOption ) <---------------------
endif
endif
return nil
Por si sirve de algo y para otros, ahora si funciona bien el Codeblok y se pueden ejecutar las dos acciones.
oRbar:aDialogs[ 1 ]:bGotFocus = { | o | MsgInfo( "Entrada "+Str(o:oWnd:nOption) ) } <---------------Esto da la pestaña a la que entras
oRbar:aDialogs[ 1 ]:bLostFocus = { | o | MsgInfo( "Salida "+Str(oRbar:nOldOption) ) } <---------------Esto da la pestaña de la que has salido