[Lazarus-es] rxdbgrid, duda

José Antonio Cuello josea en artextrading.com
Vie Nov 19 09:32:58 CET 2010


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ó:

> 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-ide.org/pipermail/lazarus-es/attachments/20101119/b460ac3f/attachment-0002.html>


More information about the Lazarus-es mailing list