Home Forums General XMetaL Discussion Help with Menu Reply To: Help with Menu

Max

Reply to: Help with Menu

Thanks, mag3737.

Derek Read and mag3737,

My goal is to create simple customisation with menu and toolbar.

here my logic (how i  imagine it) step by step:

1) Create MyMacro.mcr in the StartUp folder

2) On Macro “On_Default_CommandBars_Complete” I call function “CreateLoadMenu” and this function recreates
menu in view 1

MyMenu
  Load

2.1) I put macro “CreateFullMenu” on property OnAction for “Load” item.

3) User presses “Load” and calles macro “CreateFullMenu”.

4) This macro tries to delete previous menu item “Load”, if fails macro tries to delete “MyMenu” and recreates it.

4.1) Add menu items “Item 1″,”Item 2″,”Unload” and create toolbar
4.3) On “Unload” action macros “CreateLoadMenu” is called

5) User preses “Unload” and sees menu in View 1.

Steps 2 – 4.3 are application-level marco.
I use only one file “MyMacro.mcr” and I don't use any DTD or XSD customization.

This is What I get when no documents are opened: pict 1

This is What I get when a document is opened: pict 2

How can I get the needed items when the documents are opened?

Full code of “MyMacro.mcr”:
[code]


Application.alert(“Test!!!”)
]]>


Application.Run(“CreateLoadMenuMac”)
]]>


var cmdBars = Application.CommandBars;
var menuBar = cmdBars.item(“Menu bar”);
var menuBarCtrls = menuBar.Controls;
var fileMenu = menuBarCtrls.item(“MyMenu”); if (fileMenu != null) fileMenu.Delete(); //clear memory
cmdBars = null;
menuBar = null;
menuBarCtrls = null;
fileMenu = null;
}//_DeleteMenu() ]]>


//Application.Run(“DeleteToolBar”); function _CreateLoadMenu(){ var cmdBars = Application.CommandBars;
var menuBar = cmdBars.item(“Menu bar”);
var menuBarCtrls = menuBar.Controls;
var fileMenu = menuBarCtrls.item(“MyMenu”);   if (fileMenu == null)
  {
      var newHeaderItem = menuBarCtrls.Add(sqcbcTypePopup);
      newHeaderItem.Caption = “MyMenu”;
      if (newHeaderItem != null)                //  create ok!
      {
          var newHeaderItemControls = newHeaderItem.Controls;
         
          var Item = newHeaderItemControls.Add(sqcbcTypePopup);                   
          Item.Caption = “Load”;
          Item.FaceId=0;
          Item.OnAction = “CreateFullMenuMac”;
          Item.Enabled = true;
          Item = null; 
         
          //clear memory
          newHeaderItemControls = null;
          Item = null;       
      }
      else
      {
        Application.Alert(“Can't create MyMenu menu”)   
      }
     
    //clear memory
    newHeaderItem = null; 
  }
  else                                        // if already exits
  {
      var MenuItems = null;
      var tImem = null;
      var trycreatemenu = null;
     
      try{
          MenuItems = fileMenu.Controls;      // try kill menu item
          try
          {
              while (MenuItems.Count >0)
              {
                tImem = MenuItems.item(1);
                if (tImem != null) tImem.Delete();
              }
          }
          catch (err)
          { 
            fileMenu.Delete();                // fail! Kill MyMenu and ReCreate
            trycreatemenu = menuBarCtrls.Add(sqcbcTypePopup);
            trycreatemenu.caption = “MyMenu”;
          }
      }
      catch(HighError)
      {
          Application.alert(HighError); 
      }
      //clear memory
      MenuItems = null;
      tImem = null;
      trycreatemenu = null;     
         
      var newHeaderItem = menuBarCtrls.item(“MyMenu”);     
      if (newHeaderItem != null)            //  ReCreate ok!
      {
          var newHeaderItemControls = newHeaderItem.Controls;
         
          var Item = newHeaderItemControls.Add(sqcbcTypePopup);                   
          Item.Caption = “Load”;
          Item.FaceId=0;
          Item.OnAction = “CreateFullMenuMac”;
          Item.Enabled = true;
          Item = null; 
         
          //clear memory
          newHeaderItemControls = null;
          Item = null;         
      }
      else
      {
        Application.Alert(“Can't create MyMenu menu”)   
      } 
      //clear memory
      newHeaderItem = null;
  } // Menu If
   
//clear memory
cmdBars = null;
menuBar = null;
menuBarCtrls = null;
fileMenu = null; } //_CreateLoadMenu() ]]>


         
var cmdBars = Application.CommandBars;
var menuBar = cmdBars.item(“Menu bar”);
var menuBarCtrls = menuBar.Controls;
var fileMenu = menuBarCtrls.item(“MyMenu”);   if (fileMenu == null)
  {
      var newHeaderItem = menuBarCtrls.Add(sqcbcTypePopup);
      newHeaderItem.Caption = “MyMenu”;
      if (newHeaderItem != null)                    //  create ok!
      {
          var newHeaderItemControls = newHeaderItem.Controls;
         
          var Item = newHeaderItemControls.Add(sqcbcTypePopup);                   
          Item.Caption = “Item 1”;
          Item.FaceId=0;
          Item.OnAction = “TestMac”;
          Item.Enabled = true;
          Item = null;     
         
         
          Item = newHeaderItemControls.Add(sqcbcTypePopup);
          Item.Caption = “Item 2”;
          Item.FaceId=0;
          Item.OnAction = “TestMac”;       
          Item.Enabled = true;
          Item = null;
         
          Item = newHeaderItemControls.Add(sqcbcTypePopup);
          Item.Caption = “Unload”;
          Item.FaceId=0;
          Item.OnAction = “CreateLoadMenuMac”;
          Item = null;
         
          //clear memory
          newHeaderItemControls = null;
          Item = null;       
      }
      else
      {
        Application.Alert(“Can't create MyMenu menu”)   
      }
     
    //clear memory
    newHeaderItem = null; 
  }
  else                                                //if already exist
  {
      var MenuItems = null;
      var tImem = null;
      var trycreatemenu = null;
     
      try{
          MenuItems = fileMenu.Controls;              // try Kill menu item
          try
          {
              while (MenuItems.Count >0)
              {
                tImem = MenuItems.item(1);
                if (tImem != null) tImem.Delete();
              }
          }
          catch (err)
          { 
            fileMenu.Delete();                        // Fail, Kill MyMenu and ReCreate.
            trycreatemenu = menuBarCtrls.Add(sqcbcTypePopup);
            trycreatemenu.caption = “MyMenu”;
          }
      }
      catch(HighError)
      {
          Application.alert(HighError); 
      }
      //clear memory
      MenuItems = null;
      tImem = null;
      trycreatemenu = null;     
         
      var newHeaderItem = menuBarCtrls.item(“MyMenu”);     
      if (newHeaderItem != null)                          // ReCreate ok!
      {
          var newHeaderItemControls = newHeaderItem.Controls;
         
          var Item = newHeaderItemControls.Add(sqcbcTypePopup);                   
          Item.Caption = “Item 1”;
          Item.FaceId=0;
          Item.OnAction = “TestMac”;
          Item.Enabled = true;
          Item = null;     
         
         
          Item = newHeaderItemControls.Add(sqcbcTypePopup);
          Item.Caption = “Item 2”;
          Item.FaceId=0;
          Item.OnAction = “TestMac”;       
          Item.Enabled = true;
          Item = null;
         
          Item = newHeaderItemControls.Add(sqcbcTypePopup);
          Item.Caption = “Unload”;
          Item.FaceId=0;
          Item.OnAction = “CreateLoadMenuMac”;
          Item = null; 
         
          //clear memory
          newHeaderItemControls = null;
          Item = null;         
      }
      else
      {
        Application.Alert(“Can't create MyMenu menu”)   
      } 
      //clear memory
      newHeaderItem = null;
  } // Menu If
   
//clear memory
cmdBars = null;
menuBar = null;
menuBarCtrls = null;
fileMenu = null; }//_CreateFullMenu() ]]>
 


[/code]

Reply

Products
Downloads
Support