anchor.diff:  { TKMEdit }
   constructor TKMEdit.Create(aParent: TKMPanel; aLeft,aTop,aWidth,aHeight: Integer; aFont: TKMFont);
   begin
  -  inherited Create(aParent, aLeft,aTop,aWidth,aHeight);
  +  inherited Create(aParent, aLeft, aTop, aWidth, aHeight);
     fText := '<<<LEER>>>';
     fFont := aFont;
     fAllowedChars := acText; //Set to the widest by default
  
positive.code: procedure TKMEdit.SetText(aText: string);
  begin
    fText := aText;
    CursorPos := math.min(CursorPos, Length(fText));
    //Setting the text should place cursor to the end
    fLeftIndex := 0;
    SetCursorPos(Length(Text));
    ValidateText();
  end;
  
  
  //Validates fText basing on predefined sets of allowed or disallowed chars
  //It iterates from end to start of a string - deletes chars and moves cursor appropriately
  procedure TKMEdit.ValidateText();
  var
    i : integer;
  const
    DigitChars: set of Char = ['1' .. '9', '0'];
    NonFileChars: set of Char = [#0 .. #31, '<', '>', '|', '"', '\', '/', ':', '*', '?'];
    NonTextChars: set of Char = [#0 .. #31, '|'];
  begin
    for i:= Length(fText) downto 1 do
    begin
      if(fAllowedChars = acDigits) and not(fText[i] in DigitChars) or
        (fAllowedChars = acFileName) and (fText[i] in NonFileChars) or
        (fAllowedChars = acText) and (fText[i] in NonTextChars) then
          begin
            Delete(fText, i, 1);
            if CursorPos >= i then
              CursorPos := CursorPos - 1;
          end;
      end;
  end;
  
  
  
negative.code: function TKMEdit.KeyDown(Key: Word; Shift: TShiftState): Boolean;
  begin
    Result := KeyEventHandled(Key, Shift);
    if inherited KeyDown(Key, Shift) or ReadOnly then Exit;
  
    //Clipboard operations
    if (Shift = [ssCtrl]) and (Key <> VK_CONTROL) then
    begin
      case Key of
        Ord('C'): Clipboard.AsText := fText;
        Ord('X'): begin
                    Clipboard.AsText := fText;
                    Text := '';
                  end;
        Ord('V'): begin
                    Insert(Clipboard.AsText, fText, CursorPos + 1);
                    CursorPos := CursorPos + Length(Clipboard.AsText);
                    ValidateText;
                  end;
      end;
    end;
  
    case Key of
  