unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Edit2: TEdit;
    procedure Msg(str:string);............................A
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }    procedure Msg(str:string);............................B
  public
    { Public declarations }
     procedure Msg(str:string);............................C
  end;var
  Form1: TForm1;
  procedure Msg(str:string);............................D
implementationuses DateUnit;{$R *.dfm}  我现在有个过程  procedure Msg(str:string);我分别把它放在A,B,C,D有何不同? 请那位大侠分别详细讲解一下?A处与B处,C处与D处的区别?多谢

解决方案 »

  1.   

    A: 类的方法,属于published区
    B:  类的方法,属于private区
    C:  类的方法,属于publick区
    D:  全局函数,不属于TForm1类的函数
      

  2.   

    A区:published区 放在该区的除了Public属性外还可以在设计的时候从object inspector里查看操作。比如你把一个系统自动产生的Button的Click事件过程放在Public区,这个时候你查看Object Inspector的Event的Onclick的值已经没有了。
    B区:私有成员区
    C区:公共成员区
    D区:不属于类成员了,仅仅是一般的过程。
      

  3.   

    A: 类的方法,属于published区
    B:  类的方法,属于private区
    C:  类的方法,属于publick区
    D:  全局函数,不属于TForm1类的函数
    private里的东西只有类本身和, 同在一个单元里的类可以看到, public里,就是在哪都可以看到, (尽量少用,除非提供接口), published里, 和public差不多, 只是可以在object inspector里看到
      

  4.   

    没有什么灵活的应用控件自带的放在published
    不希望与其他类交互的放在private
    与其他类的接口放在public
    D区:除了子函数以外,很少使用
      

  5.   

    1、根据函数或过程的域可以分为:
    全局函数:整个工程中都可以访问,而且有可能共享给其它工程。这类函数可以放在一个单独的Unit文件里。
    局部函数:只有本Unit文件可以引用,这类函数一般放在Unit文件的implementation段。
    过程或函数内部过程或函数:如果某个函数或过程的调用只出现在某个函数或过程里,则可以在过程或函数里面定义这个函数或过程。
    proceudre aaa
    function getname:string;
    begin
    end;
    var
      strName:string;
    begin
       strName:=getname;
    end; 
    类成员:作为类的一个成员出现。具体类成员的访问属性可以参考相关书籍。
      

  6.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Button2: TButton;
        Edit2: TEdit;
        procedure Msg(str:string);............................A
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }    procedure Msg(str:string);............................B
      public
        { Public declarations }
         procedure Msg(str:string);............................C
      end;var
      Form1: TForm1;
      procedure Msg(str:string);............................D
    implementationuses DateUnit;{$R *.dfm}procedure Msg(str:string);............................E
    begin
     .......
    end
      写在E处 有如何理解呀 ? 是不是效果和写在d处一样?
      

  7.   

    E处我的意思是不声明,直接写出实现过程!  而不是A, B, C, D的实现部分!大家能明白我的意思吗?
      

  8.   

    在E区,这个过程只能是在本单元调用.是私有的
    还有一点说一下:在编译指令($M-)时A区等同C区
      

  9.   

    A: 类的方法,属于published区
    B:  类的方法,属于private区
    C:  类的方法,属于publick区
    D:  全局函数,不属于TForm1类的函数
    以上注意与类方法区分.
      

  10.   

    在Object pascal中,类是分为5种权限的:public:
    private:
    protected:
    _published:
    automitected:分别是公有,私有,保护,发布和自动