Herencia de TWindow y dudas

Herencia de TWindow y dudas

Postby jvtecheto » Sat Jul 20, 2019 4:06 pm

Buenas tardes:

La clase base de Fivewin sino me equivoco es TWindow a partir de ahi heredan todas, pero esta clase base llama a un metodo ::ClassName() que no pertenece a TWindow, Entonces de que clase de Harbour heredan todas las clases que se definen?

Aprovecho el mismo post para preguntar varias cosas,

En una clase que nosotros definimos para refirirnos a sus DATAS usamos. ::nColor (Por ejemplo :: sinonimo de Self) y he visto que para referirnos a las DATAS de su ancestro (Del que hereda).

Tambien utilizamos la misma sintaxis, ¿Como sabemos que DATAS son de la clase que definimos y cuales son de la herencia?

he visto tambien que se definen METHODs de la forma __SetFocus() (Con 2 guiones) y con 1 guion, _SetFocus() , ¿Cual es el motivo de utilizar 2 guiones o 1 guion y porque se definen asi?

Gracias por vuestra colaboracion.

Si teneis un manual que explique todo esto y podeis facilitarmelo, estare muy agradecido.

Saludos.

Jose Vicente.
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
User avatar
jvtecheto
 
Posts: 602
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

Re: Herencia de TWindow y dudas

Postby Antonio Linares » Sun Jul 21, 2019 5:13 am

Jose Vicente,

Ejecuta el ejemplo samples\classtree.prg y te ayudará a entenderlo

1. Clase HBObject
https://github.com/harbour/core/blob/master/src/rtl/tobject.prg

2. Un objeto está contenido en un array. Esto lo puedes comprobar calculando su longitud, como hacemos con un array:

? Len( GetNew() )
? Len( ErrorNew() )
etc.

Las "DATA"s son mensajes que nos permiten acceder a las posiciones de ese array y obtener sus valores. Todas las DATAs estan contenidas en
ese array, por lo que no podemos saber cuales "son" de su clase padre ó de ella misma. Lo que si podemos averiguar es si la clase padre ya
tenia esa DATA:

Code: Select all  Expand view  RUN
   local oGet := GetNew()
   local aDatas := __objGetMsgList( oGet, .T. )
   local aDatasSuper := __objGetMsgList( oGet:Super, .T. )
 

Cualquier elemento de aDatas que NO esté en aDatasSuper será propio de la clase heredada. En ese ejemplo si cambias .T. por .F., obtenemos los métodos

3. El usar guiones a veces es para evitar conflictos de nombres de métodos con funciones con el mismo nombre.

En cuanto a la documentación lo más recomendable es revisar el código fuente en Harbour:
https://github.com/harbour/core/blob/master/src/vm/classes.c
https://github.com/harbour/core/blob/master/src/rtl/objfunc.prg
https://github.com/harbour/core/blob/master/include/hbclass.ch
https://github.com/harbour/core/blob/master/include/hboo.ch
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Herencia de TWindow y dudas

Postby jvtecheto » Sun Jul 21, 2019 9:01 am

Muchisimas gracias Antonio. :D

Saludos.

Jose
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
User avatar
jvtecheto
 
Posts: 602
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: FiveWiDi, Google [Bot] and 118 guests