📄 addmenu.txt
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -