anchor.diff:      Result := Result + sep + tmpMemo.Lines[i];
       sep := Chr(13);
     end;
  -  Result := Trim(Result);
  +  if aTrimValue then
  +    Result := Trim(Result);
   end;
   
   procedure TmEditingFrame.OnEditValue(const aName: string; const aNewValue: variant);
  
positive.code:     procedure AddMemo (const aName : string; const aCaption : string; const aDefaultValue : string; const aMemoHeightPercent : double);
      procedure ExtractFields (aVirtualFields : TVirtualFieldDefs; aList : TStringList);
      function GetValue (const aName : string) : string;
      function GetValueFromMemo (const aName : string) : string;
      // override these:
      procedure OnEditValue(const aName : string; const aNewValue : variant); virtual;
      procedure OnValidateValue(const aName : string; const aOldValue : String; var aNewValue : String); virtual;
  
negative.code:   SysUtils, variants, StdCtrls,
    oMultiPanelSetup, OMultiPanel,
    mGridEditors, mMaps, mCalendarDialog, mUtility, mMathUtility, mLookupForm,
    mQuickReadOnlyVirtualDataSet, mVirtualDataSet, mVirtualFieldDefs, mNullables;
  
  resourcestring
    SPropertyColumnTitle = 'Property';
    SValueColumnTitle = 'Value';
  
  type
  
    TmEditingFrameEditorKind = (ekInteger, ekFloat, ekDate, ekLookup, ekText, ekReadOnly);
  
    { TmEditingFrame }
  