myShowHint1:Published
myShowHint4:全局
myShowHint5: 好象不能在这里定义,implementation下面是实现部分

解决方案 »

  1.   

    myShowHint1:是公有的
    myShowHint2:只能是类成员才能访问。
    myShowHint3:是全局的
    myShowHint4:不能这样定义,是错误的。
    myShowHint5:属于过程级的,只能在过程级上访问。
      

  2.   

    type
      TMainForm1 = class(TMainForm)
        nPerson: TMenuItem;
        : 
        :
      procedure myShowHint1(Sender: TObject); 
       private
        procedure myShowHint2(Sender: TObject);
        //私有 但可以被 myShowHint4,myShowHint5引用
      public
        procedure myShowHint3(Sender: TObject);
        //公有
      end;var
      MainForm1: TMainForm1;
        procedure myShowHint4(Sender: TObject);
       //全局 
        implementation
      
      procedure myShowHint5(Sender: TObject);
     //局部 只能在次单元中用
        :
      

  3.   

    public 任何可以引用该类的地方都可以访问
    protect: 只有本类及其派生类可以访问
    private: 只有本类可以访问
    你的1和published是一个概念,
    published,想到于这个类提供给外界的接口
      

  4.   

    procedure myShowHint1(Sender: TObject); 是做什么用的。莫非与procedure myShowHint3(Sender: TObject); 一样吗?????????
      

  5.   

    up,upup帮你我年后出走。。兄弟
      

  6.   

      TMainForm1 = class(TMainForm)
        nPerson: TMenuItem;
    <<类(这里为TMainForm1)的变量和过程均在此定义(TMainForm1默认模式为published)
        : 
        :
      procedure myShowHint1(Sender: TObject);
    <<同上  private
        procedure myShowHint2(Sender: TObject);
    <<属于该类的私有变量或过程的定义位置(不允许引用者访问,友类除外)  public
        procedure myShowHint3(Sender: TObject);
    <<属于该类的公共变量或过程的存放位置(允许引用者访问)  end;var
      MainForm1: TMainForm1;
        procedure myShowHint4(Sender: TObject);
    <<在implementation要用到的变量在此定义,与以上不同的是这里定义的变量可
    <<来自于预定义的各个类
    <<另: 这里不能定义过程(似乎转义过程也不能这样定义)implementation
      procedure myShowHint5(Sender: TObject);
    <<interface部分定义的过程的实现
         
      

  7.   

    var
      MainForm1: TMainForm1;
        procedure myShowHint4(Sender: TObject);
    这可以定义吗?我试了不行
      

  8.   

    procedure myShowHint4(Sender: TObject);应该写在var 的前面
      

  9.   

    ;
    ;
    var
      Form1: TForm1;
      procedure www(Sender: TObject);
    implementation{$R *.DFM}procedure www(Sender: TObject);
    begin
      showmessage(inttostr(TComponent(sender).tag));
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      www(sender);
    end;
    *********************
    :
    :
    var
      Form2: TForm2;implementation
    uses unit1;{$R *.DFM}procedure TForm2.BitBtn1Click(Sender: TObject);
    begin
      www(sender);
    end;
    大家可以试试我的代码,我已运行通过。
    所以我觉得procedure myShowHint4(Sender: TObject);是可以那样定义的;
    procedure myShowHint2(Sender: TObject)和procedure myShowHint3(Sender: TObject);
    是没有争议了,但procedure myShowHint1(Sender: TObject)和
    procedure myShowHint5(Sender: TObject);希望大家再说说,
    我也在试~~~~~~~
      

  10.   


    Unit Xxxxx;interface //对外部单元的接口部分uses //本单元使用到的其它单元名称
        //注:Delphi中的use与C++中的include有所不同,
        //在编译当前单元文件时,
        //仅将((use包含的)单元的)interface部分添加到当前的编译单元,
        //而没有实际地立刻编译引用单元的implementation部分consttypevar  //单元全局变量声明//此处为分界线--------------------------------------------
    implementation //内部实现部分usesconsttype var //单元全局隐含变量声明//etcinitialization //单元构造期后初始化finalization //单元销毁期前预销毁end;
            单元包含interface和implementation两部分,其中Interface部分的为和外部单元交互的接口(包括常量、变量、类型、使用单元等),具体的实现代码和内部使用的常量、变量、类型、使用单元在implementation部分--实现部分,这是在除了类封装的又一层模式化的封装。相比起来,C++的单元(或称文件)封装就显得有点而逊色了。我个人有时侯甚至在用C编写程序的时候都部分套用该形式,直观、简洁(尽管C++的编译器对这样的形式毫无兴趣),当然C的形式,如.h文件等也有它的方便之处。
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      TUserClass=class(TCustomControl) //或Tobject或其它派生子类,
      //本例使用TcustomControl,派生类将自动拥有OnClick事件,是为了便于说明
      //Delphi中TObject是所有类的始祖
        procedure ExampleFunction(Sender:TObject);
      private
      //该关键字下的数据和对象方法在在本单元外不能被访问,
      //而C++更为严格,同一单元文件内不同的类亦不可互访,需要使用友元(friend)
        FXxxxx: TuserType;
        Procedure SetXxxxx(const Value: TuserType);
      protected
      //该关键字下的数据和对象方法只能被当前类和子类访问
      public
      //可以被程序代码中的任意部分访问
      //下面为构造函数与析构函数,
      //严格的说应该是构造器(constructor)与析构器(destructor),为什么?
      //因为这两个函数只应用与类而不是对象--它们不属于所设计的对象的具体功能
        constructor Create(Aowner:TComponent);override;
      //override称为重载
        destructor Destroy;override;
      published
      //该关键字作为缺省的关键字,是OOP封装机制的扩充
      //譬如将上面的procedure ExampleFunction(Sender:TObject)写在此处效果相同
      //而该关键字的具体作用是提供一种设计时的可见性,
      //声明的属性一般都是公共元素
        property UserDefine:TuserType read FXxxxx write SetXxxxx;;
      //比如按照如上声明,在Delphi的Object Inspector中将会出现UserDefine属性,
      //又由于由TcustomControl派生,所以该类自动拥有OnClick方法;
      //而这时,下拉Object Inspector的下拉框将会有一个ExampleFunction供选择,
      //因为函数ExampleFunction也缺省的属于published部分的声明
      end;var
      UserClass1: TuserClass;
      //该表达式表示对象(UserClass1)是类(TuserClass)的一个实例的指针(注意是“指针”);
      //通过指针指向对象是Delphi的对象引用模式
      //初始时指针指向空(nil),
      //当使用构造器后(如UserClass1:=TuserClass.Create(self);)为对象分配内存空间,
      //该指针则指向实际对象的内存空间的入口处
    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    摘自:http://www.csdn.net/oldexpert/TopicView.asp?id=129319&table=200101有兴趣可以瞥一眼!
      

  11.   

    to enlightenment(阿明--进入准冬眠状态的超人) :
    你说的那个帖子我看了,真没想到还有这么精彩的讨论呀!!虽然我并不是直接问关于面向对象的问题,但多多少少还是有些联系的。最后up一次,让更多的人看到,晚上我就结帐:]
      

  12.   

    myShowHint4和myShowHint3这两个过程,好象只要有别的单元引用这两个过程的单元,那么引用的单元就可以使用myShowHint4和myShowHint3这两个函数了!这该怎么解释呢?