Page 1 of 1

Problema con Refreso de Pantalla

PostPosted: Mon Nov 17, 2008 1:38 pm
by JoseLuis
Hola amigos

Tengo el siguiente codigo:
Code: Select all  Expand view
  DEFINE BRUSH oBrush1 COLOR RGB(242,247,252)
  DEFINE BRUSH oBrush2 COLOR RGB(247,227,131)
  DEFINE BRUSH oBrush3 COLOR RGB(215,245,183)
  DEFINE WINDOW Publicas:oWnd TITLE "Enlace Facturacion" MDI;
  ICON oico
  DEFINE OUTLOOK2003 oOutLook2003 OF Publicas:oWnd
     oOutLook2003:aDialogs[ 1 ]:oBrush:=oBrush1
     oOutLook2003:aDialogs[ 2 ]:oBrush:=oBrush2
     oOutLook2003:aDialogs[ 3 ]:oBrush:=oBrush3
     Publicas:oWnd:oLeft = nil
     Publicas:oWnd:bPainted := {|hDC|gradpaint( hDC)}
     Publicas:oWnd:SetFont( oFnt )
   
   @ 10,  15 BTNBMP RESOURCE "Facturas" SIZE 80,22 LEFT PROMPT " Facturas " OF oOutLook2003:aDialogs[ 1 ]  ACTION contafac( oOutLook2003,oDlg,oSplit ) MESSAGE "Contabilizar Facturas"
   @ 50,  15 BTNBMP RESOURCE "Titulos"  SIZE 80,22 LEFT PROMPT " Nombres "  OF oOutLook2003:aDialogs[ 1 ]  ACTION pontit  ( oOutLook2003,oDlg,oSplit ) MESSAGE "Poner Titulos a las Cuentas"
   @ 90,  15 BTNBMP RESOURCE "Remesas"  SIZE 80,22 LEFT PROMPT " Remesas "  OF oOutLook2003:aDialogs[ 1 ]  ACTION pagofact( oOutLook2003,oDlg,oSplit ) MESSAGE "Remesass Bancarias"
   @ 130, 15 BTNBMP RESOURCE "Dinero"   SIZE 80,22 LEFT PROMPT " Cobros "   OF oOutLook2003:aDialogs[ 1 ]  ACTION cobromet( oOutLook2003,oDlg,oSplit ) MESSAGE "Contados"
   @ 10,  15 BTNBMP RESOURCE "Facturas" SIZE 80,22 LEFT PROMPT " Facturas " OF oOutLook2003:aDialogs[ 2 ]  ACTION contafac( oOutLook2003,oDlg,oSplit ) MESSAGE "Contabilizar Facturas"       
   @ 50,  15 BTNBMP RESOURCE "Titulos"  SIZE 80,22 LEFT PROMPT " Nombres "  OF oOutLook2003:aDialogs[ 2 ]  ACTION pontit  ( oOutLook2003,oDlg,oSplit ) MESSAGE "Poner Titulos a las Cuentas"
   @ 90,  15 BTNBMP RESOURCE "Remesas"  SIZE 80,22 LEFT PROMPT " Remesas "  OF oOutLook2003:aDialogs[ 2 ]  ACTION pagofact( oOutLook2003,oDlg,oSplit ) MESSAGE "Remesass Bancarias"         
   @ 130, 15 BTNBMP RESOURCE "Dinero"   SIZE 80,22 LEFT PROMPT " Cobros "   OF oOutLook2003:aDialogs[ 2 ]  ACTION cobromet( oOutLook2003,oDlg,oSplit ) MESSAGE "Contados"                   
   @ 10,  15 BTNBMP RESOURCE "Facturas" SIZE 80,22 LEFT PROMPT " Facturas " OF oOutLook2003:aDialogs[ 3 ]  ACTION contafac( oOutLook2003,oDlg,oSplit ) MESSAGE "Contabilizar Facturas"     
   @ 50,  15 BTNBMP RESOURCE "Titulos"  SIZE 80,22 LEFT PROMPT " Nombres "  OF oOutLook2003:aDialogs[ 3 ]  ACTION pontit  ( oOutLook2003,oDlg,oSplit ) MESSAGE "Poner Titulos a las Cuentas"
   @ 90,  15 BTNBMP RESOURCE "Remesas"  SIZE 80,22 LEFT PROMPT " Remesas "  OF oOutLook2003:aDialogs[ 3 ]  ACTION pagofact( oOutLook2003,oDlg,oSplit ) MESSAGE "Remesass Bancarias"         
   @ 130, 15 BTNBMP RESOURCE "Dinero"   SIZE 80,22 LEFT PROMPT " Cobros "   OF oOutLook2003:aDialogs[ 3 ]  ACTION cobromet( oOutLook2003,oDlg,oSplit ) MESSAGE "Contados"                   
   @ 170, 15 BTNBMP RESOURCE "Fatcon"   SIZE 80,22 LEFT PROMPT " Fact.Cont " OF oOutLook2003:aDialogs[ 3 ] ACTION contados( oOutLook2003,oDlg,oSplit ) MESSAGE "Facturar Contados"

   #ifndef __CLIPPER__
      DEFINE STATUSBAR oStatusBar PROMPT "  Enlace Facturacion  " OF Publicas:oWnd
   #else   
      DEFINE MESSAGE oStatusBar PROMPT "  Enlace Facturacion " OF Publicas:oWnd
   #endif   

   SetParent( oOutLook2003:hWnd, Publicas:oWnd:hWnd )
   
   Publicas:oWnd:oClient = nil
   DEFINE DIALOG oDlg OF Publicas:oWnd ;
      STYLE nOR( WS_CHILD, WS_VISIBLE ) ;
   
   @ 0, 191 SPLITTER oSplit ;
      VERTICAL _3DLOOK ;
      PREVIOUS CONTROLS oOutLook2003 ;
      HINDS CONTROLS oDlg ;
      SIZE 4, Publicas:oWnd:nHeight - 70 PIXEL ;
      OF Publicas:oWnd
   ACTIVATE DIALOG oDlg NOMODAL
   SetParent( oSplit:hWnd, Publicas:oWnd:hWnd )
   BtnBar(oOutlook2003,oDlg,oSplit)
   ACTIVATE WINDOW Publicas:oWnd ;
      maximized;
      ON INIT (   oDlg:Move( 0, oSplit:nRight, Publicas:oWnd:nWidth, Publicas:oWnd:nHeight, .f. ), ;
                  Publicas:oWnd:bResized := {|| oSplit:AdjClient(), oDlg:SetSize( Publicas:oWnd:nWidth - oOutlook2003:nWidth - oSplit:nWidth - 8, oSplit:nHeight - 1, .t. ) }, ;
                  oDlg:refresh(.t.) ) ;
      VALID lExit := .T.

return nil

Que me hace mas o menos lo siguiente:
Image
Image

Ahora quiero presentar en la parte derecha del splitter un xbrowse, para lo cual he creado antes el dialogo oDlg,

Code: Select all  Expand view
SetParent( oDlg:hWnd, Publicas:oWnd:hWnd )
barra1(oDlg)
Publicas:cVenci1:=Date()
      cAlias:=Alias()
      dbSelectArea(cAlias)
      oBrw := TXBrowse():New( oDlg )
      oBrw:cAlias := "xdiario"
      oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLCELL
      oBrw:nColDividerStyle    := LINESTYLE_BLACK
      oBrw:nRowDividerStyle    := LINESTYLE_BLACK
      oBrw:nTop    := oDlg:nTop
      oBrw:nBottom := oDlg:nheight()
      oBrw:nRight  := oDlg:nWidth()
      oBrw:lColDividerComplete := .f.
      oBrw:lFastEdit := .t.

      oCol := oBrw:AddCol()
      oCol:bStrData = { || xdiario->Asien }
      oCol:nEditType = 1
      oBrw:aCols[ 1 ]:nWidth  := 55
      oCol:cHeader := 'Asiento'
      oCol:bOnPostEdit = { | oCol, xVal, nKey | If( RecCount() == 0, DbAppend(),), If( nKey == VK_RETURN, ( xdiario->Asien := xVal, oBrw:Refresh() ),) }
.......... etc....







//-------------------------
function Barra1( oDlg )
  local oBar,hdc
  DEFINE BUTTONBAR oBar OF oDlg SIZE 50,46 2007
   oBar:bRClicked := { || .t. }
    DEFINE BUTTON OF oBar ;
      RESOURCE "Salir" TOP ;
      PROMPT "Salir" ;
      ACTION (Publicas:abierta:=0,CleanSlate(oDlg),oBar:end(),SetParent( oDlg,0 ));
      MESSAGE " Salir " ;
      TOOLTIP { "Salir", "Salir" }
  return oBar
//------------


Image
Image

Pero al cerrar el dialogo con la función Barra1., que he puesto anteriormente, no me repinta la ventana como estaba anteriormente, me queda asi:
Image
Image

Como puedo hacer que me vuelva a repintar ésta zona?

Saludos

Jose Luis

PostPosted: Mon Nov 17, 2008 4:41 pm
by joseluisysturiz
...

PostPosted: Mon Nov 17, 2008 5:35 pm
by JoseLuis
Pues eso...

El color....
Que si en la linea de salida, en lugar de Setparent(oDlg,0) , pongo oDlg:End(), pues si, al finalizar el diálogo (oDlg), me repinta la ventana Publicas:oWnd.

Pero en éste caso tengo otros problemas posteriores, y quiero que me repinte ésta ventana, sin finalizar el diálogo.

Saludos

Jose Luis

PostPosted: Mon Nov 17, 2008 7:35 pm
by JoseLuis
En el Setparent final, me faltaba":hwnd", es decir tiene que ser Setparent(oDlg:hwnd,0).

Pero ahora me ocurre lo siguiente:

Cuando se está ejecutando la aplicación, en la barra de tareas me aparece su icono normalmente:
Image
Image

Pero cuando regreso del xbrowse, y hago la operación que antes he mencionado, ahora me pinta sólo un trozo de la parte inferior, y en la barra de tareas me aparecen dos iconos de la misma aplicación:


Image
Image


Y pincho con el ratón en el que pone "Enlace c.." me aparece la ventana perfectamente pintada como yo quiero (Como estaba inicialmente).

Como se puede arreglar esto?

Saludos

Jose Luis