Hola a todos, he visto en internet y en este foro tambien como ordenan un DBGrid al hacer click en el titulo de la columna
Código Delphi
[-]
procedure TForm13.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
pt: TGridcoord;
begin
pt:= DBGrid1.MouseCoord(x, y);
if pt.y=0 then
DBGrid1.Cursor:=crHandPoint
else
DBGrid1.Cursor:=crDefault;
end;
y despues en el evento title click del DBGrid
Código Delphi
[-]
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
{$J+}
const PreviousColumnIndex : integer = -1;
{$J-}
begin
if DBGrid1.DataSource.DataSet is TCustomADODataSet then
with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
begin
try
DBGrid1.Columns[PreviousColumnIndex].title.Font.Style := DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
except
end;
Column.title.Font.Style := Column.title.Font.Style + [fsBold];
PreviousColumnIndex := Column.Index;
if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort)= 0) then
Sort := Column.Field.FieldName + ' DESC'
else
Sort := Column.Field.FieldName + ' ASC';
end;
end;
El esunto es que trabajo con Delphi 7, Paradox, Ttable y datasource, no con ADO, no se si se puede adaptar el codigo o le puedo agregar ADOtable?
Tambien encontre este codigo para reemplazar el anterior
Código Delphi
[-]Table1.IndexFieldNames:=Column.FieldName;
con la opcion de reemplazar IndexFieldNames por IndexName, pero me tira un error "Index does not exist..." se ve que debo crear el indice de las columnas o las tablas, como se realiza esto?
si alguien me puede ayudar le agradecere, de ultima si no se puede hacer esto en la columna, lo haria en un boton, como
Código Delphi
[-]
procedure TForm17.Button2Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select Codigo,Servicio,Importe');
Query1.SQL.Add('From Table1 ');
Query1.SQL.Add('order by 2');
Query1.Active:=true;
Query1.Open;
end;
Que tampoco funciono