PDA

Ver la Versión Completa : DBGrid ordenar haciendo click en el titulo


sonjeux
04-05-2008, 07:32:07
Saludos, quiero hacer con un dbgrid algo como esto:
http://www.boliviatech.com/tabla.GIF http://www.boliviatech.com/tabla2.GIF
o saber si hay algun componente para firebird con el que pueda hacer eso, o sea ordenar por una columna haciendo click en el titulo, pero quiero que salga esa flechita que indica como esta ordenado.

Tambien quiero saber si alguien sabe como puedo hacer para buscar por un campo calculado en un ibtable.

Desde ya muchas gracias por su ayuda :D

Casimiro Notevi
04-05-2008, 19:32:05
Para ordenar por un campo en concreto debes capturar el evento apropiado del grid, depende del que uses, puede ser algo así como: "HeadClick", "TitleClick", etc.
Por ejemplo, imagina que tienes un dbgrid asociado a un dataset mediante su correspondiente datasource, el dataset tiene una sentencia parecida a esta:
Select Codigo, Nombre, Salario from tbEmpleados order by CodigoQuieres ordenar por "salario" y pinchas sobre el título del grid, haces algo parecido a esto:


procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
dataset.close;
case Column of
0: dataset.sql.text:='Select Codigo, Nombre, Salario from tbEmpleados order by Codigo';
1: dataset.sql.text:='Select Codigo, Nombre, Salario from tbEmpleados order by Nombre';
2: dataset.sql.text:='Select Codigo, Nombre, Salario from tbEmpleados order by Salario';
end;
dataset.open;
end;
Esto es una manera un poco "chapuza" de código, pero es sólo para que lo entiendas.

Para pintar la flechita o lo que quieras puedes hacer algo parecido:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
Rect: TRect; State: TGridDrawState);
begin
if Col=2 then
with StringGrid1.Canvas do
Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
end;

Seguro que si haces una búsqueda por los foros encuentras multitud de ejemplos que te pueden ser de ayuda.

sonjeux
04-05-2008, 19:59:14
Gracias, de esa forma si me lo se :P, pense que habia un componente, por que si te das cuenta digamos en el winzip cuando lista archivos, vos puedes hacer clic en el titulo, y este es como un boton :P en ese caso no es un boton, queria un componente ya hecho para eso :P. Y busque en el foro pero no pille algo como lo que quiero :cool:

Casimiro Notevi
04-05-2008, 20:43:22
Evidentemente el winzip y todos los programas hacen eso mismo "por debajo"

Neftali [Germán.Estévez]
05-05-2008, 16:07:53
Aquí (http://neftali.clubdelphi.com/tips/tip11.html)también tienes otro ejemplo en Delphi de cómo dibujar la flechita en los títulos de un DBGrid.

sonjeux
06-05-2008, 19:28:19
Gracias, excelente :D