Página 1 de 1

Destruir ventanas no modales

Publicado: Vie Oct 17, 2008 1:13 am
por Christian
Estoy comenzando a trabajar con ventanas modales y asi las creo y las llamo:
procedure EditaLineasAfuera()
static oWnd
if valtype(oWnd)<>'O'
oWnd:=tEditaLineasAfuera():New()
endif
oWnd:Show()
return
Pero mi duda existencial es cuando y como las destruyo ?, desde ya
muchas gracias

Destruir ventanas no modales

Publicado: Vie Oct 17, 2008 5:55 pm
por Rene Flores
Christian:
Creo que estas haciendo algo mal:
> procedure EditaLineasAfuera()
> static oWnd
>
> if valtype(oWnd)<>'O'
> oWnd:=tEditaLineasAfuera():New()
> endif
> oWnd:Show()
>
> return
¿ Cual es el contenedor de la ventana ?, quiero decir, el metodo
constructor NEW, requiere recibir un contenedor del formulario (SELF o
APPLICATION segun sea el caso.
Tampoco necesitas guardar en una variable estatica el valor de una
ventana, el objeto APPLICATION de Xailer lleva un control de los
formularios creados, por lo que no es necesario que guardes el
formulario en una variable.
> Pero mi duda existencial es cuando y como las destruyo ?, desde ya
> muchas gracias
No es necesario destruirla, cuado ejecutas el metodo ::Close() del
formulario este se encarga de ello, si usas la propiedad de
::lHideOnClose, entonces el formulario no se destruye, simplemente se
oculta y se vuelve a mostrar cuando lo necesitas nuevamente, mejorando
el desempeño de la aplicacion al no tener que disponer del objeto en
memoria.
En general no es necesario complicarse la vida como en el "otro
producto" porque Xailer tiene varias maneras de controlar tanto el MDI
como el SDI y todas accesibles usando propiedades ya sea del objeto
APLICATION o del objeto TFORM.
Saludos
Rene Flores
http://www.ciber-tec.com
--------------------------
Nos vemos en España del 21 de Noviembre al 1 de Diciembre
Mas informes: www.geroa-software.com/cursos.htm

Destruir ventanas no modales

Publicado: Jue Oct 23, 2008 2:29 pm
por Christian
Muchas gracias por la respuestas, viendo lo que me dijiste lo estoy
haciendo asi :
local i
i:=ascan(Application:aForms,{|x|
upper(alltrim(x:classname)) == 'TEDITALINEASAFUERA' })
if i==0
tEditaLineasAfuera():New(Application):Show()
else
Application:aForms:Restore()
Application:aForms:SetFocus()
Application:aForms:Show()
endif
y me funciona bien, por las dudas si sabes de algun post donde pueda
aprender mas de ventanas mdi y no modal enviame el link, muchas gracias.
Rene Flores escribió:
> Christian:
>
> Creo que estas haciendo algo mal:
>
>> procedure EditaLineasAfuera()
>> static oWnd
>>
>> if valtype(oWnd)<>'O'
>> oWnd:=tEditaLineasAfuera():New()
>> endif
>> oWnd:Show()
>>
>> return
>
> ¿ Cual es el contenedor de la ventana ?, quiero decir, el metodo
> constructor NEW, requiere recibir un contenedor del formulario (SELF o
> APPLICATION segun sea el caso.
>
> Tampoco necesitas guardar en una variable estatica el valor de una
> ventana, el objeto APPLICATION de Xailer lleva un control de los
> formularios creados, por lo que no es necesario que guardes el
> formulario en una variable.
>
>> Pero mi duda existencial es cuando y como las destruyo ?, desde ya
>> muchas gracias
>
> No es necesario destruirla, cuado ejecutas el metodo ::Close() del
> formulario este se encarga de ello, si usas la propiedad de
> ::lHideOnClose, entonces el formulario no se destruye, simplemente se
> oculta y se vuelve a mostrar cuando lo necesitas nuevamente, mejorando
> el desempeño de la aplicacion al no tener que disponer del objeto en
> memoria.
>
> En general no es necesario complicarse la vida como en el "otro
> producto" porque Xailer tiene varias maneras de controlar tanto el MDI
> como el SDI y todas accesibles usando propiedades ya sea del objeto
> APLICATION o del objeto TFORM.
>
> Saludos
>
> Rene Flores
> http://www.ciber-tec.com
> --------------------------
> Nos vemos en España del 21 de Noviembre al 1 de Diciembre
> Mas informes: www.geroa-software.com/cursos.htm