Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Grid ordenable? (https://www.clubdelphi.com/foros/showthread.php?t=78185)

mcs 27-03-2012 10:36:44

Grid ordenable?
 
Hola,

Tengo una aplicación que usa unos cuantos (10 o 12) TDBGrid. Un problema que veo es que por defecto el TDBGrid no ordena los resultados cuando se hace click en el nombre de la columna, y los usuarios esperan que esto funcione de esta forma.

Podría modificar todos los DBGrid que tengo en el programa para añadir esta funcionalidad, pero creo que es "un rollo". Y además, seguro que existe algún componente que ya lo tenga todo incorporado.

¿Voy equivocado? O sea, ¿existe algún componente Grid, preferiblamente gratuito (de las JVCL, por ejemplo), que tenga implementado la ordenación segun se pulse el título de las columnas?

Muchas gracias,

Marc

ElDioni 27-03-2012 11:47:32

Hola,

no se si habrá algún componente de tipo Grid que te ordene automáticamente las columnas pinchando en los títulos. Yo te pongo un ejemplo simple de como podrías hacer la ordenación pinchando en los títulos.

Código Delphi [-]
procedure TFrmMenuArt.DbGrid1TitleClick(Column: TColumn);
begin
AdoQuery1.Close;
AdoQuery1.SQL.Text:='SELECT * FROM tutabla ORDER BY '+DBGrid1.Columns[column.Index].FieldName +' ASC';
AdoQuery1.Open;
end;

Espero que te sirva de algo.

Saludos.

radenf 27-03-2012 12:05:23

Estimado mcs :

Este código permite ordenar los DBGrid al hacer click en el título. Es para ADO pero lo puedes adaptar a tu BD,

Código Delphi [-]
procedure Form1.DBGrid1TitleClick(Column: TbsColumn);
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
if (Pos(Column.FieldName, Sort) = 1) and (Pos(' ASC', Sort)= 0) then
begin
Sort := Column.FieldName + ' ASC';
end
else
begin
Sort := Column.FieldName + ' DESC';
end;
Indice := Column.Index;
end;

Salu2

mcs 27-03-2012 12:15:55

ElDioni, Radenf,

Gracias por vuestras sugerencias, y me guardo este código. Pero la verdad es que esto es lo último que quiero hacer, tener que añadir un código a cada grid que tenga el el programa. Pero bueno, si no encuentro ningún grid que lo haga automáticamente, es lo que haré.


La franja horaria es GMT +2. Ahora son las 02:40:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi