PDA

Ver la Versión Completa : Ordenar en grid


@-Soft
17-04-2004, 14:07:25
hola

disculpenme si el titulo no se parece mucho a lo que voy a preguntar, lo que pasa es que me llamo mucho la atencion como por ejemplo, cuando estamos en Windows y tenemos un listado de directorios en detalles estos se presentan en forma de filas y columnas algo parecido a un DBGrid de delphi, el asunto es que en el listado de directorio si pulsamos el titulo de la columna se ordena todos los archivos y directorios en orden ascendente y viceversa.

podrian decirme si existe algun componente DBGrid en el que se puedan ordenar los registros por columnas con solo presionar el titulo de la columnas, si esto es asi por favor diganme donde puedo conseguir este componente o si es un codigo favor escrilo, Gracias.

espero que hallan podido comprender mi descripcion.

Gydba
17-04-2004, 14:52:14
El tipo de control que mencionás es el ListView en el caso de W$.

Por otro lado y contestando a tu pregunta, en el foro ya se conversaron temas relacionados al ordenamiento por columnas, sin ir mas lejos:
http://www.clubdelphi.com/foros/showthread.php?t=7524&

Por supuesto que tenés componentes de terceros (generalmente los mejores son comerciales) que hacen entre otras cosas lo que pedís.

Espero que algo te ayude.

Tomás
18-04-2004, 01:26:21
Puedes poner esto en el evento OnTitleClick:


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
DBGProfes.Columns.Items[iX].Color := clWhite
else
Column.Color := clCream;
end;


Siempre orden ascencendente, todos los registros seleccionados, tabla InterBase con IBXs.
Cambia el color de la columna seleccionada. En el evento OnCreate debes colorear la que está inicialmente ordenada, por ej.

DBGProfes.Columns.Items[1].Color := clCream;


Un saludo. Tomás.