Sobreescribir metodo ?
Sobreescribir metodo ?
Hola
Se puede sobreescribir un metodo de una clase con las nueva extensiones de xharbour ?
Por ejemplo quiero modificar el metodo paint de la clase timage
Un saludo
Se puede sobreescribir un metodo de una clase con las nueva extensiones de xharbour ?
Por ejemplo quiero modificar el metodo paint de la clase timage
Un saludo
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
- César E. Lozada
- Posts: 128
- Joined: Wed Oct 26, 2005 12:18 pm
- Location: Los Teques, Miranda, Venezuela
Sobreescribir Método
PROCEDURE tDialog_Modify()
OVERRIDE METHOD Help95 CLASS tDialog WITH MyHelp95
RETURN
*============================================
#define GWL_EXSTYLE -20
#define WS_EX_CONTEXTHELP 1024
Static Function MyHelp95()
Local Self:=qSelf()
if ::lHelpIcon == NIL
::lHelpIcon := .f.
endif
if ::lHelpIcon
SetWindowLong( ::hWnd, GWL_EXSTYLE,;
nOr( GetWindowLong( ::hWnd,GWL_EXSTYLE ),;
WS_EX_CONTEXTHELP ) )
endif
return nil
*============================================
OVERRIDE METHOD Help95 CLASS tDialog WITH MyHelp95
RETURN
*============================================
#define GWL_EXSTYLE -20
#define WS_EX_CONTEXTHELP 1024
Static Function MyHelp95()
Local Self:=qSelf()
if ::lHelpIcon == NIL
::lHelpIcon := .f.
endif
if ::lHelpIcon
SetWindowLong( ::hWnd, GWL_EXSTYLE,;
nOr( GetWindowLong( ::hWnd,GWL_EXSTYLE ),;
WS_EX_CONTEXTHELP ) )
endif
return nil
*============================================
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
ops.
disculpa, se me olvido
salu2
carlos vargas
al inicio de tu aplicacion llama al procedimiento OverrideAndExtend
disculpa, se me olvido
salu2
carlos vargas
al inicio de tu aplicacion llama al procedimiento OverrideAndExtend
Code: Select all
function main(...)
...
/*sobreescritura y extencion de metodos*/
OverrideAndExtend()
...
return nil
Code: Select all
PROCEDURE OverrideAndExtend()
OVERRIDE METHOD DispBegin IN CLASS TWindow WITH KDispBegin
OVERRIDE METHOD DispEnd IN CLASS TWindow WITH KDispEnd
EXTEND CLASS TFOLDER WITH METHOD RefreshPages
EXTEND CLASS TFOLDER WITH METHOD GoFirstControl
EXTEND CLASS TDIALOG WITH METHOD RefreshDialog
EXTEND CLASS TPRINTER WITH METHOD Cm2Pix
RETURN
Code: Select all
/*----------------------------------------------------------------------------------*/
STATIC FUNCTION KDispBegin()
LOCAL SELF := HB_QSelf()
RETURN SELF
/*----------------------------------------------------------------------------------*/
STATIC FUNCTION KDispEnd()
LOCAL SELF := HB_QSelf()
RETURN NIL
/*----------------------------------------------------------------------------------*/
STATIC FUNCTION RefreshDialog( nPos )
LOCAl Self := HB_QSelf()
aeval( ::aControls, { |oCtrl| oCtrl:Refresh() } )
::aControls[ nPos ]:SetFocus()
RETURN NIL
/*----------------------------------------------------------------------------------*/
STATIC FUNCTION RefreshPages()
LOCAl Self := HB_QSelf()
LOCAL oPage
FOR EACH oPage IN ::aDialogs
aeval( oPage:aControls, { |oCtrl| oCtrl:Refresh() } )
NEXT
RETURN NIL
/*----------------------------------------------------------------------------------*/
STATIC FUNCTION GoFirstControl()
LOCAL SELF := HB_QSelf()
::aDialogs[1]:aControls[1]:SetFocus()
RETURN NIL
/*----------------------------------------------------------------------------------*/
STATIC FUNCTION Cm2Pix(nCm)
LOCAL SELF := HB_QSelf()
IF ValType( ::nXOffset ) == "U"
::nXoffset := 0
ENDIF
nPix := Max( 0, ( nCm * 10 * ::nHorzRes() / ::nHorzSize() ) - ::nXoffset )
RETURN nPix
/*----------------------------------------------------------------------------------*/
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Sobreescribir metodo ?
Buenas noches,
Retomo el tema porque me interesa y seguramente alguien me ayudará.
¿Como hago cuando necesito agregar una DATA para que funcione un método sobreescrito ó un método agregado a alguna clase?
Por ej. si en la xBrowse quisiera agregar la DATA oMiObjeto
Gracias.
Rolando
Retomo el tema porque me interesa y seguramente alguien me ayudará.
¿Como hago cuando necesito agregar una DATA para que funcione un método sobreescrito ó un método agregado a alguna clase?
Por ej. si en la xBrowse quisiera agregar la DATA oMiObjeto
Code: Select all
CLASS TXBrowse FROM TControl
DATA oVScroll,; // Vertical scrollbar (used internally)
oHScroll,; // Horizontal scrollbar (used internally)
oCapCol,; // Actual mouse captured column (used internally)
oSeek,; // Optional TSay control to display the value of current ::cSeek value
oDbf // Just a container for a DBF object for your own use (it is not used by the class)
oMiObjeto // Data de un objeto que debo agregar
Gracias.
Rolando
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
Re: Sobreescribir metodo ?
Rolando
Es bien fácil!
EXTEND CLASS TXBrowse WITH DATA oMiObjeto
Saludos
Es bien fácil!
EXTEND CLASS TXBrowse WITH DATA oMiObjeto
Saludos
Alejandro Cebolido
Buenos Aires, Argentina
Buenos Aires, Argentina
Re: Sobreescribir metodo ?
Gracias Alejandro,
Rolando
Rolando
Re: Sobreescribir metodo ?
Buenas noches,
En realidad estoy empezando con esto y tengo una consulta más (que seguramente no será la última):
¿Como hacer para sobreescribir una function de una clase?
Gracias.
Rolando
En realidad estoy empezando con esto y tengo una consulta más (que seguramente no será la última):
¿Como hacer para sobreescribir una function de una clase?
Gracias.
Rolando
Re: Sobreescribir metodo ?
La verdad es que no es una buena manera de sobreescribir un método o crear una nueva data.
Imaginad que quereis usar el método original y el sobreescrito.
Además de otros inconvenientes que podemos explicar...
Pienso que lo mejor es crear tu propia clase heredada de la original, es un concepto muy importante en la POO, la ESPECIALIZACION.
Por ejemplo:
Luego en mi codigo podría hacer esto:
Imaginad que quereis usar el método original y el sobreescrito.
Además de otros inconvenientes que podemos explicar...
Pienso que lo mejor es crear tu propia clase heredada de la original, es un concepto muy importante en la POO, la ESPECIALIZACION.
Por ejemplo:
Code: Select all
CLASS MiTXBrowse FROM TXBrowse // Definicion de mi clase especializada
DATA oMiObjeto // Mi data
METHOD new() CONSTRUCTOR
ENDCLASS
METHOD new() CLASS MiTXBrowse
::super:New() // Ejecutamos el metodo de la clase madre
::oMiObjeto := Clase():new() // Instanciamos la data tipo objeto
return self
Code: Select all
oXbrw := TXBrowse():new() // objeto sin cambios
oMiBrw := MiTXBrowse():new() // objeto con nueva data y metodo sobreescrito.
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
- cuatecatl82
- Posts: 614
- Joined: Wed Mar 14, 2007 6:49 pm
- Location: San Cristobal de las Casas, Chiapas México
- Contact:
Re: Sobreescribir metodo ?
Saludos:
He intentado probar con Harbour pero no funciona, al compilar me salen los siguientes errores:
Por lo que se es que solo funciona con xHarbour, existe alguna manera de hacerlo con Harbour..?
Saludos.
He intentado probar con Harbour pero no funciona, al compilar me salen los siguientes errores:
Code: Select all
Compiling 'Virtual.prg'...
Virtual.prg(725) Error E0030 Syntax error "syntax error at 'METHOD'"
Virtual.prg(726) Error E0030 Syntax error "syntax error at 'METHOD'"
Virtual.prg(728) Error E0030 Syntax error "syntax error at 'CLASS'"
Virtual.prg(729) Error E0030 Syntax error "syntax error at 'CLASS'"
Virtual.prg(730) Error E0030 Syntax error "syntax error at 'CLASS'"
Virtual.prg(732) Error E0030 Syntax error "syntax error at 'CLASS'"
6 errors
No code generated.
Saludos.
Soluciones y Diseño de Software
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
Damos Soluciones...
I.S.C. Victor Daniel Cuatecatl Leon
Director y Diseñador de Proyectos
http://www.soldisoft.unlugar.com
http://www.sisa.unlugar.com
danyleon82@hotmail.com
www.facebook.com/victordaniel.cuatecatlleon
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Sobreescribir metodo ?
#include hbcompat.ch
y ademas incluye la libreria xhb.lib que tiene compatibiliad con xharbour.
salu2
y ademas incluye la libreria xhb.lib que tiene compatibiliad con xharbour.
salu2
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Sobreescribir metodo ?
en los repositorios de harbour esta una carpeta xhb en contrib, ahi estan varios ch que dan soporte a esto.
normalmente no esta incluido en los binarios por lo que sera necesario que los tomes y los incluyas en el include de harbour.
normalmente no esta incluido en los binarios por lo que sera necesario que los tomes y los incluyas en el include de harbour.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)