Ver Mensaje Individual
  #3  
Antiguo 14-10-2008
Avatar de Cannabis
Cannabis Cannabis is offline
Miembro
 
Registrado: jun 2007
Posts: 170
Reputación: 17
Cannabis Va por buen camino
Gracia por tu interés Delphius.

Cita:
Empezado por Delphius Ver Mensaje
.....
¿A que te refieres a que el usuario cambia el orden de los datos?
Al abrir la Form en donde se encuentra el DBGrid se ejecuta el query: SELECT........
La última línea del query es: ORDER BY........

Cuando el usuario cambia el orden de las columnas del dbgrid, el query se ordena según el orden establecido.
En el evento OnColumnMoved:
Código Delphi [-]
procedure Tform1.dbgridColumnMoved(Sender: TObject;   FromIndex, ToIndex: Integer);
var
  s_Cuerda: String;   
  i_Contador: Byte;

begin
  
  s_Cuerda:= '';
  for i_Contador:= 0 to (dbgrid.Columns.Count - 1) do
  begin
    if dbgrid.Columns[i_Contador].FieldName <> '' then
      s_Cuerda:= s_Cuerda + dbgrid.Columns.Items[i_Contador].FieldName + ',';   
  end;
  s_Cuerda:= Copy(s_Cuerda,0,Length(s_Cuerda) - 1);    query.Close;   

  query.SQL.Delete(query.SQL.Count - 1);
  query.SQL.Add('ORDER BY ' + s_Cuerda);
  query.Open;   
  (query.FieldByName('Fecha') AS TDateTimeField).DisplayFormat:= 'dd/mmm/yyyy';
  (query.FieldByName('Importe') AS TFloatField).DisplayFormat:= ',0.00';  

end;

En conclusión: cada vez que se abre el query debo especificar nuevamente el formato de los campos. Si no lo hago, los campos pierden el formato.

Espero haber sido claro con mi duda.

Gracias de nuevo.

Salud.

Última edición por Cannabis fecha: 14-10-2008 a las 16:28:18.
Responder Con Cita