<!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>