Das WITH kann man gerne noch rausmachen, wenn man will.
Delphi-Quellcode:
procedure TFieldHelper.Sort(SortMode: TFieldSortMode);
begin
if (aSortMode = fsmDesc) or ((aSortMode = fsmAuto) and (DataSet.Sort = FieldName)) then
DataSet.Sort := FieldName + ' DESC'
else
DataSet.Sort := FieldName;
end;
Gut, ich hab hier noch einen Fehler drin, denn es müßte
Column.Field.Sort;
heißen und/oder man baut sich dieses auch noch für die TColumn.
Nja, es ist nicht komplizierter, als der andere Code.
Nur die Position des Codes ist halt eine andere.
Man kann sich so ein paar öfters gebrauchte Funktionen schön an einer Stelle zusammenfassen, aber anders, als wenn man sie nur irgendwo als "alleinstehende" Prozedur ablegt, ist sie hier an alle Fields direkt angehangen und somit greift hier auch die Codevervollständigung einem hilfreich unter die Arme.
Ich hab mir da z.B. noch eine kleine Locate mit abgelegt, also
Delphi-Quellcode:
Field.DataSet.Sort := Field.FieldName + ' DESC';
Field.DataSet.Locate(Field.FieldName, Value, [loCaseInsensitive]);
Field.Sort(fsmDesc);
Field.Locate(Value); // mit optionalem Parameter für TLocateOptions
Das sind natürlich Vereinfachungen, welche man nur nutzten kann, wenn
nur nur nach einem Feld sortiert, bzw. nur in Einem gesucht werden soll.