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
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.
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?
-
- Mensajes: 137
- Registrado: Vie Jul 29, 2005 8:49 am
- Ubicación: Valencia - España
- Contactar:
¿Cuando se destruye completamente un formulario?
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
>
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
>
¿Cuando se destruye completamente un formulario?
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
>>
>
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
>>
>
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
¿Cuando se destruye completamente un formulario?
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
>
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
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
¿Cuando se destruye completamente un formulario?
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
>>>
>>
>
>
>
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
>>>
>>
>
>
>
¿Cuando se destruye completamente un formulario?
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
>
> 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
¿Cuando se destruye completamente un formulario?
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
> 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