Listbox en un xbrowse
Listbox en un xbrowse
Hola
Despues de mucho buscar, no se si se puede hacer y no encuentro la solucion.
Tengo un xbrowse, dentro del cual, dos de las columnas las intento hacer con un listbox. Cuando presento la informacion, me la presenta bien, pero en el momento de la editar/modificar, no se como cargar el array "antes" de la edicion, ya que en cada linea de la browse, pueden ser valores diferentes.
Gracias de antemano
Josep Armengol
Despues de mucho buscar, no se si se puede hacer y no encuentro la solucion.
Tengo un xbrowse, dentro del cual, dos de las columnas las intento hacer con un listbox. Cuando presento la informacion, me la presenta bien, pero en el momento de la editar/modificar, no se como cargar el array "antes" de la edicion, ya que en cada linea de la browse, pueden ser valores diferentes.
Gracias de antemano
Josep Armengol
- Antonio Linares
- Site Admin
- Posts: 42529
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 31 times
- Been thanked: 77 times
- Contact:
Re: Listbox en un xbrowse
Josep,
Puedes proporcionar un pequeño PRG que muestre como lo estás haciendo ?
Puedes proporcionar un pequeño PRG que muestre como lo estás haciendo ?
Re: Listbox en un xbrowse
Hola Antonio
Te paso parte de la rutina
Como veras hay 4 columnas con listbox, las dos primeras no dan ningun problema, ya que son arrays fijos, pero LOTE depende del ARTICULO y PARTIDA del LOTE.
Gracias
Josep Armengol
Te paso parte de la rutina
Code: Select all | Expand
aCabe := { ;
{ 1, "Artículo", nil, 100 }, ;
{ 2, "Definición", nil, 200 }, ;
{ 3, "Cantidad", nil, 60 }, ;
{ 4, "Precio", nil, 65 }, ;
{ 5, "Dto.", nil, 40 }, ;
{ 6, "Total", nil, 70 }, ;
{ 7, "Lote", nil, 110 }, ;
{ 8, "PT", nil, 40 }, ;
{ 9, "Iva", nil, 60 }, ;
{ 10, "R.E.", nil, 40 }, ;
{ 11, "Ancho", nil, 55 }, ;
{ 12, "Alto", nil, 55 }, ;
{ 13, "Linea", nil, 35 }, ;
}
REDEFINE XBROWSE oBrw ID 6400 of oFld ;
COLUMNS aCabe lfastedit cell lines array aDatos
oBrw:aCols[ 1 ]:nEditType := 1
oBrw:aCols[ 2 ]:nEditType := 0
oBrw:aCols[ 3 ]:nEditType := 1
oBrw:aCols[ 4 ]:nEditType := 1
oBrw:aCols[ 5 ]:nEditType := 1
oBrw:aCols[ 6 ]:nEditType := 0
oBrw:aCols[ 7 ]:nEditType := 2
oBrw:aCols[ 8 ]:nEditType := 2
oBrw:aCols[ 9 ]:nEditType := 2
oBrw:aCols[ 10 ]:nEditType := 2
oBrw:aCols[ 11 ]:nEditType := 1
oBrw:aCols[ 12 ]:nEditType := 1
oBrw:aCols[ 13 ]:nEditType := 0
oBrw:aCols[ 7 ]:aEditListTxt := {}
oBrw:aCols[ 8 ]:aEditListTxt := {}
oBrw:aCols[ 9 ]:aEditListTxt := aPiva
oBrw:aCols[ 10 ]:aEditListTxt := aPre
oBrw:aCols[ 1 ]:bEditValid := {| oGet, oCol | ValidAlba( oGet, oCol, oBrw, @aDatos, @aPlot, @aPpt ) }
oBrw:acols[ 3 ]:bEditValid := {| oGet, oCol | Compsto( oGet, oCol, oBrw, @aDatos, @aPlot, @aPpt ) }
oBrw:aCols[ 5 ]:bEditValid := {| oGet, oCol | ValidTota( oGet, oCol, oBrw, @aDatos, oDlg ) }
oBrw:aCols[ 3 ]:bOnPostEdit := {| oCol, xVal, nKey | IF( nKey <> 27, ;
oBrw:selectcol( oBrw:ncolsel + 1 ), ), ;
IF ( articulo->m2, oBrw:selectcol( 11 ), ), ;
oBrw:refresh() }
oBrw:aCols[ 5 ]:bOnPostEdit := {| oCol, xVal, nKey | ;
IF( nKey <> 27 .OR. nKey = 13, ;
oCol:value := xVal, ), ;
IF( oBrw:nrowsel = Len( aDatos ), ;
NewAlb( @aDatos, oBrw ), ), ;
oBrw:GoDown(), oBrw:selectcol( 1 ) }
oBrw:aCols[ 8 ]:bOnPostEdit := {| | Cargalots( aDatos, oBrw ) }
oBrw:aCols[ 12 ]:bOnPostEdit := {| oCol, xVal, nKey | ;
IF( nKey <> 27 .OR. nKey = 13, ;
oCol:value := xVal, ), ;
oBrw:selectcol( 4 ) }
// :nMarqueeStyle := MARQSTYLE_HIGHLROW // NO PERMITE EDICION CELDA AUTO.
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .T.
oBrw:lFastEdit := .T.
oBrw:lAutoAppend := .T.
oBrw:lHScroll := .F.
Como veras hay 4 columnas con listbox, las dos primeras no dan ningun problema, ya que son arrays fijos, pero LOTE depende del ARTICULO y PARTIDA del LOTE.
Gracias
Josep Armengol
Re: Listbox en un xbrowse
No entiendo bien tu problema pero el array de datos del XBrowse es aArrayData
A ver si te sirve de algo esto
En la llamada a
Y el la funcion
A ver si te sirve de algo esto
En la llamada a
Code: Select all | Expand
// oBrw:aCols[ 8 ]:bOnPostEdit := {| | Cargalots( aDatos, oBrw ) }
oBrw:aCols[ 8 ]:bOnPostEdit := {| | Cargalots( oBrw ) }
Y el la funcion
Code: Select all | Expand
Function Cargalots( oBrw )
local aDatos := oBrw:aArrayData
// o directamente no usar aDatos y utilizar oBrw:aArrayData
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: Listbox en un xbrowse
Hola Cristobal
Gracias por la respuesta, pero ese no es el problema. Cuando estoy insertando datos nuevos en el Browse, no hay problema, ya que ya tengo cargado el array correspondiente al listbox. El problema es cuando yo pido que me presente los datos de algo guardado. Tengo el Browse con la informacion correcta a la vista, y pulso sobre la ventana del listbox. Me presenta siempre, la ultima linea del Browse, ya que es el array que tengo cargado.
El tema esta en que el postedit, me sirve una vez editada la primera condicion, pero mi pregunta es ¿ hay un "preedit"?.
Tambien existe la opcion de cargar un array para cada linea de la pantalla, pero no se como traspasarla al array de la linea en cuestion, y como decirle en el momento de la edicion que tiene que cargar.
Gracias a todos
Gracias por la respuesta, pero ese no es el problema. Cuando estoy insertando datos nuevos en el Browse, no hay problema, ya que ya tengo cargado el array correspondiente al listbox. El problema es cuando yo pido que me presente los datos de algo guardado. Tengo el Browse con la informacion correcta a la vista, y pulso sobre la ventana del listbox. Me presenta siempre, la ultima linea del Browse, ya que es el array que tengo cargado.
El tema esta en que el postedit, me sirve una vez editada la primera condicion, pero mi pregunta es ¿ hay un "preedit"?.
Tambien existe la opcion de cargar un array para cada linea de la pantalla, pero no se como traspasarla al array de la linea en cuestion, y como decirle en el momento de la edicion que tiene que cargar.
Gracias a todos
Re: Listbox en un xbrowse
Existe
Pero tienes que probarlo para ver si es lo que necesitas
bOnPreEdit
Pero tienes que probarlo para ver si es lo que necesitas
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: Listbox en un xbrowse
Gracias a todos
Veo que el problema que tengo, es que no tengo la documentacion con todos los comandos para TXBROWSE. Si alguien los tiene, por favor, diganme donde conseguirlos.
Gracias
Josep Armengol
Veo que el problema que tengo, es que no tengo la documentacion con todos los comandos para TXBROWSE. Si alguien los tiene, por favor, diganme donde conseguirlos.
Gracias
Josep Armengol
Re: Listbox en un xbrowse
Gracias Cristobal.
Me comentas que existe la opcion "bonpreedit", y entiendo que funcionará igual que "bonpostedit"
Intento lo siguiente:
Y no me entra en la funcion Cargalots. Lo que intento hacer, es que en el momento que se pulse en la casilla del listbox, antes de abrir el listbox, me cargue el array, ya que en cada linea de la ventana de presentación, puede tener valores diferentes
Gracias de antemano por vuestra ayuda
Josep Armengol
Me comentas que existe la opcion "bonpreedit", y entiendo que funcionará igual que "bonpostedit"
Intento lo siguiente:
Code: Select all | Expand
oBrw:aCols[ 7 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
oBrw:aCols[ 8 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
Y no me entra en la funcion Cargalots. Lo que intento hacer, es que en el momento que se pulse en la casilla del listbox, antes de abrir el listbox, me cargue el array, ya que en cada linea de la ventana de presentación, puede tener valores diferentes
Gracias de antemano por vuestra ayuda
Josep Armengol
Re: Listbox en un xbrowse
Josep, puedes poner una imagen?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: Listbox en un xbrowse
Hola Cristobal
Te adjunto imagen
[img]
https://drive.google.com/open?id=0Bwv-- ... Wc3am9GVWc
[/img]
Donde estan lote y partida es lo que pretendo editar
Gracias
Josep Armengol
Te adjunto imagen
[img]
https://drive.google.com/open?id=0Bwv-- ... Wc3am9GVWc
[/img]
Donde estan lote y partida es lo que pretendo editar
Gracias
Josep Armengol
Re: Listbox en un xbrowse
HOla
Disculpad, pero parece que el otro enlace que publique, no va
[img]
https://drive.google.com/file/d/0Bwv--_ ... sp=sharing
[/img]
Disculpad el error
Josep
Disculpad, pero parece que el otro enlace que publique, no va
[img]
https://drive.google.com/file/d/0Bwv--_ ... sp=sharing
[/img]
Disculpad el error
Josep
Re: Listbox en un xbrowse
Buenas:
Lo que haria es que en tiempo de ejecucion el programa devuelva el array para la columna 7 (Lote) dependiendo del articulo seleccionado.
tambien tienes que tener en consideracion el cambio de linea (al navegar entre las lines), para eso tienes el bChange del oBrw
Lo que haria es que en tiempo de ejecucion el programa devuelva el array para la columna 7 (Lote) dependiendo del articulo seleccionado.
tambien tienes que tener en consideracion el cambio de linea (al navegar entre las lines), para eso tienes el bChange del oBrw
Saludos/regards
RenOmaS
skype: americo.balboa
RenOmaS
skype: americo.balboa
Re: Listbox en un xbrowse
Hola RenOmaS
Es lo que intento hacer, que en el momento que pulse sobre la casilla, me cargue el array.
Entendi que bOnPreEdit podia ser la opcion, y las defino asi:
oBrw:aCols[ 7 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
oBrw:aCols[ 8 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
Pero cuando pulso sobre la columna, no entra a la funcion Cargalots. No se si es un problema de sintaxis, o simplemente que la instruccion no es la que necesito
Gracias a todos
Josep Armengol
Es lo que intento hacer, que en el momento que pulse sobre la casilla, me cargue el array.
Entendi que bOnPreEdit podia ser la opcion, y las defino asi:
oBrw:aCols[ 7 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
oBrw:aCols[ 8 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
Pero cuando pulso sobre la columna, no entra a la funcion Cargalots. No se si es un problema de sintaxis, o simplemente que la instruccion no es la que necesito
Gracias a todos
Josep Armengol
Re: Listbox en un xbrowse
sajarm wrote:Hola RenOmaS
Es lo que intento hacer, que en el momento que pulse sobre la casilla, me cargue el array.
Entendi que bOnPreEdit podia ser la opcion, y las defino asi:
oBrw:aCols[ 7 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
oBrw:aCols[ 8 ]:bonPreEdit := {|| Cargalots( aDatos, oBrw ) }
Pero cuando pulso sobre la columna, no entra a la funcion Cargalots. No se si es un problema de sintaxis, o simplemente que la instruccion no es la que necesito
Gracias a todos
Josep Armengol
Hola Ing. Josep, prueba haciendo con este ejemplo:
oBrw:aCols[4]:bEditBlock := {|| MovDetFac(oBrw1,oBrw2) } // llama a una funcion que abre un Dlg y muestra el Detalle
A ver que tal.
Saludos y buen dia.!
Atte: Adrian C. C.
Re: Listbox en un xbrowse
HOla
Según la clase el bloque bonPreEdit no se llega a evaluar cuando :nEditType == EDIT_LISTBOX,
Puedes utilizar el bloque :bClrEdit que si se evalua en el method ShowBtnList, mas o menos asi
Según la clase el bloque bonPreEdit no se llega a evaluar cuando :nEditType == EDIT_LISTBOX,
Puedes utilizar el bloque :bClrEdit que si se evalua en el method ShowBtnList, mas o menos asi
Code: Select all | Expand
:bClrEdit := { || Cargalots( aDatos, oBrw ), ;
{ CLR_BLACK, CLR_WHITHE} } //tiene q devolver un array de colores
Saludos/regards
RenOmaS
skype: americo.balboa
RenOmaS
skype: americo.balboa