In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Orden de creacion de datas

Foro de Xailer profesional en español
Responder
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Orden de creacion de datas

Mensaje por Angel »

Cuando un formulario es creado, ¿se crean antes los objetos del
formulario y posteriormente las datas?
Si se intenta de esta manera que un objeto del formulario reciba su
valor a partir de una data del mismo formulario, el valor no es
asignado. Pongo un ejemplo de código:
// -------------------------------------------------------
CLASS FrmTest FROM TForm
COMPONENT oEdit
DATA cText
METHOD CreateForm()
METHOD oEditCreate( oSender )
ENDCLASS
METHOD oEditCreate( oSender ) CLASS FrmTest
oSender:Value := ::cText
RETURN Nil
// --------------------------------------------------------
Al formulario se le llama de esta manera:
FUNCTION FrmTestCreate()
LOCAL oFrm
WITH OBJECT oFrm:=FrmTest():CreateForm()
:cText:="Prueba"
:Show()
END WITH
RETURN NIL
Al crearse, el objeto TEdit del formulario carece de valor alguno. En
cambio, si en vez de utilizar una data, se utiliza una variable pública
por ejemplo, el valor si es asignado.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9440
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Orden de creacion de datas

Mensaje por ignacio »

Ángel,
Orden de ejecución
1) Creación del formulario
2) Se ejecuta CreateForm() del formulario
3) Creación de los controles desde el propio CreateForm (a continuación se
dispara el OnCreate de cada control)
3) Se ejecuta OnInitialize() del formulario
En consecuencia, esto funciona:
CLASS TForm1 FROM TForm
DATA cPrueba INIT "prueba"
METHOD CreateForm()
METHOD Button1Create( oSender )
ENDCLASS
METHOD Button1Create( oSender ) CLASS TForm1
oSender:cText := ::cPrueba
RETURN Nil
Porque la data ::cPrueba se asigna en CreateForm() antes de la creación
cualquier control.
Ahora bien, si pretende asignar el valor de cPrueba una vez que el
formulario ha sido creado entonces no le funcionará. La solución más
sencilla es que asigne el valor de cPrueba en en línea o en el evento
OnCreate del formulario. Fijese que en el evento OnInitialize del formulario
ya es demasiado tarde.
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:[email=48db86d8@ozsrv2.ozlan.local...]48db86d8@ozsrv2.ozlan.local...[/email]
> Cuando un formulario es creado, ¿se crean antes los objetos del formulario
> y posteriormente las datas?
>
> Si se intenta de esta manera que un objeto del formulario reciba su valor
> a partir de una data del mismo formulario, el valor no es asignado. Pongo
> un ejemplo de código:
>
> // -------------------------------------------------------
> CLASS FrmTest FROM TForm
>
> COMPONENT oEdit
>
> DATA cText
>
> METHOD CreateForm()
> METHOD oEditCreate( oSender )
>
> ENDCLASS
>
> METHOD oEditCreate( oSender ) CLASS FrmTest
> oSender:Value := ::cText
> RETURN Nil
> // --------------------------------------------------------
>
> Al formulario se le llama de esta manera:
>
> FUNCTION FrmTestCreate()
> LOCAL oFrm
> WITH OBJECT oFrm:=FrmTest():CreateForm() :cText:="Prueba"
> :Show()
> END WITH
> RETURN NIL
>
> Al crearse, el objeto TEdit del formulario carece de valor alguno. En
> cambio, si en vez de utilizar una data, se utiliza una variable pública
> por ejemplo, el valor si es asignado.
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Angel
Mensajes: 135
Registrado: Mié Mar 21, 2007 1:11 pm

Orden de creacion de datas

Mensaje por Angel »

Muchas gracias, sobre todo por la rapidez en contestar.
Un saludo
Responder