O.T. - Equivalente a CLASSDATA en Harbour

O.T. - Equivalente a CLASSDATA en Harbour

Postby MarioG » Tue Sep 20, 2016 11:55 pm

Gente:,
Compilando con Harbour y; en la primer clase llamada al ejecutar la app, tengo definida una CLASSDATA. Esta data no es visible en otras classes que compone la misma app.
Se puede declarar una DATA static o public, como?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: O.T. - Equivalente a CLASSDATA en Harbour

Postby Antonio Linares » Wed Sep 21, 2016 9:59 am

Mario,

Debería ser visible.

Por ejemplo, la Clase TWindow tiene la CLASSDATA lRegistered

Prueba a hacer:

MsgInfo( TWindow():lRegistered )
regards, saludos

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

Re: O.T. - Equivalente a CLASSDATA en Harbour

Postby MarioG » Wed Sep 21, 2016 11:24 am

Gracias antonio
Me llamó la atención
Reviso mi codigo, algo no estaré haciendo bien
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: O.T. - Equivalente a CLASSDATA en Harbour

Postby xmanuel » Wed Sep 21, 2016 9:20 pm

Mario.
Es que no tiene que ser visible desde "otras clases" sino desde las clases derivadas de la clase donde se define...
Las CLASSDATA funciona como una DATA static por lo que puede ser llamada como te indica Antonio, simplemente llamando a la función constructora de la clase y enviándole la CLASSDATA o el CLASSMETHOD.
Ideal para crear una clase TUtil por ejemplo y poder hacer TUtil():miMetodo() o TUtil():miData esto evitaría tener que crear un objeto... :roll: :lol:
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: O.T. - Equivalente a CLASSDATA en Harbour

Postby MarioG » Thu Sep 22, 2016 1:12 pm

Estimado Manu;
Por si no recordás (por las consultas hechas en ese momento), me inicié en la programación POO leyendo un documento tuyo y otro de Rafa Carmona; que Maestros!
Como buen autodidacta, algunos conceptos quedaron prendidos por hilos :oops:
Y como nunca es tarde para aprender... seguiré estudiando

gracias!
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: O.T. - Equivalente a CLASSDATA en Harbour

Postby xmanuel » Thu Sep 22, 2016 2:21 pm

:D :D Claro que sí Mario...
Al menos, a mí, me tienes para cualquier duda que quieras resolver en cualquier momento, a estas alturas y después de lo que hemos pasado, te considero un AMIGO :lol:

Las CLASSDATAs son DATAS estáticas para la jerarquía de clases, esto quiere decir que el valor que le asignes a esa DATA en una instancia de una clase de la jerarquía (objeto) será visible en el resto de objetos instanciados de esas clases. Imagina esto:
Code: Select all  Expand view

CLASS TMiCls
  CLASSDATA miData
  ...
END CLASS

// y otra clase derivada o hija

CLASS TMiCls2 FROM TMiCls
...
END CLASS

// y otra
CLASS TMiCls3 FROM TMiCls
...
END CLASS

// o incluso derivada de una hija

CLASS TMiCls4 FROM TMiCls2
...
END CLASS

// Se podria hacer esto:

...
local oOb1 := TMiCls1():new()
local oOb2 := TMiCls2():new()
local oOb3 := TMiCls3():new()
local oOb4 := TMiCls4():new()

// Y si se hace esto:

oOb1:miData := "Asignado en obj1"

? oOb1:miData // Sale -> Asignado en obj1

// Pero si hago esto

? oOb4:miData // Sale esto también -> Asignado en obj1

// o esto sin instaciar un objeto

TMiCls():miData  // Sale esto también -> Asignado en obj1

 


Como ves ::miData al ser una DATA estática es visible en cualquier objeto instaciado de una clase de la jerarquía.
Para que ocurra que una CLASSDATA fuera visible en cualquier objeto de una aplicación tendrías que crear una clase por ejemplo TMiAplicacion con las CLASSDATAS que quieras y que de ahí derivaran todas las clases de tu aplicación.

Saludos amigo Mario
Espero poder ayudarte cuando lo necesites.

PD: Espero poder contar contigo como betatester de HDO. De momento la tengo terminada para SQLite y quiero implememta otro RDL para MySQL. Será bonito desarrollar una aplicación que funcione para cualquier base de datos cambiando sólo el RDL y no tener que tocar ni una letra del código incluso si se programa para ello sin tener que re-compilar la aplicación. Y todo eso con acceso nativo al cliente de la BBDD. :D
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: O.T. - Equivalente a CLASSDATA en Harbour

Postby MarioG » Fri Sep 23, 2016 11:30 am

Estimado Manu;
Te agradezco muchísimo tu predisposición y tiempo. Pero mayormente agradezco que nuestra pasión nos haya convertido en AMIGOS
Viendo tu sencillo ej. concluyo es que mis conceptos no estan alejados; por lo que seguramente, estaré cometiendo algún error.

En cuanto a betatester... acá estoy!

seguimos en contacto...
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 34 guests