Ahora estoy pensando en agregar una variable más:
CampoOrden para saber por qué campo está ordenado el DataSet y así poder compararlo con la variable ValorAnterior.
Código Delphi
[-]
procedure TDMMayor.xMayorCalcFields(DataSet: TDataSet);
begin
if (DataSet.FieldByName('SOMBRA').AsInteger = 0) then
begin
if (ValorAnterior <> DataSet.FieldByName(CampoOrden).AsString) then
begin
Sombra := not Sombra;
ValorAnterior := DataSet.FieldByName(CampoOrden).AsString;
end;
if (Sombra) then
DataSet.FieldByName('SOMBRA').AsInteger := 1
else
DataSet.FieldByName('SOMBRA').AsInteger := 2;
end;
end;
procedure Ordenar(Orden : string);
begin
CampoOrden := Orden;
xMayor.SelectSQL.Text := SLQBase;
xMayor.SelectSQL.Text := xMayor.SelectSQL.Text + ' ORDER BY ' + CampoOrden;
end;