PDA

Ver la Versión Completa : DbGrid Con Ordenación


Rabata
14-05-2005, 00:24:04
Mi Pregunta es la Siguiente como puedo hacer en un dbgrid que esta asociado a un DataSource que a su vez esta enlazado a un TIBTable(Interbase) que cuando pinche sobre la cabecera del dbgrid me ordene la vista por ese campo (lo he visto en muchos programas) ¿Hay algun componente que funcione así?, si no es el caso ¿como puedo hacerlo?.

Muchas Gracias a todos...

roman
14-05-2005, 04:04:03
El DBGrid sólo se limita a mostrar los registros del dataset asociado y lo hará en el orden en el que éste los presente, así que lo mejor que puedes hacer es indicarle a dicho dataset que cambie el orden, ya sea cambiando el índice o alterando el ORDER BY de una consulta SQL. El momento más indicado para pedir al dataset que cambie el orden podría ser el evento OnTitleClick del DBGrid, que se genera cuando se hace click sobre el título de alguna columna.

Desafortunadamente el DBGrid es muy limitado y no es sencillo que, además de recibir tal evento, muestre algún indicador visual (el típico triangulito, por ejemplo).

Me parece que el RxDbGrid de las librerías RX hace un poco más fácil esto.

// Saludos

jgutti
14-05-2005, 15:26:28
uso componentes zeos y utilizo estas instrucciones para ordernar al hacer click sobre un columna del dbgrid

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
num:Integer;
i : integer;
begin
for i:= 1 to DBGrid1.Columns.Count do
begin
DBGrid1.Columns[i-1].Title.Font.Color := clWhite;
DBGrid1.Columns[i-1].Title.Font.Style := [];
end;
Column.Title.Font.Color := clBlack; //Coloca en color negro la columna Pinchada
Column.Title.Font.Style := [fsBold];
Ibdataset.SortedFields := Column.FieldName;
end;

espero que te sirva

atte

jgutti