FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour POPUPBROWSE o EDIT_LISTBOX en columna browse
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
POPUPBROWSE o EDIT_LISTBOX en columna browse
Posted: Fri Nov 20, 2020 03:26 AM

Saludos, para los que me extrañaron, aun ando en este planeta y para los que no, por aca ando de nuevo...
tengo un pequeño problema, y no se que usar, ni como usarlo ya que el sample YuNUS no me aclaro mi duda...
tengo un BROWSE de facturacion con un ARRAY de X columnas, en la columna de NOMBRE DEL PRODUCTO, necesito
colocar o un POPUPBROWSE o un EDIT_LISTBOX, pero no consigo ejemplo claro de como usar el POPUP en browse
ya que en uno que Antonio respondio hacen años, no veo como decirle al browse del popup los valores que
quiero mostrar, he usado POPUPBROWSE en GET y todo perfecto, pero con BROWSE, no he podido, intente hacerlo
con EDIT_LISTBOX y sucede lo siguiente, necesito cuando le de al boton de desplegar los valores a mostrar,
cambiar en linea dichos valores, es decir, resetear el aEditListTxt, cargar y mostrar valores nuevos ya que
los productos a facturar puedes tener diferentes valores a mostrar, son unos productos COMBOS y necesito
mostrar sus componentes en cualquier momento de la facturacion, espero haberme explicado, son mas de un valor a mostrar, es decir un array multi, por eso pense en popupbrowse...desde ya por sus ayudas
y sugerencias...GRACIAS... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: POPUPBROWSE o EDIT_LISTBOX en columna browse
Posted: Sun Nov 22, 2020 01:28 AM

Alguien tiene alguna sugerencia?
Con decir como evaluar cuando se le de al botón que desplega el combo Box creo puedo resolver, intente con onchange y no hizo lo que quería...saludos, gracias... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: POPUPBROWSE o EDIT_LISTBOX en columna browse
Posted: Sun Nov 22, 2020 02:13 AM
Una idea asi tal vez te puede servir
Code (fw): Select all Collapse
#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,{"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"

   @ 20,10 XBROWSE oBrw SIZE -10,-40 PIXEL OF oDlg ;
           DATASOURCE "CUST2" ;
           COLUMNS "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_BUTTON
      :aCols[ 1 ]:bEditBlock := { || Buscar() }
      :aCols[ 2 ]:nEditType := EDIT_GET
      :aCols[ 2 ]:nFooterType := AGGR_SUM      
      :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,"--- Elija producto ----" ) ) 
  (cAliasDest)->( FieldPut( 2,0 ))

Return nil

Function Buscar()
  DBSELECTAREA("CUST")
  XBROWSE()  
  cust2->( FieldPut( 1,cust->first) )  
  DBSELECTAREA("CUST2")
Return nil
Posts: 199
Joined: Wed Jan 02, 2019 08:36 AM
Re: POPUPBROWSE o EDIT_LISTBOX en columna browse
Posted: Wed Nov 25, 2020 07:58 AM
joseluisysturiz wrote:Alguien tiene alguna sugerencia?
Con decir como evaluar cuando se le de al botón que desplega el combo Box creo puedo resolver, intente con onchange y no hizo lo que quería...saludos, gracias... :-)


Buenos días José Luis.
¿porque empeñarse en controlar el evento al desplegar el boton?

No sería mas sencillo ? , por ejemplo :

- Al introducir en la columna 1 el artículo (o seleccionarlo de un combo), en la columna 2 cargar los datos de las opciones. (puedes anidar tantas variaciones como tengas, en las columnas siguientes)

Jesús Marín
deumare@gmail.com
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: POPUPBROWSE o EDIT_LISTBOX en columna browse
Posted: Wed Nov 25, 2020 01:27 PM
JESUS MARIN wrote:
joseluisysturiz wrote:Alguien tiene alguna sugerencia?
Con decir como evaluar cuando se le de al botón que desplega el combo Box creo puedo resolver, intente con onchange y no hizo lo que quería...saludos, gracias... :-)


Buenos días José Luis.
¿porque empeñarse en controlar el evento al desplegar el boton?

No sería mas sencillo ? , por ejemplo :

- Al introducir en la columna 1 el artículo (o seleccionarlo de un combo), en la columna 2 cargar los datos de las opciones. (puedes anidar tantas variaciones como tengas, en las columnas siguientes)



Saludos, es exactamente lo que quiero, cuando cargo código en columna 1, en la 2 coloco la descripción y con el combo Box muestro sus asociados, pero si he cargado varias filas y voy a uba anterior y en la columna 2 desplego el combo Box para ver sus asociadas, me muestra es los del último artículo entrado que haya tenido asociados, alli es donde tengo el problema y no se porque, crei cada fila mantendría sus asociados, por eso pense al hacer click en el boton del combo Box en columna 2, cargar de nuevo el array del combo Box von sus derivados como lo hago en la columna 1...alguna idea, sugerencia y ejemplo? Gracias... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 199
Joined: Wed Jan 02, 2019 08:36 AM
Re: POPUPBROWSE o EDIT_LISTBOX en columna browse
Posted: Wed Nov 25, 2020 02:42 PM
Claro, te falta una cosa :

oBrw:bChange

Al cambiar de fila debes refrescar el contenido del array :

Yo lo hago así


en la definición del browse
Code (fw): Select all Collapse
oBrw:bChange:={ || aLineas:=Cambia_combo(aLineas,oBrw) }


y la función ( esto es solo para el ejemplo, debes montar tu array, buscando en la base de datos o lo que convenga )

Code (fw): Select all Collapse
STATIC FUNCTION Cambia_combo(aLineas,oBrw)
// al movernos debemos refrescar el combo 2 u otros
   oBrw:aCols[2]:aEditListTxt:={ "" }
   IF aLineas[oBrw:nArrayAt,1]="COCHE"
      oBrw:aCols[2]:aEditListTxt:={ "Gasolina 95","Gasolina 98","Diesel normal","Diesel Plus" }
   ENDIF
   IF aLineas[oBrw:nArrayAt,1]="MOTO"
      oBrw:aCols[2]:aEditListTxt:={ "Gasolina 95","Gasolina 98" }
   ENDIF
   IF aLineas[oBrw:nArrayAt,1]="BICICLETA"
      oBrw:aCols[2]:aEditListTxt:={ "A pedales","fuerza humana" }
   ENDIF
   oBrw:Refresh()

return(aLineas)
Jesús Marín
deumare@gmail.com

Continue the discussion