Tim,
Esto es de una aplicación que tiene más de 20 años (antes del EURO), que está funcionando y lincada hoy en dÃa con FWH 25.06
// *******************************************************
// ******************************************** en el main() está esto
/* Se define la ventana principal
---------------------------------*/
DEFINE WINDOW JuvaArra[1][1][2][1][1] MDI ; // Definimos la ventana
FROM 2,2 TO 30,80; // Coordenadas
TITLE "Juva32, Control de serveis y facturació." ; // TÃtulo
MENU MenuMain( JuvaArra ) // Menú
/* Se activa la ventana principal
---------------------------------*/
ACTIVATE WINDOW JuvaArra[1][1][2][1][1] ;
MAXIMIZED ;
ON INIT ( AutResiz( JuvaArra[1][1][2][1][1], 2 ), Albara02( JuvaArra ) ) ;
VALID ( JuvaArra[4][1] := MsgNoYes("Vol sortir del programa?", "Atenció!" ) )
// *******************************************************
// En OTRO PRG
// *******************MDIChild 'SIMPLE' ************************* está esto
DEFINE WINDOW oalbara02 MDICHILD FROM 0,0 TO 520,804 TITLE ;
"Manteniment Albarans NO facturats COMPLERTS" COLORS J02CLRTEXTO,J02CLRWND OF ;
JuvaArra[1][1][2][1][1] NOZOOM PIXEL
@ 174,42 LISTBOX oWBrowse FIELDS DtoC( (@oTDbfAlbara:DATAALBA) ), ;
Padl( "-" + AllTrim(Str((@oTDbfAlbara:NUMEALBA), 9, 0)), 10, "L"), ;
Padl( "-" + Alltrim(@oTDbfaLBARA:CodiArti), 13, "A"), ;
padl( "-" + Alltrim(@oTDbfaLBARA:CodiPers), 9, "C"), Str((@oTDbfAlbara:QUANUNIT), ;
8, 2), Str( nContravalor( JuvaArra, (@oTDbfAlbara:PREUUNIT), ;
(@oTDbfAlbara:MNDA), JuvaArra[1][2][5][3] ), 10, 2), (@oTDbfAlbara:TipuUnit), ;
padl("-"+alltrim(Str((@oTDbfAlbara:NUMEFACT), 10, 0)), 10, "F" ), ;
Padl( "-" + AllTrim(Str((@oTDbfAlbara:CODIDEST), 4, 0)), 6, "D"), ;
(@oTDbfAlbara:CODIPRES), Str((@oTDbfAlbara:Movivend), 8, 0) ALIAS ;
oTDbfAlbara:Alias() COLSIZES 75,75,75,85,100,100,50,85,75,100,75 HEADERS ;
"Dat.Alb.", "Albarà ", "Codi Article", "Client", "Quantitat", "Preu", "Unitats", ;
"Factura", "DestÃ", "Pressupost", "Moviment" SIZE 707,229 OF oalbara02 FONT J02FONTLB COLORS ;
J02CLRTEXTO,J02CLRFONDO UPDATE PIXEL
.....
ACTIVATE WINDOW oAlbara02 ;
VALID If( JuvaArra[4][1], ;
( lExiste := .F., oFiltre:SetFocus(), lWndSalta( JuvaArra, Nil ) , ;
laTDbfEnd( JuvaArra, { oTDbfAlbara, oTdbfPerson, ;
oTDbfArticu, oTDbfDestin } ) , ;
oSWnd := Nil, .T. ), ;
( lWndSalta( JuvaArra, oAlbara02 ), oSWnd:Hide(), .F. ) ;
) ;
ON INIT AutResiz( oAlbara02, 2 )
// *******************************************************
// En OTRO PRG
// *******************MDIChild con FOLDERS ************************* PRG está esto
DEFINE WINDOW oFactur01 MDICHILD FROM 0,0 TO 535,804 TITLE "Manteniment de Factures" ;
COLORS J02CLRTEXTO,J02CLRWND OF JuvaArra[1][1][2][1][1] NOZOOM PIXEL //FIVEWIDI
DEFINE DIALOG oSMdiDlgFo FROM 0,0 TO 485,800 OF oFactur01 STYLE WS_CHILD PIXEL ;
FONT J02FONTWND //FIVEWIDI
ACTIVATE DIALOG oSMdiDlgFo NOWAIT ;
VALID ( If( nEditando == 0, ;
( If( JuvaArra[4][1], ;
( .T.), ;
(JuvaArra[1][1][2][1][1]:NextWindow(), oSWnd:Hide(), .F. ) ;
) ) , ;
( Eval( oSGo:bAction ), .F.) ) ;
) ;
// Folder 1
@ -2,-1 FOLDER oFdFactur OF oSMdiDlgFo ITEMS "&Capçalera Factura", ;
"&Detall Factura" PIXEL COLORS J02CLRTEXTO,J02CLRWND OPTION 1 SIZE 797,496 FONT ;
J02FONTWND //FIVEWIDI
@ 264,14 LISTBOX oWBrowse FIELDS DToC(@oTDbfFactur:DataFact), Padl("-"+ ;
Alltrim(Str((@oTDbfFactur:NumeFact), 10,0)),10,"F"), cGetNomPers( ;
(@oTDbfFactur:TipuPers), (@oTDbfFactur:nom),(@oTDbfFactur:cognom1), ;
(@oTDbfFactur:cognom2)), Str( nContravalor( JuvaArra, (@oTDbfFactur:TotalBru), ;
(@oTDbfFactur:Mnda), JuvaArra[1][2][5][3] ), 13, 2) ALIAS oTDbfFactur:Alias() ;
COLSIZES 75,100,300,75 HEADERS "Data Fact.", "Núm. Fact.", "Client", "Import" ;
SIZE 454,160 OF oFdFactur:adialogs[1] FONT J02FONTLB ;
COLORS J02CLRTEXTO, J02CLRFONDO ;
UPDATE PIXEL //FIVEWIDI
....
// Folder 2
@ 154,42 LISTBOX oWBrowse2 FIELDS DtoC( (@oTDbfConFac:DATAALBA) ), Padl("-" + ;
AllTrim(Str((@oTDbfConFac:NUMEALBA), 9, 0)), 10, "L"), ;
Padl("-"+alltrim(@oTDbfConFac:CodiArti), 13, "A"), ;
padl("-"+alltrim(@oTDbfConFac:CodiPers), 9, "C"), Str((@oTDbfConFac:QUANUNIT), ;
8, 2), Str( nContravalor( JuvaArra, (@oTDbfConFac:PREUUNIT), ;
(@oTDbfConFac:MNDA), JuvaArra[1][2][5][3] ), 10, 2), (@oTDbfConFac:TipuUnit), ;
Str((@oTDbfConFac:NUMEFACT), 8, 0), Str((@oTDbfConFac:CODIDEST), 4, 0), ;
(@oTDbfConFac:CodiPres), Str((@oTDbfConFac:Movivend), 8, 0) ALIAS oTDbfConFac:Alias() COLSIZES 75,75,75, ;
75,100,100,50,75,50,100,75 HEADERS "Dat.Alb.", "Albarà ", "Codi Article", "Client", ;
"Quantitat", "Preu", "Unitats", "Factura", "DestÃ", "Pressupost", "Moviment" SIZE 707,229 OF ;
oFdFactur:adialogs[2] FONT J02FONTLB COLORS J02CLRTEXTO,J02CLRFONDO UPDATE ;
PIXEL //FIVEWIDI
@ 134,45 SAY "F3-Busca:" OF oFdFactur:adialogs[2] COLORS J02CLRTEXTO,;
J02CLRFONDO FONT J02FONTSAY PIXEL SIZE 55,16 UPDATE //FIVEWIDI
....
// *******************************************************
// Y para acabar al final del PRG se activa la MDIChild
ACTIVATE WINDOW oFactur01 ; // MAXIMIZED ; ON INIT oLBmnda:Set( JuvaArra[1][2][5][3] ) ;
VALID ( If( nEditando == 0, ;
If( JuvaArra[4][1], ;
(oPrint:SetFocus(), oSWnd:SetFocus(), oSMdiDlgFo:SetFocus(), SysRefresh(), ; // laTDbfEnd( JuvaArra, { oTDbfFactur, oSTdbfFactur, oTDbfFacIva, oTdbfConFac, oTdbfPerson, oTdbfDestin, oTdbfArticu } ), ; oSWnd:SetFocus(), ;
If( lExiste := !oSMdiDlgFo:End(), ;
Nil, ;
(SysRefresh(), lWndSalta( JuvaArra, Nil), laTDbfEnd( JuvaArra, { oTDbfFactur, oSTdbfFactur, oTDbfFacIva, oTdbfConFac, oTdbfPerson, oTdbfDestin, oTdbfArticu } ), ;
oSMdiDlgFo := oSTdbfFactur := oSWnd := oSToFol1 := oSRecno := oSGo := oSModi := oSPrint := Nil ) ;
), ;
!lExiste ), ;
(lWndSalta( JuvaArra, oFactur01), oSWnd:Hide(), .F. ) ;
) , ;
( Eval( oSGo:bAction ), .F.) ;
) ;
) ;
ON INIT AutResiz( oFactur01, 2 )
El usuario en el menu tiene '<<' y '>>' para poder cambiar entre MDICHILD
Nota: Seguro que el código asusta, pero es de hace 20 años... o más.