精华内容
下载资源
问答
  • abap屏幕菜单管理

    千次阅读 2009-10-25 20:17:00
    abap屏幕菜单不仅仅是在程序中双击进去修改,还有专门的TCODE,在里面编辑,删除更方便。 如图: 之所以会注意到这个,因为同事想要在程序运行的初始界面添加一个按钮,直接使用SET PF-STATUS ‘XXX’来创建一个...

    abap屏幕和菜单不仅仅是在程序中双击进去修改,还有专门的TCODE,在里面编辑,删除更方便。

    如图:

    image

     

    之所以会注意到这个,因为同事想要在程序运行的初始界面上添加一个按钮,直接使用SET PF-STATUS ‘XXX’来创建一个菜单,并通过adjust template,如图:

    image

    加载了一个标准的菜单,但是那些标准按钮却不起作用。比如F3 back,那是因为在初始屏幕必须要把function type设置为E.不过初始屏幕似乎加按钮没地方写PAI啊。通常应该在ALV的事件中添加事件frm_pf_status_set,然后再在frm_user_command中添加事件反映的代码。function alv中用到比较多。

    展开全文
  • 最近有个小老弟自己在网上找了一大堆插件,然后他想做一个类似菜单什么的去使用这些零碎的插件,想自定义一个工具集,然后就问我菜单,工具栏,屏幕菜单等等的做法,这里做一个总结,相关资料信息在XD论坛,明经通道...

    cad之辅助提示功能

    最近有个小老弟自己在网上找了一大堆插件,然后他想做一个类似菜单什么的去使用这些零碎的插件,想自定义一个工具集,然后就问我菜单,工具栏,屏幕菜单等等的做法,这里做一个总结,相关资料信息在XD论坛,明经通道都有。。。
    常见的cad辅助提示,包括菜单,工具栏,难度大的包括屏幕菜单,增强工具栏等等

    菜单

    cad的菜单比较常见,比如
    在这里插入图片描述
    一般来说,给别人做插件的时候,如果做的是一个模块的插件,比如这种对支架的模块
    在这里插入图片描述
    那么菜单就是比较合适的了。
    制作菜单的办法有很多,比如使用MFC创建,使用COM创建,使用CUI文件等,在这里,我最推荐的方法是使用CUI,快捷,方便,几乎不会出错。这里,给个例子:首先创建mnu格式的文件,写入如下:

    ***MENUGROUP=SIMPLE_GROUP
    
    ***POP1
    **FILE
    ID_MENU_FILE              [场地平面图文件(&F)]^C^C_open
    ID_FILE_LOCATION          [存储平面位置(&L)]^C^CPMWZ
    ID_FILE_LAYOUT            [存储场地布置(&A)]^C^CCDBZ
    ID_FILE_PLAN              [存储计划(&P)]^C^CCCJH
    [--]
    ID_FILE_EXIT              [退出(&E)]^C^C_quit
    [--]
    
    
    ***HELPSTRINGS
    ID_MENU_FILE              [打开场地平面图文件]
    ID_FILE_LOCATION          [存储场地平面位置到磁盘文件中]
    ID_FILE_LAYOUT            [存储场地布置到二进制文件中]
    ID_FILE_PLAN              [存储施工计划到磁盘文件中]
    ID_FILE_EXIT              [退出ACAD]
    

    然后,打开cad,使用命令menuload,加载这个mnu文件,cad加载后,会生成同名的mnr和cuix文件
    在这里插入图片描述
    在这里插入图片描述
    我一般懒得进行进一步的优化菜单,让它更加美观,如果有人愿意这么做的话,可以使用cui编辑器,去给这个cuix菜单文件添加图标啊什么的,更加好看。
    把cuix文件和arx文件放在一起,最后在代码中加载这个cuix文件即可。
    最后做一下总结:使用cuix文件生成菜单的方法最方便,快捷,不需要你修改代码,在添加icon的过程中更加方便,简单。对于com和mfc方法去添加菜单的,有两点不好,一是修改菜单就要修改代码,二是,切换cad的工作空间,菜单会消失,这个比较麻烦。

    工具栏

    工具栏
    实话,工具栏也是我比较推荐的方法,如果你做的插件也是专属于一个模块,但是,命令却比较少,比如也就10个以内,那么工具栏就是很好的方法了,工具栏的做法也有多种,com,MFC,cuix都可以做,这里同样优先推荐使用cuix的方法,方便,简单,如果不会操作的,打开cad,按下F1,帮助文档里面都有如何创建工具栏菜单等
    在这里插入图片描述
    我在这里说的是增强型工具栏,比如插件老虎板王,msteel的工具栏
    在这里插入图片描述
    使用增强型工具栏,主要是对于大型的,多模块的命令,做一个界面化的操作,适合于中等偏大型的做法,我也做了一个类似的东西
    在这里插入图片描述
    它的布局和里面的菜单最好是有一个文件控制,比如需要多少个按钮,按钮里面有多少个菜单等,在一个文件内写清楚后,解析这个文件,生产这个工具栏。

    [按钮]
    结构建模
    画墙工具
    墙柱绘制
    楼板工具
    基础设计
    钢筋绘制
    文字工具
    图层工具
    其他工具
    
    [MENU=结构建模]
    0-梁线建模-MODEL_LXJM
    0-梁模转图-MODEL_LMZT
    0-墙线建模-MODEL_QXJM
    0-墙模转图-MODEL_QMZT
    
    [MENU=画墙工具]
    0-轴线画梁-BEAM_ZXHL
    0-画直线梁-BEAM_HZXL
    0-梁中生线-BEAM_LZSX
    0-梁梁交线-BEAM_LLJX
    0-梁柱交线-BEAM_LZJX
    0-虚实变换-BEAM_XSBH
    0-粗线变梁-BEAM_CXBL
    0-连接梁线-BEAM_LJLX
    0-梁折断线-BEAM_LZDX
    1
    0-线比系数-BEAM_XBXS
    0-梁集标注-BEAM_LJZB
    0-编号查询-BEAM_BHCX
    0-梁重编号-BEAM_LCBH
    
    [MENU=墙柱绘制]
    0-插方形柱-COLU_CFZ
    0-插圆形柱-COLU_CYZ
    0-柱子填充-COLU_ZTC
    0-柱子空心-COLU_ZKX
    0-柱虚实-COLU_ZXS
    0-柱放大-COLU_ZFD
    1
    0-粗线变墙-WALL_CXBQ
    0-墙填充-WALL_QTC
    0-墙空心-WALL_QKX
    0-墙虚实-WALL_QXS
    0-墙端封口-WALL_QFK
    0-墙上开洞-WALL_QKD
    0-墙线折断-WALL_QXZD
    1
    0-墙柱形心-WC_QZXX
    0-墙柱工具-WC_QZGJ
    
    [MENU=楼板工具]
    0-板开洞口-FLOOR_DK
    0-板填充一-FLOOR_BTCA
    0-板填充二-FLOOR_BTCB
    0-板填充三-FLOOR_BTCC
    0-添加板厚-FLOOR_TJBH
    
    [MENU=基础设计]
    0-桩数统计-BASE_ZSTJ
    0-画桩程序-BASE_HZCX
    
    [MENU=钢筋绘制]
    0-绘制点筋-REIN_HZDJ
    0-空实变换-REIN_KSBH
    1
    0-绘制拉筋-REIN_HZLJ
    0-S形拉筋-REIN_SLJ
    0-绘制箍筋-REIN_GJ
    0-连续钢筋-REIN_LXGH
    0-线变钢筋-REIN_XBGJ
    0-绘组钢筋-REIN_HZGJ
    1
    0-附加吊筋-REIN_FJDJ
    0-附加箍筋-REIN_FJGJ
    0-任意负筋-REIN_RYFJ
    0-任意正筋-REIN_RYZJ
    0-板钩变换-REIN_BGBH
    0-范围选数-REIN_FWXS
    
    [MENU=文字工具]
    0-文字查找-TEXT_WZCZ
    0-统一字高-TEXT_TYZG
    0-文字边框-TEXT_WZBK
    0-文本偏移-TEXT_WBPY
    0-文字连接-TEXT_WZLJ
    1
    0-文字对齐-TEXT_WZDQ
    0-修改对齐-TEXT_XGDQ
    0-文字平行-TEXT_WZPX
    0-转MTEXT-TEXT_ZMTEXT
    0-调行间距-TEXT_THJJ
    0-查字重叠-TEXT_CZCD
    1
    0-加前后缀-TEXT_JQHZ
    0-文字互换-TEXT_WZHH
    0-文字刷-TEXT_WSZ
    0-求平均数-TEXT_QPJS
    0-快速改字-TEXT_KSGZ
    
    [MENU=图层工具]
    0-图层设置-_layer
    0-转当前层-_laycur
    0-置为当前-_laymcur
    0-选层显示-LAYER_XCXS
    0-选层关闭-_layoff
    0-图层全开-_layon
    0-锁定图层-_laylck
    0-解锁图层-_layulk
    0-图层删除-LAYER_TUSC
    0-参照开关-LAYER_CZKG
    0-图层前置-LAYER_TCQZ
    0-图层后置-LAYER_TCHZ
    0-填充后置-LAYER_TCHZ
    0-按色显示-LAYER_ASXS
    1
    0-隐藏对象-LAYER_YCDX
    0-显示对象-LAYER_XSDX
    
    [MENU=其他工具]
    0-结构审图-OTHER_YXST
    0-引线文字-OTHER_YXWZ
    0-绘制箭头-OTHER_HZJT
    0-改线宽度-OTHER_GXKD
    0-选择易-OTHER_XZY
    0-随心拉移-GG
    0-线弧转PL-OTHER_XHZPL
    0-多线加点-OTHER_DXJD
    0-多线去点-OTHER_DXQD
    0-存为今天-OTHER_CWJT
    
    

    这个是我写的一个文件,它里面包括了按钮,和每个按钮下的菜单。
    假如菜单内含有子菜单

    [MENU=其他工具]
    0-结构审图-OTHER_YXST
    0-引线文字-OTHER_YXWZ
    0-绘制箭头-OTHER_HZJT
    0-改线宽度-OTHER_GXKD
    0-选择易-OTHER_XZY
    2-其他设置
    0-线弧转PL-OTHER_XHZPL
    0-多线加点-OTHER_DXJD
    0-多线去点-OTHER_DXQD
    0-存为今天-OTHER_CWJT
    
    [SUBMENU=其他设置]
    0-线弧转PL-OTHER_XHZPL
    0-多线加点-OTHER_DXJD
    

    这样子添加即可,方便实用,不需要修改代码,解析文件就好
    这个增强型工具栏的思路:

    #pragma once
    
    #include "resource.h"
    #include "SendCmd.h"
    #include "ToolButton.h"
    
    
    #define BAR_FIRST_MENU_ID 3000
    #define BAR_FIRST_BUTTON_ID 4000
    
    struct MenuItemTag
    {
    public:
        MenuItemTag(UINT flags, UINT ids, CString name, CString cmd) : menuName(name),menuCmd(cmd)
        {
            nFlags = flags;
            nIds = ids;
        }
        MenuItemTag(const MenuItemTag& other)
        {
            nFlags = other.nFlags;
            nIds = other.nIds;
            menuName = other.menuName;
            menuCmd = other.menuCmd;
        }
    
        MenuItemTag& operator = (const MenuItemTag &other)
        {
            if (this != &other)
            {
                nFlags = other.nFlags;
                nIds = other.nIds;
                menuName = other.menuName;
                menuCmd = other.menuCmd;
            }
            return *this;
        }
    public:
        UINT nFlags;//MF_STRING, MF_SEPARATOR,MF_SUBPOP
        UINT nIds;
        CString menuName;
        CString menuCmd;
    };
    
    typedef std::vector<MenuItemTag> MenuGroup;
    typedef std::map<CString, MenuGroup> MenuMap;
    typedef std::map<UINT, CString> MenuCmdMap;
    
    class CBarDlg : public CAcUiDialogBar
    {
        DECLARE_DYNAMIC(CBarDlg)
    
    public:
        CBarDlg(CWnd* pParent = NULL);   // 标准构造函数
        virtual ~CBarDlg();
        // 对话框数据
        enum { IDD = IDD_DIALOG_MENUBAR }; 
    
        //一系列button
        std::vector<CToolButton*> m_buttons;
    
        MenuMap m_map;
        MenuCmdMap m_cmdMap;
        void InitMenuMap();
        //弹出菜单
        CMenu m_popMenu;
        void PopupMenu(CString titleName, UINT nCtrlId);
        void CreateSubPopupMenu(CMenu &popMenu, CString titleName);
        CPoint GetTrackPnt(UINT nCtlrId);
        void OnToolButtonClick(UINT buttonId);
        void OnPopupMenuItemClick(UINT menuId);
        std::vector<CString> GetMenu(CString menuPath);
        void CreateButton(std::vector<CString>& button);
        void CreateMenu(std::vector<CString>& button);
    protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
        virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
        DECLARE_MESSAGE_MAP()
    protected:
        afx_msg void OnPaint();
        afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
        afx_msg LRESULT OnInitDialog(WPARAM, LPARAM);
    };
    
    
    //-----------------------------------------------------------------------------
    //----- ToolButton.h : Declaration of the CToolButton
    //-----------------------------------------------------------------------------
    #pragma once
    
    //-----------------------------------------------------------------------------
    #include "acui.h"
    
    //-----------------------------------------------------------------------------
    class CToolButton : public CAcUiToolButton
    {
    	DECLARE_DYNAMIC (CToolButton)
        CString m_strCaption;//名称
        CFont *m_pFont;
    public:
    	CToolButton();
    	virtual ~CToolButton();
        BOOL Create(LPCTSTR str, DWORD dyStyle, const RECT& rect, CWnd *parent, UINT nID);
        virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
    protected:
    	DECLARE_MESSAGE_MAP()
    public:
        afx_msg void OnMouseMove(UINT nFlags, CPoint point);
    };
    
    

    一个CAcUiDialogBar的派生,一个CAcUiToolButton的派生,就搞定了,比较简单

    屏幕菜单

    按照道理来讲,屏幕菜单估计是最麻烦的体系了,商业化的大型插件工具才会用到这个,比如天正和探索者,一般来说都是大型商业化的东西才会用到这个,自定义程度最高。屏幕菜单里面可以添加很多东西,比如图标按钮,抽屉型菜单,各种带有ICON的按钮等等,反正做的比较好看,但是这个就需要MFC功底了,并且需要大型维护,成本比较高。这是我自己做的屏幕菜单
    在这里插入图片描述
    这个东西,我在明经通道上看到的类似的,然后拿过来重写的。复杂点,但是也是和增强型工具栏一样,写一个mnu或者txt描述所有的菜单,然后以后修改文件即可修改屏幕菜单,一劳永逸。

    总结

    方法 优点 缺点
    工具栏 适合少量命令 不适合大型模块,多模块
    菜单 适合中小型模块, 多模块 不适合大型模块,使用com和MFC方式有缺点
    增强工具栏 适合大中型体系模块 需要维护代码,成本高
    屏幕菜单 适合商业化插件 成本高

    强烈推荐,尽量使用工具栏和菜单栏,成本低,不会编程的人也能按照帮助文档去建立自己的一套插件模块。并且一套cui文件,几乎所有cad都会识别,不像编程那种,还要编译多个版本,麻烦!最后,小老弟采用了工具栏+菜单栏的办法,一套cui全搞定,而且,本来cad的绘图区域就不大,菜单和工具栏占据的空间是最小的,也是最容易调整的

    展开全文
  • 最小菜单是一个小型客户端模块,允许用户独立切换标题屏幕和选项屏幕上的许多按钮。 它还添加了诸如重新加载保存和查看保存文件夹的按钮之类的功能。 设计用于仅与Mod菜单和Mod菜单一起使用。 特征 删除初始文字 ...
  • 在Windows 10 中为所有登录的用户设置统一的开始屏幕菜单和任务栏目标步骤1. 制作开始屏幕菜单模板3. 编辑开始屏幕菜单设置文件,修改添加任务栏设置4. 应用“开始屏幕菜单和任务栏”自定义文件 目标 在企业中用户...

    目标

    在企业中用户登录Windows 10系统后系统会应用系统默认的开始屏幕菜单和任务栏。一些公司的管理员希望每个用户登录时默认开始屏幕菜单和任务栏菜单。

    步骤

    1. 制作开始屏幕菜单模板
    2. 导出当前用户开始屏幕菜单设置文件
    3. 编辑开始屏幕菜单设置文件,修改添加任务栏设置
    4. 应用“开始屏幕菜单和任务栏”自定义文件

    1. 制作开始屏幕菜单模板

    • 安装Windows 10
    • 已管理员身份登录
    • 编辑修改开始菜单屏幕设置
      例如我设置成下面这样:在这里插入图片描述## 2. 导出当前用户开始屏幕菜单设置文件
    • 以管理员身份运行Windows Power Shell
    • 运行下列命令导出设置到xml文件
    Export-startlayout -path c:\LayoutModification.xml
    

    在这里插入图片描述

    • 导出的xml文件如下所示。
    <LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
      <LayoutOptions StartTileGroupCellWidth="6" />
      <DefaultLayoutOverride>
        <StartLayoutCollection>
          <defaultlayout:StartLayout GroupCellWidth="6">
            <start:Group Name="">
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\百度网盘\百度网盘.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Excel 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\PowerPoint 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Word 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Access 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
            </start:Group>
            <start:Group Name="高效工作">
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Snipping Tool.lnk" />
            </start:Group>
            <start:Group Name="">
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Control Panel.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Run.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\微信\微信.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\computer.lnk" />
            </start:Group>
          </defaultlayout:StartLayout>
        </StartLayoutCollection>
      </DefaultLayoutOverride>
    </LayoutModificationTemplate>
    

    将这个文件保存到C:\Users\Default\AppData\Local\Microsoft\Windows\Shell文件夹中,其他用户第一次登录时,开始菜单屏幕就和当前用户一样了。
    但,此文件并不能修改任务栏设置。要让此文件同时也能修改任务栏需要进一步编辑此xml文件

    3. 编辑开始屏幕菜单设置文件,修改添加任务栏设置

    • 修改LayoutModification.xml的第一行,使其支持任务栏的设置。
      变更前代码:
    <LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
    

    变更后代码:

    <LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" Version="1">
    
    • 在 </DefaultLayoutOverride>后,</LayoutModificationTemplate>前添加任务栏图标设置。
      我设置开始菜单只显示“资源管理器”和“IE浏览器”。代码如下。
     <CustomTaskbarLayoutCollection PinListPlacement="Replace">
       <defaultlayout:TaskbarLayout>
         <taskbar:TaskbarPinList>
           <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
           <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
         </taskbar:TaskbarPinList>
       </defaultlayout:TaskbarLayout>
     </CustomTaskbarLayoutCollection>
    

    大家可以仿照我的设置自定义自己的任务栏。
    修改后的完整代码如下:

    <LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout" Version="1">
      <LayoutOptions StartTileGroupCellWidth="6" />
      <DefaultLayoutOverride>
        <StartLayoutCollection>
          <defaultlayout:StartLayout GroupCellWidth="6">
            <start:Group Name="">
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\百度网盘\百度网盘.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Excel 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\PowerPoint 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Word 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Access 2016.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
            </start:Group>
            <start:Group Name="高效工作">
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Snipping Tool.lnk" />
            </start:Group>
            <start:Group Name="">
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Control Panel.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="2" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Run.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="2" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\微信\微信.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="4" Row="2" DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk" />
              <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\computer.lnk" />
            </start:Group>
          </defaultlayout:StartLayout>
        </StartLayoutCollection>
      </DefaultLayoutOverride>
      <CustomTaskbarLayoutCollection PinListPlacement="Replace">
        <defaultlayout:TaskbarLayout>
          <taskbar:TaskbarPinList>
            <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
            <taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
          </taskbar:TaskbarPinList>
        </defaultlayout:TaskbarLayout>
      </CustomTaskbarLayoutCollection>
    </LayoutModificationTemplate>
    

    4. 应用“开始屏幕菜单和任务栏”自定义文件

    • 将修改好的LayoutModification.xml文件保存到下列目录。
      C:\Users\Default\AppData\Local\Microsoft\Windows\Shell
    • 用一个没在此计算机登录过的用户进行测试
      或创建一个新用户。
      也可以删除以前登录过的用户配置文件,但,但,但是,执行此操作前记得备份对象用户的用户资料,尤其是桌面文件和文档
    展开全文
  • 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>










    展开全文
  • 如果您曾经在响应式网站工作,那么毫无疑问,您必须解决这个新兴领域中最棘手的问题之一:导航。 对于简单的导航,解决方案可以很简单。 但是,如果您要处理的事情有些复杂,可能有多个嵌套列表和下拉列表,则可能...
  • 公司项目菜单新需求(如题) 当菜单正常显示的时候,如下图 ...废话不多说,直接代码 var str = '+id+'" class="menu" style="left: '+length+'px ;top: '+top+'px;height:210px">'; str += '' + '
  • Android子菜单下文菜单
  • 我需要对android4.0内置的设置菜单setting app做修改,想要删除Secure安全下的屏幕锁定条目,因为我不想让客户修改屏幕锁定,我默认是不锁屏的,google了半天了也没找到答案,希望各位大神帮忙。 知道这个怎么改,...
  • 如要让页面全屏时要用到AndroidManifest.xml文件,找到相应的activity控件,插 ...在主页面mean菜单的关于和退出,在相应的activity的onCreateOptionsMenu 的下方插: public boolea
  • SlidingDrawerLayout上下滑动的菜单控件

    千次阅读 多人点赞 2016-06-24 23:04:55
    有一种控件需求,通过上下滑动来打开上下菜单。这个控件要求自动打开上下两个菜单,而且还要随着手势(注意:多触点)上下滑动菜单。之前Android系统有提供一个叫SlidingDrawer(完整路径:android.widget....
  • Android系统中一共有3种菜单:选项菜单(ptionsMenu)、下文菜单(ContextMenu)和子菜单(SubMenu),下面分别介绍。 一、选项菜单(OptionsMenu)  选项菜单是一种最常用也是最基本的菜单,通过覆写android....
  • 菜单

    2016-06-12 09:27:06
    创建浮动下文菜单使用下文操作模式 创建弹出菜单 处理点击事件 创建菜单组 使用可选中的菜单项 添加基于 Intent 的菜单项 允许将 Activity 添加到其他菜单中 关键类 MenuMenuItemCon
  • 下文菜单下文操作模式

    千次阅读 2015-09-10 22:20:18
    长按ListView或GridView列表项删除某一条记录是一种下文操作,即它是与某个特定屏幕视图(单个列表项)而非整个屏幕相关联的。在Honeycomb以前版本的设备下文操作是在浮动下文菜单中呈现的。而在之后的...
  • 重要的话 开头说,not for the RecyclerView or ListView, for the Any ViewGroup....本控件**不依赖任何**父布局,不是针对 RecyclerView、ListView,而是**任意的ViewGroup**里的childView都可以使用侧滑(删除)菜单
  • 我在QListWiget中用setItemWidget添加了自定义的item widget,自定义的item widget有一个垂直布局,布局中有两个QLabel,我用QListWidget的removeItemWidget和takeItem删除自定义item widget后,屏幕上依旧会显示两...
  • 例如长按删除功能就是一种下文操作,下文操作与某个特定的屏幕视图(单个列表项)而非整个屏幕相关联 一:在res/menu下新建菜单资源文件 android:id="@+id/menu_item_delete_crime" android:icon="@...
  • 一、Mac OS X下删除或添加鼠标右键菜单项目 1. 打开 Finder,点击屏幕顶部菜单栏的 “前往”,在下拉菜单里选择 “前往文件夹…” 2. 在弹出的输入框里输入:/System/Library/Services 3. 看到一堆 .service 和...
  • Android菜单

    2013-09-27 12:24:00
    • 仅将最重要的指令固定在屏幕上.• 长按(touch&hold)屏幕可触发关联菜单,并且可正常点击关联菜单上的指令. 文档目录 菜单纵览 1. 选项菜单2. 关联菜单3. 选项菜单与关联菜单的区别4. 屏幕上的固定指令 ...
  • 右键菜单中的有些选项你并不常用,或者,有些软件已被删除,但其右键菜单中的选项却仍占用着屏幕空间。要删除这些无用的右键菜单项,请按下述方法操作: 1. 单击Windows的“开始”菜单,单击“运行”,在“打开”框...
  • Android 自定义view之扇形菜单

    千次阅读 2017-04-11 15:23:00
    一个扇形菜单,可以滑动切换,添加删除,拖动排序等炫酷的菜单
  • bootstrap下拉菜单智能向上下弹出

    千次阅读 2018-04-11 09:05:49
    bootstrap下拉菜单智能向上下弹出 1、需求:  通过给bootstrap下拉菜单添加 dropdown 或 dropup 样式类,可以实现菜单向下或向上弹出。... 获取点击按钮距离屏幕下方的高度和弹出菜单的高度,...
  • 概念:下文菜单就是当长按屏幕上某个试图元素时弹出的菜单框。 下文菜单继承了android.view.Menu,因此我们可以像操作Options Menu那样给下文菜单增加菜单项。下文菜单与Options Menu最大的不同在于,...
  • MacW小编您如何移动隐藏删除mac菜单栏图标,对于有强迫症的小伙伴来说,菜单栏图标乱糟糟的是一件很烦人的事情,逼死强迫症,而这篇Mac移动隐藏删除顶部菜单栏图标教程则可以帮助你! Mac移动隐藏删除顶部菜单栏图标...
  • 现在,只要您运行的是iOS 14或更高版本,iPhone所有者就可以从主屏幕上删除和隐藏应用程序以及页面,并将其放入应用程序库中。 The App Library is Apple’s version of the app drawer. It’s available on the ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,865
精华内容 38,746
关键字:

屏幕上的菜单如何删除