关于右键菜单模型设计

来源:互联网 发布:杯酒释兵权知乎 编辑:程序博客网 时间:2024/05/01 20:25

 

系统中的界面模型中已包括控件定义和菜单定义,在新增一个界面时指定界面表现的实体,界面的名称,然后指定界面继承的基界面,就可以自动生成一个界面模型定义,且可以直接运行看到界面,默认情况下包括了实体中各个表的窗体界面edits和列表界面grids,还有一个功能界面,每个界面都是由若干控件构成,控件是自动根据实体中的表的字段定义生成,且已自动绑定数据源,这样界面打开的时候就是几个表就有表个数*2个选项卡,因为每个表都会自动生成一个gird界面与一个edids界面,每个选项卡内都有控件,当然这样的界面还不能做为最终界面,但可以通过运行后的界面布局器进行布局,这个布局器是使用devexpress的布局器,功能很强大,你可以把不需要的界面隐藏起来,或直接从界面定义中删除掉,可以摆放界面控件的布局,并可以把布好的界面保存格式,下次打开界面后就是保存后格式,生成的界面模型定义中还包括主菜单与工具条的定义,不过,菜单定义中自动从界面的基界面中继承了菜单项,比如基本的增删改查功能等,菜单项中也可以指定是否显示在工具条上,快捷键设置等,详细的可以到iModel的官方网站www.saifing.com查看,但现在的问题是右键菜单的设计问题,现在的做法是写一个控件级的插件,在插件中指定此控件右键后的菜单项及对应的实体功能,但这样的作法是如果我要在一个界面的二个控件上显示同样的一个功能菜单则必须在二个控件上挂二次插件,再一个就是这样的基本功能是不是应该由模型与引擎来实现而不是由插件来实现,插件应该只解决少量的特殊领域的问题,而不是解决普遍问题。最终与james讨论的结果就是在控件的属性定义上增加一个属性项,用此属性项来指定此控件对应的右键菜单项,这个菜单项是已在此界面的菜单定义中已定义的项目,而在girds上定义此行的右键菜单,而且会自动合并行的右键菜单与列的右键菜单项。