up,
我在例子里,看到这样写的:
proceduer inittreeview1();

解决方案 »

  1.   

    不会自动执行,
    你仔细找一找,肯定可以找到执行的地方,
    这么写估计是为了看起来形象,
    在 事件中没有的过程,
    在定义的地方必须增加 override 实现重载,
    那些过程可以重载你自己找找帮助,
    在 该对象的祖先对象中
      

  2.   

    奇怪,这个例子就是找不到overload;
    直接就用 procedure init
    我用就出错
    init的祖先对象是什么?
      

  3.   

    大概有两种可能:
    1、本单元中的自定义的过程;
    2、在USES的某个单元中定义的过程
    当然也可能调用了某个DLL中的过程,等
      

  4.   

    偶是菜鸟,很多时候是蒙的,这次:
    偶去掉了:procerdure inittreeview1;这个声明,
    在formshow事件写下:inittreeview1;
    在程序里直接引用:
    procerdure inittreeview1;
    begin
    ……
    end;
    既然编译过了,执行的也好,不可思议,why?
      

  5.   

    你把那个单元的完整代码贴出来,
    init不是对象,没有什么祖先对象
      

  6.   

    这是我写的那个:还有一点就是我刚出的贴子(小问题)unit untyhgl;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Grids, DBGrids, ComCtrls, ImgList, CheckLst;type
      Tf_yhgl = class(TForm)
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        TreeView1: TTreeView;
        GroupBox4: TGroupBox;
        Button1: TButton;
        Button2: TButton;
        Button4: TButton;
        ImageList1: TImageList;
        Button5: TButton;
        Button6: TButton;
        CheckListBox1: TCheckListBox;
        procedure Button1Click(Sender: TObject);
        procedure TreeView1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
          var AllowExpansion: Boolean);
        procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure TreeView1DblClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      f_yhgl: Tf_yhgl;
      index:integer;
      qxb:boolean;
      i:integer;
      qxs:string;
    implementationuses Untdata, untlogin;{$R *.DFM}procedure Tf_yhgl.Button1Click(Sender: TObject);
    var
    newnode:ttreenode;
    begin
      if  treeview1.selected.text='超级用户' then
           begin
          newnode:=treeview1.items.addchild(treeview1.selected,'新用户');
          newnode:=treeview1.items.addchild(newnode,'name');
          newnode.imageindex:=2;
          newnode.selectedindex:=2;
          newnode:=treeview1.items.add(newnode,'passwd');
          newnode.imageindex:=3;
          newnode.selectedindex:=3;
          end
      else
          if treeview1.selected.text='普通用户' then
            begin
             newnode:=treeview1.items.addchild(treeview1.selected,'新用户');
             newnode.imageindex:=1;
             newnode.selectedindex:=1;
             newnode:=treeview1.items.addchild(newnode,'name');
             newnode.imageindex:=2;
             newnode.selectedindex:=2;
             newnode:=treeview1.items.add(newnode,'passwd');
             newnode.imageindex:=3;
             newnode.selectedindex:=3;
           end
         else
             exit;
    end;procedure Tf_yhgl.TreeView1Click(Sender: TObject);
    begin
       data.qu_yhgl.close;
       data.qu_yhgl.parambyname('alias').value:=treeview1.selected.text;
       data.qu_yhgl.open;
       if data.qu_yhgl.recordcount=1 then
          begin
          qxs:=data.qu_yhgl.fieldbyname('qx').asstring;
          for i:=1 to length(qxs) do
               begin
                   if qxs[i]='1' then qxb:=true else qxb:=false;
                     case i of
                     1:CheckListBox1.Checked[0]:=qxb;
                     2:CheckListBox1.Checked[1]:=qxb;
                     3:CheckListBox1.Checked[2]:=qxb;
                     4:CheckListBox1.Checked[3]:=qxb;
                     5:CheckListBox1.Checked[4]:=qxb;
                     6:CheckListBox1.Checked[5]:=qxb;
                     7:CheckListBox1.Checked[6]:=qxb;
                     8:CheckListBox1.Checked[7]:=qxb;
                     9:CheckListBox1.Checked[8]:=qxb;
                end ;
            end;
         end;
    end;procedure Tf_yhgl.Button2Click(Sender: TObject);
    begin
        data.qu_yhgl.close;
        data.qu_yhgl.parambyname('alias').value:=treeview1.selected.text;
        data.Qu_yhgl.open;
           if  data.qu_yhgl.recordcount=1 then
               Treeview1.selected.delete
           else
               exit;
    end;
    procedure Tf_yhgl.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    begin
         data.qu_yhgls.close;
         data.Qu_yhgls.open;
      if data.qu_yhgls.recordcount=0 then
        begin
           treeview1.Items[0].Expand(true);
       end
      else
          exit;
    end;procedure Tf_yhgl.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    if TreeView1.GetNodeAt(X,Y)<>nil then
        if (TreeView1.GetNodeAt(X,y).Text='超级用户') or (TreeView1.GetNodeAt(X,y).Text='普通用户') then
            TreeView1.ReadOnly:=true
            else
            TreeView1.ReadOnly:=false;end;procedure Tf_yhgl.TreeView1DblClick(Sender: TObject);
    begin
      treeview1.selected.edittext;
    end;procedure inittreeview1();
    begin
     f_yhgl.button1.caption:='dfgfh';######################################## 1
    end;procedure Tf_yhgl.FormShow(Sender: TObject);
    begin
    inittreeview1;
    end;end.1,处被执行了
      

  7.   

    很正常啊,
    procedure Tf_yhgl.FormShow(Sender: TObject);
    在form显示的时候会自动执行,
    然后调用 inittreeview1过程,你有什么不理解的吗
      

  8.   

    inittreeview1 只是一个很普通的过程而已
      

  9.   

    嘿嘿,偶习惯了在on事件里做show,自己写procedure……,还不习惯,
    向init这些自己写的过程叫什么?还有其他的吗?
    另外,偶在程序里打开了treeview的节点,然后关闭窗体,以其他身份再登录,
    这时候,刚才被打开的treeview节点仍是打开着的,用有什么办法,能使treeview在
    其所在的窗体被关闭后,处于全部收缩的状态?
    谢谢
      

  10.   

    我正在做用户管理模块,所以……
    完成了,就没有tree了