¿Mejor forma de mantener compatibilidad con clases FW?

¿Mejor forma de mantener compatibilidad con clases FW?

Postby AngelSalom » Sun Jun 02, 2019 6:41 pm

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 los cambios 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  Expand view

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
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby cnavarro » Mon Jun 03, 2019 9:01 am

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 esos cambios en tus clases porque como sabes somo bastantes sensibles a incluir cambios sugeridos por los usuarios en el código de Fivewin.
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

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

Postby AngelSalom » Mon Jun 03, 2019 9:10 am

Gracias Cristobal, así lo creo yo también. Crearé nuevas clases heredadas.
Respecto a los cambios, 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
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby Compuin » Mon Jun 03, 2019 12:50 pm

AngelSalom wrote:Gracias Cristobal, así lo creo yo también. Crearé nuevas clases heredadas.
Respecto a los cambios, 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 ?
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1213
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

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

Postby AngelSalom » Mon Jun 03, 2019 1:31 pm

Aquí va una muestra :

Code: Select all  Expand view
#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
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby Compuin » Mon Jun 03, 2019 1:35 pm

AngelSalom wrote:Aquí va una muestra :

Code: Select all  Expand view
#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 ?
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1213
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada

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

Postby AngelSalom » Mon Jun 03, 2019 2:03 pm

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

Code: Select all  Expand view
METHOD Click() CLASS VCheckBox

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

return nil


Hago los procesos que me interesan y luego con el mandato
Code: Select all  Expand view
::Super:Click()
llamo al método Click de la clase principal (en este caso TCheckBox)
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 708
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

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

Postby Compuin » Mon Jun 03, 2019 2:04 pm

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

Code: Select all  Expand view
METHOD Click() CLASS VCheckBox

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

return nil


Hago los procesos que me interesan y luego con el mandato
Code: Select all  Expand view
::Super:Click()
llamo al método Click de la clase principal (en este caso TCheckBox)


Muchas gracias
FWH 20.12
Hbmk2 32/64 Bits (Build 19.29.30133)
Microsoft Visual C 32 Bits
MySql 8.0.24 32/64 Bits
VS Code
Compuin
 
Posts: 1213
Joined: Tue Dec 28, 2010 1:29 pm
Location: Quebec, Canada


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 86 guests