Delphi - ordenar columnas en dbgrid

 
Vista:

ordenar columnas en dbgrid

Publicado por maverick (4 intervenciones) el 03/05/2005 00:44:00
amgos, como puedpo hacer para q lo q me muestra un dbegrid se ordene segun se clickee en el nombre del campo, como se hace en mi pc.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ordenar columnas en dbgrid

Publicado por joselito (178 intervenciones) el 03/05/2005 13:56:27
Eso me trajo a mi un quebradero de cabeza, pero al final, lo logre.
Se me ocurrio la idea de montar la SQL de nuevo en el evento OnTitleClick del Grid, donde como puedes observar, tienes un indice de la columna que has pinchado que se pasa por parametro en la declaracion el procedimiento.
Pues solo tienes que jugar con ese indice, y en vez de poner Order By elNombreDelCampo, te da igual si se pone Order By 1 o 2 o 3, porque la SQL va a seguir siendo valida. De hecho, es mas rapida.
Es decir, si pinchas en la cuarta columna, el Order By lo podrias montar como "Order By 4", que se correspondera con el 4º campo de tu Select, siendo igual de valido.
Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenar columnas en dbgrid

Publicado por jose (1 intervención) el 18/01/2018 19:26:01
no podrias mostrar en foto el codigo a insertar ..
ayudaria al caso de otros y gracias por la ayuda y su tiempo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenar columnas en dbgrid

Publicado por Virum (484 intervenciones) el 03/05/2005 16:37:14
Hola:

En el evento OnTitleClick del grid (solo orden ascendente) (ej. para cuatro columnas, coloreando ligeramente la que tiene el índice). Puedes colorear si quieres solo la barra de la cabecera de columna, o las dos cosas.

procedure TFDatos.DBGProfesTitleClick(Column: TColumn);
var
iX : integer;
sOrden : string;
begin
//orden según columna pinchada
Case Column.Index Of
0 : sOrden := 'NOMBRE, APELLIDOS';
1 : sOrden := 'APELLIDOS, NOMBRE';
2 : sOrden := 'ASIGNATURA, APELLIDOS, NOMBRE';
3 : sOrden := 'SITUACION, APELLIDOS, NOMBRE';
end;
DM.IBDSProfes.Close;
DM.IBDSProfes.SelectSQL.Text := 'Select * from PROFES order by '+sOrden;
DM.IBDSProfes.Open;
for iX := 0 to 3 do
if Column.Index = iX then
Column.Color := $00F7F7F7
else
DBGProfes.Columns.Items[iX].Color := clWhite;
end;

Suerte. Virum
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ordenar columnas en dbgrid

Publicado por ISAAC (1 intervención) el 01/10/2013 17:35:39
Hola tengo una duda que es el DM.IBD?????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar