Hola a todos.
En un formulario creado en el IDE con la propiedad nFormType =
ftMDICHILD. si asigno nMinHeight y nMinWidth distintos de 0 al maximizar
dentro de su MDIframe se queda visible la barra del titulo. ¿Es esto
normal?. Si no asignamos estas propiedades no se ve el titulo de la ventana.
--
Saludos.
Miguel A. Torrellas
Telf.: 976642728
Movil: 610316131
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.
TForm
TForm
"Miguel,
> En un formulario creado en el IDE con la propiedad nFormType = ftMDICHILD.
> si asigno nMinHeight y nMinWidth distintos de 0 al maximizar dentro de su
> MDIframe se queda visible la barra del titulo. ¿Es esto normal?. Si no
> asignamos estas propiedades no se ve el titulo de la ventana.
No he tenido tiempo de probarlo, pero parece normal. La verdad es que no
tiene mucho sentido usar esas propiedades en una ventana mdichild; pero en
el caso de usarlas, supongo que es normal que no se maximize completamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com
> En un formulario creado en el IDE con la propiedad nFormType = ftMDICHILD.
> si asigno nMinHeight y nMinWidth distintos de 0 al maximizar dentro de su
> MDIframe se queda visible la barra del titulo. ¿Es esto normal?. Si no
> asignamos estas propiedades no se ve el titulo de la ventana.
No he tenido tiempo de probarlo, pero parece normal. La verdad es que no
tiene mucho sentido usar esas propiedades en una ventana mdichild; pero en
el caso de usarlas, supongo que es normal que no se maximize completamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com
TForm
Un TFORM con nBorderStyle = bsDIALOG
with object Tform():new()
if :showmodal == mrOK
msgBox( :dato )
endif
end object
Si salgo del TForm con ::end(), sigo teniendo acceso a los datas del Tform.
¿Cuando se destruye totalmente el formulario? o dicho de otra manera
hasta cuando se tiene acceso a sus datas.
En el siguiente show() emplea los mismos recursos del sistema o no.
Porque en sucesivas llamadas iríamos necesitando mas y mas recursos del SO.
El Recolector de basura cuando actúa. Y que es lo que destruye.
Gracias por anticipado.
Miguel A. Torrellas
Telf.: 976642728
Movil: 610316131
Miguel A. Torrellas escribió:
> Hola a todos.
>
> En un formulario creado en el IDE con la propiedad nFormType =
> ftMDICHILD. si asigno nMinHeight y nMinWidth distintos de 0 al maximizar
> dentro de su MDIframe se queda visible la barra del titulo. ¿Es esto
> normal?. Si no asignamos estas propiedades no se ve el titulo de la
> ventana.
>
with object Tform():new()
if :showmodal == mrOK
msgBox( :dato )
endif
end object
Si salgo del TForm con ::end(), sigo teniendo acceso a los datas del Tform.
¿Cuando se destruye totalmente el formulario? o dicho de otra manera
hasta cuando se tiene acceso a sus datas.
En el siguiente show() emplea los mismos recursos del sistema o no.
Porque en sucesivas llamadas iríamos necesitando mas y mas recursos del SO.
El Recolector de basura cuando actúa. Y que es lo que destruye.
Gracias por anticipado.
Miguel A. Torrellas
Telf.: 976642728
Movil: 610316131
Miguel A. Torrellas escribió:
> Hola a todos.
>
> En un formulario creado en el IDE con la propiedad nFormType =
> ftMDICHILD. si asigno nMinHeight y nMinWidth distintos de 0 al maximizar
> dentro de su MDIframe se queda visible la barra del titulo. ¿Es esto
> normal?. Si no asignamos estas propiedades no se ve el titulo de la
> ventana.
>
TForm
Miguel,
> Un TFORM con nBorderStyle = bsDIALOG
>
>
> with object Tform():new()
>
> if :showmodal == mrOK
> msgBox( :dato )
> endif
>
> end object
>
> Si salgo del TForm con ::end(), sigo teniendo acceso a los datas del
> Tform.
No debes cerrarlo con ::end(), sino con ::Close()
> ¿Cuando se destruye totalmente el formulario? o dicho de otra manera hasta
> cuando se tiene acceso a sus datas.
Hay que distinguir entre 2 cosas:
- Los recursos de windows (handles de ventana y controles, etc.)
- Los objetos a nievel de Xailer
Los primeros se destruyen inmediatamente (excepto si lHideOnClose está a
..T.), pero los segundos permanecen hasta que no quede ninguna referencia
viva a esos objetos; en el caso del formulario, que no quede ninguna
variable que apunte al objeto formulario.
Hasta que eso ocurre, todos los objetos son accesibles, incluidas todas sus
propiedades. No obstante, algunas propiedades de algunos controles son
resueltas llamando al API con el handle del control, y por lo tanto no se
pueden resolver una vez que el control ha sido destruido; pero la mayoría no
son así, y se pueden leer sin ningún problema.
> En el siguiente show() emplea los mismos recursos del sistema o no.
> Porque en sucesivas llamadas iríamos necesitando mas y mas recursos del
> SO.
No, se usarían nuevos recursos del sistema. Pero ten en cuenta que los
anteriores ya fueron liberados. En el caso de los objetos, depende de lo que
estés haciendo: si estás usando una referencia viva al formulario anterior,
pues estarías reutilizando el objeto. Pero si no, estarías creando un objeto
nuevo.
> El Recolector de basura cuando actúa. Y que es lo que destruye.
Actúa cuando ya no queda ninguna referencia viva al objeto, y destruye el
propio objeto, es decir, todas sus estructuras de datos y memoria consumida.
En el caso de que consiguieras eliminar cualquier referencia a un objeto
para que el recolector de basura actuase, pero sin haber destruido
previamente el control o ventana, estarías provocando un problema, ya que
dicha ventana seguiría funcionando pero el objeto que la sustenta habría
dejado de existir. Esa situación se saldaría, casi con total seguridad, con
un bonito GPF.
--
Un saludo,
José F. Giménez
http://www.xailer.com
> Un TFORM con nBorderStyle = bsDIALOG
>
>
> with object Tform():new()
>
> if :showmodal == mrOK
> msgBox( :dato )
> endif
>
> end object
>
> Si salgo del TForm con ::end(), sigo teniendo acceso a los datas del
> Tform.
No debes cerrarlo con ::end(), sino con ::Close()
> ¿Cuando se destruye totalmente el formulario? o dicho de otra manera hasta
> cuando se tiene acceso a sus datas.
Hay que distinguir entre 2 cosas:
- Los recursos de windows (handles de ventana y controles, etc.)
- Los objetos a nievel de Xailer
Los primeros se destruyen inmediatamente (excepto si lHideOnClose está a
..T.), pero los segundos permanecen hasta que no quede ninguna referencia
viva a esos objetos; en el caso del formulario, que no quede ninguna
variable que apunte al objeto formulario.
Hasta que eso ocurre, todos los objetos son accesibles, incluidas todas sus
propiedades. No obstante, algunas propiedades de algunos controles son
resueltas llamando al API con el handle del control, y por lo tanto no se
pueden resolver una vez que el control ha sido destruido; pero la mayoría no
son así, y se pueden leer sin ningún problema.
> En el siguiente show() emplea los mismos recursos del sistema o no.
> Porque en sucesivas llamadas iríamos necesitando mas y mas recursos del
> SO.
No, se usarían nuevos recursos del sistema. Pero ten en cuenta que los
anteriores ya fueron liberados. En el caso de los objetos, depende de lo que
estés haciendo: si estás usando una referencia viva al formulario anterior,
pues estarías reutilizando el objeto. Pero si no, estarías creando un objeto
nuevo.
> El Recolector de basura cuando actúa. Y que es lo que destruye.
Actúa cuando ya no queda ninguna referencia viva al objeto, y destruye el
propio objeto, es decir, todas sus estructuras de datos y memoria consumida.
En el caso de que consiguieras eliminar cualquier referencia a un objeto
para que el recolector de basura actuase, pero sin haber destruido
previamente el control o ventana, estarías provocando un problema, ya que
dicha ventana seguiría funcionando pero el objeto que la sustenta habría
dejado de existir. Esa situación se saldaría, casi con total seguridad, con
un bonito GPF.
--
Un saludo,
José F. Giménez
http://www.xailer.com
TForm
Jose F. Gimenez escribió:
> Miguel,
>
>> Un TFORM con nBorderStyle = bsDIALOG
>>
>>
>> with object Tform():new()
>>
>> if :showmodal == mrOK
>> msgBox( :dato )
>> endif
>>
>> end object
>>
>> Si salgo del TForm con ::end(), sigo teniendo acceso a los datas del
>> Tform.
>
> No debes cerrarlo con ::end(), sino con ::Close()
Lo cierro siempre con ::Close(), he puesto ::end() porque en algún sitio
he leido que end() lo destruye totalmente -por probar-.
>
>
>> ¿Cuando se destruye totalmente el formulario? o dicho de otra manera hasta
>> cuando se tiene acceso a sus datas.
>
> Hay que distinguir entre 2 cosas:
> - Los recursos de windows (handles de ventana y controles, etc.)
> - Los objetos a nievel de Xailer
>
> Los primeros se destruyen inmediatamente (excepto si lHideOnClose está a
> .T.), pero los segundos permanecen hasta que no quede ninguna referencia
> viva a esos objetos; en el caso del formulario, que no quede ninguna
> variable que apunte al objeto formulario.
>
En las lineas de programa anteriores, en cual se destruiria completamente.
> Hasta que eso ocurre, todos los objetos son accesibles, incluidas todas sus
> propiedades. No obstante, algunas propiedades de algunos controles son
> resueltas llamando al API con el handle del control, y por lo tanto no se
> pueden resolver una vez que el control ha sido destruido; pero la mayoría no
> son así, y se pueden leer sin ningún problema.
>
>
>> En el siguiente show() emplea los mismos recursos del sistema o no.
>> Porque en sucesivas llamadas iríamos necesitando mas y mas recursos del
>> SO.
>
> No, se usarían nuevos recursos del sistema. Pero ten en cuenta que los
> anteriores ya fueron liberados. En el caso de los objetos, depende de lo que
> estés haciendo: si estás usando una referencia viva al formulario anterior,
> pues estarías reutilizando el objeto. Pero si no, estarías creando un objeto
> nuevo.
>
>
>> El Recolector de basura cuando actúa. Y que es lo que destruye.
>
> Actúa cuando ya no queda ninguna referencia viva al objeto, y destruye el
> propio objeto, es decir, todas sus estructuras de datos y memoria consumida.
> En el caso de que consiguieras eliminar cualquier referencia a un objeto
> para que el recolector de basura actuase, pero sin haber destruido
> previamente el control o ventana, estarías provocando un problema, ya que
> dicha ventana seguiría funcionando pero el objeto que la sustenta habría
> dejado de existir. Esa situación se saldaría, casi con total seguridad, con
> un bonito GPF.
>
> Miguel,
>
>> Un TFORM con nBorderStyle = bsDIALOG
>>
>>
>> with object Tform():new()
>>
>> if :showmodal == mrOK
>> msgBox( :dato )
>> endif
>>
>> end object
>>
>> Si salgo del TForm con ::end(), sigo teniendo acceso a los datas del
>> Tform.
>
> No debes cerrarlo con ::end(), sino con ::Close()
Lo cierro siempre con ::Close(), he puesto ::end() porque en algún sitio
he leido que end() lo destruye totalmente -por probar-.
>
>
>> ¿Cuando se destruye totalmente el formulario? o dicho de otra manera hasta
>> cuando se tiene acceso a sus datas.
>
> Hay que distinguir entre 2 cosas:
> - Los recursos de windows (handles de ventana y controles, etc.)
> - Los objetos a nievel de Xailer
>
> Los primeros se destruyen inmediatamente (excepto si lHideOnClose está a
> .T.), pero los segundos permanecen hasta que no quede ninguna referencia
> viva a esos objetos; en el caso del formulario, que no quede ninguna
> variable que apunte al objeto formulario.
>
En las lineas de programa anteriores, en cual se destruiria completamente.
> Hasta que eso ocurre, todos los objetos son accesibles, incluidas todas sus
> propiedades. No obstante, algunas propiedades de algunos controles son
> resueltas llamando al API con el handle del control, y por lo tanto no se
> pueden resolver una vez que el control ha sido destruido; pero la mayoría no
> son así, y se pueden leer sin ningún problema.
>
>
>> En el siguiente show() emplea los mismos recursos del sistema o no.
>> Porque en sucesivas llamadas iríamos necesitando mas y mas recursos del
>> SO.
>
> No, se usarían nuevos recursos del sistema. Pero ten en cuenta que los
> anteriores ya fueron liberados. En el caso de los objetos, depende de lo que
> estés haciendo: si estás usando una referencia viva al formulario anterior,
> pues estarías reutilizando el objeto. Pero si no, estarías creando un objeto
> nuevo.
>
>
>> El Recolector de basura cuando actúa. Y que es lo que destruye.
>
> Actúa cuando ya no queda ninguna referencia viva al objeto, y destruye el
> propio objeto, es decir, todas sus estructuras de datos y memoria consumida.
> En el caso de que consiguieras eliminar cualquier referencia a un objeto
> para que el recolector de basura actuase, pero sin haber destruido
> previamente el control o ventana, estarías provocando un problema, ya que
> dicha ventana seguiría funcionando pero el objeto que la sustenta habría
> dejado de existir. Esa situación se saldaría, casi con total seguridad, con
> un bonito GPF.
>
TForm
Miguel,
> Lo cierro siempre con ::Close(), he puesto ::end() porque en algún sitio
> he leido que end() lo destruye totalmente -por probar-.
No es que se destruya completamente, sino que si lHideOnClose es .t.,
entonces ::Close() solamente oculta el formulario, y para destuirlo hay que
llamar a ::End(). Pero ::End() sólo se debe llamar en ese caso, y una vez
que el formulario se ha ocultado.
En el caso normal, Xailer ya se encarga de llamar a ::End() y liberar todos
los recursos en el momento adecuado.
> En las lineas de programa anteriores, en cual se destruiria completamente.
Al llegar a END OBJECT se acaban las referencias vivas al objeto, por lo que
a partir de ahí, en la siguente pasada del recolector de basura, se elimina
destruye el objeto completamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com
> Lo cierro siempre con ::Close(), he puesto ::end() porque en algún sitio
> he leido que end() lo destruye totalmente -por probar-.
No es que se destruya completamente, sino que si lHideOnClose es .t.,
entonces ::Close() solamente oculta el formulario, y para destuirlo hay que
llamar a ::End(). Pero ::End() sólo se debe llamar en ese caso, y una vez
que el formulario se ha ocultado.
En el caso normal, Xailer ya se encarga de llamar a ::End() y liberar todos
los recursos en el momento adecuado.
> En las lineas de programa anteriores, en cual se destruiria completamente.
Al llegar a END OBJECT se acaban las referencias vivas al objeto, por lo que
a partir de ahí, en la siguente pasada del recolector de basura, se elimina
destruye el objeto completamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com