delphi2005中treeview的用法
我已经添加了第一层的几个节点,是从数据库里select进来的。比如第一层节点是所有的部门。第二层节点我想添加部门中的人员,当然首先要从数据库里面select Name from YGXX where Department = (其父节点,不知道怎么表述。)
请问如何添加?什么语法?好像2005里面跟delphi7的不一样! --------------------编程问答-------------------- 不懂也要帮楼主顶顶 --------------------编程问答-------------------- 学习中~帮你顶 --------------------编程问答-------------------- TREEVIEW里做一个循环:每个节点的ID就是DEPARTMENTID,通过这个DEPARTMENTID再在数据库里找一次,然后填充就可以了。
不明白的可以看看我的博客:
http://user.qzone.qq.com/37009655/blog/1212113580 --------------------编程问答-------------------- 以前用过 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);
}
}
}
}
补充:.NET技术 , 其他语言