用TreeView实现树菜单

【Delphi 基础知识 37】TreeView控件的详细使用 Delphi 中的 TreeView 是一个常用的组件,用于显示层次化的数据结构,如树形目录或组织结构。可以启用节点的编辑模式,使用户可以直接在 TreeView 中编辑节点文本。等事件来响应节点的操作,比如单击、双击、展开、折叠等。事件来自定义节点的外观,比如更改文本、颜色、图标等。TreeView 支持拖放操作。集合可以遍历树中的所有节点。属性为 False,然后调用。属性来选择节点,也可以通过。属性来展开或折叠节点。获取当前选中的节点。事件来实现拖放功能。 阅读详情
 

用TreeView实现树菜单

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script> 被过滤广告
具体方法是:创建一个数据库,设计树图信息表S_Menu,包含NodeId、ParentId、NodeName、Address、Icon字段,其它字段根据实际业务而定,节点名称NodeName将在树型控件的节点上显示,NodeId字段保存节点的唯一标识号,ParentId表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView控件,修改其属性Id为tvMenu。 

数据结构如下:



CREATE TABLE [dbo].[S_Menu] (
[NodeId] [char] (6) COLLATE Chinese_PRC_CI_AS NULL ,
[ParentId] [char] (6) COLLATE Chinese_PRC_CI_AS NULL ,
[NodeName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Address] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Icon] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO



数据库如下:



NodeId ParentId NodeName Address  Icon
100000 0  公共查询部  icon_document.gif
100001 100000  人民币日报查询 public/a1.aspx icon_settings.gif
100002 100000  外币日报查询 public/a2.aspx icon_settings.gif
100003 0  分行科技部  icon_document.gif
100004 100003  人民币日报查询 tech/a1.aspx icon_settings.gif
100005 100003  外币日报查询 tech/a2.aspx icon_settings.gif
100006 0  福田支行  icon_document.gif
100007 100006  月存款进度表 a1.aspx  icon_settings.gif
100008 100006  月存款走势图 a2.aspx  icon_settings.gif
100009 0  罗湖支行  icon_document.gif
100010 100009  月存款进度表 a1.aspx  icon_settings.gif
100011 100009  月存款走势图 a2.aspx  icon_settings.gif



menu_left.aspx文件如下:



<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Page language="c#" Codebehind="menu_Left.aspx.cs" AutoEventWireup="false" Inherits="hzquery.menu.menu_Left" %>
<HTML>
<HEAD>
  <title>menu_Left</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
  <form id="menu_Left" method="post" runat="server">
  <iewc:TreeView id="tvMenu" runat="server"></iewc:TreeView>
  </form>
</body>
</HTML>



codebehind代码如下:



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;
using System.Data.SqlClient; 

namespace hzquery.menu
{
/// <summary>
/// menu_Left 的摘要说明。
/// </summary>
public class menu_Left : System.Web.UI.Page
{
  protected Microsoft.Web.UI.WebControls.TreeView tvMenu;
  SqlConnection Conn;
  SqlDataAdapter myCmd;
  DataSet ds;
  string cmdSelect; 

  private void Page_Load(object sender, System.EventArgs e)
  {
  Conn=new SqlConnection(Application["ConnString"].ToString());
  CreateDataSet();
  InitTree(tvMenu.Nodes,"0");
  }
  //建立数据集
  private DataSet CreateDataSet()
  {
  cmdSelect="select * from S_Menu";
  myCmd=new SqlDataAdapter(cmdSelect,Conn);
  ds=new DataSet();
  myCmd.Fill(ds,"tree");
  return ds;
  }
  //建树的基本思路是:从根节点开始递归调用显示子树
        private void InitTree(TreeNodeCollection Nds,string parentId)
  {
  DataView dv=new DataView();
  TreeNode tmpNd;
  string intId;
  dv.Table=ds.Tables["tree"];
  dv.RowFilter="ParentId=""  parentId  """ ;
  foreach(DataRowView drv in dv)
  {
    tmpNd=new TreeNode();
    tmpNd.ID=drv["NodeId"].ToString();
    tmpNd.Text=drv["NodeName"].ToString();
    tmpNd.ImageUrl="../webimages/" drv["Icon"].ToString();
    tmpNd.NavigateUrl="../" drv["Address"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.ID);
  }
  } 

  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
  InitializeComponent();
  base.OnInit(e);
  }
  private void InitializeComponent()
  {   
  this.Load  = new System.EventHandler(this.Page_Load); 

  }
  #endregion
}
}



作者:追风  来自:网络

窗口树形菜单Tree菜单源码-Delphi.rar Delphi实现的树形菜单功能,在窗体左侧显示,可展开折叠的多级菜单,在示例中,树形菜单只包括了一级子菜单,也就是它是两级的展开菜单,学会了如何实现,你可以扩展为更多层级的树形菜单。 立即下载

相关推荐

一个相当不错的Delphi TreeView树控菜单.rar

一个Delphi编写的相当不错的TreeView树控菜单,类似于Windows资源管理器中的树状菜单。   ParentFolder: IShellFolder; // 节点对应的文件夹的父文件夹的IShellFolder接口   Pidl, FullPidl: PItemIDList;// 节点对应的文件夹的相对和绝对项目标识符列表   HasExpanded: Boolean; // 节点是否展开   通过这个树形菜单制作实例,你可以学习到几个对项目标识符进行操作的函数,同时还有将二进制表示的项目标识符列表转换成有可识的项目名,获得每个文件夹在系统中的图标,获得系统的图标列表,生成文件夹管理树等。

Unity TreeView 树形菜单

Unity 树形菜单

明明明的博客 2117

TreeView实现的Delphi导航界面

摘要:Delphi源码,界面编程,TreeView  Delphi使用TreeView控件实现的导航界面,左侧的树控菜单就是基于TreeView控件,在一般的信息管理系统中,树形菜单使用广泛,通过本演示源码,你将学会不使用外部控件而实现Delphi窗体中的TreeView树控效果,我想是比较实用的源码例子。

TreeView实现主菜单功能

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

lyhoo163的专栏 9199

Delphi用TreeView树状菜单显示数据库内容..rar

Delphi用TreeView树状菜单显示数据库内容..rar

VB TreeView树形菜单(自定义展开菜单).rar

VB6.0 自定义TreeView树形菜单(展开菜单),类似于实现多级菜单、展开菜单的功能,当然也可当作Tree树控菜单来使用。最终的功能预览图请参见测试截图所示。   Set a = TreeView1.Nodes.Add(, etvwFirst, 1, "第一个")   TreeView1.Nodes.Add a, etvwChild, 3, "第一个-1"   TreeView1.Nodes.Add a, etvwChild, 4, "第一个-2"   TreeView1.Nodes.Add a, etvwChild, 5, "第一个-3"   TreeView1.Nodes.Add a, etvwChild, 6, "第一个-4"   TreeView1.Nodes.Add a, etvwChild, 7, "第一个-5"   TreeView1.Nodes.Add a, etvwChild, 8, "第一个-6"   Set a = TreeView1.Nodes.Add(, etvwFirst, 2, "第二个")   TreeView1.Nodes.Add a, etvwChild, 9, "第二个-1"   TreeView1.Nodes.Add a, etvwChild, 10, "第二个-2"   TreeView1.Nodes.Add a, etvwChild, 11, "第二个-3"   TreeView1.Nodes.Add a, etvwChild, 12, "第二个-4"   TreeView1.Nodes.Add a, etvwChild, 13, "第二个-5"   TreeView1.Nodes.Add a, etvwChild, 14, "第二个-6"

vDelphi中TreeView的使用方法介绍

<br />delphi中Treeview的使用介绍                                      <br />  每一个节点下子节点形成这一节点的Items属性,当前节点有一个唯一的Index(TreeNode的Index属性),用于说明子节点在Items中的位置,每一个节点下的子节点是顺序编号的,第一个是0,第二个是1,依次类推。用IndexOf方法获得子节点的顺序,绝对顺序 (AbsoluteIndex)则是指从Treeview第一个项开始的顺序值,第一个是0,如此推下去。

zhan5180的专栏 679

TreeView实现的Delphi导航界面..rar

TreeView实现的Delphi导航界面..rar

用TreeView实现树菜单(转贴)

用TreeView实现树菜单具体方法是:创建一个数据库,设计树图信息表S_Menu,包含NodeId、ParentId、NodeName、Address、Icon字段,其它字段根据实际业务而定,节点名称NodeName将在树型控件的节点上显示,NodeId字段保存节点的唯一标识号,ParentId表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置Tr

高山流水 1136

【农业生产系统模型】基于R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

APSIM模型有Classic和Next Generation两个系列模型,能模拟几十种农作物、牧草和树木的土壤-植物-大气过程,被广泛应用于精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、环境影响、农业可持续性、农业生态等诸多与农业生产和科研有关的领域。R语言是一门应用场景广泛、简单易学的程序语言,APSIM模型开发了许多R语言辅助包,在APSIM模型的气候、土壤、管理措施等数据准备,自动化模拟,参数优化和结果分析上都发挥着重要的作用。案例一:APSIM模型输入参数和土壤文件的制备。

2303_79243743的博客 1047

告别龟速!实测Copernicus Dataspace下载Sentinel-2数据的3个提速技巧(附Workspace批量操作)

本文分享了在Copernicus Dataspace平台高效下载Sentinel-2遥感数据的3个实用技巧,包括网络传输层优化、浏览器与API调优以及Workspace批量操作。通过这些方法,用户可将下载速度提升300%以上,特别适合科研人员和团队处理大规模数据需求。

weixin_30706691的博客 178

用treeView实现树菜单

具体方法是:创建一个数据库,设计树图信息表S_Menu,包含NodeId、ParentId、NodeName、Address、Icon字段,其它字段根据实际业务而定,节点名称NodeName将在树型控件的节点上显示,NodeId字段保存节点的唯一标识号,ParentId表示当前节点的父节点号,标识号组成了一个“链表”,记录了树

YAO的专栏 348

STM32铅酸蓄电池内阻测试仪的交流阻抗测量与数据采集优化

本文深入探讨了基于STM32的铅酸蓄电池内阻测试仪设计,重点解析了交流阻抗测量原理与数据采集优化方案。通过采用1kHz交流小信号注入和数字相敏检波技术,实现对电池欧姆内阻的无损精准测量,并详细介绍了硬件前端调理、ADC过采样及系统标定等关键优化手段,有效提升了测量精度与稳定性。

weixin_29168393的博客 487

C# → 用TreeView实现树菜单

具体方法是:创建一个数据库,设计树图信息表S_Menu,包含NodeId、ParentId、NodeName、Address、Icon字段,其它字段根据实际业务而定,节点名称NodeName将在树型控件的节点上显示,NodeId字段保存节点的唯一标识号,ParentId表示当前节点的父节点号,标识号组成了一个“链表”,记录了树上节点的结构。设计一个Web窗体其上放置TreeView...

aiqixiao2017的博客 1196

BOE CHPI协议解析:高速显示驱动的核心技术

本文深入解析了BOE CHPI协议,这是一种为高分辨率、高刷新率显示面板设计的时钟嵌入式高速点对点接口技术。文章详细阐述了其三层架构(物理层、链路层、协议层)、核心机制(如链路训练与BCC通道)以及如何通过高速串行差分传输解决大尺寸屏幕内部数据传输的带宽与干扰难题,是驱动8K、窄边框等高端显示应用的关键核心技术。

m9n0o的博客 545

NVIDIA驱动版本太低?手把手教你解决CUDA与PyTorch版本冲突问题

本文针对深度学习开发中常见的NVIDIA驱动版本过低导致的CUDA与PyTorch版本冲突问题,提供了从根源理解到实战解决的完整指南。文章详细解析了驱动、CUDA与PyTorch的依赖关系,并给出了升级驱动、降级PyTorch、使用Conda环境管理及Docker容器化四种核心解决方案,帮助开发者快速诊断并构建稳定的GPU开发工作流。

grpc6streamer的博客 970

treeview树型菜单实现

DataSet ds = new DataSet();ds = SqlHelper.ExecuteDataset(Globals.ConnStr(), CommandType.Text, "select * from t_sitetype where  flxid=1");  //取得节点数据DataSet siteds = new DataSet();siteds = SqlHelper.E

803

嵌入式硬件实战:RC、LC与RL滤波电路的设计与选型指南

本文深入探讨了嵌入式系统中RC、LC与RL滤波电路的设计与选型策略。通过生活化比喻和实战案例,详细解析了三种滤波电路的工作原理、应用场景及工程注意事项,帮助工程师根据电流大小、频率特征和成本预算选择最优方案,提升嵌入式硬件设计的稳定性和抗干扰能力。

kiwi8的博客 284
上一篇: XSL基础教程(一)
下一篇: Installshield 6 打包asp.net网站
c_sharp_Rookie
博客等级 码龄18年 42粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值