Ventanas MDI

Post Reply
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Ventanas MDI

Post by Armando »

Amigos del foro:

En una aplicación donde uso ventanas MDI cuyo código muestro a continuación:

DEFINE WINDOW oWnd MDICHILD OF oWindow FROM 0,0 TO 30,54
oWnd:bGotFocus = { || oDlg:SetFocus() }
DEFINE DIALOG oDlg RESOURCE "BrwFac" OF oWnd FONT oFont

ACTIVATE DIALOG oDlg NOWAIT ON INIT oDlg:MOVE(0,0) VALID ! GetASyncKey(VK_ESCAPE)

ACTIVATE WINDOW oWnd ON INIT (oWnd:SETSIZE(oDlg:nWidth,oDlg:nHeight+29));
ON RESIZE (oWnd:SETSIZE(oDlg:nWidth,oDlg:nHeight+29));
MAXIMIZED VALID (oWnd:=NIL,Cierra(oFac,oDlg))


Se me presenta un caso muy curioso, tal como esta el código cuando abro dos o mas ventanas y despues cierro una de ellas me tira el error

ERROR OBJECTS/8 NO OBJECTS MSG UNDEFINED SETSIZE

El error apunta a la línea donde esta la clausula MXIMIZED

Obviamente si quito la clausula MAXIMIZED el error no se presenta sin embargo necesito que al abrir la ventana esta se maximize.

Alguien que me indique como abrir las ventanas MDI correctamente ?

Saludos a todos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

Necesitas CERRAR las FONTS al Salir.
João Santos - São Paulo - Brasil
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

Joao:

Te agradezco el interes, las FONT se estan cerrando en la funcion Cierra()

STATIC FUNCTION Cierra()
oFont1:END()
oFont2:END()
oIcono:END()
FOR nVez := 1 TO LEN(aAlias)
(aAlias[nVez])->(DBCLOSEAREA())
NEXT
RETURN (.T.)

Pero aún asi tira el error.

Saludos, Armando
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

Intente en el MENU PRINCIPAL en el Inicio:

#Include "Objects.Ch"
João Santos - São Paulo - Brasil
User avatar
fgondi
Posts: 636
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España
Contact:

Post by fgondi »

Hola Armando

El problema viene de la clausula ON RESIZE. En ella llamas al evento oWnd:SetSize.

Cuando cierras una ventana, se llama en algun momento a Resize. No se donde se llama ni porque se llama, creo que debería estar controlado esa ejecución para que no se produjera.

De todas formas prueba a incluir la validación de si oWnd<>NIL para saber si tienes que ejecutar oWnd:SetSize:

Code: Select all

ACTIVATE WINDOW oWnd ON INIT (oWnd:SETSIZE(oDlg:nWidth,oDlg:nHeight+29)); 
ON RESIZE ( if( oWnd<>NIL, oWnd:SETSIZE(oDlg:nWidth,oDlg:nHeight+29), )); 
MAXIMIZED VALID (oWnd:=NIL,Cierra(oFac,oDlg)) 
Un saludo
Fernando González Diez
ALSIS GHE Sistemas Informáticos
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

João y Fernando:

Habia yo brincado el problema sacando la claúsula MAXIMIZED
pero con el IF que sugirió FGondi el problema se ha solucionado
definitivamente aún si abro la ventana MAXIMIZADA.

Muchas gracias a ambos por su tiempo y sapiencia.

Saludos, Armando
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply