Página 1 de 1

Ejemplo Sobrecarga en clase TDbNavigator

Publicado: Vie Ene 30, 2009 1:22 pm
por Karl Svensson
Estoy feliz y dichoso probando la sobrecarga de clases. Con esta
funcionalidad Xailer es realmente, muy potente.
En concreto, para quiero añadir al dbnavigator dos botones de "impresión" y
"búsqueda". Solo me falta un pequeño detalle, que es añadir la imagen LUPA
al botón desde los recursos de mi proyecto, pues no me lo reconoce.
Por lo demás, ahí os dejo el ejemplo.
Saludos
Karl
//---------------------------------------------------------- --------------------
CLASS TDBNavigator FROM XDBNavigator
PUBLISHED:
PROPERTY lBtnPrint INIT .T. WRITE INLINE ::FlBtnPrint := Value,
::aItems[ 11 ]:lVisible := Value, ::Adjust()
PROPERTY lBtnLupa INIT .T. WRITE INLINE ::FlBtnLupa := Value,
::aItems[ 12 ]:lVisible := Value, ::Adjust()
EVENT OnClickPrint( oSender ) // --> Nil | lResult
EVENT OnClickBusca( oSender ) // --> Nil | lResult
METHOD Command( nNotifyCode, nId )
PUBLIC:
CONSTRUCTOR New( oParent )
ENDCLASS
//---------------------------------------------------------- ----------------
METHOD New( oParent ) CLASS TDBNavigator
Super:New( oParent )
ASize( ::aTooltips, 12 )
::AddImages( { "XA_BMP_PRINTER" } )
::AddImages( { "LUPA" } )
::AddItem( "", 11, ::aToolTips[ 11 ],,,,, ::FlBtnPrint )
::AddItem( "", 12, ::aToolTips[ 12 ],,,,, ::FlBtnLupa )
RETURN Self
METHOD Command( nNotifyCode, nId ) CLASS TDBNavigator
LOCAL lOk
IF nNotifyCode == BN_CLICKED .AND. ! Empty( ::oDataSet ) .AND.
::oDataSet:lOpen
nId -= TB_ID_FIRST
IF nId == 1
IF ( lOk := ::OnClickFirst() ) == Nil .OR. lOk
::oDataSet:GoTop()
ENDIF
ELSEIF nId == 2
IF ( lOk := ::OnClickPrevious() ) == Nil .OR. lOk
::oDataSet:nSkip( -1 )
ENDIF
ELSEIF nId == 3
IF ( lOk := ::OnClickNext() ) == Nil .OR. lOk
::oDataSet:nSkip()
ENDIF
ELSEIF nId == 4
IF ( lOk := ::OnClickLast() ) == Nil .OR. lOk
::oDataSet:GoBottom()
ENDIF
ELSEIF nId == 5
IF ( lOk := ::OnClickInsert() ) == Nil .OR. lOk
::oDataSet:AddNew()
ENDIF
ELSEIF nId == 6
IF ( lOk := ::OnClickDelete() ) == Nil .OR. lOk
::oDataSet:Delete()
ENDIF
ELSEIF nId == 7
IF ( lOk := ::OnClickEdit() ) == Nil .OR. lOk
::oDataSet:Edit()
ENDIF
ELSEIF nId == 8
IF ( lOk := ::OnClickUpdate() ) == Nil .OR. lOk
::oDataSet:Update()
ENDIF
ELSEIF nId == 9
IF ( lOk := ::OnClickCancel() ) == Nil .OR. lOk
::oDataSet:Cancel()
::oDataSet:Skip( 0 )
ENDIF
ELSEIF nId == 10
IF ( lOk := ::OnClickRefresh() ) == Nil .OR. lOk
::oDataSet:RefreshCurrent()
ENDIF
ELSEIF nId == 11
//Aquí se produce el evento de impresión
::OnClickPrint()
ELSEIF nId == 12
//Aquí se produce el evento de búsqueda
::OnClickBusca()
ENDIF
RETURN 0
ENDIF
RETURN Nil
//---------------------------------------------------------- --------------------
EN EL FORMINITIALIZE DE MI FORMULARIO CREO LOS EVENTOS
::oDBNavigator1:OnClickPrint:={|| msginfo("Imprime en formulario"),.T.}
::oDBNavigator1:OnClickBusca:={|| msginfo("Busca en formulario"),.T.}
Y CHACHI!

Ejemplo Sobrecarga en clase TDbNavigator

Publicado: Lun Feb 02, 2009 9:37 am
por ignacio
Karl,
Debería funcionar, no obstante, haremos algunas pruebas. En mi opinión, no
es buena idea hacer depender una DLL de un recurso externo cuando ella misma
puede alojar perfectamente dicho recurso y más aún, si como supongo no
ocupa más 32 bytes.
Un saludo
--
Ignacio Ortiz de Zúñiga
Xailer support / Soporte de Xailer
http://www.xailer.com
http://www.xailer.info
"Karl Svensson" <karl@bcnartis.com> escribió en el mensaje
news:4982f11b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Estoy feliz y dichoso probando la sobrecarga de clases. Con esta
> funcionalidad Xailer es realmente, muy potente.
> En concreto, para quiero añadir al dbnavigator dos botones de "impresión"
> y "búsqueda". Solo me falta un pequeño detalle, que es añadir la imagen
> LUPA al botón desde los recursos de mi proyecto, pues no me lo reconoce.
>
> Por lo demás, ahí os dejo el ejemplo.
> Saludos
> Karl
>
> //---------------------------------------------------------- --------------------
> CLASS TDBNavigator FROM XDBNavigator
> PUBLISHED:
> PROPERTY lBtnPrint INIT .T. WRITE INLINE ::FlBtnPrint := Value,
> ::aItems[ 11 ]:lVisible := Value, ::Adjust()
> PROPERTY lBtnLupa INIT .T. WRITE INLINE ::FlBtnLupa := Value,
> ::aItems[ 12 ]:lVisible := Value, ::Adjust()
> EVENT OnClickPrint( oSender ) // --> Nil | lResult
> EVENT OnClickBusca( oSender ) // --> Nil | lResult
> METHOD Command( nNotifyCode, nId )
> PUBLIC:
> CONSTRUCTOR New( oParent )
> ENDCLASS
> //---------------------------------------------------------- ----------------
>
> METHOD New( oParent ) CLASS TDBNavigator
> Super:New( oParent )
> ASize( ::aTooltips, 12 )
> ::AddImages( { "XA_BMP_PRINTER" } )
> ::AddImages( { "LUPA" } )
> ::AddItem( "", 11, ::aToolTips[ 11 ],,,,, ::FlBtnPrint )
> ::AddItem( "", 12, ::aToolTips[ 12 ],,,,, ::FlBtnLupa )
> RETURN Self
>
> METHOD Command( nNotifyCode, nId ) CLASS TDBNavigator
> LOCAL lOk
> IF nNotifyCode == BN_CLICKED .AND. ! Empty( ::oDataSet ) .AND.
> ::oDataSet:lOpen
> nId -= TB_ID_FIRST
> IF nId == 1
> IF ( lOk := ::OnClickFirst() ) == Nil .OR. lOk
> ::oDataSet:GoTop()
> ENDIF
> ELSEIF nId == 2
> IF ( lOk := ::OnClickPrevious() ) == Nil .OR. lOk
> ::oDataSet:nSkip( -1 )
> ENDIF
> ELSEIF nId == 3
> IF ( lOk := ::OnClickNext() ) == Nil .OR. lOk
> ::oDataSet:nSkip()
> ENDIF
> ELSEIF nId == 4
> IF ( lOk := ::OnClickLast() ) == Nil .OR. lOk
> ::oDataSet:GoBottom()
> ENDIF
> ELSEIF nId == 5
> IF ( lOk := ::OnClickInsert() ) == Nil .OR. lOk
> ::oDataSet:AddNew()
> ENDIF
> ELSEIF nId == 6
> IF ( lOk := ::OnClickDelete() ) == Nil .OR. lOk
> ::oDataSet:Delete()
> ENDIF
> ELSEIF nId == 7
> IF ( lOk := ::OnClickEdit() ) == Nil .OR. lOk
> ::oDataSet:Edit()
> ENDIF
> ELSEIF nId == 8
> IF ( lOk := ::OnClickUpdate() ) == Nil .OR. lOk
> ::oDataSet:Update()
> ENDIF
> ELSEIF nId == 9
> IF ( lOk := ::OnClickCancel() ) == Nil .OR. lOk
> ::oDataSet:Cancel()
> ::oDataSet:Skip( 0 )
> ENDIF
> ELSEIF nId == 10
> IF ( lOk := ::OnClickRefresh() ) == Nil .OR. lOk
> ::oDataSet:RefreshCurrent()
> ENDIF
> ELSEIF nId == 11
> //Aquí se produce el evento de impresión
> ::OnClickPrint()
> ELSEIF nId == 12
> //Aquí se produce el evento de búsqueda
> ::OnClickBusca()
> ENDIF
> RETURN 0
> ENDIF
> RETURN Nil
>
> //---------------------------------------------------------- --------------------
> EN EL FORMINITIALIZE DE MI FORMULARIO CREO LOS EVENTOS
>
> ::oDBNavigator1:OnClickPrint:={|| msginfo("Imprime en formulario"),.T.}
> ::oDBNavigator1:OnClickBusca:={|| msginfo("Busca en formulario"),.T.}
>
> Y CHACHI!
>
>

Ejemplo Sobrecarga en clase TDbNavigator

Publicado: Mar Feb 03, 2009 12:02 pm
por Karl Svensson
Sí­, tienes toda la razón. La he añadido a la propia dll, y no ha habido
ningún problema.
Gracias
Karl
"Ignacio Ortiz de Zúñiga" <NoNameToAvoidSpam@xailer.com> escribió en el
mensaje de noticias news:4986b0b4$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Karl,
>
> Deberí­a funcionar, no obstante, haremos algunas pruebas. En mi opinión, no
> es buena idea hacer depender una DLL de un recurso externo cuando ella
> misma puede alojar perfectamente dicho recurso y más aún, si como supongo
> no ocupa más 32 bytes.
>
> Un saludo
>
> --
> Ignacio Ortiz de Zúñiga
> Xailer support / Soporte de Xailer
> http://www.xailer.com
> http://www.xailer.info
> "Karl Svensson" <karl@bcnartis.com> escribió en el mensaje
> news:4982f11b$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>> Estoy feliz y dichoso probando la sobrecarga de clases. Con esta
>> funcionalidad Xailer es realmente, muy potente.
>> En concreto, para quiero añadir al dbnavigator dos botones de "impresión"
>> y "búsqueda". Solo me falta un pequeño detalle, que es añadir la imagen
>> LUPA al botón desde los recursos de mi proyecto, pues no me lo reconoce.
>>
>> Por lo demás, ahí­ os dejo el ejemplo.
>> Saludos
>> Karl
>>
>> //---------------------------------------------------------- --------------------
>> CLASS TDBNavigator FROM XDBNavigator
>> PUBLISHED:
>> PROPERTY lBtnPrint INIT .T. WRITE INLINE ::FlBtnPrint := Value,
>> ::aItems[ 11 ]:lVisible := Value, ::Adjust()
>> PROPERTY lBtnLupa INIT .T. WRITE INLINE ::FlBtnLupa := Value,
>> ::aItems[ 12 ]:lVisible := Value, ::Adjust()
>> EVENT OnClickPrint( oSender ) // --> Nil | lResult
>> EVENT OnClickBusca( oSender ) // --> Nil | lResult
>> METHOD Command( nNotifyCode, nId )
>> PUBLIC:
>> CONSTRUCTOR New( oParent )
>> ENDCLASS
>> //---------------------------------------------------------- ----------------
>>
>> METHOD New( oParent ) CLASS TDBNavigator
>> Super:New( oParent )
>> ASize( ::aTooltips, 12 )
>> ::AddImages( { "XA_BMP_PRINTER" } )
>> ::AddImages( { "LUPA" } )
>> ::AddItem( "", 11, ::aToolTips[ 11 ],,,,, ::FlBtnPrint )
>> ::AddItem( "", 12, ::aToolTips[ 12 ],,,,, ::FlBtnLupa )
>> RETURN Self
>>
>> METHOD Command( nNotifyCode, nId ) CLASS TDBNavigator
>> LOCAL lOk
>> IF nNotifyCode == BN_CLICKED .AND. ! Empty( ::oDataSet ) .AND.
>> ::oDataSet:lOpen
>> nId -= TB_ID_FIRST
>> IF nId == 1
>> IF ( lOk := ::OnClickFirst() ) == Nil .OR. lOk
>> ::oDataSet:GoTop()
>> ENDIF
>> ELSEIF nId == 2
>> IF ( lOk := ::OnClickPrevious() ) == Nil .OR. lOk
>> ::oDataSet:nSkip( -1 )
>> ENDIF
>> ELSEIF nId == 3
>> IF ( lOk := ::OnClickNext() ) == Nil .OR. lOk
>> ::oDataSet:nSkip()
>> ENDIF
>> ELSEIF nId == 4
>> IF ( lOk := ::OnClickLast() ) == Nil .OR. lOk
>> ::oDataSet:GoBottom()
>> ENDIF
>> ELSEIF nId == 5
>> IF ( lOk := ::OnClickInsert() ) == Nil .OR. lOk
>> ::oDataSet:AddNew()
>> ENDIF
>> ELSEIF nId == 6
>> IF ( lOk := ::OnClickDelete() ) == Nil .OR. lOk
>> ::oDataSet:Delete()
>> ENDIF
>> ELSEIF nId == 7
>> IF ( lOk := ::OnClickEdit() ) == Nil .OR. lOk
>> ::oDataSet:Edit()
>> ENDIF
>> ELSEIF nId == 8
>> IF ( lOk := ::OnClickUpdate() ) == Nil .OR. lOk
>> ::oDataSet:Update()
>> ENDIF
>> ELSEIF nId == 9
>> IF ( lOk := ::OnClickCancel() ) == Nil .OR. lOk
>> ::oDataSet:Cancel()
>> ::oDataSet:Skip( 0 )
>> ENDIF
>> ELSEIF nId == 10
>> IF ( lOk := ::OnClickRefresh() ) == Nil .OR. lOk
>> ::oDataSet:RefreshCurrent()
>> ENDIF
>> ELSEIF nId == 11
>> //Aquí­ se produce el evento de impresión
>> ::OnClickPrint()
>> ELSEIF nId == 12
>> //Aquí­ se produce el evento de búsqueda
>> ::OnClickBusca()
>> ENDIF
>> RETURN 0
>> ENDIF
>> RETURN Nil
>>
>> //---------------------------------------------------------- --------------------
>> EN EL FORMINITIALIZE DE MI FORMULARIO CREO LOS EVENTOS
>>
>> ::oDBNavigator1:OnClickPrint:={|| msginfo("Imprime en formulario"),.T.}
>> ::oDBNavigator1:OnClickBusca:={|| msginfo("Busca en formulario"),.T.}
>>
>> Y CHACHI!
>>
>>
>
>