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.
Herencia de TWindow y dudas
Herencia de TWindow y dudas
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Herencia de TWindow y dudas
Jose Vicente,
Ejecuta el ejemplo samples\classtree.prg y te ayudará a entenderlo
1. Clase HBObject
https://github.com/harbour/core/blob/ma ... object.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:
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/ma ... /classes.c
https://github.com/harbour/core/blob/ma ... bjfunc.prg
https://github.com/harbour/core/blob/ma ... hbclass.ch
https://github.com/harbour/core/blob/ma ... de/hboo.ch
Ejecuta el ejemplo samples\classtree.prg y te ayudará a entenderlo
1. Clase HBObject
https://github.com/harbour/core/blob/ma ... object.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
local oGet := GetNew()
local aDatas := __objGetMsgList( oGet, .T. )
local aDatasSuper := __objGetMsgList( oGet:Super, .T. )
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/ma ... /classes.c
https://github.com/harbour/core/blob/ma ... bjfunc.prg
https://github.com/harbour/core/blob/ma ... hbclass.ch
https://github.com/harbour/core/blob/ma ... de/hboo.ch
Re: Herencia de TWindow y dudas
Muchisimas gracias Antonio.
Saludos.
Jose

Saludos.
Jose
Fwh 19.06 32 bits + Harbour 3.2dev(r2011030937)+ Borland 7.4 + FivEdit