unit   Unit1;   
    
  interface   
    
  uses   
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,   
      Dialogs,   ADODB;   
    
  type   
      TForm1   =   class(TForm)   
      private   
          {   Private   declarations   }   
      public   
          {   Public   declarations   }   
          function   Test1:   string;     //   自定义函数1   
      end;   
    
  var   
      Form1:   TForm1;     
    
  implementation    function TForm1.Test1:string;//这里为什么是TForm1.Test1而不是Form1.Test1
  begin   
      Result   :=   'Test1';   
  end; 一个类不是有了对象才能够访问类中的函数吗? 

解决方案 »

  1.   

    TForm1是类,方法只能定义在类中,一个类可以有多个对象,Form1只是它的一个对象
      

  2.   

    我知道啊,我说的是function TForm1.Test1:string为什么访问方法是[类名.函数名]而不是[对象名.函数名]
      

  3.   

    概念搞不清楚啊
    其实implementation    后面还是一个方法的定义,不是调用啊
    在类中的方法算是一种前置声明吧
      TForm1       =       class(TForm)       
                private       
                        {       Private       declarations       }       
                public       
                        {       Public       declarations       }       
                        function       Test1:       string;           //       自定义函数1       
                end;       具体调用要在实例创建后(不包括类方法)
      

  4.   

    ************************************
    我知道啊,我说的是function   TForm1.Test1:string为什么访问方法是[类名.函数名]而不是[对象名.函数名]
    ************************************
       unit       Unit1;       
            
        interface       
            
        uses       
                Windows,       Messages,       SysUtils,       Variants,       Classes,       Graphics,       Controls,       Forms,       
                Dialogs,       ADODB;       
            
        type       
                TForm1       =       class(TForm)      //你在声明一个类,类名叫做TForm1,下面是类的变量和方法
                private       
                        {       Private       declarations       }       
                public       
                        {       Public       declarations       }       
                        function       Test1:       string;           // 你这里不就是在声明类的函数吗??    
                end;       
            
        var       
                Form1:       TForm1;           
            
        implementation         function   TForm1.Test1:string;  //你这里不就是类的函数的具体实现吗?
        begin       
                Result       :=       'Test1';       
        end;   还有
    ********************
    哎,现在人真现实啊.!
    ********************
    你咋了,怕问就自己搜索,jjyy的影响我看贴的积极性!
      

  5.   

    一个类的方法可以不用在implementation上面声明即可使用,声明它是因为它所属的是interface域。