Select todos los registros en xBrowse (SOLUCIONADO)

Post Reply
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Select todos los registros en xBrowse (SOLUCIONADO)

Post 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
Last edited by Armando on Tue Nov 24, 2020 7:41 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Select todos los registros en xBrowse

Post 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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Select todos los registros en xBrowse

Post 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() ?
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Select todos los registros en xBrowse

Post 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
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Select todos los registros en xBrowse

Post 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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Select todos los registros en xBrowse

Post by Armando »

Amigos:

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

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply