TXBrowse marcar y desmarcar todos registros...

TXBrowse marcar y desmarcar todos registros...

Postby ACC69 » Fri Sep 12, 2014 6:39 pm

Hola buenas tardes a todos los fivewineros, de antemano les envio cordial saludos.

Hola a todos, necesito la ayuda de ustedes, que desde hace par de dias ando batallando con los checkbox de marcar y desmarcar todos los registros o la opcion de seleccionar registros a marcar,he tomado el ejemplo en los samples de Mr Nages Rao, pero lo adapte a mi necesidad , no me hace el efecto.

Pero si puedo marcar registro por registro, de eso no tengo problema y me cambia el estado de Si ó No el unico problema que tengo, es marcar y desmarcar todos desde Header, serian tan amable, que alguien me pudiera proporcionarme algun ejemplo sencillo?

Este es el codigo :

Code: Select all  Expand view  RUN
S99->(OrdScope(0,STR(nNumFol,4)))
 S99->(OrdScope(1,STR(nNumFol,4)))

 S99->(DbGoTop())

 DEFINE DIALOG oDlg2 RESOURCE "EDITFACT" TITLE "Seleccionar registros..."
   REDEFINE XBROWSE oBrw ID 101 OF oDlg2 ;
            HEADER  "Folio" ,"Cuentas","Segm"  ,"Fecha" ,"Pagar"   ,"Referencia","Saldo","Base"  ,"IVA"  ,"Base"  ,"IVA"  ,"Tasa 0","Otros";
            COLUMNS "NUMFOL","CUENTAS","SEGNEG","FHAMOV","PAGADO","REFERE"    ,"SALDO","IMPBS1","IVA_1","IMPBS2","IVA_2","T_0"   ,"OTROS";
            PICTURES "9999","","9999","@D","","@!","99,999,999.99","99,999,999.99","99,999,999.99","99,999,999.99","99,999,999.99","99,999,999.99";
            SIZES 42,114,36,55,40,60,75,75,75,75,75,75,75 ;
            ALIAS S99->( ALIAS() ) // FOOTERS CELL AUTOCOLS

   WITH OBJECT oBrw
    //----- ESTILOS DE LINEAS -----\\
   * :nMarqueeStyle      := MARQSTYLE_HIGHLROW // Barra selectora
    :nMarqueeStyle      := MARQSTYLE_HIGHLWIN7 // Muy buena barra selectora
   * :nMarqueeStyle      := MARQSTYLE_HIGHLCELL // No permite la edicion de celda dandole Enter ó Doble Click
    :lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
    :nColDividerStyle   := LINESTYLE_LIGHTGRAY // LINESTYLE_BLACK
    :lAllowColSwapping  := .F. // Si es .t., intercambiar col es permitido

    //----- Headers y Footers -----\\
    :lFooter            := .T.  //Que tendrá footer
    :lRecordSelector    := .F. // Falso o verdadero, COL de la flechita de la Izq

    // Colores de texto y fondo de texto \\
    :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

    //----- Datos del browse -----\\
    :aCols[2]:bStrData := { || Ext_xNiv(S99->CUENTAS) }

    *:AddBmpFile("checkon.BMP")
    *:AddBmpFile("checkoff.BMP")

    :aCols[ 5]:AddResource( "CHBOXOFF" )           // tu ícono p/el boton
    :aCols[ 5]:AddResource( "CHBOXON" )
    :aCols[ 5]:cHeader       := " "
    :aCols[ 5]:nHeadBmpNo    := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 2, 1 ) }
    :aCols[ 5]:bEditValue    := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
    :aCols[ 5]:bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
                                           oBrw:SelectNone(), oBrw:SelectAll() ) }
    :aCols[ 5]:bBmpData      := { || IF(S99->PAGADO, 2, 1) }
    :aCols[ 5]:bStrData      := { || IF(S99->PAGADO,'Si', 'No') }
    :aCols[ 5]:blDClickData  := { |o,v| ( S99->PAGADO:= !S99->PAGADO, oBrw:DrawSelect() ) }
    :bKeyDown                := { |nKey| V_nKey(nKey,oBrw,S99,aSum) }

    :aCols[ 7]:oHeaderFont  := oFont
    :aCols[ 7]:bFooter      := {|| TRANS(aSum[1,1],"99,999,999.99") }  // Saldo
    :aCols[ 7]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
    :aCols[ 7]:oFooterFont  := oFont



Aqui tampoco me hace el efecto de cambiar a modo de si
Image

Aqui tampoco me hace el efecto de cambiar a modo de no
Image

Mucho les agradecere su apoyo su ayuda con los ejemplos.

Saludos y buen dia.!

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

Re: TXBrowse marcar y desmarcar todos registros...

Postby ACC69 » Fri Sep 12, 2014 10:26 pm

ACC69 wrote:Hola buenas tardes a todos los fivewineros, de antemano les envio cordial saludos.

Hola a todos, necesito la ayuda de ustedes, que desde hace par de dias ando batallando con los checkbox de marcar y desmarcar todos los registros o la opcion de seleccionar registros a marcar,he tomado el ejemplo en los samples de Mr Nages Rao, pero lo adapte a mi necesidad , no me hace el efecto.

Pero si puedo marcar registro por registro, de eso no tengo problema y me cambia el estado de Si ó No el unico problema que tengo, es marcar y desmarcar todos desde Header, serian tan amable, que alguien me pudiera proporcionarme algun ejemplo sencillo?

Este es el codigo :

Code: Select all  Expand view  RUN
S99->(OrdScope(0,STR(nNumFol,4)))
 S99->(OrdScope(1,STR(nNumFol,4)))

 S99->(DbGoTop())

 DEFINE DIALOG oDlg2 RESOURCE "EDITFACT" TITLE "Seleccionar registros..."
   REDEFINE XBROWSE oBrw ID 101 OF oDlg2 ;
            HEADER  "Folio" ,"Cuentas","Segm"  ,"Fecha" ,"Pagar"   ,"Referencia","Saldo","Base"  ,"IVA"  ,"Base"  ,"IVA"  ,"Tasa 0","Otros";
            COLUMNS "NUMFOL","CUENTAS","SEGNEG","FHAMOV","PAGADO","REFERE"    ,"SALDO","IMPBS1","IVA_1","IMPBS2","IVA_2","T_0"   ,"OTROS";
            PICTURES "9999","","9999","@D","","@!","99,999,999.99","99,999,999.99","99,999,999.99","99,999,999.99","99,999,999.99","99,999,999.99";
            SIZES 42,114,36,55,40,60,75,75,75,75,75,75,75 ;
            ALIAS S99->( ALIAS() ) // FOOTERS CELL AUTOCOLS

   WITH OBJECT oBrw
    //----- ESTILOS DE LINEAS -----\\
   * :nMarqueeStyle      := MARQSTYLE_HIGHLROW // Barra selectora
    :nMarqueeStyle      := MARQSTYLE_HIGHLWIN7 // Muy buena barra selectora
   * :nMarqueeStyle      := MARQSTYLE_HIGHLCELL // No permite la edicion de celda dandole Enter ó Doble Click
    :lColDividerComplete:= .T. //completa pintado hasta el footer cuando lineas no llenan todo el browse
    :nColDividerStyle   := LINESTYLE_LIGHTGRAY // LINESTYLE_BLACK
    :lAllowColSwapping  := .F. // Si es .t., intercambiar col es permitido

    //----- Headers y Footers -----\\
    :lFooter            := .T.  //Que tendrá footer
    :lRecordSelector    := .F. // Falso o verdadero, COL de la flechita de la Izq

    // Colores de texto y fondo de texto \\
    :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

    //----- Datos del browse -----\\
    :aCols[2]:bStrData := { || Ext_xNiv(S99->CUENTAS) }

    *:AddBmpFile("checkon.BMP")
    *:AddBmpFile("checkoff.BMP")

    :aCols[ 5]:AddResource( "CHBOXOFF" )           // tu ícono p/el boton
    :aCols[ 5]:AddResource( "CHBOXON" )
    :aCols[ 5]:cHeader       := " "
    :aCols[ 5]:nHeadBmpNo    := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 2, 1 ) }
    :aCols[ 5]:bEditValue    := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
    :aCols[ 5]:bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
                                           oBrw:SelectNone(), oBrw:SelectAll() ) }
    :aCols[ 5]:bBmpData      := { || IF(S99->PAGADO, 2, 1) }
    :aCols[ 5]:bStrData      := { || IF(S99->PAGADO,'Si', 'No') }
    :aCols[ 5]:blDClickData  := { |o,v| ( S99->PAGADO:= !S99->PAGADO, oBrw:DrawSelect() ) }
    :bKeyDown                := { |nKey| V_nKey(nKey,oBrw,S99,aSum) }

    :aCols[ 7]:oHeaderFont  := oFont
    :aCols[ 7]:bFooter      := {|| TRANS(aSum[1,1],"99,999,999.99") }  // Saldo
    :aCols[ 7]:nFootStrAlign:= 1     // AL_LEFT - AL_RIGHT - AL_CENTER   -  0 - 1 - 2
    :aCols[ 7]:oFooterFont  := oFont



Aqui tampoco me hace el efecto de cambiar a modo de si
Image

Aqui tampoco me hace el efecto de cambiar a modo de no
Image

Mucho les agradecere su apoyo su ayuda con los ejemplos.

Saludos y buen dia.!

Atte: Adrian C. C.
acc69@hotmail.com



Nadie tiene alguna rutina de como marcar o desmarcar todos los registros a seleccionar o seleccionar mas de solo 5...?? :( .

Saludos .

+1
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: TXBrowse marcar y desmarcar todos registros...

Postby joseluisysturiz » Sat Sep 13, 2014 2:07 am

Saludos, tengo algo parecido pero con query, si estas usando DBF, imagino que tienes una columna con campo logico, lo que debes hacer es cambiar a .t. o .f. dependiendo de los que quieras los campo que tengas filtrados y refrescar el browse, por lo menos asi me funciona con el qry, intentalo y avisa como te resulta, aca te anexo el codigo con un qry, saludos... :shock:

en la columna...
Code: Select all  Expand view  RUN

// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON D-CLICK
      :bLDblClick := {|nRow|IIF( oQryADJ:adj_adjudicar = 0 ,;
                               ( oQryADJ:adj_adjudicar := 1 ) ,;
                               ( oQryADJ:adj_adjudicar := 0 ) ) ,;
                                 act_check( oQryAdj ) ,;
                                 oQryADJ:REFRESH(), oBrw:REFRESH() }
 


Code: Select all  Expand view  RUN

PROCEDURE act_check( oQryAdj ) // ACTUALIZA CHECK PARA adjudicar

   LOCAL cSql, oError

   oQryAdj:REFRESH()

   cSql := "UPDATE cronograma SET "
   cSql += "adj_adjudicar=" + ClipValue2SQL( IF( oQryAdj:adj_adjudicar == 0, 1, 0 ) )
   cSql += " WHERE adj_insc = '" + ClipValue2SQL( oQryAdj:adj_insc ) + "' "

   TRY
      oDatos:oConex:Execute( cSql )

   CATCH oError
      MSGALERT( oError:Description + CRLF + ;
                "Error Grabando en Tabla (cronograma), Sentencia" + CRLF + CRLF + ;
                cSql, oDatos:cTitMsg )
   END

RETURN
 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: TXBrowse marcar y desmarcar todos registros...

Postby ACC69 » Sat Sep 13, 2014 2:38 am

joseluisysturiz wrote:Saludos, tengo algo parecido pero con query, si estas usando DBF, imagino que tienes una columna con campo logico, lo que debes hacer es cambiar a .t. o .f. dependiendo de los que quieras los campo que tengas filtrados y refrescar el browse, por lo menos asi me funciona con el qry, intentalo y avisa como te resulta, aca te anexo el codigo con un qry, saludos... :shock:

en la columna...
Code: Select all  Expand view  RUN

// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON D-CLICK
      :bLDblClick := {|nRow|IIF( oQryADJ:adj_adjudicar = 0 ,;
                               ( oQryADJ:adj_adjudicar := 1 ) ,;
                               ( oQryADJ:adj_adjudicar := 0 ) ) ,;
                                 act_check( oQryAdj ) ,;
                                 oQryADJ:REFRESH(), oBrw:REFRESH() }
 


Code: Select all  Expand view  RUN

PROCEDURE act_check( oQryAdj ) // ACTUALIZA CHECK PARA adjudicar

   LOCAL cSql, oError

   oQryAdj:REFRESH()

   cSql := "UPDATE cronograma SET "
   cSql += "adj_adjudicar=" + ClipValue2SQL( IF( oQryAdj:adj_adjudicar == 0, 1, 0 ) )
   cSql += " WHERE adj_insc = '" + ClipValue2SQL( oQryAdj:adj_insc ) + "' "

   TRY
      oDatos:oConex:Execute( cSql )

   CATCH oError
      MSGALERT( oError:Description + CRLF + ;
                "Error Grabando en Tabla (cronograma), Sentencia" + CRLF + CRLF + ;
                cSql, oDatos:cTitMsg )
   END

RETURN
 
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm

Re: TXBrowse marcar y desmarcar todos registros...

Postby ACC69 » Sat Sep 13, 2014 2:51 am

joseluisysturiz wrote:Saludos, tengo algo parecido pero con query, si estas usando DBF, imagino que tienes una columna con campo logico, lo que debes hacer es cambiar a .t. o .f. dependiendo de los que quieras los campo que tengas filtrados y refrescar el browse, por lo menos asi me funciona con el qry, intentalo y avisa como te resulta, aca te anexo el codigo con un qry, saludos... :shock:

en la columna...
Code: Select all  Expand view  RUN

// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON D-CLICK
      :bLDblClick := {|nRow|IIF( oQryADJ:adj_adjudicar = 0 ,;
                               ( oQryADJ:adj_adjudicar := 1 ) ,;
                               ( oQryADJ:adj_adjudicar := 0 ) ) ,;
                                 act_check( oQryAdj ) ,;
                                 oQryADJ:REFRESH(), oBrw:REFRESH() }
 


Code: Select all  Expand view  RUN

PROCEDURE act_check( oQryAdj ) // ACTUALIZA CHECK PARA adjudicar

   LOCAL cSql, oError

   oQryAdj:REFRESH()

   cSql := "UPDATE cronograma SET "
   cSql += "adj_adjudicar=" + ClipValue2SQL( IF( oQryAdj:adj_adjudicar == 0, 1, 0 ) )
   cSql += " WHERE adj_insc = '" + ClipValue2SQL( oQryAdj:adj_insc ) + "' "

   TRY
      oDatos:oConex:Execute( cSql )

   CATCH oError
      MSGALERT( oError:Description + CRLF + ;
                "Error Grabando en Tabla (cronograma), Sentencia" + CRLF + CRLF + ;
                cSql, oDatos:cTitMsg )
   END

RETURN
 


Hola buenas noches Ing. José Luis,gracias por el ejemplo,pero ahora sinceramente menos entiendo,ya que está en query,cosa que no me ha gustado la forma de usar query,cuando sería fácil usar select from where, sin necesidad de comillas,pero en fin,es otro diferente lenguaje como el que yo usaba en VFP y es más estándar que era simple,pero ya con fivewin es cuestión de familiarzarse,por ese motivo no me eh atrevido a cambiarme a SQL.
Pero se que algún día lo haré,ya que fivewin es cada día más robusta y si me veré obligado a cambiar de DBF a SQL.

Pero en dbf es llamar con ascan(),cosa que no consigo hacerlo funcionar, al momento de darle click desde header, es lo que no me cambia el valor lógico de Sí o No...pero por registro por registro si me funciona,excepto seleccionar desde hearder,todos o nada.

Saludos y gracias Ing. José Luis por el ejemplo,pero si me confundí más... :cry:

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

Re: TXBrowse marcar y desmarcar todos registros...

Postby joseluisysturiz » Sat Sep 13, 2014 2:58 am

Lo quer te queria hacer entender es que si le cambias el valor a los registros y luego refrescar el browse, hara lo que quieres, es decir, si usas un array, tendras que hacer un recorrido al array en la columna donde usas el setcheck cambiando el valor, si es .t. lo pasas a .f. o viceversa y si es DBF entonces usas un replace de igual forma en los registros que tengas filtrado, cambiandolos a .t. o .f. segun estes switchando en la cabezera de la columna, como usas un CHECK imagino que validaras cuando se haga click en dicha cabezera, podrias llamar una funcion como la que te enseñe y alli ves si lo vas a poner a .t. o .f. y luego refrescar tu xbrowse....espero no haberte confundido mas aunque creo esta facil lo que te explico, solo un poco de logica...a menos que algun otro colega tenga alguna forma mas facil y rapida de hacer lo que quieres, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: TXBrowse marcar y desmarcar todos registros...

Postby ACC69 » Mon Sep 15, 2014 4:16 pm

joseluisysturiz wrote:Lo quer te queria hacer entender es que si le cambias el valor a los registros y luego refrescar el browse, hara lo que quieres, es decir, si usas un array, tendras que hacer un recorrido al array en la columna donde usas el setcheck cambiando el valor, si es .t. lo pasas a .f. o viceversa y si es DBF entonces usas un replace de igual forma en los registros que tengas filtrado, cambiandolos a .t. o .f. segun estes switchando en la cabezera de la columna, como usas un CHECK imagino que validaras cuando se haga click en dicha cabezera, podrias llamar una funcion como la que te enseñe y alli ves si lo vas a poner a .t. o .f. y luego refrescar tu xbrowse....espero no haberte confundido mas aunque creo esta facil lo que te explico, solo un poco de logica...a menos que algun otro colega tenga alguna forma mas facil y rapida de hacer lo que quieres, saludos... :shock:



Ok si tienes razon Jose Luis, es que ando perdido con eso de seleccionar dandole click, desde header y que aplique todos, o deseleccionar, es que crei que alguien ya tenia algo parecido con la rutina .

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: No registered users and 93 guests