* Al "activar la form" *
*****************
delphi
procedure TForm1.FormActivate(Sender: TObject); begin query1.SQL.Add('SELECT * FROM Clientes'); query1.SQL.Add('ORDER BY NombreCliente'); query1.Open; {Si el usuario ya había entrado en la "form" anteriormente, es necesario "forzar" el ordenamiento} // Orden de las Columnas del DBGrid DBGrid1ColumnMoved(Form1,0,0); end;
***************************************
* En el evento ColumnMoved del DBGrid *
***************************************
delphi
procedure TForm1.DBGrid1ColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer); var s_Cuerda: String; i_Contador: Byte; begin s_Cuerda:= ''; for i_Contador:= 0 to (DBGRid1.Columns.Count - 1) do s_Cuerda:= s_Cuerda + DBGrid1.Columns.Items[i_Contador].FieldName + ','; s_Cuerda:= Copy(s_Cuerda,0,Length(s_Cuerda) - 1); query1.Close; query1.SQL.Delete(query1.SQL.Count - 1); query1.SQL.Add('ORDER BY ' + s_Cuerda); query1.Open; end;
Podría limitarse la cantidad de columnas utilizadas para ordenar la información, validar el tipo de campo (BLOB), si la columna tiene asignado un campo(Field), etc.
Salud.