问这个问题,说明你类型和实例两个概念混淆不清。
Self.Close可以写成Close
当然,通常情况下也可以用form1.Close
      ^^^^^^^^
弄清楚type和instance两个概念后,这就不是问题了。

解决方案 »

  1.   

    self是Delphi默认的一个指针,代表对象本身自己;
    form1.close;同样可以使用!
      

  2.   

    同意 chechy(我爱洁洁)
    TForm1是类,form1是类的实例--类似于人这个概念和具体某个人(如甲)
        在人的实现代码中你可以写self来指代自身,但无法写甲.*。
    不过如果你在其他Unit调用倒是可以写form1.close.
      

  3.   

    各位,不是都可以用。我有一个亲身的事例。
    要将本窗体中的所有Edit控件清空,本窗体是MDI子窗体(FormStyle:fsMDIChild)
    TForm1.Button1Click(Sender:Object);
    var
    i:integer;
    begin
     for i:=0 to self.ComponentCount-1 do
      if (self.Components[i] is TEdit) then
       (self.Components[i] as TEdit).Text:='';
    end;
    将上面的self换成Form1是绝对不行的!!
    但是如果该窗体是一个一般窗体(FormStyle:fsNormal)则可以。
    我的理解是MDI子窗体可以用一个窗体类创建出许多个一模一样的窗体(包括名字,比如都叫Form1),此时如果引用Form1是不行的,只能用self。
      

  4.   

    在TForm1,XXX()
    begin
    end;
    里写form1.XXX?
    那不成了Form1.Form1.XXX
      

  5.   

    就是:
    Type TForm1=Class(TForm)
    ...
    procedure X(...)
    begin
      Form1.XXX;
    end
    ...
    end;
    实例定义里调用自己这个实例明显是错误的,只能用Self指针指向
      

  6.   

    to ilikeff8(迷茫):
    你说的两个错误,根本就不是错误,是正确的(第二个中不要忘了在implementation前面加上var Form1:TForm1;)。你自己试试。