¿Mejor forma de mantener compatibilidad con clases FW?

Post Reply
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

¿Mejor forma de mantener compatibilidad con clases FW?

Post by AngelSalom »

Hola amigos, tengo previsto actualizar mi versión de FW en breve. En estos años he hecho varias modificaciones a mi conveniencia sobre las clases de FW originales. Ahora que voy a actualizar voy a hacer las cosas mejor intentando que _ que necesite para personalizar mi forma de trabajo y/o aplicaciones sean compatibles con futuras actualizaciones.
¿Qué método me recomendáis?

a) Utilizar la adición/modificación de métodos mediante EXTEND y OVERRIDE
b) Crear clases heredadas de las originales, añadir las datas y métodos propios y redefinir los coincidentes con los originales y que tenga que cambiar por ejemplo :

Code: Select all

CLASS VCheckBox FROM TCheckBox

   DATA lPulsado AS LOGICAL INIT .F.
   METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, bChange, bValid,;
                    nClrFore, nClrBack, cMsg, lUpdate, bWhen ) CONSTRUCTOR
   METHOD Click()   
ENDCLASS

METHOD Click() CLASS VCheckBox

   ::lPulsado:=!::lPulsado
   ::Super:Click()           

return nil

METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, bChange, bValid, nClrFore,;
                 nClrBack, cMsg, lUpdate, bWhen, cPrompt ) CLASS VCheckBox

   DEFAULT nClrBack := CLR_WHITE
   ::Super:Redefine ( nId, bSetGet, oWnd, nHelpId, bChange, bValid, nClrFore,;
                              nClrBack, cMsg, lUpdate, bWhen, cPrompt )
   ::lPulsado  = Eval(bSetGet)

return Self

 
Gracias!
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by cnavarro »

Angel, mi opinión es que aunque ambas soluciones son adecuadas, yo prefiero utilizar la creación de clases por herencia.
De todas formas, sería bueno que fueses poco a poco publicando _ en tus clases porque como sabes somo bastantes sensibles a incluir cambios sugeridos por los usuarios en el código de Fivewin.
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by AngelSalom »

Gracias Cristobal, así lo creo yo también. Crearé nuevas clases heredadas.
Respecto a _, en todos estos años, muchos son pequeñas correcciones que ya se han aplicado (y comentado en el foro), aunque la mayoría son personalizaciones para mi comodidad.
Como tengo que revisar el código si observo algo que pueda ser relevante lo comento sin dudarlo.

Saludos,
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by Compuin »

AngelSalom wrote:Gracias Cristobal, así lo creo yo también. Crearé nuevas clases heredadas.
Respecto a _, en todos estos años, muchos son pequeñas correcciones que ya se han aplicado (y comentado en el foro), aunque la mayoría son personalizaciones para mi comodidad.
Como tengo que revisar el código si observo algo que pueda ser relevante lo comento sin dudarlo.

Saludos,
Hola

Me interesa el tema. Comose crea una clase heredada ? Algun ejemplo ?
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by AngelSalom »

Aquí va una muestra :

Code: Select all

#include "fivewin.ch"

//----------------------------------------------------------------------------//
//-----------   TCheckBox  ---------------------------------------------------//
//----------------------------------------------------------------------------//

CLASS VCheckBox FROM TCheckBox

   DATA lPulsado AS LOGICAL INIT .F.

   METHOD New( nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight,;
      nHelpTopic, bChange, oFont, bValid, nClrFore, nClrBack,;
      lDesign, lPixel, cMsg, lUpdate, bWhen ) CONSTRUCTOR

   METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, bChange, bValid,;
                    nClrFore, nClrBack, cMsg, lUpdate, bWhen ) CONSTRUCTOR
   METHOD Click()   
ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight, nHelpTopic,;
   bChange, oFont, bValid, nClrFore, nClrBack, lDesign, lPixel,;
   cMsg, lUpdate, bWhen ) CLASS VCheckBox

   DEFAULT nClrBack := CLR_WHITE
   ::lPulsado:=.F.

   ::Super:New (nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight,;
               nHelpTopic, bChange, oFont, bValid, nClrFore, nClrBack,;
               lDesign, lPixel, cMsg, lUpdate, bWhen )

return Self

//----------------------------------------------------------------------------//

METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, bChange, bValid, nClrFore,;
                 nClrBack, cMsg, lUpdate, bWhen, cPrompt ) CLASS VCheckBox

   DEFAULT nClrBack := CLR_WHITE
   ::lPulsado:=.F.
   
   ::Super:Redefine ( nId, bSetGet, oWnd, nHelpId, bChange, bValid, nClrFore,;
                     nClrBack, cMsg, lUpdate, bWhen, cPrompt )
   ::lPulsado  = Eval(bSetGet)

return Self

//----------------------------------------------------------------------------//

METHOD Click() CLASS VCheckBox

   ::lPulsado:=!::lPulsado
   ::Super:Click()           

return nil
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by Compuin »

AngelSalom wrote:Aquí va una muestra :

Code: Select all

#include "fivewin.ch"

//----------------------------------------------------------------------------//
//-----------   TCheckBox  ---------------------------------------------------//
//----------------------------------------------------------------------------//

CLASS VCheckBox FROM TCheckBox

   DATA lPulsado AS LOGICAL INIT .F.

   METHOD New( nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight,;
      nHelpTopic, bChange, oFont, bValid, nClrFore, nClrBack,;
      lDesign, lPixel, cMsg, lUpdate, bWhen ) CONSTRUCTOR

   METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, bChange, bValid,;
                    nClrFore, nClrBack, cMsg, lUpdate, bWhen ) CONSTRUCTOR
   METHOD Click()   
ENDCLASS

//----------------------------------------------------------------------------//

METHOD New( nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight, nHelpTopic,;
   bChange, oFont, bValid, nClrFore, nClrBack, lDesign, lPixel,;
   cMsg, lUpdate, bWhen ) CLASS VCheckBox

   DEFAULT nClrBack := CLR_WHITE
   ::lPulsado:=.F.

   ::Super:New (nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight,;
               nHelpTopic, bChange, oFont, bValid, nClrFore, nClrBack,;
               lDesign, lPixel, cMsg, lUpdate, bWhen )

return Self

//----------------------------------------------------------------------------//

METHOD ReDefine( nId, bSetGet, oWnd, nHelpId, bChange, bValid, nClrFore,;
                 nClrBack, cMsg, lUpdate, bWhen, cPrompt ) CLASS VCheckBox

   DEFAULT nClrBack := CLR_WHITE
   ::lPulsado:=.F.
   
   ::Super:Redefine ( nId, bSetGet, oWnd, nHelpId, bChange, bValid, nClrFore,;
                     nClrBack, cMsg, lUpdate, bWhen, cPrompt )
   ::lPulsado  = Eval(bSetGet)

return Self

//----------------------------------------------------------------------------//

METHOD Click() CLASS VCheckBox

   ::lPulsado:=!::lPulsado
   ::Super:Click()           

return nil

Segun entiendo esta clase hereda de Checkbox todos sus Datas y Metodos y utiliza los que tu le estas incluyendo en vcheckbox.

Es asi ?
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by AngelSalom »

Así es.
Si te fijas, por ejemplo en :

Code: Select all

METHOD Click() CLASS VCheckBox

   ::lPulsado:=!::lPulsado
   ::Super:Click()           

return nil
Hago los procesos que me interesan y luego con el mandato

Code: Select all

::Super:Click()
llamo al método Click de la clase principal (en este caso TCheckBox)
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
Compuin
Posts: 1017
Joined: Tue Dec 28, 2010 1:29 pm

Re: ¿Mejor forma de mantener compatibilidad con clases FW?

Post by Compuin »

AngelSalom wrote:Así es.
Si te fijas, por ejemplo en :

Code: Select all

METHOD Click() CLASS VCheckBox

   ::lPulsado:=!::lPulsado
   ::Super:Click()           

return nil
Hago los procesos que me interesan y luego con el mandato

Code: Select all

::Super:Click()
llamo al método Click de la clase principal (en este caso TCheckBox)
Muchas gracias
Post Reply