anchor.diff:  
       function GetConfigurationForLine (const aName : string): TmEditorLineConfiguration;
   
  -    procedure Run;
  +    procedure Run(const aCustomizedSortOrder : TStringList = nil);
   
       property AlternateColor : TColor read GetAlternateColor write SetAlternateColor;
       property MultiEditMode : boolean read FMultiEditMode write SetMultiEditMode;
  
positive.code:     Result := nil;
  end;
  
  procedure TmEditingPanel.Run;
  var
    i, k : integer;
    curLine : TEditorLine;
    str : String;
    curDatum : IVDDatum;
    curValue : Variant;
  begin
    for i := 0 to FLines.Count - 1 do
    begin
      curLine := FLines.Items[i] as TEditorLine;
  
      if not Assigned(curLine.Configuration.ChangedValueDestination) then
        raise Exception.Create('Nullable destination not set for field ' + curLine.Name);
  
      curLine.ActualValue:= curLine.Configuration.ChangedValueDestination.AsVariant;
  
      if (curLine.Configuration.DataType = dtFloat) and (curLine.Configuration.ChangedValueDestination is TNullableDouble) then
      begin
        curLine.Configuration.FDisplayFormat:= (curLine.Configuration.ChangedValueDestination as TNullableDouble).DisplayFormat;
        curLine.Configuration.FFractionalPartDigits := (curLine.Configuration.ChangedValueDestination as TNullableDouble).FractionalPartDigits;
        curLine.Configuration.FRoundingMethod:= (curLine.Configuration.ChangedValueDestination as TNullableDouble).RoundingMethod;
        str := curLine.Configuration.ChangedValueDestination.AsString;
      end
      else if (curLine.Configuration.DataType = dtDate) and (curLine.Configuration.ChangedValueDestination is TNullableDateTime) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableDateTime).AsString(false)
      else if (curLine.Configuration.DataType = dtDateTime) and (curLine.Configuration.ChangedValueDestination is TNullableDateTime) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableDateTime).AsString(true)
      else if (curLine.Configuration.DataType = dtColor) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableColor).AsString
      else if (curLine.Configuration.DataType = dtTime) and (curLine.Configuration.ChangedValueDestination is TNullableTime) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableTime).AsString
      else if ((curLine.Configuration.EditorKind = ekLookup) or ((curLine.Configuration.EditorKind = ekLookupPlusWizard))) and (curLine.Configuration.ChangedValueDestination.NotNull) then
      begin
        assert (Assigned(curLine.Configuration.DataProvider));
  
        if (curLine.Configuration.DisplayLabelFieldNames.Count = 0)  then
          curLine.Configuration.DataProvider.GetMinimumFields(curLine.Configuration.DisplayLabelFieldNames);
  
        if curLine.Configuration.AlternativeKeyFieldName = '' then
          curDatum := curLine.Configuration.DataProvider.FindDatumByStringKey(curLine.Configuration.ChangedValueDestination.AsString)
        else
        begin
          curDatum := nil;
          for k := 0 to curLine.Configuration.DataProvider.Count - 1 do
          begin
            curValue := curLine.Configuration.DataProvider.GetDatum(k).GetPropertyByFieldName(curLine.Configuration.AlternativeKeyFieldName);
            if CompareVariants(curValue, curLine.Configuration.ChangedValueDestination.AsVariant) = 0 then
            begin
              curDatum := curLine.Configuration.DataProvider.GetDatum(k);
              break;
            end;
          end;
        end;
        if Assigned(curDatum) then
          str := ConcatenateFieldValues(curDatum, curLine.Configuration.DisplayLabelFieldNames)
        else
          str := curLine.Configuration.ChangedValueDestination.AsString;
      end
      else if ((curLine.Configuration.EditorKind = ekLookupInstantQuery) or (curLine.Configuration.EditorKind = ekLookupInstantQueryPlusWizard)) and Assigned(curLine.Configuration.StartDatum) then
      begin
        if (curLine.Configuration.DisplayLabelFieldNames.Count = 0)  then
          curLine.Configuration.InstantQueryManager.GetDataProvider.GetMinimumFields(curLine.Configuration.DisplayLabelFieldNames);
        str := ConcatenateFieldValues(curLine.Configuration.StartDatum, curLine.Configuration.DisplayLabelFieldNames);
      end
      else
        str := curLine.Configuration.ChangedValueDestination.AsString;
  
      curLine.Index:= FValueListEditor.InsertRow(ComposeCaption(curLine.Configuration.Caption, curLine.Configuration.Mandatory), str, true);
  
      FLinesByRowIndex.Add(curLine.RowIndex, curLine);
      FValueListEditor.ItemProps[curLine.Index].ReadOnly:= (curLine.Configuration.ReadOnly <> roAllowEditing);
      if (curLine.Configuration.ReadOnly = roAllowEditing) and ((curLine.Configuration.EditorKind = ekCalendar) or (curLine.Configuration.EditorKind = ekLookup)
        or (curLine.Configuration.EditorKind = ekColorDialog) or (curLine.Configuration.EditorKind = ekLookupInstantQuery)
        or (curLine.Configuration.EditorKind = ekDialog) or (curLine.Configuration.EditorKind = ekWizard) or (curLine.Configuration.EditorKind = ekLookupPlusWizard) or (curLine.Configuration.EditorKind = ekLookupInstantQueryPlusWizard)) then
          FValueListEditor.ItemProps[curLine.Index].EditStyle:=esEllipsis;
  
      if MultiEditMode and Assigned(FClearValuesList) then
        FClearValuesList.AddItem(curLine.Configuration.Caption, curLine);
    end;
  end;
  
  
negative.code:   {$ENDIF}
    LCLType,
    Dialogs, dateutils,
    mToast, mFormSetup, mMagnificationFactor, mIntList, mBaseClassesAsObjects;
  
  type
  
  