我的一个窗体非常的简单,只是用来添加主窗体treeview1的节点,但是在用uses调用mainform窗体之后还是取不到treeview1的trreenode函数,不知要在此窗体中定义什么才能在此窗体中取到ttreenode,并为此窗体代码编写所用,代码如下,请大家帮手一下,此问题应不大,只是本人不知,查又查不到:代码如下:
unit addgroup;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
type
  Taddgroupfrm = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  addgroupfrm: Taddgroupfrm;
implementation
uses mainform;   //此处我调用了主窗体,但是却取不到该窗体中treeview1的ttreenode函数
{$R *.dfm}
procedure Taddgroupfrm.Button1Click(Sender: TObject);
var
strname:string;
//mynode:ttreenode;  //此处的ttreenode;就没有办法编译的过了,不知怎样才能让它成立
begin
strname:=edit2.Text;
strname:=trim(strname);
if strname='' then
exit;
//mynode:=formain.TreeView1.Items.AddChild(formain.TreeView1.Selected,strname);
//adddatatodb(mynode,formain.TreeView1.Selected);
//mynode.selected:=true;  //以上三行代码自也无法成立了,因此我必须要此函数,否则就无法
end;                            实现所要的功能

解决方案 »

  1.   

    uses mainform;   //此处我调用了主窗体,但是却取不到该窗体中treeview1的ttreenode函数
    ---------------------------------------
    应该是uses mainform所对应的单元啊
    改了看看
      

  2.   

    mainform是单元名,窗体名是formain
      

  3.   

    var i,j: integer;
        Nodes: TTreeNodes;
        Node: TTreeNode;
    begin
     dm.ADQ_QX.Active := false;
     dm.ADQ_QX.SQL.Clear;
     dm.ADQ_QX.SQL.Add('select 1,2,3 from xxx order by convert(int,1)');
     dm.ADQ_QX.Active := true;
     Nodes := TTreeNodes.Create(Treeview1);
     node := TTreeNode.Create(nodes);
     TreeView1.Items.Add(node,dm.ADQ_QX.fieldbyname(3).Text);
     dm.ADQ_QX.Next;
     for i := 0 to dm.ADQ_QX.RecordCount - 2 do
     begin
      for j := 0 to treeview1.Items.Count - 1 do
      begin
       if copy(treeview1.Items[j].Text,pos(']',treeview1.Items[j].Text) + 1,length(treeview1.Items[j].Text)) = dm.ADQ_QX.FieldByName(2).Text then
       begin
        node := treeview1.Items[j];
        TreeView1.Items.AddChild(node,'[' + dm.ADQ_QX.fieldbyname(1).Text + ']' + dm.ADQ_QX.fieldbyname(3).Text);
       end;
      end;
      dm.ADQ_QX.Next;
     end;
     for i := 0 to treeview1.Items.Count - 1 do
     begin
      treeview1.Items[i].ImageIndex := 0;
      treeview1.Items[i].SelectedIndex := 0;
     end;  TreeView1DblClick(self);
      TreeView1DblClick(self);  TreeView1.Items[0].Expanded := false;
    end;
      

  4.   

    楼上,这是什么意思,我不需要在此窗体建一个treeview1,我只是想继承前面主窗体中treeview1的node单元,从而为通过这个窗体为主窗体的treeview1的node添加事件,我现在就是继承不了
      

  5.   

    Public:
      mTreeView:tv:TTreeview;
    ...procedure ShowAddGroup(tv:TTreeview);implementationprocedure ShowAddGroup(tv:TTreeview);
    var
      mDlg:Taddgroupfrm;
    begin
     mDlg:=Taddgroupfrm.Create(Application);
      mTreeView:=tv;
     mDlg.ShowModal;end;在主窗体中引用该单元调用该函数
      

  6.   

    //mynode:ttreenode;  //此处的ttreenode;就没有办法编译的过了,不知怎样才能让它成立需要在单元接口uses子句中加上"ComCtrls",就OK了。另外,子窗口直接引用主窗口中的控件,这种方式不可取,单元之间是紧藕合的关系,不利于今后软件的修改和维护。