回 帖 发 新 帖 刷新版面

主题:求助:Delphi中treeview的使用

我在做一个通用试卷生成系统(Delphi+SQL Server 2000),由于是新手,对treeview控件不是很熟,请高手帮帮忙!
 假设Unit1为工程中的一个单元,此单元实现用户向数据库提交试题的功能,Unit1对应窗体中左边为一个treeview组件,代表各章知识点,窗体右边为几个TEdit组件,让用户输入题目及答案,还有一个提交按钮,当用户点提交按钮后,除了将题目提交给数据库外,还要求将用户选择的知识点以一个标识插入数据库以标识该题目,问题是该如何得到该标识,我想是不是可以用各节点的索引表示?还是有其他办法?望高手指点,万分感谢!
我的邮箱:lisazxn@yahoo.com.cn

回复列表 (共6个回复)

沙发

这个需要在TreeView树建立时就要做好。给你一种思路:

procedure TForm1.Button1Click(Sender: TObject);//在某节点下新建一个节点
var
  T : TTreeNode;
begin
  T := TreeView1.Items.AddChild(TreeView1.Selected, 'abcc');
  T.Data := Pointer(12); //章节号12
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //单击刚刚新增的节点则ShowMessage节点附加的章节号
  showmessage(IntToStr(Integer(TreeView1.Selected.Data)));
end;

板凳

重新给你写了一个例子,你用这个试验吧:

procedure TForm1.Button1Click(Sender: TObject);//建立章节树
var
  N, NFirst : TTreeNode;
  I : integer;
begin
  TreeView1.Items.Clear;
  NFirst := TreeView1.Items.AddFirst(nil, '全部章节');
  for I := 1 to 10 do
    begin
    N := TreeView1.Items.AddChild(NFirst, '第'+IntToStr(I)+'章');
    N.Data := Pointer( I ); //章节号
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //显示用户选中的节点的章节号
  showmessage(IntToStr(Integer(TreeView1.Selected.Data)));
end;

实际应用中,还要继续丰富。上面的例子只是给你一种思路。估计网上有这样的第三方控件。

3 楼

仔细看了你给的例子,你的意思是不是在程序中动态地创立节点,然后将一个数值付给节点的data域作为标识?但是如果我通过Object Inspector中treeview的Items属性静态的增加各个节点,如图:
                            根节点
                            ------节点一
                            ------------节点二
该如何得到节点二的标识呢?

4 楼

程序中创建节点,与设计阶段创建节点,有什么不同吗?
使用TreeView的一般没有在设计阶段创建节点的。大多数都是在Form的Create阶段创建。无非是写几句代码而已。
如果有多级节点,还要在节点数据库中有一个节点编码字段。

如果你设计阶段创建节点,可以使用选中节点的Text,从数据库中检索对应的章节号。

5 楼

procedure TForm1.Button1Click(Sender: TObject);//建立章节树
var
  N, NFirst : TTreeNode;
  N1First,N2First:TTreeNode;
  I : integer;
begin
  TreeView1.Items.Clear;
  NFirst := TreeView1.Items.AddFirst(nil, '全部章节');
  N1First:=TreeView1.Items.AddChild(NFirst,'some string');
  N2First:=TreeView1.Items.AddChild(N1First,'some string');
end

6 楼

好东西

我来回复

您尚未登录,请登录后再回复。点此登录或注册