delphi2005中treeview的用法

delphihua 2007-03-21 11:54:23
我已经添加了第一层的几个节点,是从数据库里select进来的。比如第一层节点是所有的部门。第二层节点我想添加部门中的人员,当然首先要从数据库里面
select Name from YGXX where Department = (其父节点,不知道怎么表述。)
请问如何添加?什么语法?好像2005里面跟delphi7的不一样!
...全文
476 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzw200 2008-09-13
  • 打赏
  • 举报
回复
以前用过 D7
一种方法
没有必要一下子用 FOR 把 子结点 都 NEW 出来
这样如果树的结点多的话 内存会急升! 不好
不如等用户点了一个结点 如果他下面有子结点 再生成新的子结点就可以了
好像 MS的资源管理器是这么做的
给一个C#的例子!

namespace G32
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{
DriveInfo[] drives = DriveInfo.GetDrives();
this.comboBox1.DataSource = drives;
}

private TreeNode GetTree(string path)
{
if (path!= "")
{
string[] folders = Directory.GetFileSystemEntries(path);
TreeNode tempnode = new TreeNode(path);
foreach (string folder in folders)
{
TreeNode node = new TreeNode(folder.Substring(path.Length, folder.Length - path.Length));
if (File.Exists(folder))
{
node.ImageIndex = 1;
tempnode.Nodes.Add(node);
}
else
{
node.ImageIndex = 0;
tempnode.Nodes.Add(node);

}
}
return tempnode;
}
return null;



}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.treeView1.Nodes.Clear();
string path = this.comboBox1.Text;
TreeNode tempnode = new TreeNode(path);
this.treeView1.Nodes.Add(tempnode);
}

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
string path = this.treeView1.SelectedNode.FullPath;
if (File.Exists(path))
{ }
else
{
TreeNode rootnode = GetTree(path);
this.treeView1.SelectedNode.Nodes.Clear();
foreach (TreeNode tempnode in rootnode.Nodes)
{
this.treeView1.SelectedNode.Nodes.Add(tempnode);
}
UpListView(e);
}
}
private void UpListView(TreeViewEventArgs e)
{
string[] info = new string[2];
this.listView1.Items.Clear();
string path = e.Node.FullPath;
if (path!="")
{
string[] folders = Directory.GetFileSystemEntries(path);
foreach (string folder in folders)
{
string filename = Path.GetFileName(folder);
string exname = Path.GetExtension(folder);
info[0] = filename;
info[1] = exname;
ListViewItem item = new ListViewItem(info);
this.listView1.Items.Add(item);
}
}
}

private void listView1_DoubleClick(object sender, EventArgs e)
{
ListViewItem item = this.listView1.SelectedItems[0];
string FullPath = this.treeView1.SelectedNode.FullPath+item.Text;
try
{  
if (File.Exists(FullPath))
{
Process.Start(FullPath);
}
else
{
MessageBox.Show("你点击的是文件夹!!");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}



}

}
}


drifer 2008-06-03
  • 打赏
  • 举报
回复
TREEVIEW里做一个循环:每个节点的ID就是DEPARTMENTID,通过这个DEPARTMENTID再在数据库里找一次,然后填充就可以了。
不明白的可以看看我的博客:
http://user.qzone.qq.com/37009655/blog/1212113580
panzi667 2007-09-16
  • 打赏
  • 举报
回复
学习中~帮你顶
ckpckphaha 2007-05-28
  • 打赏
  • 举报
回复
不懂也要帮楼主顶顶

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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