Hola, recuerdo haber tenido problemas con el TColumn.Index, y era por las columnas visibles o no visibles o por la colocaci�n de las mismas (si se hace un drag and drop y se cambian de lugar). En Delphi el TColumn.Index era el indice de creaci�n y exist�a el TColumn.VisibleIndex que era el orden de colocaci�n en el grid. Por todo eso en Lazarus termin� cambiando la manera de plantearlo.
ChangeOrderBy( Column.Field );
ChangeOrderBy es un procedimiento que rehace la clausula ORDER BY del sql de selecci�n. Para el tema de la ordenaci�n ASC o DESC simplemente guardo el Field.FieldNo (numero de campo dentro del sql que no me varia) en myGrid.Tag y si coincide es DESC y si no ASC:
vSql := UpperCase(FQuery.Sql.Text);
if Pos(' ORDER BY ', vSql) 0 then
vSql := copy( vSql, 1, (Pos(' ORDER BY ', vSql) - 1) );
vSql := vSql + ' ORDER BY ' + Field.FieldName;
if myGrid.Tag = Field.FieldNo then
begin
vSql := vSql + ' DESC';
myGrid.Tag = 0;
end
else
begin
vSql := vSql + ' ASC';
myGrid.Tag = Field.FieldNo;
end;
FQuery.Sql.Text := vSql;
Solo queda refrescar el dataset. Espero que les sirva o aclare algo. Un saludo.
________________________________________________________________________
ARTEX TRADING S.A.
Jos� Antonio Cuello Principal
El jue, 18-11-2010 a las 12:34 -0300, Walter Mes�n escribi�:
Show quoted text 18 lines
Hola Jos�...
>
> Yo lo he hecho hace tiempo con esto:
>
> procedure TfrmReport_Oficio.DBGrid1TitleClick(Column: TColumn);
> begin
> qryHashAlias.IndexFieldNames:=Column.Title.Caption;
> qryHashAlias.Refresh;
> end;
>
> Pero claro, s�lo ordenaba de menor a mayor y sin informaci�n visual,
> pero el column era el correcto :-?
>
El tema es que el Column del parametro que te pasa est� corrida una
columna hacia la derecha, o sea que el valor que obten�s es es de la
columna siguiente al que clikeaste.
En las RX para Delphi me cans� de usarlo sin este problema...
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101119/b460ac3f/attachment.html>