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