Por si te sirve, algunos conceptos:

a) Las tablas o los cursores que uses deben abrirse en el evento load, a menos que le pases un xml a otro formulario con un cursor adentro, en cuyo caso necesariamente deberán entrar por el init

b) los controles contenidos en cualquier objeto se instancian primero, en el caso del formulario, todo lo que le pongas se va a instanciar primero, por ejemplo una grilla. Esta se instancia primero y luego se instancia el form. Por eso, si vinculas una tabla o cursor a una grilla, primero se debe abrir o generar en el evento load, para que esté disponible antes de que se genere la grilla. La secuencia seria: form load, grid init, form init.

c) podés evitar problemas mandando un thisform.bindcontrols = .f. en el evento load y luego que se instanciaron todos los controles, en el init del form mandás un thisform.bindcontrols = .t. Fijate en la ayuda y vas a ver que bueno que es el bindcontrols

d) respecto del uso de clases anidadas, estás considerando usar dodefault() ? O sea, en el evento load o el evento init del form que se instancia a partir de la segunda clase en tu ejemplo, le podrías poner algo así:

Evento load del form secundario
dodfault() && hace correr el codigo del evento load de la clase madre
el código del segundo formulario en el evento load viene a continuación del dodefault()

Vos mencionás un problema con el init del form instanciado a partir de la segunda clase, la de los colores, etc Supongamos que la clase madre se llame frmMadre y la de los colores frmColores

Deberías poner esto en el init de ese form (el de los colores):

frmMadre::init && con el operador :: hacés que primero funcione el init de la clase madre

código especial para ese form ( lo que necesites poner aquí)

frmColores::init && después que instanciaste todo lo demás, le hacés correr el código del init de la clase colores

En fin, tenés que jugar con algo así, meterle las famosas HCS (horas c.../silla) hasta que salga

Rafael Copquin





El 25/01/2011 8:26, francisco prieto escribió:
Entonces Eduardo el problema es que las clases se ejecutan en el init de las mismas. Eso esta muy mal.

A lo sumo si funcionaba bien podes hacer que la clase de estética no se ejecute en el init. Y ejecutarla desde el init de la clase base.

Saludos,

Pancho
Cordoba

El 25 de enero de 2011 08:18, Eduardo E. Tkachuk <[email protected] <mailto:[email protected]>> escribió:

    Pancho

    No, no lo estoy haciendo desde el Load ni desde el Init, las dos
    clases están pegadas al formulario y se ejecutan desde el init de
    cada clase correspondiente (automáticas). Obviamente tendría que
    hacerlo como comentas, que es lo correcto.

    Creo que la implementación va quedas a futuro, así que los
    formularios quedaran con estética muy básica.

    Gracias igual

    *De:*[email protected] <mailto:[email protected]>
    [mailto:[email protected] <mailto:[email protected]>] *En nombre de
    *francisco prieto
    *Enviado el:* Martes, 25 de Enero de 2011 07:06 a.m.
    *Para:* GUFA List Member
    *Asunto:* [GUFA] Re: [GUFA] RE: [GUFA] Re: [GUFA] Ejecución de
    Clases controladas

    Eduardo:

    Pregunta?

    La clase que conecta con el sql la debes estar llamando en el
    Load.... eso es lo mas probable, al menos con las entidades que se
    hacen referencia en el controlsource o recordsource.

    La clase de estética, la tenes que llamar en el Init, cuando todos
    los objetos ya fueron creados.

    De esta forma los datos se resuelven primero y la estética luego.

    Estas haciéndolo así y da error?

    Saludos,

    Pancho

    Córdoba

    El 24 de enero de 2011 23:23, Eduardo E. Tkachuk
    <[email protected] <mailto:[email protected]>>
    escribió:

    Francisco

    Si es cierto , faltan cosas , gracias por contestar

    La Clase no trabaja con tablas de Fox

    La Versión de Fox es VFP 9 SP2

    Los formularios trabajan todos con entorno privado de datos

    La clase esta en el formulario base, o sea la clase de donde se
    heredan los demás.

    He tratado de colocar esta clase en los formularios finales , no
    desde el formulario clase original , pero no va. Me está atrasando
    en los desarrollos , no mucho obvio , esto lo considero parte del
    marco de trabajo un agregado

    *De:*[email protected] <mailto:[email protected]>
    [mailto:[email protected] <mailto:[email protected]>] *En nombre de
    *francisco prieto
    *Enviado el:* Lunes, 24 de Enero de 2011 08:41 p.m.
    *Para:* GUFA List Member
    *Asunto:* [GUFA] Re: [GUFA] Ejecución de Clases controladas

    Por lo que comentas...

    Me imagino la siguiente situación.

    Esta clase que setea los colores, fuentes, etc... Trabaja con
    tablas de Fox?

    La versión de VFP cual es?

    Los formularios trabajan con entorno privado de datos?

    El uso de esta clase que setea la estética, la ejecutas en el Load
    o en el Init del formulario?

    Como ves son muchas preguntas sin respuesta para empezar a ayudarte...

    Contestalas y seguimos.

    Saludos,

    Pancho

    Córdoba

    El 24 de enero de 2011 20:23, Eduardo E. Tkachuk
    <[email protected] <mailto:[email protected]>>
    escribió:

    Gente

    Hace días que estoy dando vueltas con un tema que hasta ahora no
    se me presento nunca.

    Resulta que en los formularios tengo una clase conexión encargada
    de traer los datos del SQL . Esta clase trabaja bien,  uno setea
    el método (ejemplo : Consultar por Id), se la invoca con el
    parámetro de Id y consulta la entidad que tiene seteada. En esto
    no hay problema , el problema salto cuando se le agrego otra clase
    que hace que el formulario y los controles se seten de un mismo
    color , fuente etc. Etc. .

    El error precisamente es que la nueva clase se ejecuta por delante
    de esta otra clase de conexión y empiezan a saltar/chillar los
    link de los objetos con los campo, así por ejemplo el Formulario
    de la entidad Países al arrancar ,los objetos TextBox que están
    asociados, chillan, indicándome que la entidad Países no existe.
     Si le coloco Ignorar y examino el área de trabajo , la entidad se
    creó sin problemas con el id invocado , por eso me doy cuenta que
    se está ejecutando en segundo plano, pero tarde para que en el
    arranqué los objetos no chillen.

    Creo que estoy resignándome a no usar la clase de seteos de los
    objetos , intente jugar a mano con las instancias de estos objetos
    pero no resulto.

    Bueno si alguien tiene algún prueba para ver qué pasa , soy todo
    oídos.

    Saludos y gracias

    Eduardo


Responder a