Hello,
you can start with this tiny example, and extend for other data types
#include "FiveWin.ch"
#include "xbrowse.ch"
function Main()
viewdata( {"a","b","c", {"A","B","C", {1,"2", DATE() } } } )
return nil
//----------------------------------------------------------------------------//
FUNCTION viewdata( data )
//----------------------------------------------------------------------------//
IF VALTYPE( data ) = "A"
viewarray( data )
ELSE
msginfo( data )
ENDIF
RETURN NIL
//----------------------------------------------------------------------------//
STATIC FUNCTION viewarray( aArray )
//----------------------------------------------------------------------------//
LOCAL oBrw, oDlg, aData := {}, i
FOR i := 1 TO LEN( aArray )
DO CASE
CASE valtype( aArray[i] ) = "D" ; AADD( aData, {i, "D", DTOC( aArray[i] ) } )
CASE valtype( aArray[i] ) = "N" ; AADD( aData, {i, "N", STR( aArray[i] ) } )
CASE valtype( aArray[i] ) = "L" ; AADD( aData, {i, "L", IF( aArray[i], ".T.", ".F." ) } )
CASE valtype( aArray[i] ) = "C" ; AADD( aData, {i, "C", aArray[i] } )
CASE valtype( aArray[i] ) = "A" ; AADD( aData, {i, "A", "ARRAY" } )
ENDCASE
NEXT
DEFINE DIALOG oDlg FROM 1,1 TO 20,28
@ 0,0 XBROWSE oBrw ;
OF oDlg ;
ARRAY aData ;
HEADERS "Ind", "Tipo", "Valor" ;
JUSTIFY .T., 2, .F.;
COLSIZES 30,30,100 ;
AUTOCOLS ;
ON CHANGE oDlg:aEvalWhen()
oBrw:lHScroll := .F.
oBrw:lVScroll := .T.
oBrw:nMarqueeStyle := 5
oBrw:nRowHeight := 20
oDlg:oClient := oBrw
oBrw:CreateFromCode()
@ 7,01 BUTTON "Array" OF oDlg WHEN aData[ oBrw:nArrayAt, 2 ] == "A" ACTION viewarray( aArray[oBrw:nArrayAt] )
@ 7,12 BUTTON "Salir" OF oDlg ACTION oDlg:end()
ACTIVATE DIALOG oDlg ON INIT oBrw:SetFocus()
RETURN NIL
regards
Marcelo