PROBLEMAS MDI

PROBLEMAS MDI

Postby jponce » Mon Jul 14, 2008 7: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
jponce
 
Posts: 197
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala

Postby Antonio Linares » Mon Jul 14, 2008 8: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jponce » Wed Jul 16, 2008 3: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
jponce
 
Posts: 197
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala

Postby Antonio Linares » Wed Jul 16, 2008 4:17 pm

Julio,

bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 89 guests