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.

¿Cuando se destruye completamente un formulario?

Foro de Xailer profesional en español
Responder
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Cuando se destruye completamente un formulario?

Mensaje por joseluis »

Hola
Este código desde un formulario
METHOD OtroForm() FORM tForm1
LOCAL oForm
oForm := tForm1():New( Self )
oForm:Showmodal()
oForm:....
RETURN NIL
Después del oForm:ShowModal() todaví­a tengo acceso al formulario.
¿Cuando se destruye?
Saludos y gracias,
José Luis Capel
CapelSoft
Mensajes: 137
Registrado: Vie Jul 29, 2005 8:49 am
Ubicación: Valencia - España
Contactar:

¿Cuando se destruye completamente un formulario?

Mensaje por CapelSoft »

Ups, un error en el código.
Lo correcto es:
> METHOD OtroForm() FORM tForm1
>
> LOCAL oForm
>
> oForm := tFormOtro():New( Self )
>
> oForm:Showmodal()
>
> oForm:....
>
>
> RETURN NIL
Saludos y disculpad el error.
José Luis Capel
José Luis Capel escribió:
> Hola
>
> Este código desde un formulario
>
> METHOD OtroForm() FORM tForm1
>
> LOCAL oForm
>
> oForm := tForm1():New( Self )
>
> oForm:Showmodal()
>
> oForm:....
>
>
> RETURN NIL
>
> Después del oForm:ShowModal() todaví­a tengo acceso al formulario.
> ¿Cuando se destruye?
>
> Saludos y gracias,
> José Luis Capel
>
--
José Luis Capel
http://www.CapelBlog.es
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

¿Cuando se destruye completamente un formulario?

Mensaje por Xevi »

José Luis,
Fíjate que estás creando oForm com local, lo cual quiere decir que su ámbito
es sólo para el método en el cual has declarado oForm.
Cuando finalize el método, (RETURN), se destruye la variable y con ello el
valor que en este caso es un Form.
Creo que es así, sinó alguien que me corrija.
Un Saludo,
Xevi.
"José Luis Capel" <capelsoft@terra.es> escribió en el mensaje
news:[email=432f086b@ozsrvnegro.ozlan.local...]432f086b@ozsrvnegro.ozlan.local...[/email]
> Ups, un error en el código.
>
> Lo correcto es:
>
> > METHOD OtroForm() FORM tForm1
> >
> > LOCAL oForm
> >
> > oForm := tFormOtro():New( Self )
> >
> > oForm:Showmodal()
> >
> > oForm:....
> >
> >
> > RETURN NIL
>
> Saludos y disculpad el error.
> José Luis Capel
>
> José Luis Capel escribió:
>> Hola
>>
>> Este código desde un formulario
>>
>> METHOD OtroForm() FORM tForm1
>>
>> LOCAL oForm
>>
>> oForm := tForm1():New( Self )
>>
>> oForm:Showmodal()
>>
>> oForm:....
>>
>>
>> RETURN NIL
>>
>> Después del oForm:ShowModal() todavía tengo acceso al formulario. ¿Cuando
>> se destruye?
>>
>> Saludos y gracias,
>> José Luis Capel
>>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

¿Cuando se destruye completamente un formulario?

Mensaje por ignacio »

José Luis,
José Luis,
La ventana subyacente de Windows, QUE NO EL OBJETO de Xailer, se destruye
cuando se cierra el formulario, siempre que lHideOnClose no esté a
verdadero.
El objeto de Xailer se destruye automáticamente cuando deja de ser
referenciado y el recolectar de basura de xHarbour lo destruye.
Un saludo,
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:432ef8b4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola
>
> Este código desde un formulario
>
> METHOD OtroForm() FORM tForm1
>
> LOCAL oForm
>
> oForm := tForm1():New( Self )
>
> oForm:Showmodal()
>
> oForm:....
>
>
> RETURN NIL
>
> Después del oForm:ShowModal() todavía tengo acceso al formulario. ¿Cuando
> se destruye?
>
> Saludos y gracias,
> José Luis Capel
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Cuando se destruye completamente un formulario?

Mensaje por joseluis »

Xevi!!
Gracias...
Saludos,
José Luis Capel
Xevi escribió:
>
> José Luis,
>
> Fí­jate que estás creando oForm com local, lo cual quiere decir que su ámbito
> es sólo para el método en el cual has declarado oForm.
> Cuando finalize el método, (RETURN), se destruye la variable y con ello el
> valor que en este caso es un Form.
>
> Creo que es así­, sinó alguien que me corrija.
>
>
> Un Saludo,
> Xevi.
>
>
> "José Luis Capel" <capelsoft@terra.es> escribió en el mensaje
> news:[email=432f086b@ozsrvnegro.ozlan.local...]432f086b@ozsrvnegro.ozlan.local...[/email]
>
>>Ups, un error en el código.
>>
>>Lo correcto es:
>>
>>
>>>METHOD OtroForm() FORM tForm1
>>>
>>> LOCAL oForm
>>>
>>> oForm := tFormOtro():New( Self )
>>>
>>> oForm:Showmodal()
>>>
>>> oForm:....
>>>
>>>
>>>RETURN NIL
>>
>>Saludos y disculpad el error.
>>José Luis Capel
>>
>>José Luis Capel escribió:
>>
>>>Hola
>>>
>>>Este código desde un formulario
>>>
>>>METHOD OtroForm() FORM tForm1
>>>
>>> LOCAL oForm
>>>
>>> oForm := tForm1():New( Self )
>>>
>>> oForm:Showmodal()
>>>
>>> oForm:....
>>>
>>>
>>>RETURN NIL
>>>
>>>Después del oForm:ShowModal() todaví­a tengo acceso al formulario. ¿Cuando
>>>se destruye?
>>>
>>>Saludos y gracias,
>>>José Luis Capel
>>>
>>
>
>
>
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

¿Cuando se destruye completamente un formulario?

Mensaje por joseluis »

Ignacio,
>
> La ventana subyacente de Windows, QUE NO EL OBJETO de Xailer, se destruye
> cuando se cierra el formulario, siempre que lHideOnClose no esté a
> verdadero.
Entendido. Osea que después del oForm:ShowModal() ya no puedo volver a
hacer otro oForm:Show() dado que la ventana *sí­* fue destruida. ¿No?
>
> El objeto de Xailer se destruye automáticamente cuando deja de ser
> referenciado y el recolectar de basura de xHarbour lo destruye.
>
Tambien entendido. Por eso, aún despues de cerrar el formulario tengo
acceso a sus datas... eso me gusta... está muy bien!!!
Saludos y gracias!
José Luis Capel
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

¿Cuando se destruye completamente un formulario?

Mensaje por jfgimenez »

José Luis,
> Entendido. Osea que después del oForm:ShowModal() ya no puedo volver a
> hacer otro oForm:Show() dado que la ventana *sí* fue destruida. ¿No?
Efectívamente.
> Tambien entendido. Por eso, aún despues de cerrar el formulario tengo
> acceso a sus datas... eso me gusta... está muy bien!!!
Exactamente. No obstante, tienes que tener en cuenta un detalle: los
controles también han sido ya destruidos, aunque siguen existiendo los
objetos correspondientes.
P.ej: si tienes un control oEdit1 en un formulario, una vez que se haya
cerrado y destruido, podrás seguir accediendo al valor de oEdit1
(::oEdit1:Value) sin ningún problema.
Pero en cambio, hay algunas propiedades de algunos controles que no se
guardan en el objeto, sino que se obtienen directamente del control a través
del API. P.ej., si creas un listbox con lMultipleSel a .T., podrás obtener
un array con los items que estén seleccionados usando el método
GetSelItems(), pero sólo mientras el control existe. Una vez que el
formulario (y el control) han sido destruidos, ese método devolverá siempre
un array vacio.
Por eso (y otras razones) existe la propiedad lHideOnClose de TForm.
Poniéndola a .T. cuando el usuario cierra el formulario o se llama a
:Close() por código, el formulario no se destruye, sino que simplemente se
oculta. Todos los controles que contiene siguen existiendo y se puede
consultar cualquier propiedad. Además, puedes volver a llamar a :Show() o
:ShowModal() cuando quieras. Pero eso sí, cuando de verdad no necesites ese
formulario y quieras destruirlo deberás llamar al método :End() del mismo,
de lo contrario seguirá existiendo mientras el programa siga funcionando.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder