unit AnimF;interfaceuses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Anim;type
  TFormAnimals = class(TForm)
    LabelVoice: TLabel;
    BtnVoice: TButton;
    RbtnAnimal: TRadioButton;
    RbtnDog: TRadioButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure BtnVoiceClick(Sender: TObject);
    procedure RbtnAnimalClick(Sender: TObject);
    procedure RbtnDogClick(Sender: TObject);
  private
    MyAnimal: TAnimal;    //請解釋此行
  end;var
  FormAnimals: TFormAnimals;  //請解釋此行implementation{$R *.DFM}procedure TFormAnimals.FormCreate(Sender: TObject);
begin
  MyAnimal := TAnimal.Create;
end;procedure TFormAnimals.FormDestroy(Sender: TObject);
begin
  MyAnimal.Free;
end;procedure TFormAnimals.BtnVoiceClick(Sender: TObject);
begin
  LabelVoice.Caption := MyAnimal.Voice;
end;procedure TFormAnimals.RbtnAnimalClick(Sender: TObject);
begin
  MyAnimal.Free;
  MyAnimal := TAnimal.Create;
end;procedure TFormAnimals.RbtnDogClick(Sender: TObject);
begin
  MyAnimal.Free;
  MyAnimal := TDog.Create;
end;end.
為什么窗体的定義和控件的定義不一樣?如TFormAnimals = class(TForm)
与LabelVoice: TLabel;
    BtnVoice: TButton;
    RbtnAnimal: TRadioButton;
    RbtnDog: TRadioButton;
先謝謝了!!!

解决方案 »

  1.   

    第一个地方声明一个对象属于TAnimal
    第二个基本同样
      

  2.   

    unit AnimF;interfaceuses
      SysUtils, Windows, Messages, Classes, Graphics, Controls,
      Forms, Dialogs, StdCtrls, Anim;type
      TFormAnimals = class(TForm)
        LabelVoice: TLabel;
        BtnVoice: TButton;
        RbtnAnimal: TRadioButton;
        RbtnDog: TRadioButton;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure BtnVoiceClick(Sender: TObject);
        procedure RbtnAnimalClick(Sender: TObject);
        procedure RbtnDogClick(Sender: TObject);
      private
        MyAnimal: TAnimal;    //請解釋此行
          //成员变量MyAnimal,类型TAnimal,作用域只在TFormAnimals内有效
      end;var
      FormAnimals: TFormAnimals;  //請解釋此行
    //全局变量FormAnimals,类型TFormAnimalsimplementation{$R *.DFM}procedure TFormAnimals.FormCreate(Sender: TObject);
    begin
      MyAnimal := TAnimal.Create;
    end;procedure TFormAnimals.FormDestroy(Sender: TObject);
    begin
      MyAnimal.Free;
    end;procedure TFormAnimals.BtnVoiceClick(Sender: TObject);
    begin
      LabelVoice.Caption := MyAnimal.Voice;
    end;procedure TFormAnimals.RbtnAnimalClick(Sender: TObject);
    begin
      MyAnimal.Free;
      MyAnimal := TAnimal.Create;
    end;procedure TFormAnimals.RbtnDogClick(Sender: TObject);
    begin
      MyAnimal.Free;
      MyAnimal := TDog.Create;
    end;end.
    為什么窗体的定義和控件的定義不一樣?如TFormAnimals = class(TForm)
    与LabelVoice: TLabel;
        BtnVoice: TButton;
        RbtnAnimal: TRadioButton;
        RbtnDog: TRadioButton;
    先謝謝了!!!TFormAnimals = class(TForm)
    是声明一个类型,
    LabelVoice: TLabel;
        BtnVoice: TButton;
        RbtnAnimal: TRadioButton;
        RbtnDog: TRadioButton;
    是该类型包含的成员变量,每个成员变量都有各自的类型可以认为var
      FormAnimals:TFormAnimals 
    声明了一个全局对象FormAnimals该对象类型为TFormAnimals
      

  3.   

    A TAnimate control displays an animation clip, consisting of a series of image frames. The control can load an animation from a file. To specify an animation, set the Filename property.
      

  4.   

    1、申明一个TAnimal类型的TFormAnimals类的私有变量MyAnimal
    2、申明一个TFormAnimals类型的变量FormAnimals
      

  5.   

    LabelVoice: TLabel;
        BtnVoice: TButton;
        RbtnAnimal: TRadioButton;
        RbtnDog: TRadioButton;
    是该类型包含的成员变量,每个成员变量都有各自的类型我知道上面是定義了一些相應類的具体實例,  也即是sdzeng(大头鸟)所說的成員變量
    而TFormAnimals = class(TForm)定義了一個FORM類,在程序中窗体實例究竟是指哪一變量?定義
    var
      FormAnimals: TFormAnimals;  //請解釋此行
    //全局变量FormAnimals,类型TFormAnimals
    有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
     MyAnimal: TAnimal;    //請解釋此行
    TAnimal是什么類型,DELPHI中有這种類型嗎?
      

  6.   

    {
    有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
    }
    当前窗体是FormAnimals,它是TFormAnimals的一个实例;IDE里面写的都是TFormAnimals的成员函数(而不是针对某个实例的)。执行的时候由TApplication create 一个 FormAnimals.TAnimal当然是自己随便编的,就跟apple、foo、bar一样。
      

  7.   

    {
    有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
    }
    FormAnimals变量的使用:如果你的TFormAnimals是作为主窗体或者静态创建的窗体,你打开工程文件就能看到他们被Application调用的语句了
    Application.createform(TFormAnimals,FormAnimals);如果你的窗体是运行时创建,你必须显示的生成TFormAnimals的实例。当然窗体中的FormAnimals: TFormAnimals;你也不可以在窗体中声明。
    当你需要创建一个窗体的实例的时候在去声明也可以
      

  8.   

    TFormAnimals = class(TForm) //声名一个类{
    有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
    }
    procedure TFormAnimals.FormCreate(Sender: TObject);//定义类的成员函数
    begin
      MyAnimal := TAnimal.Create;//相当于 self.MyAnimal := TAnimal.Create;
    end;
       //self 同VC++中的this指针
    TAnimal是什么類型,DELPHI中有這种類型嗎?//TAnimal是自定义类型
      

  9.   

    TAnimal是什么類型,DELPHI中有這种類型嗎?//TAnimal是自定义类型既然TAnimal是自定义类型
    這個類型由其他的那些類型組成呢?如結构体類型就包含許多其他類型!