给表单添加自定义菜单

Ant Design表单中的自定义下拉菜单实现 在Ant Design的表单中实现自定义下拉菜单并处理选择和添加新选项的需求,需要对组件的控制属性和状态管理有深入的理解。通过本文的示例代码和解释,希望能帮助你更好地理解并实现这一功能。 阅读详情

今天花费了挺长时间在这个内容上,主要是因为CAknDialog这个类并没有一个明显的加载及响应菜单的方法,而且网络上面很多资料都是用了系统默认的R_AVKON_SOFTKEYS_OPTIONS_EXIT,确实算不上定制,所以现在做一个记录,希望对遇到相同问题的人能有所帮助

 

这里要实现的是左右软键以及菜单项的全部定制以及响应。

 

如果表单想要的左右软件分别为"left” 和"right", left对应的菜单项包括''Command1" "Command2"。那么相关的几个文件中的代码段如下。其中省略了相关的整形和字符串值的定义。

 

1、rss文件

 

RESOURCE DIALOG r_my_dialog
 {
 flags = EEikDialogFlagNoDrag | EEikDialogFlagModeless; //自己选择
 buttons = r_my_softkeys_left_right;
 form = r_my_form;
 }

 

RESOURCE CBA r_my_softkeys_left_right

{  
    buttons =
        {  
        CBA_BUTTON { id = EMyCommandLeft; txt = string_r_my_softkey_right; },   //其中整形值和字符串自己
        CBA_BUTTON { id = EMyCommandRight; txt = string_r_my_softkey_left; }    //在hrh和rls文件中定义
        };
    }

RESOURCE MENU_BAR r_my_menubar
    {
        titles =
        {
            MENU_TITLE
            {
            menu_pane = r_my_menu_pane;
            }
        };
    }

RESOURCE MENU_PANE r_my_menu_pane

{
 items =
  {
        MENU_ITEM
         {
   command = EMyCommand1;
   txt = string_r_my_menu_command1;
         },
        MENU_ITEM
            {
   command = EMyCommand2;
   txt = string_r_my_menu_command1;
            }
        };
    }

RESOURCE FORM r_my_form
 {

……
 }

 

2、CMyForm文件

CMyForm直接继承于CAknForm。

CAknView的ConstructL()函数带了一个表示MenuBar的参数,但是在这里不需要,直接空着就好了,关键是OktoExitL 和 DynInitMenuPaneL两个函数

 

TBool CMyForm::OkToExitL( TInt aButtonId )
 {
 if( aButtonId == EMyCommandLeft )
  {
CAknDialog::DisplayMenuL();
   
  return EFalse;
  }
else if( aButtonId == EMyCommandRight ) 

 

{

……

return EFalse;

}


 return CAknDialog::OkToExitL( aButtonId );
 } 

 

这块是关键

void CMyForm::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
{
    if ( aResourceId == R_AVKON_FORM_MENUPANE ) 
     {
      /* 添加菜单项*/

        aMenuPane->AddMenuItemsL( R_MY_MENU, 0 );

  

      /* 隐藏掉所有表单默认的菜单项*/
        aMenuPane->SetItemDimmed( EAknFormCmdEdit, TRUE );
        aMenuPane->SetItemDimmed( EAknFormCmdSave, TRUE );
        aMenuPane->SetItemDimmed( EAknFormCmdAdd, TRUE );
        aMenuPane->SetItemDimmed( EAknFormCmdLabel, TRUE );
        aMenuPane->SetItemDimmed( EAknFormCmdDelete, TRUE );
        }
    else
        {
     CAknForm::DynInitMenuPaneL( aResourceId, aMenuPane );
        }   
}

 

重载ProcessCommandL函数

void CMCULoginForm::ProcessCommandL( TInt aCommandId )

{

switch( aCommandId )

{

case ECommand1:  //响应菜单项Command1

……

break;

 

……

}

CAknDialog::HideMenu();

}

 

这样,一个自定义菜单的表单就实现了,希望对您有所帮助

 

拖拽表单自定义 基于jquery实现的表单自定义,拖动表单组件到指定区域,实现表单自定义 立即下载

相关推荐

java自定义表单系统

自定义表单,因为涉及到界面的展示,人机操作交互,页面的构件一定要丰富 自定义表单,有可视化表单设计界面,直接采用拖、拉、点、拽的方式来

CAknForm表单定制菜单方法

今天花费了挺长时间在这个内容上,主要是因为CAknDialog这个类并没有一个明显的加载及响应菜单的方法,而且网络上面很多资料都是用了系统默认的R_AVKON_SOFTKEYS_OPTIONS_EXIT,确实算不上定制,所以现在做一个记录,希望对遇到相同问题的人能有所帮助 这里要实现的是左右软键以及菜单项的全部定制以及响应。 如果表单想要的左右软件分别为"left” 和"right

1280

FORM个性化经典实例:添加菜单项

FORM个性化经典实例:添加菜单项,今后可以看一下

流程表单的右上角添加自定义按钮

jQuery(document).ready(function(){ var requestid=jQuery("input[name='requestid']").val();//获取请求id var workflowid=jQuery("input[name='workflowid']").val();//获取流程id var tooler=$(top.document.getElementById("null_box")); var too...

余大冠子的博客 1260

CAknView Template

一个Carbide.cxx 1.2 Express下的CAknView派生类生成工具,可以生成CAknView类及其Container类。 安装方法: 见压缩包内的Readme.txt文件。 使用方法: CAknView派生类所需的资源定义包含在该派生类的.cpp文件中,将该资源定义拷贝到Rss文件即可。几个注意事项: 1)在View的.h文件中修改ViewId值,不要与其他View的Id相冲突; 2)确认View的菜单资源的Command Id: EMyAppCmdTest存在,或修改为其他有效值。

【实战指南】DBeaver EE Windows版高效破解与配置全解析

本文详细解析了DBeaver EE Windows版的高效破解与配置方法,涵盖Java环境配置、破解包部署、配置文件修改等关键步骤,并提供了性能优化和数据库连接的最佳实践。适用于需要解锁企业版高级功能的数据库开发人员,帮助提升工作效率。

weixin_28837817的博客 1901

VFP为表单添加菜单

1.新建菜单(若已有,可以直接打开菜单) 2.“显示”---“常规选项”---选中“顶层表单”(已打开菜单的状态下) 3.若是新建菜单则需要进行本步:“菜单”---“生成”,通过这一步生成mpr菜单文件 4.新建表单(若已有,可以直接打开表单) 5.设置表单属性“showwindow”---“2-作为顶层表单” 6.双击表单,“过程”---“init”,在下边的对话框中输入“d...

weixin_30287169的博客 1168

YOLOv8剪枝实战:基于torch_pruning的模型优化与性能提升指南

本文详细介绍了如何使用torch_pruning工具对YOLOv8模型进行结构化剪枝,以实现模型轻量化与性能提升。通过实战步骤解析,包括环境搭建、依赖图分析、迭代剪枝与微调策略,帮助开发者有效减少模型参数量和计算量,提升在边缘设备上的推理速度,同时保持检测(detect)与分割(segment)任务的精度。

water的专栏 1122

应用程序架构(Application Framework)

<br /><br />应用程序架构(Application Framework)<br /> <br />1、S60应用程序架构<br />    S60平台在底层Uikon应用程序框架上添加了一个用户界面层(Avkon)。Avkon提供了一套特别为S60设计的UI组件和应用程序框架。<br /> <br />1.1、S60应用程序结构<br /> <br />1.1.1、模型(Model)—视图(View)—控制器(Controller)模式(MVC)<br /><br />    MVC模式在S60

Luis 2402

解密m3u8视频合并:从猫抓插件到本地文件修改全流程

本文详细解析了m3u8视频合并的全流程,特别针对加密视频片段提供了解决方案。从使用猫抓插件捕获m3u8文件地址,到利用N_m3u8DL-CLI工具自动下载、解密并合并ts片段,手把手教你处理AES-128加密等常见问题,最终生成完整的本地MP4文件,适合需要备份或处理流媒体资源的用户。

weixin_29290947的博客 1360

【ESD专题】从原理上分析TVS管PCB Layout的经验法则

我们常常会听到的一些经验法则,按这些经验法则去做,一般也不会有什么问题,但是到底是为什么呢? 没有从原理上分析和证明的时候,往往在Layout之后还要担心实际测试结果怎么样。或是在实际测试出问题后,根本无法进行分析,难道说修改一个版本就好了?那要从哪里修改呢?也无从下手呀。...

一点硬件 1446

『分享』各种提示、输入对话框的使用

1、非阻塞提示框symbian定义了几个提示类,分别是:confirm类:CAknConfirmationNoteinfo类: CAknInformationNotewarning类:CAknWarningNoteerror类: CAknErrorNote头文件:aknnotewrappers.hlib:avkon.lib eikcdlg.lib eikctl.lib使用方法:Code:

阳光下 1011

AutoSAR配置与实践(基础篇)2.5 RTE对数据一致性的管理

SWC内部不同的Runnable访问共同全局变量,Runnable类似C文件中的函数,这些函数如果被放在不同Task上运行, 可能出现出现同一时刻多个函数共同运行的情况。可以通过为受影响的任务分配相同的优先级,为受影响的任务分配相同的内部操作系统资源,或者将OS的任务配置为非抢占性来实现。数据一致性:当多个操作同时读写同一个数据,由于任务的抢占,出现了数据被篡改的情况,造成非预期的数据结果。SWC内部变量保护,限定局变量的作用域在变量的作用域在SWC的不同runnable间。

nihaoljq2010的博客 2628

Tinymce富文本编辑器添加自定义toolbar,二级菜单,自定义表单,签名

Tinymce二次封装,自定义添加工具栏按钮,自定义二级菜单,自定义添加组件

chengcheng9876的博客 6213

SoulX-FlashHead 加速实践,提升3倍。

SoulX-FlashHead 加速实践,提升3倍。

jacke121的专栏 221

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2670

Vue——formcreate表单设计器自定义组件实现

本文主要介绍Form Create表单设计器使用自定义组件的过程。

小欣儿的专栏 1万+

基于Jeecgboot3.9.0的文档管理系统(四)

基于Jeecgboot3.9.0的文档管理系统(四)

宁波阿成的博客 251

QTableWidget详解(样式、右键菜单、表头塌陷、多选等)(转)

在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚。所以,今天就在这里总结一下! 以下为个人模拟Windows资源管理器的一个表单 一、设置表单样式 table_widget->setColumnCount(4); //设置列数 table_widget->ho...

weixin_30861459的博客 3557

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Bootstrap 自定义表单

一、Bootstrap 自定义表单 1.1 自定义复选框 如果要自定义一个复选框,可以设置 <div> 为父元素,类为 .custom-control 和 .custom-checkbox,复选框作为子元素放在该 <div> 里头,然后复选框设置为 type=“checkbox”,类为 .custom-control-input。 复选框的文本使用 label 标签,标签...

书香水墨 1476

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

深入解析如何自定义SpreadJS右键菜单(一)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34384681的博客 330

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

html表单-在线留言,aspcms自定义表单 在线留言修改

aspcms在线留言自定义表单修改方法是很基础的东西,aspcms自定义表单只要会基本的html知识就很容易修改。但也有一些网友跟我提及到,希望能写一篇修改在线留言自定义表单的方法,所以这里给出一些解决方法(基础教程,高手略过)。打开在线留言页面的模板文件gbook.html,找到表单代码部分,这里可以自行删除一些不用的表单项目,当然,同时也可以添加一些自定义表单项目,只要稍微懂点基本的html代...

weixin_39900468的博客 494

给form-generator 添加树tree

这里写自定义目录标题给form-generator 添加树tree先看添加自定义组件的说明将组件添加到表单设计器给左侧组件菜单添加树图标右侧添加属性控制完成后的样子 给form-generator 添加树tree form-generator是一个非常好用的前端表单生成器,但其中表单组件中没有tree,今天弄了半天,终于给加上了。 先看添加自定义组件的说明 原说明文档 一定要重视阅读原作者给出的文档。 将组件添加到表单设计器 给左侧组件菜单添加树图标 按文档中的指引,先“在文件src\components\

foxbamboo的博客 1512

bootstrap4--表单

bootstrap4中表单布局、输入框组,以及默认和自定义表单控件的一些设置

zxn200125的博客 4032

treeview自定义菜单

treeview官网:https://www.bootcdn.cn/bootstrap-treeview/readme/#about 实现效果1: 1. css样式: <link href="<%=request.getContextPath() %>/js/dist/css/bootstrap.min.css" rel="stylesheet"> <link hr...

weixin_44494406的博客 471

开心档之Bootstrap4 自定义表单

如果要自定义一个复选框,可以设置 为父元素,类为 .custom-control 和 .custom-checkbox,复选框作为子元素放在该 里头,然后复选框设置为。为父元素,类为 .custom-control 和 .custom-radio,单选框作为子元素放在该。标签,标签使用 .custom-control-label 类,标签,标签使用 .custom-control-label 类,标签,标签使用 .custom-file-label 类,属性值需要匹配单选框的。

不写代码没饭吃的博客 435
上一篇: CAknForm表单定制菜单方法
下一篇: 如何动态获取mbm文件名
Atoric
博客等级 码龄19年 32粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值