<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.28.1">
</HEAD>
<BODY>
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.<BR>
<BR>
ChangeOrderBy( Column.Field );<BR>
<BR>
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:<BR>
<BR>
vSql := UpperCase(FQuery.Sql.Text);<BR>
if Pos(' ORDER BY ', vSql) <> 0 then<BR>
vSql := copy( vSql, 1, (Pos(' ORDER BY ', vSql) - 1) );<BR>
<BR>
vSql := vSql + ' ORDER BY ' + Field.FieldName;<BR>
<BR>
if myGrid.Tag = Field.FieldNo then<BR>
begin<BR>
vSql := vSql + ' DESC';<BR>
myGrid.Tag = 0;<BR>
end<BR>
else<BR>
begin<BR>
vSql := vSql + ' ASC';<BR>
myGrid.Tag = Field.FieldNo;<BR>
end;<BR>
<BR>
FQuery.Sql.Text := vSql;<BR>
<BR>
Solo queda refrescar el dataset. Espero que les sirva o aclare algo.<BR>
Un saludo.<BR>
<BR>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<BR>
<HR NOSHADE>
<BR>
<BR>
<B><FONT SIZE="2">ARTEX TRADING S.A.</FONT></B><BR>
<I><FONT SIZE="2">José Antonio Cuello Principal</FONT></I><BR>
<BR>
<BR>
<BR>
</TD>
</TR>
</TABLE>
El jue, 18-11-2010 a las 12:34 -0300, Walter Mesón escribió:
<BLOCKQUOTE TYPE=CITE>
<PRE>
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...
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>