Page 1 of 1

PROBLEMAS ENTRE VENTANAS MDICHILD

Posted: Fri May 04, 2007 4:33 pm
by GUSPRE
Hola a Todos, quería preguntarles porque tengo abierta una ventana mdichild que contiene un listado, desde uno de los botones del obar llamo a una funcion que muestra otra ventana mdichild con otro listado y todo funciona muy bien. cierro la segunda ventana y luego la vuelvo a abrir desde el mismo boton a la tercera vez que repito esta opcion cuando cierro la segunda ventana y vuelvo a la primera me cambia el font de toda la ventana como si se comiera todos los recursos , ya lo revise y esta todo bien adjunto vean la imagen, muchas gracias por vuestra ayuda, esto me tiene renegando hace varios dias...saludos a todos

Image

Posted: Fri May 04, 2007 4:37 pm
by Antonio Linares
Gustavo,

Ese problema ocurre cuando un font se está destruyendo antes de tiempo.

Si tu creas un font al comienzo en tu programa, hazle lo siguiente:

oFont:nCount++

Posted: Fri May 04, 2007 5:10 pm
by GUSPRE
Estimado Antonio, Gracias por tu pronta respuesta, he realizado lo que me dijiste y sigue haciendolo a la tercera vez que abro la seguna mdichild, yo defino los font al comienzo de cada funcion de cada ventana sera esto ? te adjunto el araanque de la segunda mdi

Muchas Gracias...

Code: Select all

FUNCTION pro_ctas(ncta)

LOCAL   nH, a_cli, a_cli2, ax[4], a_tcta, a_tct2, a_tct3, oFldx
LOCAL   oBcta , oBct2, oBchq, a_pag[11,2], nAt, oSlen
LOCAL   oFont, oFch2, oFexa

DEFAULT ncta:=1

IF oWcta != Nil
   oWcta:END()
   oWcta:=Nil
ENDIF

*----DEFINIR CLIENTE------------------*
IF ncta=1
   a_cl:=bus_prv("1")
   IF a_cl[1]
      ncta:=a_cl[2]
      ELSE
      RETURN(.T.)
   ENDIF
ENDIF
*-------------------------------------*

cursorwait()

*--DEFINIR a_pag RESUMEN -----------------*
a_pag[1 ,1]:=oemtoansi("Cr‚dito:")
a_pag[2 ,1]:="Comprobantes en Cta.Cte.:"
a_pag[3 ,1]:="Cheques en Cartera:"
a_pag[4 ,1]:="Disponible:"
a_pag[5 ,1]:=""
a_pag[6 ,1]:="Descuento en Vtas:"
a_pag[7 ,1]:="Lista de Precios"
a_pag[8 ,1]:="Vendedor:"
a_pag[9 ,1]:=oemtoansi("D¡a de Visita:")
a_pag[10,1]:=oemtoansi("D¡as de Cr‚dito:")
a_pag[11,1]:=oemtoansi("Cr‚dito Limitado:")
FOR i=1 TO 11
    a_pag[i,2]:=0
NEXT i
*-----------------------------------------*
*-- DEFINIR SIMBOLO-----------------------*
aX[1] :=LoadBitMap(GetResources(),"B_ALTA")
aX[2] :=LoadBitMap(GetResources(),"C_PAL")
aX[3] :=LoadBitMap(GetResources(),"B_BAJA")
aX[4] :=LoadBitMap(GetResources(),"B_MEDI")
*-----------------------------------------*

*-- BUSCAR CLIENTE -------------*
a_cli :=bus_prvr(STR(ncta,7,0))
*-------------------------------*

MSGRUN(" ABRIENDO CUENTA CORRIENTE.... ","ESPERE!!",;
         {|| oBchq :=abrir_dbf("GR2_500"),a_tct3:=ref_cta3(a_cli,oBchq,2)   ,oBchq :=a_tct3[2],;
             oBct2 :=abrir_dbf("GR2_511"),a_tct2:=ref_cta2(a_cli[2],oBct2,2),oBct2 :=a_tct2[2],;
             oBcta :=abrir_dbf("GR2_511"),a_tcta:=ref_ctac(a_cli[2],oBcta,2),oBcta :=a_tcta[4],;
             ref_cta4(a_pag,a_cli,a_tcta,a_tct2,a_tct3,2) })

adias  :={"Lunes","Martes",OEMTOANSI("Mi‚rcoles"),"Jueves","Viernes"}

DEFINE FONT oFont   NAME "Ms Sans Serif" SIZE 0, -8
DEFINE FONT oFch2   NAME "Ms Sans Serif" SIZE 0, -8 BOLD
DEFINE FONT oFexa   NAME "Terminal"      SIZE 0,-11 PITCHFAMILY 49

oFont:nCount++
oFch2:nCount++
oFexa:nCount++


DEFINE WINDOW oWcta MDIChild OF oWnd ;
       TITLE "Cuenta Corriente de Proveedores "+oBcta

       DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 28,57 OF oWcta

       DEFINE BUTTON oBot1 RESOURCE "B_EXEL" ;
              OF oBar ;
              ACTION cta_exel(oBcta,oBrct,oBct2,oBrc2,oBchq,oBrc3,a_pag,oBrc4,oWcta,oSlen,oFldx) ;
              NOBORDER ;
              TOOLTIP "Transferir Actual a Excel"

       DEFINE BUTTON oBot1 RESOURCE "B_PRI" ;
              OF oBar ;
              ACTION cta_impr(oBcta,oBrct,oBct2,oBrc2,oBchq,oBrc3,a_pag,oBrc4,oWcta,oSlen,oFldx,2);
              NOBORDER ;
              TOOLTIP "Imprimir Actual"

       DEFINE BUTTON oBot1 ;
              OF oBar ;
              RESOURCE "B_CLI" ;
              ACTION (a_cli2:=bus_prv(STR(a_cli[2],7,0)),;
                      IF(a_cli2[1],;
                         MSGRUN(" ABRIENDO CUENTA CORRIENTE... ","ESPERE!!" ,;
                         {|| (a_cli:=a_cli2,;
                         a_tcta:=ref_ctac(a_cli[2],oBcta,2),;
                         oBcta:=a_tcta[4],;
                         a_tct2:=ref_cta2(a_cli[2],oBct2,2),;
                         oBct2 :=a_tct2[2],;
                         a_tct3:=ref_cta3(a_cli,oBchq,2),;
                         oBchq:=a_tct3[2],;
                         ref_cta4(a_pag,a_cli,a_tcta,a_tct2,a_tct3,2),;
                         oBrct:aFooters     :={,,,"Totales",,;
                         TRANSFORM(a_tcta[2],"@E ##,###,###.##"),;
                         TRANSFORM(a_tcta[3],"@E ##,###,###.##"),;
                         TRANSFORM(a_tcta[1],"@E ##,###,###.##") } ,;
                         oBrc2:aFooters     :={,,,"Totales",,,,,;
                         TRANSFORM(a_tct2[1],"@E ##,###,###.##") },;
                         oBrc3:aFooters     :={,,,,"Total",;
                         TRANSFORM(a_tct3[1],"@E ##,###,###.##") },;
                         oWcta:UPDATE(),oSlen:REFRESH()) }) ,)) ;
                NOBORDER ;
                TOOLTIP "Seleccionar otro Proveedor"

       @ .05,18 SAY oSlen PROMPT lee_cl(a_cli) ;
                SIZE 700,52 ;
                COLOR CLR_BLUE,CLR_FONDO ;
                FONT oFont ;
                UPDATE ;
                OF oBar

       @ 1,1    FOLDER oFldx ;
                OF oWcta ;
                FONT oFont ;
                ITEMS "Mayor de Cuenta Corriente","Cbtes Adeudados/No Conciliados",;
                      "Cheques en Cartera",oemtoansi("Res£men de Cta.Cte.")

       *------- MAYOR DE CUENTAS -------------------*
       @ 0,0    LISTBOX oBrct ;
                FIELDS  AX[esta_cta(oBcta)]       ,;
                        DTOC((oBcta)->CTA_FVTO)   ,;
                        for_fec((oBcta)->CTA_FECH),;
                        (oBcta)->VTA_COMP ,;
                        (oBcta)->CTA_CUOT ,;
                        TRANSFORM((oBcta)->CTA_DEBE,"@EZ ##,###,###.##") ,;
                        TRANSFORM((oBcta)->CTA_HABE,"@EZ ##,###,###.##") ,;
                        TRANSFORM((oBcta)->CTA_SALD,"@EZ ##,###,###.##") ,;
                        " ",;
                        TRANSFORM((oBcta)->CTA_PAGA,"@EZ ##,###,###.##") ,;
                        cta_tpaga(oBcta)  ,;
                        (oBcta)->OPE_OPER  ;
                HEADERS "E"          ,;
                        "Vencimiento",;
                        oemtoansi("Emisi¢n"),;
                        "Concepto"    ,;
                        "Cuota"       ,;
                        "Debe"        ,;
                        "Haber"       ,;
                        "Saldo"       ,;
                        " "           ,;
                        "Pagado"      ,;
                        "Sldo.Compte.",;
                        "Operador"     ;
                SIZES   15,70,70,130,45,75,75,100,4,75,75,200 ;
                ALIAS (oBcta)->(ALIAS()) ;
                FONT oFont ;
                UPDATE ;
                OF oFldx:adialogs[1]

       oBrct:bFont        := {| nRow,nCol, nStyleLine|  IF( nCol=8 .AND. (nStyleline=0 .OR. nStyleline=3 .OR. nStyleLine=2),;
			                                                      oFch2:Hfont,NIL) }

       oBrct:bLDblClick   := { | nRow, nCol, nFlags |  com_vcon((oBcta)->VTA_COMP,a_cli[2]) }
       oBrct:bBkColor     := {| nRow,nCol, nStyleLine| esta_ctac(nRow,nStyleline,oBrct)  }
       oBrct:ajustify     := {2,.F.,.F.,.F.,2,.T.,.T.,.T.,.T.,.T.,.T.,.F.}
       oBrct:nclrbackhead := RGB(0,200,255)
       oBrct:nclrforehead := RGB(0,0,1)
       oBrct:nclrNFback   := RGB(127,127,127)
       oBrct:nlineHeight  := 15
       oBrct:nHeaderHeight:= 15
       oBrct:nclrbackfocus:= RGB(200,100,50)
       oBrct:lAdjLastCol  :=.F.
       oBrct:lDrawFooters :=.T.
       oBrct:aFooters     :={,,,"Totales",,;
                            TRANSFORM(a_tcta[2],"@E ##,###,###.##"),;
                            TRANSFORM(a_tcta[3],"@E ##,###,###.##"),;
                            TRANSFORM(a_tcta[1],"@E ##,###,###.##") }

       *-------ADEUDADOS---------------------------*
       @ 0,0    LISTBOX oBrc2 ;
                FIELDS  AX[esta_cta(oBct2)]       ,;
                        DTOC((oBct2)->CTA_FVTO)   ,;
                        for_fec((oBct2)->CTA_FECH),;
                        (oBct2)->VTA_COMP ,;
                        (oBct2)->CTA_CUOT ,;
                        TRANSFORM((oBct2)->CTA_DEBE,"@EZ ##,###,###.##") ,;
                        TRANSFORM((oBct2)->CTA_HABE,"@EZ ##,###,###.##") ,;
                        TRANSFORM((oBct2)->CTA_PAGA,"@EZ ##,###,###.##") ,;
                        cta_tpaga(oBct2)  ,;
                        (oBct2)->OPE_OPER  ;
                HEADERS "E"          ,;
                        "Vencimiento",;
                        oemtoansi("Emisi¢n"),;
                        "Concepto"    ,;
                        "Cuota"       ,;
                        "Debe"        ,;
                        "Haber"       ,;
                        "Pagado"      ,;
                        "Sldo.Compte.",;
                        "Operador"     ;
                SIZES   15,75,75,150,50,85,85,85,110,200 ;
                ALIAS (oBct2)->(ALIAS()) ;
                FONT oFont ;
                UPDATE ;
                OF oFldx:adialogs[2]

       oBrc2:bFont        := {| nRow,nCol, nStyleLine|  IF( nCol=9 .AND. (nStyleline=0 .OR. nStyleline=3 .OR. nStyleLine=2),;
			                                                      oFch2:Hfont,NIL) }

       oBrc2:bLDblClick   := { | nRow, nCol, nFlags |  com_vcon((oBct2)->VTA_COMP,a_cli[2]) }
       oBrc2:bBkColor     := {| nRow,nCol, nStyleLine| esta_ctac(nRow,nStyleline,oBrc2)  }
       oBrc2:ajustify     := {2,.F.,.F.,.F.,2,.T.,.T.,.T.,.T.,.F.}
       oBrc2:nclrbackhead := RGB(0,200,255)
       oBrc2:nclrforehead := RGB(0,0,1)
       oBrc2:nclrNFback   := RGB(127,127,127)
       oBrc2:nlineHeight  := 15
       oBrc2:nHeaderHeight:= 15
       oBrc2:nclrbackfocus:= RGB(200,100,50)
       oBrc2:lAdjLastCol  :=.F.
       oBrc2:lDrawFooters :=.T.
       oBrc2:aFooters     :={,,,"Totales",,,,,;
                            TRANSFORM(a_tct2[1],"@E ##,###,###.##") }

       *-------CHEQUES EN CARTERA---------------------------*
       @ 0,0    LISTBOX oBrc3 ;
                FIELDS  for_fec((oBchq)->CHQ_FVTO),;
                        for_fec((oBchq)->CHQ_FECH),;
                        (oBchq)->CHQ_BANK ,;
                        (oBchq)->CHQ_SUCU ,;
                        (oBchq)->CHQ_NUME ,;
                        TRANSFORM((oBchq)->CHQ_TOTA,"@EZ ##,###,###.##") ,;
                        (oBchq)->VTA_COMP ,;
                        (oBchq)->CHQ_CLIE ,;
                        (oBchq)->OPE_OPER ;
                HEADERS "Fecha Cobro"       ,;
                        oemtoansi("Emisi¢n"),;
                        oemtoansi("Banco")  ,;
                        "Sucursal"          ,;
                        oemtoansi("N£mero") ,;
                        "Monto"             ,;
                        "Comprobante"       ,;
                        "Cliente"           ,;
                        "Operador"          ;
                SIZES   70,70,165,165,165,95,150,200,200 ;
                ALIAS (oBChq)->(ALIAS()) ;
                FONT oFont ;
                UPDATE ;
                OF oFldx:adialogs[3]

        oBrc3:bFont        := {| nRow,nCol, nStyleLine|  IF( nCol=6 .AND. (nStyleline=0 .OR. nStyleline=3 .OR. nStyleLine=2),oFch2:Hfont,NIL) }

       oBrc3:ajustify     := {.F.,.F.,.F.,.f.,.f.,.T.,.f.,.f.,.F.}
       oBrc3:nclrbackhead := RGB(0,200,255)
       oBrc3:nclrforehead := RGB(0,0,1)
       oBrc3:nclrNFback   := RGB(127,127,127)
       oBrc3:nlineHeight  := 15
       oBrc3:nHeaderHeight:= 15
       oBrc3:nclrbackfocus:= RGB(200,100,50)
       oBrc3:lAdjLastCol  :=.F.
       oBrc3:lDrawFooters :=.T.
       oBrc3:aFooters     :={,,,,"Total",;
                            TRANSFORM(a_tct3[1],"@E ##,###,###.##") }

       *--- FOLDER 4 - RESUMEN DE CUENTA
       @ 0,0    LISTBOX oBrc4 FIELDS "" ;
                HEADER "Detalle"             ,;
                       "Totales"             ;
                SIZES 250,180                ;
                UPDATE ;
                OF oFldx:aDialogs[4]

           oBrc4:bFont        := {| nRow,nCol, nStyleLine|  IF( oBrc4:nAt=4 .AND. (nStyleline=0 .OR. nStyleline=3 .OR. nStyleLine=2),oFch2:Hfont,NIL) }
           oBrc4:bBkColor     := {| nRow,nCol, nStyleLine|  IF( oBrc4:nAt=4 .AND. nCol=2 .AND. (nStyleline=0 .OR. nStyleline=3 .OR. nStyleLine=2),IF(AT("-",a_pag[oBrc4:nAt,2])>0,RGB(255,0,0),RGB(0,255,0)),NIL) }

           oBrc4:bLine:= {|nAt| nAt:= oBrc4:nAt, { a_pag[nAt,1],a_pag[nAt,2] } }
           oBrc4:aJustify     := { .F.,.T. }
           oBrc4:SetArray( a_pag )
           oBrc4:lAdjLastCol  := .f.
           oBrc4:nLineStyle   := 4
           oBrc4:nlineHeight  := 17
           oBrc4:nHeaderHeight:= 17
           oBrc4:nclrbackhead := RGB(0,200,255)
           oBrc4:nclrforehead := RGB(0,0,1)
           oBrc4:nclrNFback   := RGB(127,127,127)
           oBrc4:nclrbackfocus:= RGB(200,100,50)


oWcta:bGotFocus :={|| oBrct:SetFocus() }
oWcta:SetControl(oBrct)
oWcta:Gotop()

ACTIVATE WINDOW oWcta ;
         MAXIMIZED    ;
         ON RESIZE FoldRes4( oWcta, oFldx, oBrct, oBrc2, oBrc3, oBrc4 ) ;
         VALID     (oWcta:=Nil,;
				            cerrar_dbf(oBcta),;
				            cerrar_dbf(oBct2),;
                    cerrar_dbf(oBchq),.T.)

RETURN(.T.)

Posted: Fri May 04, 2007 5:19 pm
by GUSPRE
Estimado Antonio, muchas gracias ya esta resuelto cambie a definir los fonts al inicio del programa y listo...estupendo tu respuesta gracias...
saludos,