addmenu.txt

来自「自动化控制visio」· 文本 代码 · 共 80 行

TXT
80
字号
The published methods of adding menus to Visio are very well if only one add-on will be active at any one time. However, this may not be the case. There are many Visio add-ons that cause problems.

Some add-ons (as well as Visio itself) may display a startup dialog, if this dialog is modal then while this is being shown the menus can not be accessed. 
If more than one add is to be loaded it is indeterminate which one will get access to the menus first. 
procedure add_menus();
var
  UIObj: Visio_TLB.UIObject;
  menusObj: Visio_TLB.Menus;
  menuObj:  Visio_TLB.Menu;
  menuItemObj, subMenuItemObj: Visio_TLB.MenuItem;
begin
 try
  // wait for any startup dialogs to finish
  ready := false;
  while (ready = false) do
  begin
    try
      // if the builtin menu is unavailable then Visio must be busy
      if Visio_Controller.Application.BuiltInMenus <> nil then
        ready := true;
      // Let Visio do its stuff
      Forms.Application.ProcessMessages;
    except;
    end;
  end;
  try
    // always try to get the custom menus first
    UIObj := Visio_Controller.Application.CustomMenus;
    // if the custom menu is empty then get the built in menu
    if UIObj = nil then
      UIObj := Visio_Controller.Application.BuiltInMenus;
  except
    UIObj := Visio_Controller.Application.BuiltInMenus;
  end;
  menusObj := UIObj.MenuSets.ItemAtID[visUIObjSetDrawing].Menus;
  // add our menu at position 8
  menuObj := menusObj.AddAt(8);
  menuObj.Caption := 'YourMenuName';

  // menu item 1
  menuItemObj := menuObj.MenuItems.Add;
  menuItemObj.Caption := 'item 1';
  menuItemObj.AddOnName := 'item1addon';
  menuItemObj.ActionText := 'item 1';
  menuItemObj.MiniHelp := 'item 1';

  // menu item 2
  menuItemObj := menuObj.MenuItems.Add;
  menuItemObj.Caption := 'newSubmenuItems';
  menuItemObj.AddOnName := 'submenuitem1addon';  // any one to make menu visible
  menuItemObj.ActionText := 'newSubmenuItems';
  menuItemObj.MiniHelp := 'newSubmenuItems';

  // submenu item 1
  subMenuItemObj := menuItemObj.MenuItems.Add;
  subMenuItemObj.Caption := 'submenuitem1';
  subMenuItemObj.AddOnName := 'submenuitem1addon';
  subMenuItemObj.ActionText := 'submenuitem1';
  subMenuItemObj.MiniHelp := 'submenuitem1';

  // submenu item 2
  subMenuItemObj := menuItemObj.MenuItems.Add;
  subMenuItemObj.Caption := 'submenuitem2';
  subMenuItemObj.AddOnName := 'submenuitem1addon';
  subMenuItemObj.ActionText := 'submenuitem2';
  subMenuItemObj.MiniHelp := 'submenuitem2';

  // menu item 3
  menuItemObj := menuObj.MenuItems.Add;
  menuItemObj.Caption := 'item 3';
  menuItemObj.AddOnName := 'item1addon';
  menuItemObj.ActionText := 'item 3';
  menuItemObj.MiniHelp := 'item 3';

  // write this to the custom menu
  Visio_Controller.Application.SetCustomMenus(UIObj);
 except;
 end;
end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?