精华内容
下载资源
问答
  • Android子菜单,上下文菜单

    目录(?)[+]

    本文转载自:http://blog.csdn.net/u010583599/article/details/51605572


    Android菜单类型

    菜单是为了增加更多的功能,不占用屏幕的空间。Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下面分别详细介绍这些菜单。

    选项菜单(OptionMenu

    ① 创建选项菜单:重写ActivityonCreateOptionMenuMenu menu)方法。

    -设置菜单项可用代码动态设置menu.add();

    -还可以通过xml设置MenuInflater.inflate();

    ②设置菜单点击事件:onOptionsItemSelected();

    ③菜单关闭后发生的动作:onOptionMenuClosed(Menu menu);

    ④选项菜单显示之前会调用,可以在这里根据需要调整菜单:onPrepareOptionsMenu(Menu menu);

    ⑤打开后发生的动作。 onMenuOpened(int featureId,Menu menu);

     

    方法一:通过xml设置菜单(res/menu/menu.xml

    [html] view plain copy
    1. <menu xmlns:android="http://schemas.android.com/apk/res/android"  
    2.     xmlns:tools="http://schemas.android.com/tools"  
    3.     tools:context="com.example.menudemo.MenuActivity" >  
    4.    <group android:id="@+id/group1">  
    5.      <item  
    6.         android:id="@+id/action_menu1"  
    7.         android:orderInCategory="300"  
    8.         android:menuCategory="container"  
    9.         android:showAsAction="never"  
    10.         android:title="menu1"/>  
    11.     <item  
    12.         android:id="@+id/action_menu2"  
    13.         android:orderInCategory="200"  
    14.         android:menuCategory="system"  
    15.         android:showAsAction="never"  
    16.         android:title="menu2"/>  
    17.    </group>  
    18.    <group android:id="@+id/group2">  
    19.        <item  
    20.         android:id="@+id/action_menu3"  
    21.         android:orderInCategory="100"  
    22.         android:menuCategory="secondary"  
    23.         android:showAsAction="never"  
    24.         android:title="menu3"/>  
    25.     <item  
    26.         android:id="@+id/action_menu4"  
    27.         android:orderInCategory="400"  
    28.         android:menuCategory="alternative"  
    29.         android:showAsAction="never"  
    30.         android:title="menu4"/>  
    31.    </group>    
    32. </menu>  

    <item>标签的属性含义解释:

    属性名

    作用

    menuCategory

    设置菜单项的种类。有四个可选值:Containersystemsecondaryalternative。通过menuCategory属性可以控制菜单项的位置。

    orderInCategory

    同类菜单的排列顺序,为整数值,值越大显示越靠前。

    titleCondensed

    菜单项的短标题。当菜单文字太长时显示这个

    alphabeticShortcut

    菜单项的字母快捷键。

    showAsAction

    Never:总是显示在移除菜单中。

    Always:显示在ActionBar上。

    ifRoom:如果actionBar空间足够就显示在ActionBar上。

    withText:默认格式如果是含有文字和图表的话,只显示图标,使用ifRoom|withText可以显示图标和文字。

    collapseActionView:

    <item android:id="@+id/menu_search"
           android:title="@string/menu_search"
           android:icon="@drawable/ic_menu_search"

              android:showAsAction="ifRoom|collapseActionView"

               android:actionViewClass="android.widget.SearchView" />

    android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。

    参考链接:http://blog.csdn.NET/think_soft/article/details/7370686

    <group>标签的作用是可以进行整组操作,把一些具有相同操作的菜单放到一个组内。

    Activity里加载菜单

    [java] view plain copy
    1. @Override  
    2.     public boolean onCreateOptionsMenu(Menu menu) {  
    3.         // Inflate the menu; this adds items to the action bar if it is present.  
    4.         getMenuInflater().inflate(R.menu.menu, menu);  
    5.         return true;  
    6.     }  

    方法二:通过代码添加menu

    [java] view plain copy
    1. @Override  
    2.     public boolean onCreateOptionsMenu(Menu menu) {  
    3.         //调用这个方法设置图标的可见性  
    4.         setIconVisible(menu);  
    5.         /* 
    6.          * add()方法的四个参数,依次是: 
    7.          * 1、组别,如果不分组的话就写Menu.NONE, 
    8.          * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单 
    9.          * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前 
    10.          * 4、文本,菜单的显示文本 
    11.          */  
    12.         menu.add(Menu.NONE, Menu.FIRST + 15"删除").setIcon(  
    13.         android.R.drawable.ic_menu_delete);  
    14.         // setIcon()方法设置菜单图标  
    15.         menu.add(Menu.NONE, Menu.FIRST + 22"保存").setIcon(  
    16.         android.R.drawable.ic_menu_save);  
    17.         menu.add(Menu.NONE, Menu.FIRST + 36"帮助").setIcon(  
    18.         android.R.drawable.ic_menu_help);  
    19.         menu.add(Menu.NONE, Menu.FIRST + 41"添加").setIcon(  
    20.         android.R.drawable.ic_menu_add);  
    21.         menu.add(Menu.NONE, Menu.FIRST + 54"详细").setIcon(  
    22.         android.R.drawable.ic_menu_info_details);  
    23.         menu.add(Menu.NONE, Menu.FIRST + 63"发送").setIcon(  
    24.         android.R.drawable.ic_menu_send);  
    25.         return true;  
    26. }  
    27. //使用反射设置menu图标的可见性  
    28.     private void setIconVisible(Menu menu) {  
    29.         try {  
    30.             Class clazz = Class  
    31.                     .forName("com.android.internal.view.menu.MenuBuilder");  
    32.             Method m = clazz.getDeclaredMethod("setOptionalIconsVisible",  
    33.                     boolean.class);  
    34.             m.setAccessible(true);  
    35.             m.invoke(menu, true);  
    36.         } catch (Exception e) {  
    37.             e.printStackTrace();  
    38.         }  
    39.     }  

    菜单显示效果如下图:

    选项菜单设置点击监听

    [java] view plain copy
    1. @Override  
    2.     public boolean onOptionsItemSelected(MenuItem item) {  
    3.         Log.i(TAG, "onOptionsItemSelected");  
    4.         int id = item.getItemId();  
    5.         switch (id) {  
    6.         case Menu.FIRST+1:  
    7.             Toast.makeText(MenuActivity.this"点击了删除按钮", Toast.LENGTH_SHORT).show();  
    8.             break;  
    9.         default:  
    10.             break;  
    11.         }  
    12.         return super.onOptionsItemSelected(item);  
    13.     }  

    上下文菜单

    当用户长时间按键不放时,弹出来的菜单称为上下文菜单。Windows中用鼠标右键弹出的菜单就是上下文菜单。

     

    创建上下文菜单的步骤:

    ① 调用registerForContextMenu()方法,为视图注册上下文菜单。如textView tv

    registerForcontextMenu(tv);

    [java] view plain copy
    1. @Override  
    2.     protected void onCreate(Bundle savedInstanceState) {  
    3.         super.onCreate(savedInstanceState);  
    4.         setContentView(R.layout.activity_menu);  
    5.         tv = (TextView)findViewById(R.id.tv);  
    6.         registerForContextMenu(tv);  
    7.     }  

    ② 覆盖ActivityonCreateContextMenu()方法,调用Menuadd方法添加菜单项(MenuItem

    [java] view plain copy
    1. @Override  
    2.     public void onCreateContextMenu(ContextMenu menu, View v,  
    3.             ContextMenuInfo menuInfo) {  
    4.         setIconVisible(menu);  
    5.         // TODO Auto-generated method stub  
    6.          menu.add(Menu.NONE, Menu.FIRST + 15"删除").setIcon(  
    7.                     android.R.drawable.ic_menu_delete);  
    8.         // setIcon()方法设置菜单图标  
    9.         menu.add(Menu.NONE, Menu.FIRST + 22"保存").setIcon(  
    10.                     android.R.drawable.ic_menu_save);  
    11.         menu.add(Menu.NONE, Menu.FIRST + 36"帮助").setIcon(  
    12.                     android.R.drawable.ic_menu_help);  
    13.         menu.add(Menu.NONE, Menu.FIRST + 41"添加").setIcon(  
    14.                     android.R.drawable.ic_menu_add);  
    15.         menu.add(Menu.NONE, Menu.FIRST + 54"详细").setIcon(  
    16.                     android.R.drawable.ic_menu_info_details);  
    17.         menu.add(Menu.NONE, Menu.FIRST + 63"发送").setIcon(  
    18.                     android.R.drawable.ic_menu_send);  
    19.         super.onCreateContextMenu(menu, v, menuInfo);  
    20.     }  

    ③ 覆盖onContextItemSelected()方法,响应菜单单击事件。

    [java] view plain copy
    1. @Override  
    2.     public boolean onContextItemSelected(MenuItem item) {  
    3.         // TODO Auto-generated method stub  
    4.         int id = item.getItemId();  
    5.         switch (id) {  
    6.         case Menu.FIRST+1:  
    7.             Toast.makeText(MenuActivity.this"点击了删除按钮", Toast.LENGTH_SHORT).show();  
    8.             break;  
    9.         default:  
    10.             break;  
    11.         }  
    12.         return super.onContextItemSelected(item);  
    13.     }  

    显示效果

    子菜单

    子菜单:把相同功能的分组进行多组显示的菜单。

     

    创建子菜单步骤:

    ① 覆盖ActivityonCreateOptionsMenu()方法,调用MenuaddSubMenu()方法添加子菜单项(subMenu

    [java] view plain copy
    1. @Override  
    2.     public boolean onCreateOptionsMenu(Menu menu) {  
    3.         //调用这个方法设置图标的可见性  
    4.         setIconVisible(menu);  
    5.         /* 
    6.          * add()方法的四个参数,依次是: 
    7.          * 1、组别,如果不分组的话就写Menu.NONE, 
    8.          * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单 
    9.          * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前 
    10.          * 4、文本,菜单的显示文本 
    11.          */  
    12.          
    13.       //添加子菜单    
    14.         SubMenu subMenu = menu.addSubMenu(0,2,Menu.NONE, "难度星级->").setIcon(android.R.drawable.ic_menu_directions);    
    15.           //添加子菜单项    
    16.           subMenu.add(21001"☆☆☆☆☆");    
    17.           subMenu.add(21012"☆☆☆");    
    18.           subMenu.add(21023"☆");  
    19. }  

    ② 覆盖onOptionsItemSelected()方法响应点击事件。上下文菜单处理方式和此一致。

    [java] view plain copy
    1. @Override  
    2.     public boolean onOptionsItemSelected(MenuItem item) {  
    3.         Log.i(TAG, "onOptionsItemSelected");  
    4.         int id = item.getItemId();  
    5.         switch (id) {  
    6.         case 100:  
    7.             Toast.makeText(MenuActivity.this"点击了五颗星", Toast.LENGTH_SHORT).show();  
    8.             break;  
    9.         default:  
    10.             break;  
    11.         }  
    12.         return super.onOptionsItemSelected(item);  
    13.     }  

    PopuoMenu

    PopupMenu可以非常方便的在指定view的下面显示一个弹出菜单,类似于actionbar溢出菜单的效果。它的菜单选项可以来自于menu资源

    使用方法

    ①创建PopupMenu对象,绑定view

    ②加载布局文件

    ③设置MenuItemClickListener,处理点击监听

    [java] view plain copy
    1. protected void onCreate(Bundle savedInstanceState) {  
    2.         super.onCreate(savedInstanceState);  
    3.         setContentView(R.layout.activity_menu);  
    4.         tv = (TextView)findViewById(R.id.tv);  
    5.         tv.setOnClickListener(new OnClickListener() {  
    6.             @Override  
    7.             public void onClick(View v) {  
    8. PopupMenu popupMenu = new PopupMenu(MenuActivity.this, tv);  
    9.                   //加载菜单文件  
    10.  popupMenu.getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu());  
    11.                     popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {      
    12.                         @Override  
    13.                         public boolean onMenuItemClick(MenuItem item) {  
    14.                             // TODO Auto-generated method stub  
    15.                             int id = item.getItemId();  
    16.                             switch (id) {  
    17.                             case R.id.today:  
    18.                                 Toast.makeText(MenuActivity.this"点击了今天", Toast.LENGTH_SHORT).show();  
    19.                                 break;  
    20.                             default:  
    21.                                 break;  
    22.                             }  
    23.                             return false;  
    24.                         }  
    25.                     });  
    26.                     //显示popupMenu  
    27.                     popupMenu.show();  
    28.             }  
    29.         });  
    30.     }  

    菜单文件popup_menu.xml

    [html] view plain copy
    1. <menu xmlns:android="http://schemas.android.com/apk/res/android" >  
    2.     <item  
    3.      android:id="@+id/today"    
    4.      android:title="今天"/>    
    5.     <item    
    6.         android:id="@+id/tomorrow"    
    7.         android:title="明天"/>    
    8. </menu>  

    展开全文
  • Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下面分别详细介绍这些菜单。 选项菜单(OptionMenu) ① 创建选项菜单:重写Activity的 onCreateOptionMenu...

    Android菜单类型

    菜单是为了增加更多的功能,不占用屏幕的空间。Android中菜单类型有三类,选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu),下面分别详细介绍这些菜单。

    选项菜单(OptionMenu

    ① 创建选项菜单:重写ActivityonCreateOptionMenuMenu menu)方法。

    -设置菜单项可用代码动态设置menu.add();

    -还可以通过xml设置MenuInflater.inflate();

    ②设置菜单点击事件:onOptionsItemSelected();

    ③菜单关闭后发生的动作:onOptionMenuClosed(Menu menu);

    ④选项菜单显示之前会调用,可以在这里根据需要调整菜单:onPrepareOptionsMenu(Menu menu);

    ⑤打开后发生的动作。 onMenuOpened(int featureId,Menu menu);

     

    方法一:通过xml设置菜单(res/menu/menu.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.example.menudemo.MenuActivity" >
       <group android:id="@+id/group1">
         <item
            android:id="@+id/action_menu1"
            android:orderInCategory="300"
            android:menuCategory="container"
            android:showAsAction="never"
            android:title="menu1"/>
        <item
            android:id="@+id/action_menu2"
            android:orderInCategory="200"
            android:menuCategory="system"
            android:showAsAction="never"
            android:title="menu2"/>
       </group>
       <group android:id="@+id/group2">
           <item
            android:id="@+id/action_menu3"
            android:orderInCategory="100"
            android:menuCategory="secondary"
            android:showAsAction="never"
            android:title="menu3"/>
        <item
            android:id="@+id/action_menu4"
            android:orderInCategory="400"
            android:menuCategory="alternative"
            android:showAsAction="never"
            android:title="menu4"/>
       </group>  
    </menu>

    <item>标签的属性含义解释:

    属性名

    作用

    menuCategory

    设置菜单项的种类。有四个可选值:containersystemsecondaryalternative。通过menuCategory属性可以控制菜单项的位置。

    orderInCategory

    同类菜单的排列顺序,为整数值,值越大显示越靠前。

    titleCondensed

    菜单项的短标题。当菜单文字太长时显示这个

    alphabeticShortcut

    菜单项的字母快捷键。

    showAsAction

    Never:总是显示在移除菜单中。

    Always:显示在ActionBar上。

    ifRoom:如果actionBar空间足够就显示在ActionBar上。

    withText:默认格式如果是含有文字和图表的话,只显示图标,使用ifRoom|withText可以显示图标和文字。

    collapseActionView:

    <item android:id="@+id/menu_search"
           android:title="@string/menu_search"
           android:icon="@drawable/ic_menu_search"

              android:showAsAction="ifRoom|collapseActionView"

               android:actionViewClass="android.widget.SearchView" />

    android:showAsAction属性也可包含“collapseActionView”属性值,这个值是可选的,并且声明了这个操作视窗应该被折叠到一个按钮中,当用户选择这个按钮时,这个操作视窗展开。否则,这个操作视窗在默认的情况下是可见的,并且即便在用于不适用的时候,也要占据操作栏的有效空间。

    参考链接:http://blog.csdn.net/think_soft/article/details/7370686

    <group>标签的作用是可以进行整组操作,把一些具有相同操作的菜单放到一个组内。

    Activity里加载菜单

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu, menu);
            return true;
        }

    方法二:通过代码添加menu

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
        	//调用这个方法设置图标的可见性
        	setIconVisible(menu);
            /*
             * add()方法的四个参数,依次是:
             * 1、组别,如果不分组的话就写Menu.NONE,
             * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
             * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前
             * 4、文本,菜单的显示文本
             */
            menu.add(Menu.NONE, Menu.FIRST + 1, 5, "删除").setIcon(
            android.R.drawable.ic_menu_delete);
            // setIcon()方法设置菜单图标
            menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon(
            android.R.drawable.ic_menu_save);
            menu.add(Menu.NONE, Menu.FIRST + 3, 6, "帮助").setIcon(
            android.R.drawable.ic_menu_help);
            menu.add(Menu.NONE, Menu.FIRST + 4, 1, "添加").setIcon(
            android.R.drawable.ic_menu_add);
            menu.add(Menu.NONE, Menu.FIRST + 5, 4, "详细").setIcon(
            android.R.drawable.ic_menu_info_details);
            menu.add(Menu.NONE, Menu.FIRST + 6, 3, "发送").setIcon(
            android.R.drawable.ic_menu_send);
            return true;
    }
    //使用反射设置menu图标的可见性
        private void setIconVisible(Menu menu) {
    		try {
    			Class clazz = Class
    					.forName("com.android.internal.view.menu.MenuBuilder");
    			Method m = clazz.getDeclaredMethod("setOptionalIconsVisible",
    					boolean.class);
    			m.setAccessible(true);
    			m.invoke(menu, true);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}

    菜单显示效果如下图:

    选项菜单设置点击监听

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        	Log.i(TAG, "onOptionsItemSelected");
        	int id = item.getItemId();
        	switch (id) {
    		case Menu.FIRST+1:
    			Toast.makeText(MenuActivity.this, "点击了删除按钮", Toast.LENGTH_SHORT).show();
    			break;
    		default:
    			break;
    		}
            return super.onOptionsItemSelected(item);
        }

    上下文菜单

    当用户长时间按键不放时,弹出来的菜单称为上下文菜单。Windows中用鼠标右键弹出的菜单就是上下文菜单。

     

    创建上下文菜单的步骤:

    ① 调用registerForContextMenu()方法,为视图注册上下文菜单。如textView tv

    registerForcontextMenu(tv);

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_menu);
            tv = (TextView)findViewById(R.id.tv);
            registerForContextMenu(tv);
        }

    ② 覆盖ActivityonCreateContextMenu()方法,调用Menuadd方法添加菜单项(MenuItem

    @Override
    	public void onCreateContextMenu(ContextMenu menu, View v,
    			ContextMenuInfo menuInfo) {
        	setIconVisible(menu);
    		// TODO Auto-generated method stub
        	 menu.add(Menu.NONE, Menu.FIRST + 1, 5, "删除").setIcon(
        		        android.R.drawable.ic_menu_delete);
        	// setIcon()方法设置菜单图标
        	menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon(
        	            android.R.drawable.ic_menu_save);
        	menu.add(Menu.NONE, Menu.FIRST + 3, 6, "帮助").setIcon(
        		        android.R.drawable.ic_menu_help);
        	menu.add(Menu.NONE, Menu.FIRST + 4, 1, "添加").setIcon(
        		        android.R.drawable.ic_menu_add);
        	menu.add(Menu.NONE, Menu.FIRST + 5, 4, "详细").setIcon(
        		        android.R.drawable.ic_menu_info_details);
        	menu.add(Menu.NONE, Menu.FIRST + 6, 3, "发送").setIcon(
        		        android.R.drawable.ic_menu_send);
    		super.onCreateContextMenu(menu, v, menuInfo);
    	}

    ③ 覆盖onContextItemSelected()方法,响应菜单单击事件。

    @Override
    	public boolean onContextItemSelected(MenuItem item) {
    		// TODO Auto-generated method stub
    		int id = item.getItemId();
        	switch (id) {
    		case Menu.FIRST+1:
    			Toast.makeText(MenuActivity.this, "点击了删除按钮", Toast.LENGTH_SHORT).show();
    			break;
    		default:
    			break;
    		}
    		return super.onContextItemSelected(item);
    	}

    显示效果

    子菜单

    子菜单:把相同功能的分组进行多组显示的菜单。

     

    创建子菜单步骤:

    ① 覆盖ActivityonCreateOptionsMenu()方法,调用MenuaddSubMenu()方法添加子菜单项(subMenu

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
        	//调用这个方法设置图标的可见性
        	setIconVisible(menu);
            /*
             * add()方法的四个参数,依次是:
             * 1、组别,如果不分组的话就写Menu.NONE,
             * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
             * 3、顺序,那个菜单现在在前面由这个参数的大小决定,参数越小,显示的越前
             * 4、文本,菜单的显示文本
             */
           
          //添加子菜单  
            SubMenu subMenu = menu.addSubMenu(0,2,Menu.NONE, "难度星级->").setIcon(android.R.drawable.ic_menu_directions);  
              //添加子菜单项  
              subMenu.add(2, 100, 1, "☆☆☆☆☆");  
              subMenu.add(2, 101, 2, "☆☆☆");  
              subMenu.add(2, 102, 3, "☆");
    }

    ② 覆盖onOptionsItemSelected()方法响应点击事件。上下文菜单处理方式和此一致。

    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        	Log.i(TAG, "onOptionsItemSelected");
        	int id = item.getItemId();
        	switch (id) {
    		case 100:
    			Toast.makeText(MenuActivity.this, "点击了五颗星", Toast.LENGTH_SHORT).show();
    			break;
    		default:
    			break;
    		}
            return super.onOptionsItemSelected(item);
        }

    PopuoMenu

    PopupMenu可以非常方便的在指定view的下面显示一个弹出菜单,类似于actionbar溢出菜单的效果。它的菜单选项可以来自于menu资源

    使用方法

    ①创建PopupMenu对象,绑定view

    ②加载布局文件

    ③设置MenuItemClickListener,处理点击监听

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_menu);
            tv = (TextView)findViewById(R.id.tv);
            tv.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    PopupMenu popupMenu = new PopupMenu(MenuActivity.this, tv);
    				  //加载菜单文件
     popupMenu.getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu());
    			        popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {	
    						@Override
    						public boolean onMenuItemClick(MenuItem item) {
    							// TODO Auto-generated method stub
    							int id = item.getItemId();
    							switch (id) {
    							case R.id.today:
    								Toast.makeText(MenuActivity.this, "点击了今天", Toast.LENGTH_SHORT).show();
    								break;
    							default:
    								break;
    							}
    							return false;
    						}
    					});
    			        //显示popupMenu
    			        popupMenu.show();
    			}
    		});
        }

    菜单文件popup_menu.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
         android:id="@+id/today"  
         android:title="今天"/>  
        <item  
            android:id="@+id/tomorrow"  
            android:title="明天"/>  
    </menu>










    展开全文
  • VBA自定义菜单菜单

    千次阅读 2013-11-15 16:38:42
    在EXCEL中,我们的操作都是通过“工具栏、菜单栏、快捷菜”单实现。EXCEL通过菜单给我们提供基本操作功能之外,也为我们提供了扩展自定义功能的接口,即自定义自己的工具栏、菜单栏。 本文着重介绍如何在 Excel ...

     

    EXCEL中,我们的操作都是通过“工具栏、菜单栏、快捷菜”单实现。EXCEL通过菜单给我们提供基本操作功能之外,也为我们提供了扩展自定义功能的接口,即自定义自己的工具栏、菜单栏。

    本文着重介绍如何在 Excel 2003版本中通过编程方式自定义菜单和菜单栏方法。其中包含Excel 中管理和自定义菜单栏、菜单、命令、子菜单和快捷菜单,我将通过代码实例分步说明。

    与大家分享关于VBA实现菜单栏管理与自定义菜单栏功能的实现。

    一、简介

    Microsoft Excel 2000以上版本中实现许与自定义菜单栏和菜单相关的常见任务,可以使用“自定义”对话框(见图1.1)。但如果要实现较高级任务或为自定义程序定制菜单栏和菜单,就需要创建 Microsoft Visual Basic for Applications (VBA) 代码。

    有关如何使用“自定义”对话框的更多信息,你可以单击“帮助”菜单上的“Microsoft Excel 帮助”,在“Office 助手”或“搜索向导”中键入自定义菜单栏,然后单击“搜索”查看主题。

    二、命令栏

    Microsoft Office 中,所有工具栏、菜单栏和快捷菜单都是被作为“命令栏”这样一种对象以编程方式控制的。下列所有项目在 VBA 中皆用 CommandBar 对象表示:

    l 菜单栏、工具栏和快捷菜单。

    l 菜单栏和工具栏上的菜单。

    l 菜单、子菜单和快捷菜单上的子菜单。

    您可以修改任何内置的菜单栏和工具栏,还可以创建和修改用您自己的 VBA 代码交付的自定义工具栏、菜单栏和快捷菜单。您可以将程序功能以单个按钮的形式放在工具栏上,或以命令名称组的形式放在菜单上。因为工具栏和菜单都是命令栏,所以可以使用同一类型的控件。

    VBAMicrosoft Visual Basic 中,按钮和菜单项用 CommandBarButton 对象表示。显示菜单和子菜单的弹出控件用 CommandBarPopup 对象表示。在以下示例中,名为“Menu”的控件和名为“Submenu”的控件都是用于显示菜单和子菜单的弹出控件,并且这两个控件是各自的控件集中唯一的 CommandBar 对象。

    Microsoft Excel 中,菜单栏和工具栏被视为是同一种可编程对象,即 CommandBar 对象。可以使用 CommandBar 对象中的控件来指代菜单、菜单项、子菜单和快捷菜单。可以在 Type 参数中使用一个常量为每个控件指定要用于菜单、子菜单或命令的控件类型。

    三、控件常量

    下面是 Excel 2003 中的各种控件常量的列表,这些常量指定用于特定菜单栏控件的图形控件类型:

    MsoControlActiveX*

    MsoControlAutoCompleteCombo***

    MsoControlButton

    MsoControlButtonDropdown

    MsoControlButtonPopup

    MsoControlComboBox

    MsoControlCustom

    MsoControlDropdown

    MsoControlEdit

    MsoControlExpandingGrid

    MsoControlGauge

    MsoControlGenericDropdown

    MsoControlGraphicCombo

    MsoControlGraphicDropdown

    MsoControlGraphicPopup

    MsoControlGrid

    MsoControlLabel

    MsoControlLabelEx***

    MsoControlOCXDropDown

    MsoControlPane **

    MsoControlPopup

    MsoControlSpinner***

    MsoControlSplitButtonMRUPopup

    MsoControlSplitButtonPopup

    MsoControlSplitDropdown

    MsoControlSplitExpandingGrid

    MsoControlWorkPane**

    * 表示 Microsoft Excel 2000 中的新增项

    ** 表示 Microsoft Excel 2002 中的新增项

    *** 表示 Microsoft Office Excel 2003 中的新增项

    四、菜单栏

    菜单栏是一种命令栏。它是一种可在其中添加菜单、菜单项和子菜单的对象。

    有关如何在 Excel 中管理菜单栏和菜单项的更多信息,请按照下列步骤操作:

    1. 启动 Microsoft Visual Basic 编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“Office 助手”框或“应答向导”框中,键入菜单栏,然后单击“搜索”。

    4.Excel 2003Excel 2002 中,单击“添加和管理菜单栏和菜单项”。在 Excel 2000 中,单击“关于菜单和工具栏”。

    可以在运行时修改菜单栏及该菜单栏上的控件。对菜单栏所做的更改可能会影响菜单栏的外观或位置。可对控件进行的更改取决于控件类型。下表列出了最常见的属性和常用于更改控件的状态、操作或内容的方法:

    属性或方法

    用途

    Add

    添加菜单栏,方法是使用 CommandBars 对象集合的 Add 方法,然后为 Menubar 参数指定 TRUE 值。

    Enabled

    如果 Enabled 属性的值为 TRUE,那么用户可以使用 Visual Basic 代码使指定的菜单栏可见。如果 Enabled 属性的值为 FALSE,用户就无法让菜单栏可见。不过,菜单栏将出现在可用命令栏列表中。

    Protection

    使您可以通过特定用户操作来保护菜单栏。

    Position

    指定新菜单栏相对于程序窗口的位置。菜单栏相对于程序窗口的位置可以是以下 MsoBarPosition 常量属性之一:msoBarLeftmsoBarTopmsoBarRightmsoBarBottommsoBarFloatingmsoBarPopup(用于创建快捷菜单)或 msoBarMenuBar(仅用于 Apple Macintosh)。

    Visible

    定控件是可见的指,还是隐藏的。

    4.1 Add方法应用于CommandBars对象

    新建一个命令栏并添加到命令栏集合。返回 CommandBar 对象。

    expression.Add ( Name , Position , MenuBar , Temporary )

    l expression必需。该表达式返回一个 CommandBars 对象。

    l NameVariant 类型)可选。新命令栏的名称。如果忽略该参数,则为命令栏指定默认名称(例如:Custom 1)。

    l PositionVariant 类型)可选。新命令栏的位置或类型。可以为下表所列的 MsoBarPosition 常量之一。

    常量

    说明

    msoBarLeftmsoBarTopmsoBarRightmsoBarBottom

    指定新命令栏的左侧、顶部、右侧和底部坐标

    msoBarFloating

    指定新命令栏不固定

    msoBarPopup

    指定新命令栏为快捷菜单

    msoBarMenuBar

    仅适用于 Macintosh

    l MenuBar (Variant类型)可选。设置为 True 将以新命令栏替换活动菜单栏。默认值为 False

    l Temporary (Variant类型)可选。设置为 True 将使新命令栏为临时命令栏。临时命令栏在关闭容器应用程序时删除。默认值为 False

    4.2返回命令栏控件的 ID

    以下代码示例返回活动菜单栏的 ID

    Sub Id_Control ()

    Dim myId as Object

    Set myId = CommandBars("Worksheet Menu Bar").Controls("工具(&T)")

    MsgBox myId.Caption & Chr(13) & MyId.Id

    End Sub

    4.3确定活动菜单栏的名称

    以下代码示例返回活动菜单栏的名称:

    Sub MenuBars_GetName()

    MsgBox CommandBars.ActiveMenuBar.Name

    End Sub

    4.4保存(内置或自定义菜单栏的)活动状态

    您可能需要将 originalMenuBar 变量声明为公共变量,这样,子例程就可以在其他子例程(如 Auto_Close 子例程)中使用该变量。以这种方式声明和使用该变量会将用户的上一个菜单栏重置为初始状态。以下示例宏重置菜单栏:

    Public originalMenuBar as Object

    Sub MenuBars_Capture()

    Set originalMenuBar = CommandBars.ActiveMenuBar

    End Sub

    4.5创建自定义命令栏

    以下代码示例创建名为 My Command Bar 的自定义命令栏:

    Sub MenuBar_Create()

    Application.CommandBars.Add Name:="My command bar"

    End Sub

    您还可以通过使用 Temporary:=True 参数来创建自定义命令栏。Temporary:=True 参数允许命令栏在您退出 Excel 时自动重置。以下代码使用 Temporary:=True 参数创建自定义命令栏:

    Sub MenuBar_Create()

    Application.CommandBars.Add Name:="My command bar", Temporary:=True

    End Sub

    4.6显示自定义命令栏

    以下示例创建并显示自定义的“My Custom Bar”菜单栏,然后用它替换内置的菜单栏:

    Sub MenuBar_Show()

    Dim myNewBar As Object

    Set myNewBar = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating)

    '您必须先启用您的自定义菜单栏,然后看见它。

    '使菜单栏添加到自定义对话框列表中的可用菜单栏上。

    '设置菜单属性设置为True取代内置的菜单栏。

    myNewBar.Enabled = True

    myNewBar.Visible = True

    End Sub

    4.7删除自定义命令栏

    以下代码示例删除名为“Custom 1”的自定义菜单栏:

    Sub MenuBar_Delete()

    CommandBars("Custom1").Delete

    End Sub

    4.8隐藏命令栏

    以下代码示例从可用菜单栏列表中删除内置“图表”菜单栏:

    Sub MenuBar_Display()

    CommandBars("Chart").Enabled = False

    End Sub

    4.9显示命令栏

    以下代码示例从可用菜单栏中添加内置“图表”菜单栏:

    Sub MenuBar_Display()

    CommandBars("Chart").Enabled = True

    End Sub

    4.10还原内置命令栏

    还原菜单栏会重置(菜单和菜单项的)默认控件。示例代码还原内置“图表”菜单栏:

    Sub MenuBar_Restore()

    CommandBars("Chart").Reset

    End Sub

    注意:您只能重置内置菜单栏,不能重置自定义菜单栏。

    五、菜单

    5.1 Add方法用于CommandBarControls对象

    新建一个 CommandBarControl 对象并添加到指定命令栏上的控件集合。

    Expression.Add ( Type , Id , Parameter , Before , Temporary )

    l expression必需。该表达式返回一个 CommandBarControls 对象。

    l TypeVariant类型)可选。添加到指定命令栏的控件类型。可以为下列 MsoControlType常量之一:

    常量

    说明

    msoControlButton

    命令按钮

    msoControlEdit

    文本框

    msoControlDropdown

    下拉列表

    msoControlComboBox

    组合框

    msoControlPopup

    弹出菜单

    l IdVariant 类型)可选。指定内置控件的整数。如果该参数为1 ,或者忽略该参数,将在命令栏中添加一个空的指定类型的自定义控件。

    l ParameterVariant 类型)可选。对于内置控件,该参数用于容器应用程序运行命令。对于自定义控件,可以使用该参数向 Visual Basic 过程传递信息,或用其存储控件信息(类似于第二个 Tag 属性值)。

    l BeforeVariant 类型)可选。表示新控件在命令栏上位置的数字。新控件将插入到该位置控件之前。如果忽略该参数,控件将添加到指定命令栏的末端。

    l TemporaryVariant 类型)可选。设置为True 将使新命令栏为临时命令栏。临时命令栏在关闭容器应用程序时删除。默认值为 False

    5.2向命令栏添加自定义菜单控件

    以下代码示例将您通过编程方式添加的菜单名称添加到“工作表”菜单栏中。例如,此代码会将菜单名称“New Menu”添加到“工作表”菜单栏中。

    注意:您可以根据需要为该菜单指定任何名称。

    Sub Menu_Create()

    Dim myMnu As Object

    Set myMnu = CommandBars("Worksheet menu bar").Controls. _

    Add(Type:=msoControlPopup, before:=3)

    With myMnu

    ' "&" 用以指定快捷键字符 (相当于Alt+M).

    .Caption = "New &Menu"

    End With

    End Sub

    5.3禁用命令栏上的菜单控件

    禁用的菜单控件在命令栏中显示为灰色,并且不可用。以下示例禁用“New Menu”菜单:

    Sub Menu_Disable()

    CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = False

    End Sub

    5.4启用命令栏上的菜单控件

    以下代码示例启用您在“禁用命令栏上的菜单控件”一节中禁用的 New Menu 菜单:

    Sub Menu_Disable()

    CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = True

    End Sub

    5.5删除命令栏上的菜单控件

    以下代码示例从“工作表”菜单栏中删除您在“向命令栏添加自定义菜单控件”一节中创建的“New Menu”菜单:

    Sub Menu_Delete()

    CommandBars("Worksheet menu bar").Controls("New &Menu").Delete

    End Sub

    5.6还原命令栏上的菜单控件

    以下代码示例还原“工作表”菜单栏上的内置“图表”菜单栏:

    Sub Menu_Restore()

    Dim myMnu As Object

    Set myMnu = CommandBars("Chart")

    myMnu.Reset

    End Sub

    六、命令

    可以对命令进行的修改与控件的类型有关。一般来说,按钮要么被启用,要么被隐藏。而编辑框、下拉列表框和组合框较为灵活一些,因为您可以在列表中添加或删除项目。另外,还可以通过查看在列表中选中的项目的值来确定执行的操作。您可以将任何控件的操作更改为内置函数或自定义函数。

    下表列出了最常见的控件属性和更改控件的状态、操作或内容的方法:

    属性或方法

    用途

    Add

    向命令栏添加命令。

    AddItem

    向下拉列表框或组合框的下拉列表部分添加项目。

    Style

    指定按钮上是显示图标还是显示标题。

    OnAction

    指定用户更改控件值时所运行的过程。

    Visible

    指定控件是可见的,还是隐藏的。

    要了解有关 Excel 2003Excel 2002 中菜单的更多信息,请按照下列步骤操作:

    1. 启动 Visual Basic 脚本编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“搜索帮助”框中,键入菜单,然后按 Enter

    4. 单击“添加和管理菜单栏和菜单项 (Office)”。

    6.1向菜单控件添加分隔条

    以下代码示例在“插入”菜单上的工作表命令之前添加分隔条:

    Sub menuItem_AddSeparator()

    CommandBars("Worksheet menu bar").Controls("插入(&I)") _

    .Controls("工作表(&W)").BeginGroup = True

    End Sub

    注意:要删除分隔条,请将 BeginGroup 属性设置为 False

    6.2在菜单上创建自定义命令控件

    以下代码示例在“工作表”菜单栏的“工具”菜单上创建名为 Custom1 的新命令,然后,当您单击“Custom1”时,它将运行 Code_Custom1 宏:

    Sub menuItem_Create()

    With CommandBars("Worksheet menu bar").Controls("工具(&T)")

    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Custom1"

    .Controls("Custom1").OnAction = "Code_Custom1"

    End With

    End Sub

    6.3在命令控件旁放置选中标记

    以下代码示例在 Custom1 命令未选中的情况下在其旁边放置一个选中标记;如果 Custom1 命令已选中,则将删除该选中标记:

    Sub menuItem_checkMark()

    Dim myPopup as Object

    Set myPopup = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    If myPopup.Controls("Custom1").State = msoButtonDown Then

    ' 删除选中标记旁边的菜单项。

    myPopup.Controls("Custom1").State = msoButtonUp

    MsgBox "Custom1 is now unchecked"

    Else

    '添加复选标记旁边的菜单项。

    myPopup.Controls("Custom1").State = msoButtonDown

    MsgBox "Custom1 is now checked"

    End If

    End Sub

    6.4禁用命令栏上的命令控件

    以下代码示例禁用您在“在菜单上创建自定义命令控件”一节中在“工具”菜单上创建的 Custom1 命令:

    Sub MenuItem_Disable()

    Dim myCmd as Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    myCmd.Controls("Custom1").Enabled = False

    End Sub

    6.5启用命令栏上的命令控件

    以下代码示例启用您在“禁用命令栏上的命令控件”一节中禁用的 Custom1 命令:

    Sub MenuItem_Enable()

    Dim myCmd as Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    myCmd.Controls("Custom1").Enabled = True

    End Sub

    6.6删除菜单上的命令控件

    以下代码示例删除“文件”菜单上的“保存”命令:

    Sub menuItem_Delete()

    Dim myCmd As Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("文件(&F)")

    myCmd.Controls("保存(&S)").Delete

    End Sub

    6.7还原菜单上的内置命令控件

    要还原菜单上的命令控件,必须知道该控件的标识 (ID) 号。要确定 ID 号,请参见“返回命令栏控件的 ID”一节。以下示例先删除您在“删除菜单上的命令控件”一节中删除的“保存”命令,然后又将其还原:

    Sub menuItem_Restore()

    Dim myCmd As Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("文件(&F)")

    ' Id 3 为保存子菜单项ID.

    myCmd.Controls.Add Type:=msoControlButton, ID:=3, Before:=5

    End Sub

    七、子菜单

    当您单击某个命令时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

    7.1添加子菜单

    以下代码示例向“工作表”菜单栏上的“工具”菜单添加名为“NewSub”的新子菜单:

    Sub SubMenu_Create()

    Dim newSub as Object

    Set newSub = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    With newSub

    .Controls.Add(Type:=msoControlPopup, Before:=1).Caption="NewSub"

    End With

    End Sub

    7.2向子菜单添加命令

    以下代码示例向“NewSub”子菜单添加名为“SubItem1”的新命令,然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:

    Sub SubMenu_AddItem()

    Dim newSubItem as Object

    Set newSubItem = CommandBars("Worksheet menu bar") _

    .Controls("工具(&T)").Controls("NewSub")

    With newSubItem

    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "SubItem1"

    .Controls("SubItem1").OnAction = "Code_SubItem1"

    End With

    End Sub

    7.3禁用子菜单上的命令控件

    以下代码示例禁用您在“向子菜单添加命令”一节中创建的 SubItem 命令:

    Sub SubMenu_DisableItem()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Controls("SubItem1").Enabled = False

    End Sub

    以下代码示例启用同一 SubItem 命令:

    Sub SubMenu_DisableItem()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Controls("SubItem1").Enabled = True

    End Sub

    7.4删除子菜单上的命令

    以下示例删除您在“向子菜单添加命令”一节中在“NewSub”子菜单上创建的 SubItem1 命令:

    Sub SubMenu_DeleteItem()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Controls("SubItem1").Delete

    End Sub

    7.5禁用子菜单控件

    以下代码示例禁用您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:

    Sub SubMenu_DisableSub()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Enabled = False

    End Sub

    注意:要启用已禁用的控件,请将 Enabled 属性设置为 True

    7.6删除子菜单控件

    以下代码示例删除您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:

    Sub SubMenu_DeleteSub()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Delete

    End Sub

    八、快捷菜单栏

    快捷菜单是在用户右键单击某个对象时出现的浮动命令栏。快捷菜单栏可以包含与命令栏相同的控件类型,而这些控件的作用也和命令栏上控件的作用相同。在大多数程序中,您无法从程序界面创建或修改快捷菜单,因而必须在运行时创建和修改快捷菜单。

    要获取有关Excel 2002Excel 2003中的快捷菜单的更多信息,请按照下列步骤操作:

    1. 启动 Visual Basic 脚本编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“搜索帮助”框中,键入快捷方式,然后按 Enter

    4. 单击“添加和显示快捷菜单”。

    8.1新建快捷菜单栏

    以下代码示例创建名为“myShortcutBar”的快捷菜单栏:

    Sub Shortcut_Create()

    Dim myShtCtBar as Object

    Set myShtCtBar = CommandBars.Add(Name:="myShortcutBar", _

    Position:=msoBarPopup)

    ' 这显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标.

    myShtCtBar.ShowPopup 200,200

    End Sub

    注意:由于没有添加任何控件(菜单项或子菜单),因此快捷菜单栏出现时是空的。

    九、快捷菜单

    当您右键单击特定的 Excel 对象时会出现快捷菜单栏。Excel 有很多快捷菜单栏,其中包含各种菜单。您还可以创建自定义快捷菜单栏和自定义内置菜单栏。

    9.1在快捷菜单栏上创建命令

    以下代码示例在“myShortcutBar”快捷菜单栏上创建名为 Item1 的新菜单命令。当您单击“Item1”时,它将运行 Code_Item1 宏:

    Sub Shortcut_AddItem()

    Dim myBar as Object

    Set myBar = CommandBars("myShortcutBar")

    With myBar

    .Controls.Add (Type:=msoControlButton, before:=1).Caption = "Item1"

    .Controls("Item1").OnAction = "Code_Item1"

    End With

    myBar.ShowPopup 200,200

    End Sub

    9.2禁用快捷菜单栏上的命令控件

    以下代码示例禁用您在“创建快捷菜单上的命令”一节中创建的 Item1 命令:

    Sub Shortcut_DisableItem()

    Set myBar = CommandBars("myShortcutBar")

    myBar.Controls("Item1").Enabled = False

    myBar.ShowPopup 200,200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    9.3删除快捷菜单栏上的命令

    以下代码示例删除“myShortcutBar”快捷菜单栏上的名为 Item1 的菜单命令:

    Sub Shortcut_DeleteItem()

    Set myBar = CommandBars("myShortcutBar")

    myBar.Controls("Item1").Delete

    myBar.ShowPopup 200,200

    End Sub

    9.4删除快捷菜单栏

    删除快捷菜单栏将导致删除所有菜单项。您无法还原已删除的自定义菜单栏。要还原它,必须重新创建该菜单栏及其所有菜单项和子菜单。

    以下代码示例删除您在“在快捷菜单栏上创建命令”一节中创建的“myShortCutBar”快捷菜单栏:

    Sub Shortcut_DeleteShortCutBar()

    CommandBars("MyShortCutBar").Delete

    End Sub

    9.5还原内置快捷菜单栏上的命令

    以下代码示例还原工作表“单元格”快捷菜单栏上的默认命令:

    Sub Shortcut_RestoreItem()

    CommandBars("Cell").Reset

    End Sub

    十、快捷菜单上的子菜单

    可以在快捷菜单栏上创建子菜单。当您单击某个命令控件时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

    10.1在快捷菜单栏上新建子菜单

    以下示例在工作表“单元格”快捷菜单上添加名为“NewSub”的新子菜单:

    Sub ShortcutSub_Create()

    CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1) _

    .Caption = "NewSub"

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标。

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:由于没有添加任何菜单项,因此该子菜单为空。

    10.2在快捷菜单栏的子菜单上创建命令控件

    下面的宏向您在“单元格”快捷菜单上创建的子菜单“NewSub”中添加 SubItem1 命令。然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:

    Sub ShortcutSub_AddItem()

    Dim newSubItem as Object

    Set newSubItem = CommandBars("Cell").Controls("NewSub”)

    With newSubItem

    .Controls.Add(Type:=msoControlButton, before:=1).Caption = "subItem1"

    '点击时subItem1 将运行Code_SubItem1宏。

    .Controls("subItem1").OnAction = "Code_SubItem1"

    End With

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    10.3禁用快捷菜单上的子菜单项控件

    以下代码示例禁用“NewSub”子菜单上的 SubItem1 命令:

    Sub ShortcutSub_DisableItem()

    CommandBars("Cell").Controls("NewSub") _

    .Controls("subItem1").Enabled = False

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    10.4删除快捷菜单上的子菜单项控件

    以下示例删除“NewSub”子菜单上的 SubItem1 命令:

    Sub ShortcutSub_DeleteItem()

    CommandBars("Cell").Controls("NewSub").Controls("subItem1").Delete

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    10.5禁用快捷菜单上的子菜单控件

    以下代码示例禁用“单元格”快捷菜单栏上的“NewSub”子菜单:

    Sub ShortcutSub_DisableSub()

    CommandBars("Cell").Controls("NewSub").Enabled = False

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    10.6删除快捷菜单上的子菜单控件

    以下代码示例删除您在“单元格”快捷菜单栏上创建的“NewSub”子菜单:

    Sub ShortcutSub_DeleteSub()

    CommandBars("Cell").Controls("NewSub").Delete

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    展开全文
  • 帮助文件的作用

    千次阅读 2011-12-14 00:10:28
    help system(帮助系统)又被称为help file(帮助文件),是指对应用程序的特性说明,以及应用范围的简单介绍文件。有点儿类似于一个整理过的大型FAQ集。由于用户需要更方便快捷的使用程序,帮助文档应运而生。 ...

      help system(帮助系统)又被称为help file(帮助文件),是指对应用程序的特性说明,以及应用范围的简单介绍文件。有点儿类似于一个整理过的大型FAQ集。由于用户需要更方便快捷的使用程序,帮助文档应运而生。

      在windows系统中,在应用程序中按F1按键就可以启动帮助文档。一个帮助文档通常包括一系列文档:程序概述、程序索引、内容列表,同时还要具备查找功能。在word程序中,按F1会调出帮助助手,助手会推测你最可能需要了解的问题并在屏幕上列出来。帮助助手的用户界面做得相当出色,不妨试一下。  

      在word97以及2000中,如果不喜欢系统的默认帮助助手,可以自己选择喜欢的角色,通过选择帮助菜单->选择显示office助手(如果助手已经出现了,那在助手身上单击右键选择“选项”就可以了),接着选择助手之家,通过点击“下一个”按钮可以在如下角色中选择助手:爱因斯坦、自然之母、机器人以及其他角色(可以自定义安装)。如果不需要助手,想自己查找帮助,那么可以单击“选项”菜单然后将“使用office助手”反选掉就可以了。这样就可以恢复到传统的帮助菜单中。 

      软件,网站等说明书可以制作成.chm文件的格式,在阅读的时候兼容性比较好,别人看了也比较规范。网站说明书也推荐使用faq文件,或者直接的html文件作为说明书。

      附件是windows帮助文件的制作的方法:

    《《《《《《《《《《《《《《《 《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

    工具:Microsoft的HTML Help Workshop

    安装完HTML Help Workshop后,您可以在开始菜单|程序|HTML Help Workshop中打开它。要建立CHM帮助文件必须先将我们所有想要让其出现在帮助文件中的内容做成相对独立的网页文件(即HTML文件),这些工作可以在HTMLHelp Workshop中完成,也可以应用其他网页编辑器(如FontPage或HotDog)来制作。

     

    中间文件:

     

    1.hhp文件,这是最常用的一类文件,它实际上是“HTML Help project”的缩写,表示HTML帮助文件项目,它是生成CHM文件最直接用到的一类文件,只需要有一个hhp文件就可以根据它来编译相应的CHM文件。

     

    2.hhc文件,它是“HTMLHelp table of contents”的缩写,表示的是HTML帮助文件的目录,通常我们在CHM文件浏览器的左边窗口中看到的目录内容就由它来提供,当然,它并不能直接被编译成CHM文件,而先要集成到某一hhp文件中才能发挥作用。

     

    3.hhk文件,它是“HTMLHelp Index Keyword”的缩写,为我们提供了CHM文件的关键字索引查询功能,也是一个易于查看的帮助文件不可缺少的一部分,同hhc文件一样,它也不能直接编译生成相应的CHM文件。

     

    4.hhj文件,它实际上不属于我们今天要讨论的内容,因为它属于另一个帮助文件系统Win Help,在Win Help系统中,hhj文件的作用相当于HTMLHelp 中的HHP文件,在这里就不做更详细的介绍了。

     

    我们现在已经知道要编译一个CHM文件,首先要建立一个hhp文件。先在Workshop的“文件”菜单中选择“新建”一个项目,这时将会出现有名为“新建项目”的窗口,这里会有一名“向导”提示您是否将采用原由的WinHelp项目文件(即.hpj)来制作新的项目,可以将“转换WinHelp项目”选项勾掉,点击“下一步”然后指定将要建立的hhp文件的文件名和完整的路径,再进入“下一步”,此时会有三个复选项,它们分别表示以现存的hhc、 hhk、HTML文件来建立HHP文件,由于没有现成的hhc和hhk文件,因此我们可以只选择最后一项(HTML Files),点击“下一步”后可以在随后出现的“新建项目——HTML文件”窗口中将我们已经制作好的所有网页文件按先后顺序添加到文件列表中,点击“下一步”后,就可以看到令人愉快的“完成”按键了,但这并不意味着大功告成,因为这一步仅仅是建立了一个hhp文件,还有不少工作等着我们去完成呢。

     

    一个hhp文件形成后,将会在Workshop|项目窗口中显示此文件的结构,双击此窗口中的[OPTIONS]选项,就可以修改这一项目的结构了,比如要指定项目的标题,指定CHM文件的默认首页文件以及文字编码类型和字体,在文件窗口中,还可以指定将要生成的CHM文件的文件名以及路径、指定编译时所需的hhc和hhk的路径及名称等等。上面我们已经介绍了hhc、hhk文件的作用,它们并不是必须的,可以根据需要来决定是否要生成包含目录以及关键字查询的帮助文档,一般来说,总页数较少的帮助文件可以省略掉这些内容和功能。

     

    一个比较简单的CHM帮助文件(没有目录、没有索引)的制作过程就是这样,如果您想制作包括目录和索引的帮助文件,可以先分别制作一个HHC文件和一个 HHK文件,然后在上一步中将它们添加到相应的项目中就可以了。HHC的建立和编辑的方法有两种,一种是在“文件”菜单中选择新建一个“目录表”,在随后出现的编辑窗口中对其进行编辑;另一种方法是在形成的hhp文件编辑窗口中点击“目录”窗口选择“创建一个新的目录文件”,并为其命名进行相应的编辑。

    》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

      


    展开全文
  • 2)服务号可以申请自定义菜单; 3)使用QQ登录的公众号,可以升级为邮箱登录; 4)使用邮箱登录的公众号,可以修改登录邮箱; 5)编辑图文消息可选填作者; 6)群发消息可以同步到腾讯微博。 其中,大家议论...
  • JAVA菜单快捷键

    千次阅读 多人点赞 2014-03-07 14:33:16
    打开帮助文件对这个方法的描述是: 设置组合键,它能直接调用菜单项的操作侦听器而不必显示菜单的层次结构。所以用这个方法就能制作我们所要的快捷键了。 帮助文件告诉我们,传给setAccelerator方法所要的是一个...
  • 菜单项和菜单命令响应函数

    千次阅读 2012-03-08 16:47:23
    菜单项和菜单命令响应函数 1、创建基于单文档工程Menu,添加菜单项:IDM_TEST Test 2、通过类向导, 为IDM_TEST在CMainFrame、CMenuView、CMenuDoc、CMenuApp下添加菜单命令响应函数,即WM_COMMAND响应函数。 ...
  • Lotus notes菜单设计-(隐藏notes菜单)

    千次阅读 2007-03-27 23:50:00
    方法一、适用场景:CS...而选择帮助菜单后会打开指南界面,而不是notes帮助数据库。3、 打开表单并执行1的步骤,再存储这个表单即可恢复notes菜单。注意:使用快捷件组合时,不要用数字小键盘上的”+”键。方法二、
  • 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示: 请注意: ①自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 ②一级菜单...
  • 解读java菜单

    千次阅读 2009-11-10 20:51:00
    在java中,其菜单的设计与实现,样式众多,机动灵活,自成一体系.下面我们就细说一下,这java菜单的奥密,从中也可以领略Java菜单实现的多样化. 菜单分为三类,一类是固定的,即程序顶上的下拉式菜单,一类是弹出式菜单,另一...
  • 在页面上想在上方展示菜单栏,一级菜单点击后加粗高亮显示,鼠标浮动在菜单上展开二三级菜单,二级菜单加粗,三级菜单展开显示在对应的上级菜单右侧,效果如下图所示: 在页面上显示标题logo,菜单,右侧展示当前...
  • 不过那个例子的核心代码是来自于API Demos中带有的Rotate3dAnimation这个类,是它帮助我们完成了所有的三维旋转操作,所有Matrix和Camera相关的代码也是封装在这个类中。 这样说来的话,大家心里会不会痒痒的呢?...
  • opera右键菜单

    千次阅读 2010-11-17 18:05:00
    常规 <br />首先打开standard_menu.ini,一般在 /usr/share/opera/ini/standard_menu.ini <br />在standard_menu.ini中: <br />右键点击页面空白处的弹出菜单:[Document Popup Menu] ...
  • (五)OpenGL菜单管理

    千次阅读 2019-08-18 18:13:15
    glutCreateMenu 创建一个弹出式菜单 glutAddMenuEntry 在当前菜单底部增加一个菜单条目 glutAttachMenu 将当前的一个鼠标按键与当前菜单联系起来 glutAddSubMenu 在当前菜单底部增加一个子菜单 glutDetachMenu 释放...
  • unity3D4.0菜单翻译

    千次阅读 2013-11-05 15:25:51
    一周之前因为一些个人原因开始学习unity3D,而对于满目的英文菜单也是颇感无奈,故而今日翻出资料,稍作整理,也权在心中加固印象。(注:对照版本为unity3D4.0)   一.先从最常见的文件菜单开始,新建保存之类的...
  • 介绍drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。drawerLayout分为侧边菜单和主内容区两部分,侧边菜单...
  • 菜单基本操作

    千次阅读 2018-09-14 13:29:01
    为了实现图形标记菜单项的效果,可以利用SetMenuItemBitmaps函数来显示,这个函数的作用是将制定的位图和菜单项关联起来,其函数声明如下: BOOL SetMenuItemBitmaps ( UINT nPosition, UINT nFlags, const ...
  • SharePoint 2013 自定义扩展菜单(二)

    千次阅读 2013-11-16 00:53:46
    接博文《SharePoint 2013 自定义扩展菜单》,多加了几个例子,方便大家理解。 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 CustomAction Id="CustomAction1" Description="博客园-霖雨" Title=...
  • ps菜单栏简单介绍

    千次阅读 2019-07-20 17:51:25
    2、“编辑”菜单则是对图或照片进行初步的编辑,描边,填充,变形等。 3、“图像”菜单,是对画布的大小,图像大小进行调整,对图像模式进行设置以及对颜色和亮度曝光度等进行调整。 4、“图层”菜单是对图层进行...
  • 在IE右键菜单中添加菜单

    千次阅读 2007-01-09 14:31:00
    如何添加IE右键菜单Windows Registry Editor Version 5.00[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt]@="C://Program Files//Tencent//qq//SendMMS.htm""contexts"=dword:00000002[HKEY_CU
  • 2)服务号可以申请自定义菜单; 3)使用QQ登录的公众号,可以升级为邮箱登录; 4)使用邮箱登录的公众号,可以修改登录邮箱; 5)编辑图文消息可选填作者; 6)群发消息可以同步到腾讯微博。
  • 微信小程序菜单实现

    千次阅读 2017-07-09 20:56:52
    作为一个Android开发者,在这一个月很少写Android的代码,真是悲催,好在现在已经完整的把小程序做完了,下周就继续开始我的Android生涯了,现在回过头来写写自己认为比较常见的一些功能的实现,来帮助小程序学习...
  • menuconfig菜单选项

    千次阅读 2015-10-29 14:41:05
     cgroups 支持, 文档资料 ,cgroups 主要作用是给进程分组,并可以动态调控进程组的CPU 占用率。比如A 进程分到apple 组,给予20%CPU 占用率,E 进程分easy 组,给予50%CPU 占用率,最高100% 。我目前没有此类应用...
  • VB讲课笔记10:菜单与对话框

    千次阅读 2018-03-14 06:46:11
    VB讲课笔记10:菜单与对话框一、用户界面设计基础用户界面是应用程序最基本的组成部分,其内容包括界面基本元素的外观设计和实现相应功能的代码编制。 1、用户界面元素(User Interface Element) 窗体是用户界面...
  • [Win32]Win32 SDK编程系列文章——菜单

    千次阅读 2013-06-05 21:45:07
    正因为菜单给了用户一种方便的方式,所以您在应用程序中加入菜单时就要遵守一般的标准.譬如:一般头两个菜单项是"File"和"Edit",最后是"Help",您可以在这中间插入您要定义的菜单项.如果所运行的菜单
  • Ubuntu16.04菜单栏侧边栏不显示

    千次阅读 2018-10-18 22:47:10
    今天开机,发现桌面没有了菜单栏和侧边栏了。 在找问题的过程有一些症状: (1)只有桌面上显示一些原有的文档或图片。但打开文档或者图片后也是没有窗口菜单栏,这样连关闭都没法点,快捷Alt+F4也没有反应。...
  • MFC 菜单编程 -- 总结

    千次阅读 2012-03-19 14:16:31
    菜单结构 一个菜单栏可以有若干个子菜单,而一个子菜单又可有若干个菜单项。 对于菜单栏的子菜单,由左至右从0开始索引。 对于特定的子菜单菜单项,由上至下建立从0开始的索引。 访问子菜单菜单项,均可...
  • Android 7.0 settings中添加新菜单

    万次阅读 热门讨论 2017-03-01 17:46:19
    需求:在设置中,添加一级菜单项,在设备中加入“按键交换”,此项菜单与“显示” AndroidManifest.xml中配置如下,HarKey.java是一个Activity... android:priority="9"加这个属性不知道是起什么作用,知道的可以留言
  • myeclipse各菜单项说明

    千次阅读 2016-07-22 17:16:23
    myeclipse各菜单项说明 时间 2012-11-09 20:27:28 CSDN博客 原文 http://blog.csdn.net/lgx06/article/details/8167707 主题 Myeclipse Java File 文件菜单下 l New :新建文件,包,项目...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,011
精华内容 35,604
关键字:

帮助菜单作用