ABAP 树型菜单程序
ABAP 树型菜单程序 Jerry 项目中树型菜单很少用到,但是学会了,也是一种好事。最近,客户方就有一个要求,能够实现特殊的文档管理,包括动态的树型菜单。此文档中,我就介绍如何用ABAP创建一个简单的树型菜单!下面几个步骤只讲创建树型菜单几个重要的地方,最后面是详细的实现代码。建议学者粗略看看步骤,重点看最后的代码,然后自己学着按下面的DEMO写测试程序,直到成功为止,如有不懂的地方,可以到群内留言。或者文档有写得不好的地方,也可以提出来,我们一起加以改善! 一. 创建一个DIALOG屏幕(0900),创建一个定制控制: TREE_CONTAINER,作为一个容器来存放程序创建的 树型菜单,如下图所示: 二. 在屏幕PBO事件中,创建一个MOUDLE: m_init_tree,然后创建一个Subroutine: frm_init_tree。 在Subroutine中创建一个Object: g_application,g_application指向自己创建的一个Class:lcl_application。这个Class主要定义了一些事件,比如单击,双击,展开,链接单击等事件,用来注册及捕获树型菜单的父节点,子节点单击,双击,展开,链接单击等事件,然后在自己Class :lcl_application中相应自定义的Method中写相应的Code,实现特殊的操作。 三. 用程序创建一个容器类cl_gui_custom_container的实例g_custom_container,代码如下 CREATE OBJECT g_custom_container EXPORTING container_name = 'TREE_CONTAINER' EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5.
采用HierarchicalDataTemplate数据模板和treeview在MVVM模式下实现行政区划树
摘要:采用HierarchicalDataTemplate数据模板和treeview在MVVM模式下实现行政区划树, 支持勾选。勾选父节点,子节点回全部自动勾选;子节点部分勾选时,父节点半勾选;子节点全部勾选时,父节点勾选。反之亦然。 HierarchicalDataTemplate是分层数据模板,通常用于tree,menu等层级控件。 HierarchicalDataTemplate的ItemsSource属性绑定下一级数据源。 Model为行政区数据实体类,通常访问数据库获取数据并构建对象。 ViewModel为界面的抽象模型,表示界面的数据和行为,是Model和View的桥梁。 view就是界面。 一、代码 1、Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace WpfHierarchicalTemplate { public class District { public int ID { get; set; } public string Xzqhdm { get; set; }//行政区划代码 public string Xzqhmc { get; set; }//行政区划名称 public int Level { get; set; }//级别,0全国,1省,2地市,3县,4,乡镇,5,村 public IList Children { get; set; } public District Parent { get; set; } } } 2、ViewModel using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.ObjectModel; using System.Windows.Media; using System.Windows.Media.Imaging; namespace WpfHierarchicalTemplate { publicclass DistrictNodeViewModel :ModelCommon.NotifyObject { privatebool? isSelected = false; publicbool? IsSelected { get{ return isSelected; } set { isSelected = value; RaisePropertyChanged("IsSelected");
如何制作dvd光盘动态菜单
如何制作dvd光盘动态菜单 在多个视频刻录光盘时,你可以自制精美漂亮的光盘菜单,通过这个菜单,用户可以非常方便的找到自己要播放的视频文件,同时也能让视频光盘更加精彩。那么制作菜单用什么软件最好?小编推荐具有专业水准的狸窝DVD刻录软件,支持DVD菜单制作,满足您全方位的制作要求。用鼠标点几下,你就可以轻松制作菜单了。分享DVD菜单制作教程,光盘菜单制作秘籍,你也赶紧体验一下吧。 准备好:刻录软件、DVD刻录机、空白刻录盘,还有你的刻录文件。就可以开始操作了。打开狸窝刻录光盘软件,点击左上方的“添加视频”,打开浏览文件夹并将需要的视频都导入进来。添加成功后,可以使用视频编辑、视频预览等功能,如图所示,菜鸟刻录DVD方法。 光盘开始菜单设置。如图所示,可以主界面右边进行设置快速选择菜单及预览菜单。在右上方有一个“停用菜单”的按钮(点击停用的话,刻录的光盘播放时会自动播放视频),还有“设计菜单”按钮,点击进入自定义编辑界面,下面要详细说的。
自定义设计菜单(菜单设计器),子菜单的编辑。总编辑选项有主题、背景、按钮、标题、高级选项。以下图文了解一下。 “主题”选项,样式分类为标准、商业、教育、节日、自然、其他、自定义。这个其实在主界面也可以选择的。其中自定义就是我们设计后保存在这里的菜单样式。
“背景”选项,可以设置背景图片和背景音乐(默认已带有一个音乐),其中背景图片的选择有几种:一、可选用系统提供的,二、设计三种颜色的组合图片,三、本地电脑上的图片(gif、png、jpg等格式),四、某一视频中的视频画面。 “按钮”选项,是对视频框架和图标样式的设置,有很多种,在右边编辑相应片选择后,在左边预览区可以看到效果。预览区中的框架是可以用鼠标拖动其位置,和调整其大小的哦。
PowerBuilder动态创建菜单条
动态创建菜单条2008年12月13日星期六1:41本文拟结合powerbuilder语言,简述如何实现动态添加菜单效果。在实际开发过程当中很多时候会因为权限控制的需要,根据用户的不同权限来动态添加菜单项目,如何避免使用繁琐的api函数(如:createmenu、insertmenu、insertmenuitem、appendmenu等),利用powerbuilder语言自身功能达到这一目的呢?本文将就此问题简单予以论述。 一、基本思路 在pb帮助的menu object一节当中,关于其properties描述当中有一项: item[ ] menu specifies the menu objects under a menu object. 这看似简单的一句话其实包含了三层含义: 1、这句话说明menu对象有一个属性为数组类型,它其中的各个元素记录了其所有的具体子item项目,可以借助这个数组中各元素来访问底层的各子菜单; 2、这些子item项目仍是menu类型,因此可以按照第一点的逻辑继续向下层推广,借助该子item的item[]属性可以进而访问其所属下层的第二层子菜单,推而广之,即可全面遍历整个菜单体系的所有子菜单项目; 3、既然该属性是一个数组类型,那么就可以按照数组类型变量来处理,我们可以对其进行upperbound()、lowerbound()等函数操作,还可以进行数组的扩展,即添加新项目,这一点很重要,它是我们整篇文章的核心,如何利用pb实现动态添加菜单,说白了就是添加这个数组元素(读者必须对此有一个清晰的认识),同时期间有一些配套具体的实现技巧,详见下文。 二、具体实现 (一)基本工作 创建一个window窗口和二个menu菜单,其中一个菜单命名为m_main,用作窗口的基本主菜单,新增菜单将在其上添加,该菜单初始可以包含一些基本菜单,如:文件、添加、删除、保存、退出等;另外一个菜单命名为m_new,该菜单只有主菜单一个item,其下没有进一步的子菜单,因此该菜单其实就是一个菜单item。 在主窗口中声明实例变量(instance variables): menu im_new[] //声明一菜单数组用于引用新增菜单 integer ii_count //声明一变量记录总共新增菜单个数 (二)具体代码
数据结构课程设计报告,含菜单
算法与数据结构课程设计 报告 系(院):计算机科学学院 专业班级:计科11005 姓名:张林峰 学号: 201003784 指导教师:詹泽梅 设计时间:2012.6.11 - 2012.6.18 设计地点:12教机房
目录 一、课程设计目的 (2) 二、设计任务及要求 (2) 三、需求分析 (2) 四、总体设计 .............. 错误!未定义书签。 五、详细设计与实现[含代码和实现界面].. 8 六、课程设计小结 (15)
一.设计目的 1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。 2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 3.初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。 4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 5.培养根据选题需要选择学习书籍,查阅文献资料的自学能力。二.设计任务及要求 根据《算法与数据结构》课程的结构体系,设计一个基于DOS菜单的应用程序。要利用多级菜单实现各种功能。比如,主界面是大项,主要是学过的各章的名字诸如线性表、栈与队列、串与数组及广义表等,子菜单这些章中的节或者子节。要求所有子菜单退出到他的父菜单。编程实现时,要用到C++的面向对象的功能。 三.需求分析 菜单运用极其广泛,应用于各行各业。菜单运用起来极其方便。随着社会的发展,社会的行业出现多样化,也就需要各式
C# 里TreeView绑定数据库实现分类
C# 里TreeView绑定数据库实现分类 分类:导航控件TreeView/Menu/SiteMapPath 2010-03-22 21:33 45人阅读评论(0) 收藏举报 codes=c#] //从数据库中读取数据 SqlConnection con = new SqlConnection("server=127.0.0.1//sqlexpress;uid=sa;"); con.Open(); con.ChangeDatabase("STggggg"); SqlCommand cmd = new SqlCommand("select * from 产品树where NodeType='f'", con); //https://www.360docs.net/doc/1614090270.html,mandType = CommandType.StoredProcedure; SqlDataAdapter sda = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); try { sda.Fill(ds); } catch { } finally { cmd = null; con.Close(); } //往TreeView中添加树节点 //添加根节点 TreeNode tn = new TreeNode(); tn.Text = "所有产品"; https://www.360docs.net/doc/1614090270.html, = "0";//Name作为ID tn.Tag = "0";//Tag作为RootID tn.ImageIndex = 0; tn.SelectedImageIndex = 0; tv.Nodes.Add(tn);//该TreeView命名为tv tv.SelectedNode = tv.TopNode;
MFC 单文档中动态添加菜单项和响应菜单事件
MFC 单文档中动态添加菜单项和响应菜单事件 新建一个单文档程序 在查看菜单项中增加两个子菜单,分别为隐藏工具栏(ID_HIDE),新建菜单(ID_NEWMENU) 在Resource.h中增加一个ID_NEWMENU宏 #define ID_NEWMENU WM_USER+101 操作工具栏和状态栏 使用GetDescendantWindow函数获取工具栏和状态栏的指针为ID_HIDE添加消息映射,编辑代码如下 static bool m_Hide=false; m_Hide=!m_Hide; //获取工具栏指针 CWnd* pWndToolBar=(CWnd*)GetDescendantWindow(AFX_IDW_TOOLBAR); //获取状态栏指针 CWnd* pWndStatusBar=(CWnd*)GetDescendantWindow(AFX_IDW_STATUS_BAR); CMenu* pMenu=GetMenu(); CMenu* pSubMenu=pMenu->GetSubMenu(2); if(m_Hide) { pSubMenu->ModifyMenu(ID_HIDE,MF_BYCOMMAND,ID_HIDE,"显示工具栏"); if(pWndStatusBar!=NULL) pWndStatusBar->SetWindowText("隐藏工具栏"); if(pWndToolBar!=NULL) pWndToolBar->ShowWindow(SW_HIDE); } else { pSubMenu->ModifyMenu(ID_HIDE,MF_BYCOMMAND,ID_HIDE,"隐藏工具栏"); if(pWndStatusBar!=NULL) pWndStatusBar->SetWindowText("显示工具栏"); if(pWndToolBar!=NULL) pWndToolBar->ShowWindow(SW_SHOW); } 动态添加子菜单 为ID_NEWMENU增加消息映射,编辑代码如下 static UINT m_NewMenu=ID_NEWMENU+1; //获取菜单 CMenu* pMenu=GetMenu(); //获取索引为2的菜单项,即第3列菜单 CMenu* pSubMenu=pMenu->GetSubMenu(2); char buffer[1]; itoa(m_NewMenu-ID_NEWMENU,buffer,10); if(m_NewMenu<=ID_NEWMENU+5) { pSubMenu->AppendMenu(MF_SEPARATOR); //分隔线 pSubMenu->AppendMenu(MF_STRING | MF_ENABLED,m_NewMenu++, CString("新的菜单")+buffer); } //如果m_bAutoMenuEnable为true,则会依次检查View、Document、Frame的 //消息映射表是否有这个弹出菜单中每个菜单项的处理函数,澳门新濠天地官网https://www.360docs.net/doc/1614090270.html, 如果没有就会把那一项改为灰的 m_bAutoMenuEnable=false;
菜单树的设计与实现实验报告
一、问题描述 创建table保存具有层次结构的菜单树信息,记录菜单的ID,名称,描述,父菜单(可为空)和可用性(enable/disable),菜单的深度无限制。 二、实验内容及步骤 1.首先以sysdba身份登录数据库,命令为:conn / as sysdba 2.创建用户表空间menu,数据文件为:d:\menu.dbf,大小20M,相关命令如下: create tablespace menu datafile 'd:\menu.dbf' size 20M; 3.创建新用户yjmin,默认表空间为新创建的menu表空间,相关命令如下: create user yjmin identified by yjmin default tablespace menu; 4.为新创建用户yjmin授权connect和resource角色; 5.以新创建的用户yjmin登录数据库,命令为:conn yjmin/yjmin; 6.创建序列,自动生成菜单ID,相关命令如下: create sequence id_seq start with 1 increment by 1; 7.创建表menu_tab保存菜单信息: create table menu_tab (id number primary key, name varchar2(50) not null, description varchar2(200), parent_menu varchar2(50), available varchar2(10) not null); 8.向表menu_tab中插入菜单数据,以示例数据插入,并提交插入的数据。 9.打开PL/SQL输出信息,命令为:set serveroutput on; 10.创建函数获取菜单ID: create or replace function get_menu_id (v_name varchar2) return number as
VB控件 treeview用法详解
VB TreeView控件使用详解 (2012-06-16 15:08:16) 标签:分类: 第一小时:学习直接用代码将数据填充到树控件中。 为什么要先学习直接用代码将数据填充到树控件中因为这种方法是最简单的,代码也最容易理解,学习树控件,先将这个学会,已经掌握了一半,所以先不要急着想怎么将表中的数据填充到树控件中,在第一小时里,树控件和表完全没有关系。 目的:我们要在树控件中建立如下的一个3层级关系 水果 | |__苹果 | |__红富士 | |__国光 | |__葡萄 |__红提子 |__青提子 解释:水果包含2种,一种是苹果,一种是葡萄,苹果又包含2种,一种是红富士,一种是国光,葡萄也如此。 在这里:“爷”是水果,“父”是苹果,葡萄,“子”是红富士,国光,红提子,青提子。概括如下: 爷(只能有一个):水果 父(这里有2个):父1:苹果;父2:葡萄
子(这里有4个):子1:红富士(父1苹果的子);子2:国光(父1苹果的子);子3:红提子(父2葡萄的子);子4:青提子(父2葡萄的子) 1、新建一个窗体,在窗体上放置两个控件,一个是Treeview,一个是Imagelist 如何找到这两个控件 Treeview控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Treeview Control,Version " Imagelist控件在“工具箱”的榔头加扳手图标(其他控件)中选“Microsoft Imagelist Control,Version " Treeview控件大家都明白干什么用的,Imagelist控件是干什么用呢原来这个控件是放图标用的,如果你想在树控件中显示图标的,这个图标都将储存在ImageList控件中。 2、设置这两个控件的属性 首先要讲清楚控件的属性设置有2种,一种是设置这个控件在ACCESS中的属性,比如名称等。一种是设置这个控件本身的属性。要设置这个控件在ACCESS中的属性,选中控件后按鼠标右键选“属性”就可以了。跟我们平时设置文本框什么的一样。要设置这个控件本身的属性,只要双击这个控件就可以了。 1)设置Treeview控件在ACCESS中的名称属性,将名称设置为“Treeview" 2)设置Imagelist控件在ACCESS中的名称属性,将名称设置为“Image" 2)设置Imagelist控件本身的属性,双击控件后,在弹出来的设置框中选“Images",单击“Insert Picture"按钮,在你电脑中选择你需要的图标。在“Key:”栏中填入“K1”。其他默认设置不用改。3)设置Treeview控件本身的属性,双击控件后,在弹出来的设置框中选“General”,在这个选项面版中有很多项设置,大多数是设置树控件的显示格式,你自己慢慢研究。这里我们将第一项“Style"选7,在第五项“Imagelist"选项中将我们放置的Imagelist控件“Image"选上。这项设置就将图标和树控件联系了起来。 3、写代码将数据填充到树控件中
C#动态创建菜单
C#动态创建菜单 一、加入所需数据 1、创建数据表: create table t_SysMenu( FMenuName varchar(50) not null , FMenuText varchar(50) not null , FMenuEvent varchar(100) , FMenuShortcutKeys varchar(50) null, FMenuIcon int default 0, FMenuSequence int default 0, FParentNo varchar(21) not null , FStatus char(1) default '1',--- FFlag char(1) default '1',--- FCreateDate datetime default getdate() , FCreator varchar(20) null , FModifyDate datetime default getdate() , FModifier varchar(20) null , FMemo text null , constraint PK_t_SysMenu primary key(FMenuName) ) go 2、插入数据: MenuItemBase 基础资料(&B) NULL NULL 0 MenuItemBase_01 系统代码 MenuItemBase_01_Click NULL MenuItemBase MenuItemHelp 帮助(&H) NULL NULL 0 MenuItemHelp_About 关于(&A) MenuItemHelp_About_Click NULL MenuItemHelp MenuItemHelp_Cat 目录(&C) NULL F1 MenuItemHelp 二、新建项目-> Windows 用应用程序 1、界面如图aa: 拖入一菜单项MenuStrip并命名为sysMenu 2、代码段: using System; using System.Collections.Generic; using https://www.360docs.net/doc/1614090270.html,ponentModel; using System.Data;
动态添加菜单项、子菜单、右键菜单 VC
动态添加菜单项、子菜单、右键菜单 VC 动态添加菜单项、子菜单、右键菜单(VC)2010-06-27 16:56如何动态添加菜单/菜单项、子菜单、右键菜单 有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服。若是SDK编程,那就用API吧。 CMenu menuMain,menu1;//首先定义CMenu对象 一、创建菜单,有两种方法 1.用LoadMenu函数从资源加载 menuMain.LoadMenu(IDR_MAINFRAME);//从资源加载,这里使用SDI的主菜单资源 2.用CreateMenu函数创建 menu1.CreateMenu();//创建菜单,还没有菜单项 二、添加菜单项,可用AppendMenu()在菜单的最后加、InsertMenu()在指定的位置加. //ID_TEST1在Resource.h中定义,随便给个整数值,不要和已有的重复就行了 menu1.AppendMenu(MF_STRING,ID_TEST1,"Test1");//第一项菜单项 menu1.AppendMenu(MF_STRING,ID_TEST2,"Test2");//第二项菜单项 menu1.InsertMenu(1,MF_BYPOSITION|MF_STRING,
(UINT)ID_TEST1,"ID_TEST1");//在第二项菜单项前添加新菜单项 三、添加子菜单 同样用AppendMenu()、InsertMenu()函数。不过要注意参数的设置。 menu1.AppendMenu(MF_BYPOSITION|MF_POPUP|MF_STRING, (UINT)menuMain.GetSubMenu(0)-m_hMenu,"子菜单"); //第二个参数是菜单的句柄HMENU 四、删除菜单 用DeleteMenu()、RemoveMenu()函数来删除指定位置的菜单/菜单项。 两者区别:如果菜单项是一个弹出式菜单,那么DeleteMenu和RemoveMenu之间的区别就很重要。DeleteMenu清除弹出式菜单,但RemoveMenu不清除它。一个是彻底的删除,一个只是移除. MSDN:1.The DeleteMenu function destroys the handle to the menu or submenu and frees the memory used by the menu or submenu.它使菜单或者子菜单的handle无效(destroys)。2.RemoveMenu does not destroy the menu or its handle,allowing the menu to be reused.可以再利用,并不从内存中将menu删除。 五、添加右键菜单 CMenu menu1; menu1.CreatePopupMenu();//动态创建弹出式菜单对象 menu1.AppendMenu(MF_STRING,ID_TEST1,"菜单项1"); menu1.AppendMenu(MF_STRING,ID_TEST2,"菜单项2"); menu1.InsertMenu(2,MF_BYPOSITION|MF_POPUP|MF_STRING,
vb TreeView 控件应用实例
vb TreeView 控件应用实例 2009-11-14 20:52 TreeView 控件应用实例:将 TreeView 绑定到 Biblio.mdb 数据库 应用示例:DataTree.vbp 本章的代码示例是从应用示例 DataTree.vbp which is listed in the Samples directory 中得到的。 可将数据库中的数据绑定到 TreeView 控件。下面的示例将 TreeView 控件绑定到 Biblio 数据库,该数据库可以在 Visual Basic CD 中找到。该应用实例将 Publishers 表作为树节点的第一层。如果一个出版商对应于一个或多个书名,则这些书名将作为该出版商的子节点加入树中。 图 2.42 与数据绑定的 TreeVew 控件 下面的代码用到了如下对象: Data Access Object Library(3.5) 名为“frmDataTree”的 Form 对象 名为“tvwDB”的 TreeView 控件 名为“cmdLoad”的 CommandButton 控件 将 Biblio.mdb 数据库绑定到 TreeView 控件 在工程中添加对数据访问对象(DAO 3.0)的引用。 为 Database 和 Node 对象创建模块级的变量。 在 Form Load 事件中,用 OpenDatabase 语句将 Database 对象变量设置为 Biblio 数据库。 用 Nodes 集合的 Add 方法创建顶层的节点对象。 在 CommandButton 的 Click 事件中,创建两个 Recordset 变量,并将它们设置为Publishers 和 Titles 表。
树形菜单的实现.doc
JSP树形菜单的实现(转载) (2009-04-20 15:21:03) 转载 标签: 分类:技术讲解 杂谈 1。原理简介 dtree是一个免费的javascript脚本,只需定义有限的几个参数,就可以做出漂亮的树型菜单。下载目录:https://www.360docs.net/doc/1614090270.html,/javascripts/tree/ 以下是dtree的用法示例: 1)初始化菜单 显然,如果用动态的脚本来初始化菜单数组(asp,jsp均可),那就可以很方便的实现动态的树型菜单了。
2。jsp动态实现 分以下步骤实现动态的树型菜单: 1)在数据库建tree_info表,有nodeId,parentNodeId,nodeName,nodeUrl四个字段,来存储节点信息。 2)编写java类,用于从数据库找出节点信息,并且生成javascript脚本。 3)编写tag类。用于封装逻辑,简化jsp的开发。 4)建一个web程序进行测试。 3。详细过程 1)在数据库建表,脚本如下: CREATE TABLE `test`.`tree_info` ( `node_id` INTEGER UNSIGNED NOT NULL DEFAULT -1, `parent_id` INTEGER UNSIGNED NOT NULL DEFAULT -1, `node_name` VARCHAR(45) NOT NULL, `ref_url` VARCHAR(45) NOT NULL, PRIMARY KEY(`node_id`) ) 我使用mysql数据库,如果脚本细节有出入,请自行修改 按照上面的dTree示例插入数据 2)编写TreeInfo.java,这个类用于封装节点信息 package com.diegoyun.web.tree; public class TreeInfo { private int nodeId = -1;//node id private int parentId = -1;//parentId private String nodeName = null;//node name private String url = null;//url references