Discussion:
[Lazarus] TMenu calls OnClick twice per click
kapibara via Lazarus
2018-09-21 21:03:05 UTC
Permalink
Hi Guys!


Under Linux GTK2, clicking a MenuItem with RadioButton calls OnClick twice.

Calling MenuItem.Click by code at runtime doesn't seem to change the
selected menuitem in the menu?

Under Windows I dont see the RadioButton in the menu, and OnClick is
called only once.

See demo.


procedure TForm1.btnAddMenuItemClick(Sender: TObject);
var
  s:string;
  aTargetMenu, aMenuItem: TMenuItem;
begin
  aTargetMenu:= MainMenu.Items.Find('&Menu');
  s:='MenuItem ' +IntToStr(aTargetMenu.Count +1);
  s:=InputBox('Menu name','Enter Menu Name:', s);

  aMenuItem:=TMenuItem.Create(MainMenu);
  aMenuItem.OnClick:=@MenuClickHandler;
  aMenuItem.RadioItem:=True;
  aMenuItem.Caption:=s;
  aTargetMenu.Add(aMenuItem);
  aMenuItem.Click;  //Doesnt change selected menuitem with RadioButton!
end;

procedure TForm1.MenuClickHandler(Sender: TObject);
begin
  ShowMessage('Clicked!');
end;

Loading...