Page 1 of 1

Ejemplo de xbrowse

PostPosted: Tue Apr 27, 2010 10:04 am
by groiss
Busco y busco, pero no acabo de encontralo, me gustaria ver un ejemplo de xbrowse definido desde recursos, sobre un array, an el que hemos de definir las columnas una por una, pues no necesitamos todas las del array.¿Alguien tiene algo sobre esto?, le agradecería mucho una manita.
Muchas gracias y un saludo
José Luis

Re: Ejemplo de xbrowse

PostPosted: Tue Apr 27, 2010 10:25 am
by anserkk
Mr.José Luis,

XBrowse with Array sample

viewtopic.php?f=6&t=18605#p97526

To use xBrowse from resources

Code: Select all  Expand view
REDEFINE  XBROWSE  oBrw ID 2100 OF oDlg ;
      COLUMNS 1, 2, 3, 4 ;       // This is line is not necessary if there are only 4 columns in the array
      HEADERS "S", "Quantity", "Partnumber", "Description"  ARRAY aTest
 

Regards
Anser

Re: Ejemplo de xbrowse

PostPosted: Tue Apr 27, 2010 3:06 pm
by groiss
Hasta ahí, lo tengo todo más o menos visto, lo que no acabo de encontrar es ninguno en el que las columnas se creen gracias a un bucle for/next.
Un saludo y gracias
José Luis

Re: Ejemplo de xbrowse

PostPosted: Tue Apr 27, 2010 6:09 pm
by jcenteno
José Luis,

Prueba asi:

WITH OBJECT ( oBrow := TXBrowse():New( oFolder:aDialogs[1] ) )
//:CreateFromResource( 101 )
...
FOR i := 4 TO 13 STEP 2
IF ! EMPTY( aCatalog[nForm, i] )
&& Agrega columnas al xBrowse
WITH OBJECT ( oCol := :AddCol() )
:cHeader := aCatalog[nForm, i]
:nArrayCol := aCatalog[nForm, i + 1]
// :cPicture := aCatalog[nEl, 33 + ii] // Picture
:nWidth := aCatalog[nForm, 28 + ii]
:nHeadStrAlign := AL_CENTER
IF HB_IsNumeric( (cAlias)->&( aCatalog[nForm,i + 1] ) )
:nDataStrAlign := AL_RIGHT
ELSE
:nDataStrAlign := AL_LEFT
ENDIF
END
ii++
ELSE
LOOP
ENDIF
NEXT i
:nHeaderLines := 1
:nFooterLines := 1
:l2007 := TRUE
:CreateFromCode()
END

El ejemplo lo uso con dbf, solo he cambiado :nArrayCol, que es el elemento del array que deseas.

Saludos,
Jairo

Re: Ejemplo de xbrowse

PostPosted: Wed Apr 28, 2010 11:24 am
by groiss
Bueno por ahorala cosa la llevo así :
Con este código inicializo el xbrowse para un array de al menos 19 columnas, de las que sólo quiero mostrar desde la 11 en adelante:
Code: Select all  Expand view

REDEFINE  XBROWSE  olbx ID 123 OF oDlg COLUMNS 11, 12,13, 14 HEADERS "Corredor", "Nº", "Vehículo", "Grupo"  ARRAY carrera
olbx:l2007:=.t.
olbx:nfreeze:=4
olbx:bClrStd := {|| { CLR_BLACK, IIF( olbx:aarraydata[olbx:narrayat,2],rgb(255,200,200),iif(olbx:narrayat%2=0,rgb(255,255,150),16777215)) } }
*olbx:bskip:={|n,nold| dorskip(n,osay1,"rtiempo",olbx)}
olbx:nMarqueeStyle   := MARQSTYLE_HIGHLCELL
olbx:lFastEdit:= .t.
olbx:nStretchCol := STRETCHCOL_LAST
 

El problema me aparece ahora, cuando tengo que anexar un número variable de columnas con datos alfanúmericos de las columnas del array carrera.
Aquí me pierdo, pues no se como decirle que dato ha de coger
Otro problema lo tengo con el bloque bskip, que si le pongo el mío no funciona, e incluso si copio de los fuentes el que viene con el xbrowse, tampoco.
Code: Select all  Expand view

function dorskip(n,olbx)
local nOld
nOld       := olbx:nArrayAt
olbx:nArrayAt += n
olbx:nArrayAt := Min( Max( olbx:nArrayAt, 1 ), Len( olbx:aArrayData ) )
return olbx:nArrayAt - nOld
 

Un saludo y gracias
José Luis