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.