Ver Mensaje Individual
  #1  
Antiguo 25-11-2012
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Reputación: 13
DOS Va por buen camino
Ordenar un DBGrid por columna

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

Última edición por Casimiro Notevi fecha: 25-11-2012 a las 19:26:49.
Responder Con Cita