anchor.diff:        else if itm.Name = ipmPaste then
           itm.Enabled := (not ReadOnly) and (fpgClipboard.Text <> '')
         else if itm.Name = ipmClearAll then
  -        itm.Enabled := (not ReadOnly) and (Text <> '');
  +        itm.Enabled := (not ReadOnly) and (Text <> '')
  +      else if itm.Name = ipmCharmap then
  +        itm.Enabled := (not ReadOnly);
       end;
     end;
   end;
  
positive.code:   ipmCopy       = 'miDefaultCopy';
    ipmPaste      = 'miDefaultPaste';
    ipmClearAll   = 'miDefaultClearAll';
  
  
  function CreateEdit(AOwner: TComponent; x, y, w, h: TfpgCoord): TfpgEdit;
  
negative.code: 
  procedure TfpgBaseEdit.DefaultPopupCut(Sender: TObject);
  begin
    if ReadOnly then
      Exit;
    CutToClipboard;
  end;
  
  procedure TfpgBaseEdit.DefaultPopupCopy(Sender: TObject);
  begin
    if ReadOnly then
      Exit;
    CopyToClipboard;
  end;
  
  procedure TfpgBaseEdit.DefaultPopupPaste(Sender: TObject);
  begin
    if ReadOnly then
      Exit;
    PasteFromClipboard
  end;
  
  procedure TfpgBaseEdit.DefaultPopupClearAll(Sender: TObject);
  begin
    if ReadOnly then
      Exit;
    Clear;
  end;
  
  procedure TfpgBaseEdit.DefaultPopupInsertFromCharmap(Sender: TObject);
  var
    s: TfpgString;
  begin
    if ReadOnly then
      Exit;
    s := fpgShowCharMap;
    if s <> '' then
      DoPaste(s);
  end;
  
  procedure TfpgBaseEdit.SetDefaultPopupMenuItemsState;
  