Multiarray en xBrowse
Multiarray en xBrowse
Estimados;
Tengo un array con este formato: aDatos:= { { dato1, {a1,b1,c1,d1} }, { dato2, {a2,b2,c2,g2} },....}
(Si bien lo tengo con wbrowse de Checcarelli, ahora pretendo pasarlo a xbrowse)
la idea es que el browse muestre los datos así:
|dato1|a1|b1|c1|d1|
|dato2|a2|b2|c2|d2|
...
|datox|ax|bx|cx|dx|
Desde ya muchas gracias
Saludos
Tengo un array con este formato: aDatos:= { { dato1, {a1,b1,c1,d1} }, { dato2, {a2,b2,c2,g2} },....}
(Si bien lo tengo con wbrowse de Checcarelli, ahora pretendo pasarlo a xbrowse)
la idea es que el browse muestre los datos así:
|dato1|a1|b1|c1|d1|
|dato2|a2|b2|c2|d2|
...
|datox|ax|bx|cx|dx|
Desde ya muchas gracias
Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- pablovidal
- Posts: 398
- Joined: Thu Oct 06, 2005 10:15 pm
- Location: Republica Dominicana
- Contact:
Re: Multiarray en xBrowse
Code: Select all
aDatos := {{ dato1, a1,b1,c1,d1}, { dato1, a1,b1,c1,d1}, { dato1, a1,b1,c1,d1}, { dato1, a1,b1,c1,d1} }
Saludos,
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
Re: Multiarray en xBrowse
Pablo;
gracias por responder.
Por lo visto escribí mal mi consulta. Lo que no puedo hacer es definir el xbrowse.
Hice esto, usando la misma logica de wbrowse, pero me da error
Cual sería la correcta forma de hacerlo (o que ej. me sugieren mirar)
gracias por responder.
Por lo visto escribí mal mi consulta. Lo que no puedo hacer es definir el xbrowse.
Hice esto, usando la misma logica de wbrowse, pero me da error
Code: Select all
oLst:= TXBrowse():New()
oLst:SetArray( aDatos, .f. )
WITH Object oLst
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS // barra señaladora
:nColDividerStyle := LINESTYLE_BLACK // Linea Tipo
:lColDividerComplete:= TRUE // Linea de columna hasta final de Brw
:nStretchCol := STRETCHCOL_LAST // Ajustar ultima col, al margen derecho
:l2007 := TRUE
END
WITH OBJECT oLst:AddCol()
:cHeader:= "Columna1"
:bStrData:= {|| aDatos[oLst:nAt,1] }
END
WITH OBJECT oLst:AddCol()
:cHeader:= "Columna2"
:bStrData:= {|| aDatos[oLst:nAt,2,1] }
END
oLst:CreateFromCode()
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Multiarray en xBrowse
Hola
Mario, cual es el error que te genera?
intenta de esta forma
en ste caso no te haria falta bStrData
Mario, cual es el error que te genera?
intenta de esta forma
Code: Select all
WITH OBJECT oLst:AddCol()
:cHeader:= "Columna1"
:nArrayCol := 1 // aqui vas seleccionando las "columnas" del array
END
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: Multiarray en xBrowse
Daniel;
gracias por responder
Si uso, segun tu sugerencia;
obtengo el siguiente browse
gracias por responder
Si uso, segun tu sugerencia;
Code: Select all
WITH OBJECT oLst:AddCol()
:cHeader:= "Version"
:nArrayCol:= 1
//:bStrData:= {|| Decrypt( ::aSesamoIni[oLst:nAt,1] ) }
END
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
Re: Multiarray en xBrowse
diculpas; se me escapó Enviar en lugar de Vista Previa
Explico un poco lo que se muestra
como expuse en el primer post el array tiene esta forma: aDatos:= { { dato1, {a1,b1,c1,d1} }, { dato2, {a2,b2,c2,g2} },....}; en el que, aclaro, todos los datos estan encriptados
Ahora bien, haciendo como me propoen Daniel, en la vista del browse me esta difieniendo dos columnas A y B, que ignoro que son, aunque puedo deducir que la columna A, muestra lo mismo que la columna "Version", o sea "dato1"..."datonn" (valores encritados) y, la colmuna B me estaría diciendo, correctamente, que la columna 2 contiene un array.
Y como de xBrowse entiendo poco, no se porque si le pido que me muestra solo la primer columna, me esta mostrando 3 (Solo para comentar lo propuesto por Daniel, ya que me faltaría saber como muestro el resto).
Por otro lado si codifico así:
entonces se produce el siguiente error:
Explico un poco lo que se muestra
como expuse en el primer post el array tiene esta forma: aDatos:= { { dato1, {a1,b1,c1,d1} }, { dato2, {a2,b2,c2,g2} },....}; en el que, aclaro, todos los datos estan encriptados
Ahora bien, haciendo como me propoen Daniel, en la vista del browse me esta difieniendo dos columnas A y B, que ignoro que son, aunque puedo deducir que la columna A, muestra lo mismo que la columna "Version", o sea "dato1"..."datonn" (valores encritados) y, la colmuna B me estaría diciendo, correctamente, que la columna 2 contiene un array.
Y como de xBrowse entiendo poco, no se porque si le pido que me muestra solo la primer columna, me esta mostrando 3 (Solo para comentar lo propuesto por Daniel, ya que me faltaría saber como muestro el resto).
Por otro lado si codifico así:
Code: Select all
WITH OBJECT oLst:AddCol()
:cHeader:= "Version"
//:nArrayCol:= 1
:bStrData:= {|| Decrypt( ::aSesamoIni[oLst:nAt,1] ) }
END
Descripción de Error generado:
___________________________________________________
Error BASE/1111 Error de argumento: LEN
Args:
[ 1] = U
Llamadas al Stack:
___________________________________________________
Llamado desde: LEN(0)
Llamado desde: .\source\classes\XBROWSE.PRG (b)TXBROWSE:TXBROWSE(498)
Llamado desde: TXBROWSE:COLATPOS(0)
Llamado desde: .\source\classes\XBROWSE.PRG (b)TXBROWSE:TXBROWSE(500)
Llamado desde: TXBROWSE:SELECTEDCOL(0)
Llamado desde: .\source\classes\XBROWSE.PRG (b)TXBROWSE:TXBROWSE(331)
Llamado desde: TXBROWSE:NAT(0)
Llamado desde: D:\Fuen32\Temp\mgsesamo.prg (b)TSESAMO:LSTMGAPP(782)
Llamado desde: .\source\classes\XBROWSE.PRG TXBRWCOLUMN:ADJUST(8173)
Llamado desde: .\source\classes\XBROWSE.PRG TXBROWSE:ADJUST(943)
Llamado desde: .\source\classes\XBROWSE.PRG TXBROWSE:INITIATE(851)
Llamado desde: __OBJSENDMSG(0)
Llamado desde: HB_EXECFROMARRAY(0)
Llamado desde: .\source\function\HARBOUR.PRG OSEND(219)
Llamado desde: HB_EXECFROMARRAY(0)
Llamado desde: .\source\function\HARBOUR.PRG ASEND(197)
Llamado desde: .\source\classes\DIALOG.PRG TDIALOG:INITIATE(664)
Llamado desde: .\source\classes\DIALOG.PRG TDIALOG:HANDLEEVENT(928)
Llamado desde: DIALOGBOXINDIRECT(0)
Llamado desde: .\source\classes\DIALOG.PRG TDIALOG:ACTIVATE(273)
Llamado desde: D:\Fuen32\Temp\mgsesamo.prg TSESAMO:LSTMGAPP(830)
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: Multiarray en xBrowse
Mario,
La estructura del array es como lo indica Pablo, { {....}, {....}, {....}, {....} } ya que cada subarray pasa a ser un "registro" y cada dato de ese subarray es un "campo".
Ignoro si existe alguna forma de mezclar diferentes tipos de datos y que se muestren correctamente.
Esta es la manera como defino mi xbrowse :
Como puedes observar, en [ columns ] indicas cuales y en que orden quieres mostrar tus datos y [ array ] es la estructura de tus datos.
Saludos
La estructura del array es como lo indica Pablo, { {....}, {....}, {....}, {....} } ya que cada subarray pasa a ser un "registro" y cada dato de ese subarray es un "campo".
Ignoro si existe alguna forma de mezclar diferentes tipos de datos y que se muestren correctamente.
Esta es la manera como defino mi xbrowse :
Code: Select all
redefine xbrowse lbCstsFrc id 101 of oFldrCptSrc:aDialogs[3] ;
columns 3,2,1 ;
headers 'R.F.C.','RAZON SOCIAL','ID' ;
pictures nil,nil,"999,999" ;
colsizes 105,150,50 ;
on change xxxxx() ;
footers ;
array { {0,"","",.f.,0,0,.f.,1} } ;
font aSysFnts[1] autosort
Saludos
FWH 10.6 + xHarbour + Borland 582
Re: Multiarray en xBrowse
Raimundo; gracias por participar de la consulta
No se porque Pablo indica ese tipo de estructura, pero no es mi caso. Quizas el lo que esta proponiendo es que cambie mi estructura y al primer campo lo ponga en un array, aunque eso implicaría bastantes cambios en el resto del fuente.
Mi caso es un array de este tipo: aDatos:= { { dato1, {a1,b1,c1,d1} }, { dato2, {a2,b2,c2,d2} },....}
Y con wBrowse lo puedo mostrar perfectamente de este modo:
sera posible con xBrowse?
No se porque Pablo indica ese tipo de estructura, pero no es mi caso. Quizas el lo que esta proponiendo es que cambie mi estructura y al primer campo lo ponga en un array, aunque eso implicaría bastantes cambios en el resto del fuente.
Mi caso es un array de este tipo: aDatos:= { { dato1, {a1,b1,c1,d1} }, { dato2, {a2,b2,c2,d2} },....}
Y con wBrowse lo puedo mostrar perfectamente de este modo:
Code: Select all
@0,0 LISTBOX oLst ;
FIELDS Decrypt( ::aSesamoIni[oLst:nAt,1] ) , ; // dato1...datonn
Decrypt( ::aSesamoIni[oLst:nAt,_SUBARR,IniVersion] ) , ; // a1...ann // _SUBARR = 2
Decrypt( ::aSesamoIni[oLst:nAt,_SUBARR,IniUsuario] ) , ; // b1...bnn
Decrypt( ::aSesamoIni[oLst:nAt,_SUBARR,IniFeCtrl ] ) , ; // c1...cnn
SIZE 380,100 ;
SIZES 65,130,185,70,70,100,120 ;
OF ::oDlg
oLst:SetArray( ::aSesamoIni )
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Multiarray en xBrowse
I am giving 4 methods. Choose any of the methods depending on the favorite programming style. All produce the same results.
Method 1 ( Syntax similar to TWBrowse, i.e., LISTBOX FIELDS command )
Method 2 ( Syntax similar to TCBrowse i.e., ADD TO oBrw command )
Method 3 ( Very old XBrowse syntax. Only way before XBrowse commands were available )
Method 4 ( New and recommended )
Method 4 works only with latest FWH.
Choose any method, programming with XBrowse is a lot more easier than other browses.
Method 1 ( Syntax similar to TWBrowse, i.e., LISTBOX FIELDS command )
Method 2 ( Syntax similar to TCBrowse i.e., ADD TO oBrw command )
Method 3 ( Very old XBrowse syntax. Only way before XBrowse commands were available )
Method 4 ( New and recommended )
Method 4 works only with latest FWH.
Choose any method, programming with XBrowse is a lot more easier than other browses.
Code: Select all
#include "fivewin.ch"
#include "xbrowse.ch"
//----------------------------------------------------------------------------//
function Main()
Method3()
return nil
//----------------------------------------------------------------------------//
function Method1 // Similar to WBrowse syntax
local aData := { { "One", { 1, 2, 3, 4 } }, ;
{ "Two", { 5, 6, 7, 8 } }, ;
{ "Three", { 9, 8, 7, 6 } } }
local oDlg, oBrw
DEFINE DIALOG oDlg SIZE 300,200 PIXEL
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
COLUMNS 1 ;
FIELDS { || oBrw:aRow[ 2 ][ 1 ] }, ;
{ || oBrw:aRow[ 2 ][ 2 ] }, ;
{ || oBrw:aRow[ 2 ][ 3 ] }, ;
{ || oBrw:aRow[ 2 ][ 4 ] } ;
HEADERS "Name", "A1", "A2", "A3", "A4" ;
PICTURES nil, "999", "999", "999", "999" ;
ARRAY aData CELL LINES NOBORDER
oBrw:createFromCode()
ACTIVATE DIALOG oDlg CENTERED
return nil
//----------------------------------------------------------------------------//
function Method2 // Similar to TCBrowse syntax
local aData := { { "One", { 1, 2, 3, 4 } }, ;
{ "Two", { 5, 6, 7, 8 } }, ;
{ "Three", { 9, 8, 7, 6 } } }
local oDlg, oBrw
method2()
return nil
DEFINE DIALOG oDlg SIZE 300,200 PIXEL
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
COLUMNS 1 HEADERS "Name" ;
ARRAY aData CELL LINES NOBORDER
ADD TO oBrw DATA oBrw:aRow[ 2 ][ 1 ] PICTURE "999" HEADER "A1"
ADD TO oBrw DATA oBrw:aRow[ 2 ][ 2 ] PICTURE "999" HEADER "A2"
ADD TO oBrw DATA oBrw:aRow[ 2 ][ 3 ] PICTURE "999" HEADER "A3"
ADD TO oBrw DATA oBrw:aRow[ 2 ][ 4 ] PICTURE "999" HEADER "A4"
oBrw:createFromCode()
ACTIVATE DIALOG oDlg CENTERED
return nil
//----------------------------------------------------------------------------//
function Method3 // Old XBrowse syntax, when commands were not available
local aData := { { "One", { 1, 2, 3, 4 } }, ;
{ "Two", { 5, 6, 7, 8 } }, ;
{ "Three", { 9, 8, 7, 6 } } }
local oDlg, oBrw, n
DEFINE DIALOG oDlg SIZE 300,200 PIXEL
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
COLUMNS 1 HEADERS "Name" ;
ARRAY aData CELL LINES NOBORDER
for n := 1 to Len( aData[ 1 ][ 2 ] )
WITH OBJECT oBrw:AddCol()
:cHeader := "A" + Str( n, 1 )
:bEditValue := SetColBlock( oBrw, n ) // Note: Please never use bStrData
:cEditPicture := "999"
END
next
oBrw:createFromCode()
ACTIVATE DIALOG oDlg CENTERED
return nil
static function SetColBlock( oBrw, nCol )
return { || oBrw:aRow[ 2 ][ nCol ] }
//----------------------------------------------------------------------------//
function Method4 // Present recommended but only with latest fwh
local aData := { { "One", { 1, 2, 3, 4 } }, ;
{ "Two", { 5, 6, 7, 8 } }, ;
{ "Three", { 9, 8, 7, 6 } } }
local oDlg, oBrw
// Works only with latest FWH
DEFINE DIALOG oDlg SIZE 300,200 PIXEL
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
COLUMNS 1, { || oBrw:aRow[ 2 ][ 1 ] }, ;
{ || oBrw:aRow[ 2 ][ 2 ] }, ;
{ || oBrw:aRow[ 2 ][ 3 ] }, ;
{ || oBrw:aRow[ 2 ][ 4 ] } ;
HEADERS "Name", "A1", "A2", "A3", "A4" ;
PICTURES nil, "999", "999", "999", "999" ;
ARRAY aData CELL LINES NOBORDER
oBrw:createFromCode()
ACTIVATE DIALOG oDlg CENTERED
return nil
//----------------------------------------------------------------------------//
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: Multiarray en xBrowse (SOLUCIONADO)
huge Rao!, it was what needed
Regards
Regards
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina