Treeview 节点文本后面加按钮如何实现

caonumber 2014-06-10 09:49:11
现在遇到一个问题,客户要求在Treeview的每个节点文本后面 有几个按钮,并且每个按钮都可用响应点击事件,不知道有没有人知道这个按钮咋弄上去不?弄图片我到是知道可用绘上去,但是按钮没弄过,并且还要响应点击事件,这个有点为难,在此请知道的大牛赐教了
...全文
463 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
caonumber 2014-06-23
  • 打赏
  • 举报
回复
很令人抓狂....
Andy-88 2014-06-13
  • 打赏
  • 举报
回复
著實 很令人抓狂
金卯刀 2014-06-12
  • 打赏
  • 举报
回复
引用 5 楼 caonumber 的回复:
[quote=引用 2 楼 sz_haitao 的回复:] Treeview有点击事件,可以根据坐标判断是 点中 哪个节点,哪个按钮。。。。
但是这种点击效果没得。点击的状态很生硬,不能做到像真正的点击按钮那种[/quote] 如果只是一张按钮图片,效果当然会比较生硬。准备三种状态的按钮图片: mouse hover,mouse down,normal。
leejunokokok 2014-06-12
  • 打赏
  • 举报
回复
引用 4 楼 caonumber 的回复:
确实很无聊的要求。客户不习惯用右键,他就想把常用的功能,用左键点击。真是麻烦啊
嗯 赞同
caonumber 2014-06-12
  • 打赏
  • 举报
回复
引用 2 楼 sz_haitao 的回复:
Treeview有点击事件,可以根据坐标判断是 点中 哪个节点,哪个按钮。。。。
但是这种点击效果没得。点击的状态很生硬,不能做到像真正的点击按钮那种
caonumber 2014-06-12
  • 打赏
  • 举报
回复
确实很无聊的要求。客户不习惯用右键,他就想把常用的功能,用左键点击。真是麻烦啊
hj8090 2014-06-11
  • 打赏
  • 举报
回复
很无聊的要求。 如果是自带的Treeview,最好不要做。 用PopupMenu菜单好了。
haitao 2014-06-10
  • 打赏
  • 举报
回复
Treeview有点击事件,可以根据坐标判断是 点中 哪个节点,哪个按钮。。。。
caonumber 2014-06-10
  • 打赏
  • 举报
回复
自己顶一个,期待大牛出现
一个“个人资料管理”工具软件,采用树型结构管理各种知识。 左边是一棵树,点击之后,在右边显示一个文本编辑器,用于显示和编辑信息。 1、树节点操作 左边的树支持所有常见的节点操作(可以使用上部的工具栏按钮,或者是右击树节点从弹出菜单中选择各种命令): ◆ 节点新建/删除/改名:必须实现的功能。 ◆ 节点升级(可选):将节点提升一级,成为其父节点的兄弟。 ◆ 节点降级(可选):将节点层次降低一级,成为其兄弟的儿子(瞧这辈份乱得!) ◆ 节点上移/下移(可选):在同一级节点中位置移动…… ◆ 剪切/复制(可选):子树搬家,就是将某个节点(包括其所有的子节点)移到另一个地方成为那个节点的新儿子。 可以在标准的TreeView控件基础之上实现。 2、信息的编辑 每个树节点都关联着一个简单的文本编辑器,可以直接使用TextBox,以纯文本方式保存信息,也可以封装RichTextBox支持具有比较丰富样式的文本(就象Word文档那样) ◆ 节点相关联信息的显示与基础编辑功能:必须实现的功能 ◆ 打印(可选):将信息送到打印机输出 ◆ 查找与替换(可选):可以在文本中搜索特定的词并高亮显示 ◆ 辅助功能(可选):任何一个你觉得需要实现的功能,比如给文本上行号
第五部分、操作人员管理设计说明 操作人员维护模块的运行界面如图18所示 图18 操作人员维护界面 操作人员管理系统主要是用来管理对该软件进行操作的工作人员,同时系统所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员给予不同的权限 5.1程序描述 主窗体的代码不是很复杂,界面设计主要是利用了树型控件来实现的 程序模块名称:frmsq; 重要控件:TreeView、图像列表Imagelist等; 相关数据库表:user_load。 该窗体主要实现用户、删除用户、对用户进行授权,主要是面向管理人员对操作人员的操作进行管理,满足不同层次的人员对系统不同的需求。 5.2功能 操作人员管理系统主要是用来管理对该软件进行操作的工作人员,同时系统所提供的用户权限设置能够提高系统的安全性,并对不同性质的人员给予不同的权限,为了方便集中管理数据库表和数据源,我们把数据库的连接放到Global.bas模块中,应用ADO接口技术直接和SQL Server 2000数据库服务器建立连接。 5.3性能 精 度:通过鼠标点击或快捷键进入子模块,对在文本框内输入的大小写敏感,姓名和密码都区分大小写 灵 活 性:用户鼠标点击可以进行确认,按E键表示关闭当前窗口; 时间特性:用户输入后的验证时间在1秒之内; 5.4输人项 通过鼠标点击或快捷键。用户输入的姓名,密码字符信息;这些信息由系统管理员管理,存储在数据库表中 5.5输出项 提示信息为信息符号,参考的输出结果如图19,在屏幕上显示一个对话框: 图19:一个显示删除管理员的对话框信息 5.6算法 该窗体主要实现对用户授权,用户的授权是采用0,1编码来实现的。如果该用户拥有某项权限,则该权限为1;反之,则为0。 5.7流程逻辑 登录组件的逻辑流程如下: 图20:操作人员维护模块数据流程图 5.8接口 接口设计包括组件提供给外部的接口和对数据访问组件的调用接口,这些接口构成了该ActiveX 控件实现的内容,该窗体主要实现用户、删除用户、对用户进行授权,主要是面向管理人员对操作人员的操作进行管理,满足不同层次的人员对系统不同的需求。 Private SubCommand3_Click () '删除操作人员的命令按钮 '显示对话框,是否删除操作人员 t = MsgBox("你是否确定删除该操作员!", vbOKCancel, "确定吗?") If t = 1 Then '如果返回1,则进行删除操作 '判断是否有记录,如果没有记录,则提示选择操作人员 If rsdel.BOF = True Or rsdel.EOF = True Then t = MsgBox("请选择操作员姓名!", vbOKOnly, "无记录") Else '否则进行删除,并显示成功删除操作人员对话框 rsdel.Delete t = MsgBox("成功删除操作员姓名!", vbOKOnly, "成功") End If tvwdb.Nodes.Clear '清除TreeView节点的内容 tvwdb.Sorted = True '设置sorted属性为真 Set mnode = tvwdb.Nodes.Add() mnode.Text = "操作员姓名" '节点显示“操作员姓名” mnode.Image = 2 '设置节点的图表为imagelist1中的图2 Set rspsw = New ADODB.Recordset rspsw.open"select*from user_load",cn,adOpenStatic,adLockPessimistic Do Until rspsw.EOF '用rspsw中的记录对treeview进行载 Set mnode = tvwdb.Nodes.Add(1, tvwChild) '添treeview的孩子 mnode.Text = rspsw.Fields("user_name") '使其文本为rspsw字段中的用户名 mnode.Image = 1 '设置节点的图表为imagelist1中的图1 rspsw.MoveNext '记录往后移动一条 Loop Else Exit Sub End If '将用户数据库表中的用户名载到treeview控件中 Private SubPrivate Sub loadtreeview() tvwdb.Sorted = True '将treeview的排序设为真 Set mnode = tvwdb.Nodes.Add() mnode.Text = "操作员姓名" '节点显示“操作员姓名” mnode.Image = 2 '设置节点的图表为imagelist1中的图2 If cn.State = 1 Then Else Call condatabase '连接数据库 End If Set rspsw = New ADODB.Recordset '打开rspsw记录集 rspsw.open "select * from user_load", cn, adOpenStatic, adLockPessimistic Do Until rspsw.EOF '用rspsw中的记录对treeview进行载 Set mnode = tvwdb.Nodes.Add(1, tvwChild) '添treeview的孩子 mnode.Text = rspsw.Fields("user_name") '使其文本为rspsw字段中的用户名 mnode.Image = 1 '设置节点的图表为imagelist1中的图1 rspsw.MoveNext '记录往后移动一条 Loop End Sub Private Sub Form_Load() '窗体载过程 Call loadtreeview '调用loadtreeview过程 End Sub Private Sub tvwdb_NodeClick(ByVal Node As MSComctlLib.Node) '处理nodeclick事件 If Node.Index = 1 Then '如果只有一个根节点,则退出程序 Exit Sub End If Call check_condatabase '检查是否连接数据库,如果连接了则放弃,否则连接 If Node.Parent.Index = 1 Then '是根节点 nodename = Node.Text '将删除的变量赋值给nodename Set rsdel = New ADODB.Recordset '获得该节点的用户名的所有资料 rsdel.open "select * from user_load where user_name='" & nodename & "'", cn, _ adOpenStatic, adLockPessimistic End If End Sub 5.9存储分配 本程序在高级语言Visual Basic进行编码,直接的内存分配由VB运行时分配。 本组件内所依赖的变量、结构要求全部在组件元素内申明。 5.10注释设计 本部分代码的实现,应按照该注释规范来进行。 5.11限制条件 控件所依赖的的ActriveX DLL prjDBACCESS必须存在。 该控件在使用的时候,必须经过注册,并且在运行时,客户端程序必须安装有VB运行时的动态连接库。 在运行时,用户端的计算机必须有鼠标或触摸板等点输入设备。 5.12测试计划 本模块的输入基本有鼠标点击来完成,不需要特殊的测试用例,在增管理员是具体的测试用例和登录测试用例相同,这里不再一一例举。 5.13尚未解决的问题 本模块的没有尚未解决的问题。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧