In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Ejemplo Sobrecarga en clase TDbNavigator

Foro de Xailer profesional en español
Responder
Karl Svensson
Mensajes: 81
Registrado: Mar Oct 18, 2005 7:20 pm

Ejemplo Sobrecarga en clase TDbNavigator

Mensaje 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!
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9440
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Ejemplo Sobrecarga en clase TDbNavigator

Mensaje 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!
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Karl Svensson
Mensajes: 81
Registrado: Mar Oct 18, 2005 7:20 pm

Ejemplo Sobrecarga en clase TDbNavigator

Mensaje 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!
>>
>>
>
>
Responder