我是学习DELPHI的新手,下面是几个关于TREEVIEW的问题?
1.怎么才能使点击TREEVIEW的节点时打开另一个窗体(因为我是用TREEVIEW实现功能导航菜单的)
2.怎么使TREEVIEW能够读取数据库中的表而自动生成树,添加,删除,修改节点的时候只要编辑数据库中相应的值就可以了。
3.当展开一个父节点时,父节点上的图标变成打开的书本,关闭一个父节点时就变成一个关闭的书本。而当一个节点没有子节点时就是一个其它的图标。分不够的话我会继续加分的,谢谢!!

解决方案 »

  1.   

    1.在TREEVIEW的onchick中编写程序form.show;
    2.TreeView1.Items.AddFirst()增加第一个节点
      TreeView1.Items.AddChild()增加孩子节点
    3.根据标志判断 加入不同的图标。
      

  2.   

    例子很多啊,练习一下就好了
    http://www.yesky.com/20000626/85987.shtml
      

  3.   

    自己学会找资料
    http://community.csdn.net/Expert/Forum.asp
      

  4.   

    1.在TREEVIEW的onchick中写代码的时候,最好先判断一下节点所在的层treeview1.Selected.Level ,再打开你所需要打开的窗口。
    2.增加第一个节点node:=add(nil,table1.fieldbyname('fields1').AsString );
    增加这个节点的孩子treeview1.Items.addchild(node,table1.fieldbyname('field2').AsString );
    3.增加一个TImageList控件ImageList1,设置TREEVIEW的Images属性为ImageList1。
      

  5.   

    用DevExpress DBTree控件就可以实现你的树操作功能,http://www.delphibox.com上可以下载到,带你要求功能的示例。至于点击树创建窗体的话,一般是取到点击节点相关的窗体信息,然后创建窗体,给你个示例,我是把窗体存在Dll里来调用的。
    procedure TFrmMain.RunForm;
    type
      TProc = function (Ahandle :THandle;Owner: TComponent):TForm;stdcall;
    var
      lProc :TProc;
    begin
      if Assigned(lTreeDataSet) then
      begin
        with lTreeDataSet do
        begin
          if FieldByName('FunObj').AsString<>'' then
          begin
             if Assigned(lPanelForm) then
                FreeAndNil(lPanelForm);
             lDllHandle := LoadLibrary(PChar(FieldByName('FunPath').AsString));
             if lDllHandle<>0 then
               @lProc := GetProcAddress(lDllHandle,PChar(FieldByName('FunObj').AsString));
             if not (@lProc=nil) then
               lPanelForm := lProc(Application.Handle,PnlForm);
             lPanelForm.Align := alClient;
             lPanelForm.BorderStyle := bsNone;
             Windows.SetParent(lPanelForm.Handle,PnlForm.Handle);
             lPanelForm.Show;
          end
          else
            ShowAD;
        end;
      end;
    end;procedure TFrmMain.FunTreeClick(Sender: TObject);
    begin
      RunForm;
    end;