FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour PROBLEMAS MDI
Posts: 199
Joined: Fri Apr 18, 2008 04:21 PM
PROBLEMAS MDI
Posted: Mon Jul 14, 2008 07:34 PM

Saludos a todos estoy haciendo un dialogo mdi y me funciona todo correcto excepto que si quiero dejar abierto el dialogo no puedo por que cuando abro otro programa o alguna hoja de excel este dialogo queda encima de la hoja o de otro programa tengo que cerrar el dialogo para poder visualizar la otra aplicacion.

Aca les dejo mi codigo para ver si alguien encuentra mi error.

FUNCTION PreccosVCons( oWnd )
Local oDlg, aGets := { Date(), Date(),space(20) }, oGet, oLbx
Local aTot := {0,0,0,0}
LOCAL oPara := _DaPara(), nAge , oSay, oGet1, oAgen, aLinea, oLinea, oSiNo,aSiNo
LOCAL cTabla, oDb, oBase, aAgen, oBGet1,aLi,oBaset,oBGet2,opcion:=1
LOCAL aHead1:= { 'No.', 'Agencia' }
Local oFoc

Local oPreccos,fXls,cHoja,oIcon

LOCAL bLAct2:= {||(EVAL(oFoc:bSetGet,AyudaG2( oFoc, "Linea Inventario", aLi, { 'Clave','Linea Inventario' },{80,200},150,100, {187,88} )), ;
oFoc:Refresh(),oFoc:SetFocus())}

if oWndFact01 == NIL
oGet := Array( 2 )
oPreccos := TempPreccos();

///LINEAS DE INVENTARIO
oDb:= _BaseDatos()
cTabla := "catlineasi"
oBaset := TMsTable():New( oDb, cTabla )
if !oBaset:Open()
return( nil )
endif
aLi := {}
If !Empty( oBaset:LastRec() )
oBaset:GoTop():Read()
While !oBaset:Eof()
Aadd( aLi, { oBaset:FieldGet( 1 ), oBaset:FieldGet( 2 ) } )
oBaset:Fetch()
EndDo
EndIf
oBaset:Destroy()

DEFINE ICON oIcon RESOURCE "ICONSIS"

DEFINE DIALOG oWndFact01 TITLE "CONSULTAS PRECIOS VRS COSTOS VENDEDOR UNIFICADO LLANTA NUEVA Y REENCAUCHE" ;
OF oWnd RESOURCE "CONSULTAS" ICON oIcon

REDEFINE DTPICKER oGet[1] VAR aGets[1] ID 105 OF oWndFact01 UPDATE //fecha 1
REDEFINE DTPICKER oGet[2] VAR aGets[2] ID 106 OF oWndFact01 UPDATE // fecha 2
REDEFINE GET oFoc VAR aGets[3] ID 103 OF oWndFact01

REDEFINE BUTTON ID 16 ;
OF oWndFact01 ;
ACTION buscar_PreccosVConso( oLbx, oWndFact01, oPreccos, aGets )

REDEFINE BTNBMP ID 101 OF oWndFact01 RESOURCE "EXCELEQ" ;
ACTION generaexcelcons( oPreccos,Agets )

TWbrowse():lHscroll:= .T.
REDEFINE LISTBOX oLbx ;
FIELDS oPreccos:Codigo , ;
oPreccos:Nombre , ;
transform(oPreccos:ventas,"999,999,999.99") , ;
transform(oPreccos:notas,"999,999,999.99") , ;
transform(valc(oPreccos:ventas-oPreccos:Notas),"999,999,999.99") ;
HEADER "Código","Nombre","Ventas", "Notas", "Total" ;
ID 172 ;
OF oWndFact01 ;
SIZES 40,380,75,75,75 UPDATE

     oPreccos:SetBrowse( oLbx )

     oLbx:nLineHeight  := 16
     oLbx:nHeaderHeight := 16
     //oLbx:nFreeze := 4
     oLbx:aHJustify:={2,2,2,2,2}
     oLbx:aJustify:={.t.,.f.,.t.,.t.,.t.}

     oLbx:lDrawFooters :=.T.

     //oLbx:aActions := Array( 6 )
     //oLbx:aActions[1] := { || OrdenArEq( 3, 3 , oPreccos, oLbx,oWndFact01,aGets ) }
     //oLbx:aActions[2] := { || OrdenArEq( 2, 3 , oPreccos, oLbx,oWndFact01,aGets ) }
    // oLbx:aActions[3] := { || OrdenArEq( 1, 3 , oPreccos, oLbx,oWndFact01,aGets ) }
    // oLbx:aActions[4] := { || OrdenArEq( 4, 3 , oPreccos, oLbx,oWndFact01,aGets ) }
    // oLbx:aActions[5] := nil
    // oLbx:aActions[6] := nil

     //ON DBLCLICK dobleclick_PreccosV( oPreccos, aGets , oWndFact01  ) ;
     //oLbx:aFooters  :={|| {"","Total",Tran(aTot[1],"9,999,999,999 "),Tran(aTot[2],"9,999,999,999 "),Tran(aTot[3],"9,999,999,999 "),Tran(aTot[4],"9,999,999,999 ") }}


    // oLbx:bKeyDown := {|nKey| IF(nKey = 13, dobleclick_PreccosV( oPreccos, aGets , oWndFact01 ) , ) }

REDEFINE BUTTON ID 95 OF oWndFact01 ACTION oWndFact01:End() CANCEL

ACTIVATE DIALOG oWndFact01 NOWAIT CENTER RESIZE16;
VALID ( oWndFact01 := NIL, .T. ) ;
ON INIT (oBGet1 := GetBitmap(oFoc,"Ayuda",,bLAct2),;
llenarLLnReen( oLbx, oWndFact01, oPreccos, Agets, aTot ) );

Else
//VALID ( IIF( Salida(),( oWndFact01:=NIL, .T.), .F.) ) ;
oWndFact01:SetFocus()

End

RETURN NIL

Atentamente
Julio Rodrigo Ponce Hinestroza

www.suproye.com

jponce@suproye.com

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS MDI
Posted: Mon Jul 14, 2008 08:06 PM

Julio,

Si en un entorno de ventanas MDI abres una caja de diálogo, esta queda encima de todas las ventanas, hasta que cierres la caja de diálogo.

Las ventanas MDICHILD son hijas de la ventana principal, por eso quedan debajo de la caja de diálogo.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS MDI
Posted: Mon Jul 14, 2008 11:16 PM

Julio,

Gracias por enviarme la imagen, ahora si entiendo lo que te ocurre.

Para solucionarlo, usa la claúsula OF oWnd al crear el diálogo:

DEFINE DIALOG oDlg ... OF oWndMain

En donde oWndMain es el nombre de la variable que contiene tu ventana MDI principal

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 199
Joined: Fri Apr 18, 2008 04:21 PM
PROBLEMAS MDI
Posted: Wed Jul 16, 2008 03:59 PM

Gracias Antonio funciono como me dijiste

cambie en el on Init lo siguiente

ACTIVATE DIALOG oWndFact01 NOWAIT CENTER RESIZE16;
VALID ( oWndFact01 := NIL, .T. ) ;
ON INIT ( SetParent( oWndFact01:hWnd, oWndMain:hWnd ), oBGet1 := GetBitmap(oFoc,"Ayuda",,bLAct2),;
llenarLLnReen( oLbx, oWndFact01, oPreccos, Agets, aTot ) );

tal y como me lo enviaste.
Muchas Gracias
Atentamente,
Julio Ponce

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PROBLEMAS MDI
Posted: Wed Jul 16, 2008 04:17 PM

Julio,

bien :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion