Page 1 of 1

Select todos los registros en xBrowse (SOLUCIONADO)

Posted: Fri Nov 20, 2020 3:11 pm
by Armando
Hola Amigos:

Nuevamente aquí peleándome con un xBrowse.

EL browse esta definido para multiselect y necesito que al momento de
ir llenándolo con registros estos queden automáticamente seleccionados
con objeto de obtener el total de la columna.

Algún ejemplo?

Saludos

Re: Select todos los registros en xBrowse

Posted: Fri Nov 20, 2020 8:07 pm
by FranciscoA
Prueba el siguiente codigo y nos dices.

Code: Select all

//-----------------------------------------------//
// AGREGAR REGISTROS QUEDANDO AUTOMATICAMENTE SELECCIONADOS 
//-----------------------------------------------//
Function MultiSeleTodo()
local oDlg, oBrw, oFont
local aGradBarSel := { { 1, RGB(252,232,171), RGB(248,195, 34) } }
local aGradRowSel := { { 1, RGB(118,145,164), RGB(241,222,088) } }

    XbrNumFormat( 'A', .t. )

   USE CUSTOMER NEW ALIAS "CUST" SHARED 

   COPY STRUCT TO ".\CUST2"
   USE CUST2 NEW ALIAS "CUST2" EXCLUSIVE

   CUST->(DBGOTO(5))

   DBSELECTAREA("CUST2")

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 700,400 PIXEL FONT oFont TITLE "AGREGAR ITEM Y SELECCIONARLO AUTOMATICAMENTE"

   @ 20,10 XBROWSE oBrw SIZE -10,-40 PIXEL OF oDlg ;
           DATASOURCE "CUST2" ;
           COLUMNS "FIRST", "LAST", "CITY", "ZIP" ;
           CELL LINES NOBORDER AUTOSORT

   WITH OBJECT oBrw
      :nMarqueeStyle   := MARQSTYLE_HIGHLROWMS //Multiselect
      :bClrSel         := {|| { nRGB(  0,  0,  0), aGradRowSel } }  // para barra de linea selecc cuando el control no tiene el foco
      :bClrSelFocus    := { || { CLR_BLACK, aGradBarSel } }     // para barra de linea selecc cuando el control tiene el foco
      :CreateFromCode()
   END

   @ 170, 10 BUTTON "Agregar Item" SIZE 60,20 PIXEL OF oDlg ;
             ACTION ( AgregItem("CUST","CUST2") ,;
                      oBrw:SetFocus(), oBrw:Refresh() ,;  
                      oBrw:Select(1),;  
                      CUST->(DbSkip()) )

   @ 170, 80 BUTTON "Salir" SIZE 60,20 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
      RELEASE FONT oFont
      Cust->(dbclosearea())
      Cust2->(dbclosearea())
      Ferase(".\Cust2.dbf")
return nil

//-----------------------------------------------//
Function AgregItem(cAliasFuente,cAliasDest)
local n

  (cAliasDest)->(dbappend())
  For n := 1 to (cAliasFuente)->(Fcount()) 
    (cAliasDest)->( FieldPut( n,(cAliasFuente)->(FieldGet(n)) ) )
  Next

Return nil
Saludos.

Re: Select todos los registros en xBrowse

Posted: Fri Nov 20, 2020 8:10 pm
by FranciscoA
Armando wrote:Hola Amigos:

Nuevamente aquí peleándome con un xBrowse.

EL browse esta definido para multiselect y necesito que al momento de
ir llenándolo con registros estos queden automáticamente seleccionados
con objeto de obtener el total de la columna.

Algún ejemplo?

Saludos
Una pregunta:
El total de la columna no lo obtienes con oBrw:MakeTotals() ?

Re: Select todos los registros en xBrowse

Posted: Sat Nov 21, 2020 2:30 am
by Armando
Francisco:

Como siempre, sacando las papas del horno.

El :MakeTotals no me sirve porque debo permitir al usuario
que también pueda elegir renglones a quitar. En otras palabras
necesito ambas posibilidades, MakeTotals y Select.

Voy a probar tu sugerencia.

Saludos

Re: Select todos los registros en xBrowse

Posted: Sat Nov 21, 2020 1:11 pm
by cmsoft
Armando, siguendo el ejemplo de Francisco, tambien podrias hacer una suma condicional, y usar en la tabla que editas un campo condicional con SetCheck

Code: Select all

#include "FiveWin.ch"
#include "xbrowse.ch"
//-----------------------------------------------//
// AGREGAR REGISTROS QUEDANDO AUTOMATICAMENTE SELECCIONADOS
//-----------------------------------------------//
Function MultiSeleTodo()
local oDlg, oBrw, oFont, aTabla := {}
local aGradBarSel := { { 1, RGB(252,232,171), RGB(248,195, 34) } }
local aGradRowSel := { { 1, RGB(118,145,164), RGB(241,222,088) } }

    XbrNumFormat( 'A', .t. )

   //USE CUSTOMER NEW ALIAS "CUST" SHARED

   //COPY STRUCT TO ".\CUST2"
   AADD(aTabla,{"selecc","L",1,0})
   AADD(aTabla,{"codigo","N",03,0})
   AADD(aTabla,{"nombre","C",30,0})
   AADD(aTabla,{"import","N",10,2})
   DBCREATE("CUST2",atabla)
   USE CUST2 NEW ALIAS "CUST2" EXCLUSIVE

   //CUST->(DBGOTO(5))

   DBSELECTAREA("CUST2")

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 700,400 PIXEL FONT oFont TITLE "AGREGAR ITEM Y SELECCIONARLO AUTOMATICAMENTE"

   @ 20,10 XBROWSE oBrw SIZE -10,-40 PIXEL OF oDlg ;
           DATASOURCE "CUST2" ;
           COLUMNS "SELECC", "CODIGO", "NOMBRE", "IMPORT" FOOTERS;
           CELL LINES NOBORDER AUTOSORT ON CHANGE oBrw:MakeTotals()

   WITH OBJECT oBrw
      //:nMarqueeStyle   := MARQSTYLE_HIGHLROWMS //Multiselect
      :bClrSel         := {|| { nRGB(  0,  0,  0), aGradRowSel } }  // para barra de linea selecc cuando el control no tiene el foco
      :bClrSelFocus    := { || { CLR_BLACK, aGradBarSel } }     // para barra de linea selecc cuando el control tiene el foco      
      :aCols[ 1 ]:nEditType := EDIT_GET
      :aCols[ 1 ]:SetCheck()
      :aCols[ 4 ]:nFooterType := AGGR_SUM
      :aCols[ 4 ]:bSumCondition := {|| cust2->selecc = .T.}
      :MakeTotals()
      :CreateFromCode()
   END

   @ 170, 10 BUTTON "Agregar Item" SIZE 60,20 PIXEL OF oDlg ;
             ACTION ( AgregItem("CUST2") ,;
                      oBrw:SetFocus(), oBrw:Refresh(),oBrw:MakeTotals())
                      //oBrw:Select(1),;  
                      //CUST->(DbSkip()) )

   @ 170, 80 BUTTON "Salir" SIZE 60,20 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED
      RELEASE FONT oFont
      Cust2->(dbclosearea())
      Ferase(".\Cust2.dbf")
return nil

//-----------------------------------------------//
Function AgregItem(cAliasDest)
  (cAliasDest)->(dbappend())
  (cAliasDest)->( FieldPut( 1,.t. ) )
  (cAliasDest)->( FieldPut( 2,(cAliasDest)->(reccount()) ) )
  (cAliasDest)->( FieldPut( 3,"Nombre"+STR((cAliasDest)->(reccount())) ) ) 
  (cAliasDest)->( FieldPut( 4,100*(cAliasDest)->(reccount())) )

Return nil
 
Espero te tire una pista

Re: Select todos los registros en xBrowse

Posted: Tue Nov 24, 2020 7:41 pm
by Armando
Amigos:

Deje el maketotals del select y el total global lo estoy haciendo "a pie".

Saludos