Yo tengo esto por si te sirve

 

Creo 2 metodos en la grilla : CREAR_TAG y SELECT_ORDER 

y una propiedad : lcOrden

 

******************************

CREAR_TAG

*******************************

IF !EMPTY(THIS.RECORDSOURCE)

 

 

      LOCAL lSet AS STRING

      lSet=SET("Safety")

      SET SAFETY OFF

      SELECT (THIS.RECORDSOURCE)

      

      

      

      

      LOCAL ln_cuantos AS INTEGER,ic AS INTEGER,lc_indice AS STRING,lc_tag
AS STRING

      LOCAL ARRAY la_campos[1]

      ln_cuantos= AFIELDS(la_campos,THIS.RECORDSOURCE)

      FOR ic=1 TO ln_cuantos

            IF la_campos[ic,2]$"CDTIN"

                  lc_tag=IIF(la_campos[ic,2]='D' OR
la_campos[ic,2]='T',"DTOS("+la_campos[ic,1]+")",la_campos[ic,1])

                  lc_indice=LEFT(la_campos[ic,1],9)

                  cIndiceAsc = 'Index On ' + lc_tag+ ' Tag '+
"A"+lc_indice+' Additive'

                  &cIndiceAsc

                  cIndiceDes = 'Index On ' + lc_tag+ ' Tag '+
"D"+lc_indice+' Descending Additive'

                  &cIndiceDes

            ENDIF

      NEXT

      SET SAFETY &lSet

      THIS.lcorden=''

ENDIF

 

 

 

****************************************

SELECT_ORDER

****************************************

LOCAL lCorden AS STRING,lCcampo AS STRING

 

 

TRY

 

      AEVENTS(laEventos,0)

      lCorden = laEventos[1].PARENT.CONTROLSOURCE

 

      IF !EMPTY(lCorden) AND VARTYPE(EVALUATE(lCorden))$"CDTN"

            FOR EACH loObjects IN THIS.OBJECTS

                  FOR EACH loControls IN loObjects.CONTROLS

                        IF UPPER(loControls.BASECLASS)="HEADER"

                              loControls.PICTURE=''

                        ENDIF

                  ENDFOR

            ENDFOR

            lCcampo=SUBSTR(lCorden,AT('.',lCorden)+1)

            lCorden="A"+LEFT(lCcampo,9)

            laEventos[1].PICTURE="Arriba.gif"

            IF UPPER(ALLTRIM(THIS.lCorden))==UPPER(ALLTRIM(lCorden))

                  lCorden="D"+LEFT(lCcampo,9)

                  laEventos[1].PICTURE="Abajo.gif"

            ENDIF

            THIS.lCorden=lCorden

            SET ORDER TO lCorden

            GO TOP IN (THIS.RECORDSOURCE)

            THIS.REFRESH()

      ENDIF

 

CATCH

ENDTRY

 

*************************************************

Y En el INIT de la grilla

*************************************************

 

FOR i = 1 TO THIS.COLUMNCOUNT

      THIS.COLUMNS(i).sparse = .F.

ENDFOR

 

IF DODEFAULT()

      FOR EACH loObjects IN THIS.OBJECTS

            FOR EACH loControls IN loObjects.CONTROLS

                  IF UPPER(loControls.BASECLASS)="HEADER"

                        ** Enlazamos el evento Click de los Headers

                        BINDEVENT(loControls,"Click",THIS,"Select_Order")

                  ENDIF

            ENDFOR

      ENDFOR

     THIS.crear_tag()  

ENDIF

 

 

 

Ramon

 

 

De: [email protected] [mailto:[email protected]] En nombre de Walter Comito
Enviado el: sábado, 29 de marzo de 2014 17:40
Para: GUFA List Member
Asunto: [GUFA] ORDENAR GRILLA

 

AMIGOS ALGUIEN TIENE ALGUNA RUTINA PAR ORDENAR CUALQUIER TIPO DE GRILLA CON
UN CLICK EN EL HEADER.

 

GRACIAS

 

 

 

 

 

 

Walter Cómito

 Analista de Sistemas

 MP 0397 C.P.C.I.P.C.

 

›  [email protected]

         [email protected]

 

'   +54 351 494.4667

           153.292.707

 

þ www.softram.com.ar <http://www.softram.com.ar/> 

 

Q  Si no es necesario, no imprima este correo.

Todos somos responsables por el cuidado del medio ambiente.

 

 

NOTA DE CONFIDENCIALIDAD 
Este mensaje (y sus anexos) es confidencial y puede contener información de
propiedad 
exclusiva de Walter Cómito (SRS Sistemas). Si usted ha recibido este mensaje
por error, 
por favor comuníquelo inmediatamente a  <mailto:[email protected]>
[email protected] y tenga la amabilidad 
de eliminarlo; no deberá copiar el mensaje ni divulgar su contenido a
ninguna persona.

Muchas Gracias.

Responder a