TXBrowse-Consulta

TXBrowse-Consulta

Postby juan_arroyo_t » Sat Aug 29, 2015 1:58 am

Amigos buenas noches

Si alguien pudiera ayudarme
Pongo esta porcion de codigo de la claseTWBrowse y quisiera conocer el equivalente en xbrowse de la instruccion :aActions
Code: Select all  Expand view
do case
                   case len(paNombres) = 2
                     :aActions      := { { || f_CambiarIndice( pcBaseDatos, paNombres[1], 1, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[2], 2, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() } }
                   case len(paNombres) = 3
                     :aActions      := { { || f_CambiarIndice( pcBaseDatos, paNombres[1], 1, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[2], 2, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[3], 3, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() } }
                   case len(paNombres) = 4
                     :aActions      := { { || f_CambiarIndice( pcBaseDatos, paNombres[1], 1, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[2], 2, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[3], 3, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[4], 4, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() } }
                 end case


Muchas gracias
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
User avatar
juan_arroyo_t
 
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Re: TXBrowse-Consulta

Postby ACC69 » Sat Aug 29, 2015 3:05 am

juan_arroyo_t wrote:Amigos buenas noches

Si alguien pudiera ayudarme
Pongo esta porcion de codigo de la claseTWBrowse y quisiera conocer el equivalente en xbrowse de la instruccion :aActions
Code: Select all  Expand view
do case
                   case len(paNombres) = 2
                     :aActions      := { { || f_CambiarIndice( pcBaseDatos, paNombres[1], 1, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[2], 2, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() } }
                   case len(paNombres) = 3
                     :aActions      := { { || f_CambiarIndice( pcBaseDatos, paNombres[1], 1, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[2], 2, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[3], 3, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() } }
                   case len(paNombres) = 4
                     :aActions      := { { || f_CambiarIndice( pcBaseDatos, paNombres[1], 1, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[2], 2, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[3], 3, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() },;
                                         { || f_CambiarIndice( pcBaseDatos, paNombres[4], 4, oBrowse, oDlg ), cBuscar := space(100), oDlg:Update() } }
                 end case


Muchas gracias


Hola Buenas noches Ing. Juan Arroyo,de antemano le envio cordial saludos.
Creo que te refieres abrir del xbrose a otro xbrowse o dialogo te pongo el ejemplo ...

Code: Select all  Expand view
  // Consulta Estados de cuentas a detalle \\
   REDEFINE XBROWSE oBrw2 ID 102 OF oDlg ;
            HEADERS 'Tipo','Num','Fecha','Referencia','Concepto','Cargo','Abono','Sdo Act' ;
            COLSIZES 28,30,52,80,180,85,85,85  ;
            PICTURES "@!"                     ,;
                     "@9999"                  ,;
                     "@D"                     ,;
                     "@!"                     ,;
                     "@!"                     ,;
                     "999,999,999.99"         ,;
                     "999,999,999.99"         ,;
                     "999,999,999.99"          ;
            ARRAY aDatos2 FOOTERS CELL AUTOCOLS


   WITH OBJECT oBrw2
     //ESTILOS DE LINEAS
     :nMarqueeStyle      := MARQSTYLE_HIGHLROW //barra selectora
     :lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
     :nColDividerStyle   := LINESTYLE_BLACK

     :lFooter               := .T.

     :bClrSel               := {|| { nRGB(  0,  0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
     :bClrSelFocus          := {|| { CLR_BLACK, aGradBarSelFocus } }    // para barra de linea selecc cuando el control tiene el foco
     :lKinetic              := .F.
     :lContrastClr          := .F. //para que no cambie color de texto automaticamente segun intensidad del fondo
     :nStretchCol           := STRETCHCOL_LAST
     :aCols[4]:nEdittype    := EDIT_BUTTON
     :aCols[4]:nBtnBmp      := 1
    *:aCols[4]:nWidth       := 50
     :aCols[4]:AddResource( "DETFACT" )           // tu ícono p/el boton
     :aCols[4]:bEditBlock   := {|| MovDetFac(oBrw1,oBrw2) }  // llama a una funcion que abre un Dlg y muestra el Detalle
     *:aCols[4]:bEditBlock   := {|| IF( SUBS(oBrw1:aCols[2]:Value,1,3) = "   ", MovDetFac(oBrw1,oBrw2),) }  // llama a una funcion que abre un Dlg y muestra el Detalle
     :aCols[6]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
     :aCols[6]:oFooterFont  := oFont
     :aCols[7]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
     :aCols[7]:oFooterFont  := oFont
     :aCols[8]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
     :aCols[8]:oFooterFont  := oFont
   END

   oWChld:bGotFocus := {|| oBrw1:SetFocus() }

   CargaDatos(oBrw1,@aDatos1)
   MovEdoCta(oBrw1,@aDatos2,oBrw2)

   nW:= IF(GetVersion()[1]>5,15, 8)
   nH:= IF(IsWinNT(),33,25)

  ACTIVATE DIALOG oDlg NOWAIT VALID ( oWChld:End() ) // IT HAS TO BE NONMODAL -->NOWAIT CLAUSE
 ACTIVATE WINDOW oWChld ON INIT oDlg:Move(0,0) ON RESIZE oWChld:SetSize(oDlg:nWidth+nW,oDlg:nHeight+nH,.T.) ;
                                                  VALID  Finaliza(oItem)
RETURN NIL



Aqui en esta parte llama a otra funcion, procedimientos, dialogo, xbrowse...que se yo...depende lo que usted desea hacer Ing.

Code: Select all  Expand view
:aCols[4]:bEditBlock   := {|| MovDetFac(oBrw1,oBrw2) }  // llama a una funcion que abre un Dlg y muestra el Detalle


Espero que a eso le resuelva su respuesta ..

Saludos

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: TXBrowse-Consulta

Postby juan_arroyo_t » Sat Aug 29, 2015 3:33 am

Adrian

Gracias por tu pronta respuesta

El codigo que pongo pertenece a la case TWBrowse y funciona perfectamente pero yo trato de hacerlo que TXBrwose

paNombres es una array con los nombres de los campos y en base al tamaño del array, hace las acciones

Necesito saber que instruccion uso en TXBrowse para :aActions
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
User avatar
juan_arroyo_t
 
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Re: TXBrowse-Consulta

Postby ACC69 » Sat Aug 29, 2015 5:16 am

juan_arroyo_t wrote:Adrian

Gracias por tu pronta respuesta

El codigo que pongo pertenece a la case TWBrowse y funciona perfectamente pero yo trato de hacerlo que TXBrwose

paNombres es una array con los nombres de los campos y en base al tamaño del array, hace las acciones

Necesito saber que instruccion uso en TXBrowse para :aActions



Creo que te refieres a
Code: Select all  Expand view
oBrw:bChange:= funcion()


Te pongo el ejemplo completo que incluye arrays

Code: Select all  Expand view
#Include "FiveWin.ch"
#Include "xBrowse.ch"

STATIC oDlg,oFont1, oFont
Static S05,S08, S10, S13 // Alias de base de datos
STATIC lSelSeg,NivBal
STATIC cCta,cCtaIni,cRefere,SdoMesAnt,SdoIni,Cta1,Cta2,Cta3,Cta4,nReg,nCol,aSum, aTot //
STATIC nMA_Ini, nMA_Fin, n
STATIC aGradBarSelFocus := {{ 1, RGB(252,232,171) , RGB(248,195,34) }} ,;
       aGradBarSel      := {{ 1, RGB(252,235, 184), RGB(251,222,88) }}
Static cID_AMMov

MemVar oWnd, oMOpc, nNumEmp, cDescrEmp, Mes_Per, Ano_Per, nStation,EjeMAIn

//------------------------------------------------------------------------------
FUNCTION C_PROVCLIE()
 LOCAL oItem:=oMOpc,oWChld, nW, nH,xEmp
 LOCAL aDatos1, aDatos2, oBrw1, oBrw2,lSalir

 xEmp     := nNumEmp
 lSelSeg  := .F.
 NivBal   := 4
 aTot     := {{ 0,0,0,0,0,0,0 }}
 nReg     := 0
 cID_AMMov:= TSTR(VAL(SUBS(STR(Ano_Per,4),3,2))) + TSTR(Mes_Per)

 aDatos1:= {{ "","","","","","","" }}
 aDatos2:= {{ "","","","","","","","" }}

 *DEFINE FONT oFont1 NAME "TAHOMA" SIZE 0,-10 ITALIC BOLD
 DEFINE FONT oFont1 NAME "TAHOMA" SIZE 0,-12 // Fuentes y Dialogos
 DEFINE FONT oFont NAME "ARIAL" SIZE 0,-12 BOLD

 DEFINE WINDOW oWChld MDIChild FROM 1,2 TO 2,2 OF oWnd TITLE 'Consulta estado de cuenta de CxP Proveedores ' NOZOOM // ICON oIcon
  DEFINE DIALOG oDlg RESOURCE "C_CXPPROVE" OF oWChld FONT oFont1 COLOR CLR_BLUE
   // Consulta Balanza cuentas acumulados \\
   REDEFINE XBROWSE oBrw1 ID 101 OF oDlg ;
            HEADERS 'Cuentas','Descripción','Sdo Ant','Cargo','Abono','Sdo Act','TipNat' ;
            COLSIZES 130,260,85,85,85,85,20 ;
            PICTURES "@!"                  ,;
                     "@!"                  ,;
                     "999,999,999.99"      ,;
                     "999,999,999.99"      ,;
                     "999,999,999.99"      ,;
                     "999,999,999.99"      ,;
                     "@!"                   ;
            ARRAY aDatos1 FOOTERS AUTOCOLS

   For n := 1 to len( oBrw1:aCols ) //Font segun lineas condicionadas // Como puedo leer el valor ...
        *oBrw1:aCols[n]:oDataFont := {|| IF( !EMPTY(oBrw1:aCols[2]:Value), IF( !substr(oBrw1:aCols[2]:Value,1,3) = "   ", oFont, oWnd:oFont) ,) }
        oBrw1:aCols[n]:oDataFont := {|| if( !empty(oBrw1:aCols[2]:Value), if( oBrw1:aCols[7]:Value = "A", oFont, oWnd:oFont) ,) }  
   Next

   WITH OBJECT oBrw1
     //ESTILOS DE LINEAS
     :nMarqueeStyle      := MARQSTYLE_HIGHLROW //barra selectora
     :lColDividerComplete:= .T.                //completa pintado hasta el footer cuando lineas no llenan todo el browse
     :nColDividerStyle   := LINESTYLE_BLACK

     :bClrSel         := { || { nRGB(  0,  0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
     :bClrSelFocus    := { || { CLR_BLACK, aGradBarSelFocus } }    // para barra de linea selecc cuando el control tiene el foco
     :lKinetic        := .F.
     :lContrastClr    := .F.  //para que no cambie color de texto automaticamente segun intensidad del fondo
     :bChange         := { || MovEdoCta(oBrw1,@aDatos2,oBrw2), oBrw2:Refresh() }
     :aCols[7]:lHide  = .T.  
   END

   //Siguiendo tu estilo, para poner en negrita las acumulativas, pueder hacer asi:
   *For n := 1 to len( oBrw1:aCols )   //Font segun lineas condicionadas
   *   oBrw1:aCols[n]:oDataFont := {|| IF( !SUBS(oBrw1:aCols[2]:Value,1,3) = "   ", oFont, oWnd:oFont) }
   *Next

   // Consulta Estados de cuentas a detalle \\
   REDEFINE XBROWSE oBrw2 ID 102 OF oDlg ;
            HEADERS 'Tipo','Num','Fecha','Referencia','Concepto','Cargo','Abono','Sdo Act' ;
            COLSIZES 28,30,52,80,180,85,85,85  ;
            PICTURES "@!"                     ,;
                     "@9999"                  ,;
                     "@D"                     ,;
                     "@!"                     ,;
                     "@!"                     ,;
                     "999,999,999.99"         ,;
                     "999,999,999.99"         ,;
                     "999,999,999.99"          ;
            ARRAY aDatos2 FOOTERS CELL AUTOCOLS


   WITH OBJECT oBrw2
     //ESTILOS DE LINEAS
     :nMarqueeStyle      := MARQSTYLE_HIGHLROW //barra selectora
     :lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
     :nColDividerStyle   := LINESTYLE_BLACK

     :lFooter               := .T.

     :bClrSel               := {|| { nRGB(  0,  0,255), aGradBarSel } } // para barra de linea selecc cuando el control no tiene el foco
     :bClrSelFocus          := {|| { CLR_BLACK, aGradBarSelFocus } }    // para barra de linea selecc cuando el control tiene el foco
     :lKinetic              := .F.
     :lContrastClr          := .F. //para que no cambie color de texto automaticamente segun intensidad del fondo
     :nStretchCol           := STRETCHCOL_LAST
     :aCols[4]:nEdittype    := EDIT_BUTTON
     :aCols[4]:nBtnBmp      := 1
    *:aCols[4]:nWidth       := 50
     :aCols[4]:AddResource( "DETFACT" )           // tu ícono p/el boton
     :aCols[4]:bEditBlock   := {|| MovDetFac(oBrw1,oBrw2) }  // llama a una funcion que abre un Dlg y muestra el Detalle
     *:aCols[4]:bEditBlock   := {|| IF( SUBS(oBrw1:aCols[2]:Value,1,3) = "   ", MovDetFac(oBrw1,oBrw2),) }  // llama a una funcion que abre un Dlg y muestra el Detalle
     :aCols[6]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
     :aCols[6]:oFooterFont  := oFont
     :aCols[7]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
     :aCols[7]:oFooterFont  := oFont
     :aCols[8]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
     :aCols[8]:oFooterFont  := oFont
   END

   oWChld:bGotFocus := {|| oBrw1:SetFocus() }

   CargaDatos(oBrw1,@aDatos1)
   MovEdoCta(oBrw1,@aDatos2,oBrw2)

   nW:= IF(GetVersion()[1]>5,15, 8)
   nH:= IF(IsWinNT(),33,25)

  ACTIVATE DIALOG oDlg NOWAIT VALID ( oWChld:End() ) // IT HAS TO BE NONMODAL -->NOWAIT CLAUSE
 ACTIVATE WINDOW oWChld ON INIT oDlg:Move(0,0) ON RESIZE oWChld:SetSize(oDlg:nWidth+nW,oDlg:nHeight+nH,.T.) ;
                                                  VALID  Finaliza(oItem)
RETURN NIL

 * CARGA DATOS Y MOVIMIENTOS AUXILIARES TEMPORALES EXCEPTO LA FUNCION CargaDatos, que es una rutina para agregar AADD()*
//------------------------------------------------------------------------------
STATIC FUNCTION CargaDatos(oBrw1,aDatos1)
 LOCAL cCtas

 aDatos1 := {}

 S08 := Abre_Dbf(8,8)   // ABRE CATCTAxA.DBF  // Catalogo de cuentas INDEX ON "CUENTAS"
 S13 := Abre_Dbf(13,13) // Abre: MOVTxMxA.DBF // Movimientos  INDEX ON "MV_NCTA+MV_REFE"

 (S08)->(DbGoTop())

 SdoMesAnt:= ("SALD"+TSTR(Mes_Per - 1))
 cCtas    := SUBS((S08)->ID_CUENTA,1,4)

 IF (S08)->( !BOF() )
     DO WHILE (S08)->(!EOF())
         IF cCtas <> SUBS((S08)->ID_CUENTA,1,4)
             AADD( aDatos1, { "","","","","","","" } )
         ENDIF

         (S08)->(DbSetOrder(1))
         (S08)->(DbSeek((S08)->ID_CUENTA))

         SdoIni := (S08)->(&SdoMesAnt)

         (S13)->( DbSetOrder(7) )                       // Asi funciona mejor
         (S13)->( SetSeek(cID_AMMov+(S08)->ID_CUENTA) ) // Asi funciona mejor

         nCol:= NivCol(nCol)

         aSum := {{0,0,0}}

         DO WHILE FUNNIV(lSelSeg,S08,S10,S13,Cta1,Cta2,Cta3,Cta4) .AND. (S13)->(!EOF())
             aSum[1,1] := aSum[1,1] + (S13)->CARGO // Suma CARGOS
             aSum[1,2] := aSum[1,2] + (S13)->ABONO // Suma ABONOS

             (S13)->(DbSkip())
         ENDDO

         aSum[1,3] := (SdoIni + aSum[1,1]) - aSum[1,2]

         IF ( (S08)->TIPONAT = 'D' )
             aTot[1,1] := aTot[1,1] + SdoIni    // Total Saldos iniciales
             aTot[1,2] := aTot[1,2] + aSum[1,1] // Total de Cargos
             aTot[1,3] := aTot[1,3] + aSum[1,2] // Total DE Abonos
         ENDIF

         IF ( (S08)->NIVSUM <= NivBal )
             IF SdoIni <> 0 .OR. aSum[1,1] <> 0 .OR. aSum[1,2] <> 0
                 AADD( aDatos1, { Ext_xNiv(LTRIM((S08)->ID_CUENTA)), ;     // Llena datos de ARRAY
                                  nCol+(S08)->NOMBCTA              , ;
                                  SdoIni                           , ;
                                  aSum[1,1]                        , ;
                                  aSum[1,2]                        , ;
                                  aSum[1,3]                        , ;
                                  (S08)->TIPONAT                       } )
             ENDIF
         ENDIF

         cCtas := SUBS((S08)->ID_CUENTA,1,4)

         (S08)->(DbSkip())
     ENDDO
 ELSE
     MsgInfo("que hace aqui...")
     aDatos1 := {{ "","","","","","","" }}
 ENDIF

 oBrw1:SetArray(aDatos1)
RETURN NIL

//------------------------------------------------------------------------------
STATIC FUNCTION MovEdoCta(oBrw1,aDatos2,oBrw2)
 LOCAL aDat[9],aSum[8], aSub[8], aTot[8]

 cCta    := oBrw1:aArrayData[oBrw1:nArrayAt,1]
 aDatos2 := {}

 *IF ( oBrw1:aCols[6]:Value ) <> 0
 *    MsgInfo(oBrw1:aCols[6]:Value)
 *ENDIF

 AFill(aDat,"")
 AFill(aSum,0)
 AFill(aSub,0)
 AFill(aTot,0)

 IF !cCta == ""  // Condicion "" que si encuentra separacion que es "",no busque en el DbSeek por ser nulo
 *IF ( oBrw1:aCols[6]:Value ) <> 0
 *     MsgInfo("Pasa aqui...")
     cCtaIni:= SUBS(cCta,1,4)+SUBS(cCta,6,4)+SUBS(cCta,11,4)+SUBS(cCta,16,4)

     (S13)->( DbSetOrder(5) )
     *(S13)->( DbGoTop() )

     IF (S13)->( DbSeek(cCtaIni) )
         aDat[2]:= (S13)->ID_REFERE  // ID Principal de referencias folios o facturas

         DO WHILE (S13)->(!EOF())
             IF (S13)->ID_AMMOV <= cID_AMMov
                 IF (S13)->ID_REFERE <> aDat[2] // ID Referencia
                     IF ( ROUND(aSum[3],2) <> 0.00 )
                         aTot[1] += aSum[1]  // Total Cargos
                         aTot[2] += aSum[2]  // Total Abonos
                         aTot[3] += aSum[3]  // Total Dif Sdos

                         AADD( aDatos2, { aDat[3]   , ;    // (S13)->ID_TIPOPL
                                          aDat[4]   , ;    // (S13)->ID_NUMPOL
                                          aDat[5]   , ;    // (S13)->FECMOV
                                          aDat[2]   , ;    // (S13)->ID_REFERE
                                          aDat[6]   , ;    // (S13)->CONCEPMOV
                                          aSum[1]   , ;    // (S13)->CARGO
                                          aSum[2]   , ;    // (S13)->ABONO
                                          aSum[3]      } ) // Dif Sdo
                     ENDIF

                     AFill(aSum,0)
                 ENDIF

                 IF (S13)->ID_CUENTA > cCtaIni
                     EXIT
                 ENDIF

                 aDat[1]:= (S13)->ID_CUENTA   // ID Principal de cuentas contables
                 aDat[2]:= (S13)->ID_REFERE   // ID Principal de referencias folios o facturas
                 aDat[3]:= (S13)->ID_TIPOPL
                 aDat[4]:= (S13)->ID_NUMPOL
                 aDat[5]:= (S13)->FECMOV
                 aDat[6]:= (S13)->CONCEPMOV

                 aSum[1] += (S13)->CARGO      // Suma Cargos
                 aSum[2] += (S13)->ABONO      // Suma Abonos
                 aSum[3] := aSum[1] - aSum[2] // Suma Dif de saldos
             ENDIF

             (S13)->( DbSkip() )
         ENDDO
     ENDIF
 ENDIF

 *oBrw2:SetArray(aDatos2)     // Este No funciona ...
 oBrw2:aArrayData := aDatos2  // Este Si funciona ...

 oBrw2:aCols[6]:nTotal= Trans( aTot[1],"999,999,999.99") // Total cargos
 oBrw2:aCols[7]:nTotal= Trans( aTot[2],"999,999,999.99") // Total Abonos
 oBrw2:aCols[8]:nTotal= Trans( aTot[3],"999,999,999.99") // Total Dif Sdos
 *ENDIF
 oBrw2:Refresh()
RETURN NIL


//------------------------------------------------------------------------------
STATIC FUNCTION MovDetFac(oBrw1,oBrw2)
 LOCAL oDlg2, oFnt1, oS_Obs := ARRAY(2), oBrw
 LOCAL cObserva:=""

 cCta    := oBrw1:aArrayData[oBrw1:nArrayAt,1]
 cCtaIni := SUBS(cCta,1,4)+SUBS(cCta,6,4)+SUBS(cCta,11,4)+SUBS(cCta,16,4)
 cRefere := oBrw2:aArrayData[oBrw2:nArrayAt,4]

 IF !EMPTY(cRefere) // Condicion Nil que la referencia esta vacia
     *Refr_MovFact(cCtaIni,cRefere,oBrw)

     (S13)->( OrdScope(0,cCtaIni+cRefere) )
     (S13)->( OrdScope(1,cCtaIni+cRefere) )

     (S13)->( DbGoTop() )

     DEFINE FONT oFnt1 NAME "Arial" SIZE 0,-14 BOLD

     DEFINE DIALOG oDlg2 RESOURCE "C_MOVDETFAC" FONT oFont1 COLOR CLR_BLUE
      REDEFINE XBROWSE oBrw ID 101 OF oDlg2 ;
               HEADERS 'Tipo'     ,'Num'      ,'Fecha' ,'Referencia','Concepto' ,'Cargo','Abono',"Dif Sdo" ;
               COLUMNS 'ID_TIPOPL','ID_NUMPOL','FECMOV','ID_REFERE' ,'CONCEPMOV','CARGO','ABONO','00.00'  ;
               SIZES 28,30,52,80,180,85,85,85 ;
               PICTURES "","","","","","999,999,999.99","999,999,999.99","999,999,999.99" ;
               ALIAS (S13)->( ALIAS() ) FOOTERS LINES CELL

       AEval( oBrw:aCols, { |o| o:nEditType    := 0     ,; //No editables
                               o:nHeadStrAlign:= 2 } )    //texto encab/col centrado

       Refr_MovFact(oBrw)

       WITH OBJECT oBrw
         :nMarqueeStyle    := MARQSTYLE_HIGHLROW  //_HIGHLROWMS
         :nColDividerStyle:=LINESTYLE_LIGHTGRAY
         :nRowDividerStyle:=LINESTYLE_LIGHTGRAY
         //:bClrStd       := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }  // colores para lineas normales
         :bClrSel       := {|| { nRGB(  0,  0,255), aGradBarSel } }  // para barra de linea selecc cuando el control no tiene el foco
         :bClrSelFocus := { || { CLR_BLACK, aGradBarSelFocus } }     // para barra de linea selecc cuando el control tiene el foco
         :lKinetic      := .f.
         :lContrastClr  := .f.  //para que no cambie color de texto automaticamente segun intensidad del fondo
         :bChange      := { || S_Observac(@oS_Obs,@cObserva) }

         :aCols[6]:nFootStrAlign:= 1                  // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
         * :aCols[6]:oFooterFont  := oFont
         * oBrw:aCols[6]:nTotal= Trans( aSum[1],"999,999,999.99") // Total cargos

         :aCols[7]:nFootStrAlign:= 1                  // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
         * :aCols[7]:oFooterFont  := oFont
         * oBrw:aCols[7]:nTotal= Trans( aSum[2],"999,999,999.99") // Total cargos

         :aCols[8]:nFootStrAlign:= 1                  // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
         :aCols[8]:oFooterFont  := oFont
       END

      REDEFINE SAY oS_Obs[01] PROMPT "Observación:" ID 151 OF oDlg2 COLOR CLR_BLACK Font oFnt1
      REDEFINE SAY oS_Obs[02] PROMPT cObserva       ID 152 OF oDlg2 COLOR CLR_BLUE  Font oFnt1
     ACTIVATE DIALOG oDlg2 CENTERED
 ENDIF

 (S13)->( OrdScope(0,Nil) )
 (S13)->( OrdScope(1,Nil) )

 (S13)->( DbSeek(cCtaIni) )
 (S13)->( DbGoTop() )

 RELEASE oBrw
RETURN NIL


//------------------------------------------------------------------------------
STATIC FUNCTION Refr_MovFact(oBrw)
 LOCAL aSum[3]

 AFILL(aSum,0)

 (S13)->( DbSeek(cCtaIni+cRefere) )

 (S13)->( DbGoTop() )

 DO WHILE (S13)->ID_CUENTA = cCtaIni .AND. (S13)->ID_REFERE = cRefere .AND. (S13)->( !EOF() )
     aSum[1] += (S13)->CARGO
     aSum[2] += (S13)->ABONO
     aSum[3] := aSum[1] - aSum[2]

     (S13)->( DbSkip() )
 ENDDO

 oBrw:aCols[6]:bFooter := {|| TRANS(aSum[1],"99,999,999,999.99") }
 oBrw:aCols[7]:bFooter := {|| TRANS(aSum[2],"99,999,999,999.99") }
 oBrw:aCols[8]:bFooter := {|| TRANS(aSum[3],"99,999,999,999.99") }

 oBrw:Refresh()

 (S13)->( OrdScope(0,cCtaIni+cRefere) )
 (S13)->( OrdScope(1,cCtaIni+cRefere) )

 (S13)->( DbGoTop() )
RETURN NIL

//------------------------------------------------------------------------------
STATIC FUNCTION S_Observac(oS_Obs,cObserva)
 cObserva:= (S13)->REFEREAMP  // Referencia ampliada u observacion

 oS_Obs[02]:Refresh()
RETURN NIL

 ** Funcion para espaciar niveles de cuentas  Ok salio como yo deseaba...!
//------------------------------------------------------------------------------
STATIC FUNCTION NivCol(nCol)
 DO CASE
    CASE (S08)->NIVSUM = 1
          nCol := ""

    CASE (S08)->NIVSUM = 2
          nCol = " "

    CASE (S08)->NIVSUM = 3
          nCol = "  "

    CASE (S08)->NIVSUM = 4
          nCol = "   "
 ENDCASE
RETURN(nCol)





//------------------------------------------------------------------------------
STATIC FUNCTION Finaliza(oItem)
 LOCAL lRet := .F.

 IF MsgNoYes("¿ Salir consulta estado de cuenta ?","Confirme")
     Close_Dbf(5,S05)
     Close_Dbf(8,S08)
     Close_Dbf(10,S10)
     Close_Dbf(13,S13)

     (S13)->(DbCloseArea())

     oFont:End()

     oItem:Enable() // Cerramos

     lRet:= .T.
 ENDIF

 Release lRet
RETURN (lRet)



Saludos

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: TXBrowse-Consulta

Postby juan_arroyo_t » Mon Sep 07, 2015 1:01 am

Adrian

No habia tenido oportunidad de entrar al foro
Muchas gracias por compartir tu codigo me fue de mucha utilidad
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
User avatar
juan_arroyo_t
 
Posts: 196
Joined: Fri May 15, 2009 1:25 am
Location: Cuautitlán, Mexico

Re: TXBrowse-Consulta

Postby ACC69 » Tue Sep 08, 2015 4:52 pm

juan_arroyo_t wrote:Adrian

No habia tenido oportunidad de entrar al foro
Muchas gracias por compartir tu codigo me fue de mucha utilidad



Hola buenos dias Ing. Arroyo, me alegra que te haya servido de mucha ayuda..que yo pase por lo mismo que gracias a los Ing. que me ayudaron a migrar a TXBrowse.

Saludos y buen dia

Atte: Adrian C. C.
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 83 guests