POPUPBROWSE o EDIT_LISTBOX en columna browse

POPUPBROWSE o EDIT_LISTBOX en columna browse

Postby joseluisysturiz » Fri Nov 20, 2020 3: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: POPUPBROWSE o EDIT_LISTBOX en columna browse

Postby joseluisysturiz » Sun Nov 22, 2020 1: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: POPUPBROWSE o EDIT_LISTBOX en columna browse

Postby cmsoft » Sun Nov 22, 2020 2:13 am

Una idea asi tal vez te puede servir
Code: Select all  Expand view

#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
 
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: POPUPBROWSE o EDIT_LISTBOX en columna browse

Postby JESUS MARIN » Wed Nov 25, 2020 7: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... :shock:


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)

Image
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: POPUPBROWSE o EDIT_LISTBOX en columna browse

Postby joseluisysturiz » Wed Nov 25, 2020 1: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... :shock:


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)

Image


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... :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: POPUPBROWSE o EDIT_LISTBOX en columna browse

Postby JESUS MARIN » Wed Nov 25, 2020 2: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: Select all  Expand view

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: Select all  Expand view

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
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am


Return to FiveWin para Harbour/xHarbour

Who is online

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