How to add menu item to default TAdvMemo popup context menu?

TAdvMemo 3.7.4.8: How can I ADD a custom menu item to the DEFAULT Popup Context Menu that appears when right-clicking the TAdvMemo text?

image

Implement the OnCustomizeContextMenu event-handler:

procedure TForm1.AdvMemo1CustomizeContextMenu(Sender: TObject; CurX, CurY: Integer; ContextMenu: TPopupMenu);
var
  NewMenuItem: TMenuItem;
begin
  NewMenuItem := TMenuItem.Create(ContextMenu);
  NewMenuItem.Caption := 'My Custom Item';
  ContextMenu.Items.Add(NewMenuItem);
end;

image

Further customization:

image

procedure TForm1.AdvMemo1CustomContextMenuClick(Sender: TObject; MenuItem: TMenuItem);
begin
  if SameText(MenuItem.Name, 'mIncreaseTextFontSize') then
    AdvMemo1.Font.Size := AdvMemo1.Font.Size + 1
  else if SameText(MenuItem.Name, 'mDecreaseTextFontSize') then
    AdvMemo1.Font.Size := AdvMemo1.Font.Size - 1;
end;

procedure TForm1.AdvMemo1CustomizeContextMenu(Sender: TObject; CurX, CurY: Integer; ContextMenu: TPopupMenu);
var
  NewMenuDivider, NewMenuItem: TMenuItem;
begin
  if ContextMenu.Images.Tag = 0 then // only once
  begin
    ContextMenu.Images.AddImages(ImageListAdditionalAdvMemoContextMenuIcons); 
    ContextMenu.Images.Tag := ContextMenu.Images.Count;
  end;

  NewMenuDivider := TMenuItem.Create(ContextMenu);
  NewMenuDivider.Caption := '-';
  ContextMenu.Items.Add(NewMenuDivider);

  NewMenuItem := TMenuItem.Create(ContextMenu);
  NewMenuItem.Name := 'mIncreaseTextFontSize';
  NewMenuItem.Caption := 'Increase text-font size';
  NewMenuItem.ImageIndex := 5;
  ContextMenu.Items.Add(NewMenuItem);

  NewMenuItem := TMenuItem.Create(ContextMenu);
  NewMenuItem.Name := 'mDecreaseTextFontSize';
  NewMenuItem.Caption := 'Decrease text-font size';
  NewMenuItem.ImageIndex := 6;
  ContextMenu.Items.Add(NewMenuItem);
end;
2 Likes