Ver Mensaje Individual
  #4  
Antiguo 18-05-2017
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Reputación: 19
olbeup Va camino a la fama
Hola ronalg,

Yo utilizo esto y me va bien.

Código Delphi [-]
type

  TIDFieldSorted = packed record
    FieldColumn: String;
    FieldSorted: String;
    FieldColumnOld: String;
  end;

En el formulario define una variable en private
Código Delphi [-]
...
PFieldSorted: TIDFieldSorted;

funciones definidas
Código Delphi [-]
// Devuelve la columna del DBGrid según FieldColumn
function GetGridColumn(Grid: TDBGrid; FieldColumn: String): TColumn;
var
  nI: Integer;
begin
  Result := nil;
  for nI := 0 to Grid.Columns.Count -1 do
    if (Result <> nil) then
      Break
    else
      if (Grid.Columns.Items[nI].FieldName = FieldColumn) then
        Result := Grid.Columns.Items[nI];
end;

y esto
Código Delphi [-]
procedure TfrmPresupuestos.dbgBudgetsTitleClick(Column: TColumn);
{$J+}
const
  PreviousColumnIndex: integer = -1;
{$J-}
begin
  if (Column = nil) and (PFieldSorted.FieldColumn = '') then
    Exit;

  if (Column = nil) then
    Column := GetGridColumn(dbgBudgets, PFieldSorted.FieldColumn);

  with TCustomADODataSet(dbgBudgets.DataSource.DataSet) do
  begin
    if PreviousColumnIndex > -1 then
      dbgBudgets.Columns[PreviousColumnIndex].Title.Font.Style :=
        dbgBudgets.Columns[PreviousColumnIndex].Title.Font.Style - [fsItalic, fsBold];

    Column.title.Font.Style := Column.title.Font.Style + [fsItalic, fsBold];
    PreviousColumnIndex := Column.Index;

    if (Sort = '') and (PFieldSorted.FieldSorted <> '') then
      Sort := PFieldSorted.FieldSorted
    else
      if (Pos(Column.Field.FieldName, Sort) = 1) and (Pos(' DESC', Sort)= 0) then
        Sort := Column.Field.FieldName + ' DESC'
      else
        Sort := Column.Field.FieldName + ' ASC';

    PFieldSorted.FieldColumn := Column.FieldName;
    PFieldSorted.FieldSorted := Sort;
  end;
end;

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita