TreeView实现主菜单功能

软件在菜单MenuItem中,设置了软件的各项功能,以及启动相应模块。为了加大软件的灵活性,我们还可以将主菜单的项目,转变为TreeView,通过点击TreeView树中叶子(TreeNode),打开相应的模块,达到主菜单的功能。

1、设置全局变量

Last_Node: TTreeNode;用于保存鼠标点击TreeView1的最后一次节点。这样,只要判断TreeView1.Selected和Last_Node一致,造成同样节点二次点击,才能击发事件的效果。

2、MenuItemsToListView过程:

procedure TMDIFrm.MenuItemsToListView(mMenu: TMenuItem; nNode: TTreeNodes;p_node: TTreeNode);

var i: Integer;

c_node: TTreeNode;

begin

for i := 0 to mMenu.Count - 1 do                           // 菜单项目循环

begin

if mMenu.Items[i].Caption<>‘-‘ then

begin

c_node:= nNode.AddChild(p_node,mMenu.Items[i].Caption);

c_node.Data:= @mMenu.Items[i].OnClick;                 // Data指针类型,保存菜单事件

end;

MenuItemsToListView(mMenu.Items[i],nNode,c_node);        // 递归

end;

end;

3、FormCreat事件,读取菜单数据

var parent_node : TTreeNode;

begin

TreeView1.Items.Clear;

for i:= 0 to MainMenu1.Items.Count-1 do

begin

parent_node := TreeView1.Items.Add(nil,MainMenu1.Items[i].Caption);

MenuItemsToListView(MainMenu1.Items[i],TreeView1.Items, parent_node);

end;

end;

4、TreeView1.OnMouseUp鼠标事件

procedure TMDIFrm.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);

var pro : TNotifyEvent;

begin

if TreeView1.Selected=Last_Node then

begin

@pro:= TreeView1.Selected.Data;       // 读取事件地址

if Assigned(pro) then pro(nil);       // 执行事件

end;

Last_Node:=TreeView1.Selected;

end;

5、如果处于TreeView1节点上,通过按键事件击发事件

(1)取消TreeView1.OnMouseUp鼠标事件;

(2)Button事件:

procedure TMDIFrm.Button1Click(Sender: TObject);

var pro : TNotifyEvent;

begin

@pro:= TreeView1.Selected.Data;

if Assigned(pro) then pro(nil);

end;

时间: 2024-10-09 04:31:48

TreeView实现主菜单功能的相关文章

权限的简单想法

1.权限每个人进来看到不同的内容,有着不同的功能.比如boss可以设置下面人的权限,权限放大,权限缩小.开辟新权限,分配角色,角色分配人员,权限分配这些等等. 2.具体的shiro还是喜欢自己做权限的还是自己决定吧,用了shiro,退出之后,起作用啦.自己做权限ajax即使的做刷新,用着是方便,就是太费时间. 3.举个例子,boss给一个部门经理一些权限,部门经理可以把自己的权限发放给其他人,比如手下的高管..等等.这个比较的细致.(我自己的权限可以分派给其他的人员) 4.sql语句.如下: 2

PLSQL Developer软件使用大全

PLSQL Developer软件使用大全 第一章 PLSQL Developer特性 PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发.如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分.PL/SQL Developer侧重于易用性.代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势. PL/SQL Developer主要特性: PL/SQL编辑器,功能

Zabbix2.4.5 安装配置

1.Zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix的主要特点: - 安装与配置简单,学习成本低 - 支持多语言(包括中文) - 免费开源 - 自动发现服务器与网络设备 - 分布式监视以及WEB集中管理功能 - 可以无agent监视 - 用户安全认证和柔软的授权方式 - 通过WEB界面设置或查看监视

U3D架构系列之- FSM有限状态机设计六(总结篇)

由于最近一直赶项目进度,没时间写,昨晚终于项目终于完成了,空闲下来,做一个总结.在这一篇中主要是把前五章一起总结一下,以及通过举例演示如何使用?有限状态机在游戏中使用的地方非常多,比如我们界面之间的切换,角色的状态切换等等.所以非常值得大家去学习一下,接下来我们主要实现的功能,为了表达清楚,我通过图例给大家说明一下: 给大家解析一下,程序运行首先进入主菜单,里面有三个按钮,开始游戏,音量,退出游戏.先从第一个说起,如果是开始游戏,它会进入到下一个界面游戏界面,游戏界面有个返回主菜单功能.二者可以

《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)

因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内容表示是可选的) public 返回值类型 方法名(参数类型 参数名[,参数类型 参数2 ...]){     //代码块     //[return 数据]; } 方法的例子:     public static void main(String[] args) {         loop();

课程设计2 不是终结版的完成版

关于指令精简,这方面的事是由于loop,je,ja老报错,说越界多少字节.搜索了这方面信息才知道mov,dx,0,与sub dx,dx的区别.这个看来是以后的学习内容 . 另外想找份工作, 本人linux开发3年,主要用c,pro*c,自动编译用的是大伙都知道 的make与架子.对计算机底层技术特别感兴趣. 说实话对成为什么 样的人还真没太大印象(没法有印象),目前的想法是成为由努力而成的技术型人才.说努力是因为天赋不够好. 本人现在一家金融公司后任高级(有帽子哟)开发人员,工作风平浪静,属于学

Bugzilla 系统企业应用案例

目录 一. 概述: - 4 - 二. 目的 - 4 - 三. 执行原则 - 4 - 四. 管理办法 - 4 - 五. BUG处理流程图 - 5 - 六. 主要职责 - 6 - 七. 需求类问题处理 - 8 - 八. BUG等级定义 - 8 - 一.概述: 针对目前企业Bugzilla使用情况,发现其中存在很多缺陷,主要表现在: 1.问题模块未划分,导致测试人员查询问题比较困难,出现提交重复问题的现象 2.问题描述不统一.不详细,难理解 3.解决的问题研发人员未及时提交 4.研发人员提交解决的问题

课程设计2 终结版-未测试

公司项目ok了,抽空写完代码,苦于win2000对磁盘有保护,不能直接用int13h,无法测试.代码虽然完成,还要过几天把dos环境塔好再测试.代码反正放这了. 让博客园帮我云存储下.对磁盘结构了解也不多,不知道这代码跑出来是何种结果.至少在主界面输入f3是要屏蔽的. 代码如下: ;   display system time. press f1 to change the color displayed, press esc to return main list. f3 exit;    c

第四章 选择结构(二)

一.本章目标 掌握switch选择结构 能够综合运用if选择结构和switch选择结构解决问题 二.内容 1 swith 选择结构 1.1 为什么使用switch选择结构 问题: 韩嫣参加计算机编程大赛 如果获得第一名,将参加麻省理工大学组织的1个月夏令营 如果获得第二名,将奖励惠普笔记本电脑一部 如果获得第三名,将奖励移动硬盘一个 否则,不给任何奖励 public class Compete { public static void main(String[] args) { int ming