MDICHILD
Posted:
Wed Apr 30, 2008 3:58 pm
by jponce
OK. REVISE LOS EJEMPLOS Y LO HICE DE ESTA MANERA
function PreccosV( 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())}
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()
if oWndFact01 != nil
return nil
endif
DEFINE ICON oIcon RESOURCE "ICONSIS"
DEFINE DIALOG oWndFact01 TITLE "CONSULTAS PRECIOS VRS COSTOS VENDEDOR" ;
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_PreccosV( oLbx, oWndFact01, oPreccos, aGets )
REDEFINE BTNBMP ID 101 OF oWndFact01 RESOURCE "EXCELEQ" ;
ACTION PreccosVExcel( aGets,opcion,oPreccos:Codigo )
TWbrowse():lHscroll:= .T.
REDEFINE LISTBOX oLbx ;
FIELDS oPreccos:Codigo , ;
oPreccos:Nombre , ;
transform(oPreccos:ventas,"999,999,999.99") , ;
transform(oPreccos:Costo ,"999,999,999.99") , ;
transform(oPreccos:margen,"999,999,999.99") , ;
transform(oPreccos:utilidad,"999,999,999.99")+"%" ;
HEADER "Código","Nombre","Ventas", "Costo","Utilidad","Margen" ;
ID 172 ;
OF oWndFact01 ;
ON DBLCLICK dobleclick_PreccosV( oPreccos, aGets , oWndFact01 ) ;
SIZES 40,380,75,75,75,50 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
//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 ( IIF( Salida(),( oWndFact01:=NIL, .T.), .F.) ) ;
ON INIT (oBGet1 := GetBitmap(oFoc,"Ayuda",,bLAct2),;
llenarlistbox( oLbx, oWndFact01, oPreccos, Agets, aTot ) );
RETURN NIL
Y ME FUNCIONO, PERO, AHORA TENGO OTRO PROBLEMA SI ME PASO A OTRA VENTANA QUE NO SEA DE MI APLICACION ESTA QUEDA ENCIMA DE LA OTRA VENTANA.
ES DECIR POR EJEMPLO, SI YO MINIMIZO ESTA VENTANA EN MI APLICACION PUEDO USAR OTRAS OPCIONES, PERO SI ME PASO A UNA HOJA DE EXCEL POR EJEMPLO ENTONCES LA VENTANA QUEDA ENCIMA DE LA HOJA DE EXCEL.
QUE ESTOY HACIENDO MAL?
DE ANTEMANO MUY AGRADECIDO
JULIO PONCE
Re: MDI CHILD CON DIALOGOS DE WORKSHOP
Posted:
Thu Apr 09, 2009 1:44 pm
by jfafive
Gracias Antonio,
Lo he estado mirando y creo que de momento voy a seguir usando los dialogos.
Mas vale malo conocido...... jeje
Gracias de todos modos por tu rapida respuesta.
Es bueno saberlo para futuras situaciones en las que tenga que tirar de esa ecuación.
Por cierto,
Y siguiendo con el ejemplo TestMdi4.prg....
He visto que si abro la ventana MDICHILD en modo MAXIMIZED, efectivamente me la muestra maximizada con el dialogo.
Peeeero... se puede ver como se maximiza.
¿se puede evitar esto?
Re: MDI CHILD CON DIALOGOS DE WORKSHOP
Posted:
Thu Apr 09, 2009 2:16 pm
by Willi Quintana
Hola,,
Asi evito que cambie el tamaño: (lo resaltado en color rojo hace que la windows hija "crezca" desde una esquina de la windows principal
DEFINE WINDOW oWndC MDICHILD FROM 0,0 to 2,2 OF oWnd TITLE cTitle ICON "SVITE"
DEFINE FONT oFont1 NAME "Arial" BOLD SIZE 7,15
DEFINE FONT oFont2 NAME "Courier New" SIZE 7,-13
DEFINE FONT oFont3 NAME "Arial" BOLD SIZE 12,22
DEFINE CURSOR oCursor HAND
DEFINE DIALOG oDlg RESOURCE "COMPRAS" OF oWndC
....
..
.
ACTIVATE DIALOG oDlg CENTER NOWAIT ;
ON INIT (oDlg:Move( 0, 0 ) ;
VALID (oWndC:End(), .t. )
oWndC:bGotFocus = { || oDlg:SetFocus() }
ACTIVATE WINDOW oWndC ;
ON INIT (oWndC:Move(0,0), oWndC:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;
ON RESIZE (oWndC:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ; // aqui se reajusta el tamaño
VALID ( .t.)
Re: MDI CHILD CON DIALOGOS DE WORKSHOP
Posted:
Thu Apr 09, 2009 2:54 pm
by jfafive
Gracias Willi,
Lo he hecho y he conseguido reducuir el efecto de maximizar, bastante.
Pero aún se produce ese efecto.
Es como si en lugar de maximizarse desde media pantalla, se abriese por defecto casi maximizada
y luego se maximiza del todo.
Ademas, he visto que durante un segundo, aparece la barra de titulo de la ventana aunque en seguida desaparece.
Te muestro mi código por si puedes ver algo que esté yo haciendo mal.
Te lo agradecería.
- Code: Select all Expand view
local oWndChild, oDlg, oTab
DEFINE WINDOW oWndChild ;
MDICHILD FROM 0,0 TO 2,2 OF oWnd NOSYSMENU NOCAPTION
oWndChild:bGotFocus = { || oDlg:SetFocus() }
DEFINE DIALOG oDlg RESOURCE "PROPIETARIOS" OF oWndChild
ACTIVATE DIALOG oDlg ;
NOWAIT ON INIT oDlg:Move( 0, 0 ) VALID ( oWndChild:End(), .t. )
// Ajustamos anchos y altos de ventana y dialogo para que se solape
oWndChild:nWidth := oDlg:nWidth + 7
oWndChild:nHeight := oDlg:nHeight + 32
ACTIVATE WINDOW oWndChild MAXIMIZED ON INIT oWnd:Paint()
PD.- Yo ya uso pelles C. ¿en que me recomiendas que lo utilice?
Re: MDI CHILD CON DIALOGOS DE WORKSHOP
Posted:
Fri Apr 10, 2009 7:43 pm
by Willi Quintana
Holas,,
La recomendacion a PellesC es para jponce ...
En efecto aparece la barra del titulo en la posicion indicada (FROM....) y de alli zas,,, toma el tamaño que definiste en el Resource... como puse en elejemploe que escribi, se elimina el cambiar de tamaño e al ventana, la ventana se ajusta automaticamente al tamaño de recurso...
ACTIVATE WINDOW oWndL ;
ON INIT (oWndL:Move(0,0), oWndL:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ; // MAXIMIZED ;
ON RESIZE (oWndL:SetSize( oDlg:nWidth, oDlg:nHeight ) ) ;
Salu2