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;
先謝謝了!!!
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;
先謝謝了!!!
第二个基本同样
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
2、申明一个TFormAnimals类型的变量FormAnimals
BtnVoice: TButton;
RbtnAnimal: TRadioButton;
RbtnDog: TRadioButton;
是该类型包含的成员变量,每个成员变量都有各自的类型我知道上面是定義了一些相應類的具体實例, 也即是sdzeng(大头鸟)所說的成員變量
而TFormAnimals = class(TForm)定義了一個FORM類,在程序中窗体實例究竟是指哪一變量?定義
var
FormAnimals: TFormAnimals; //請解釋此行
//全局变量FormAnimals,类型TFormAnimals
有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
MyAnimal: TAnimal; //請解釋此行
TAnimal是什么類型,DELPHI中有這种類型嗎?
有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
}
当前窗体是FormAnimals,它是TFormAnimals的一个实例;IDE里面写的都是TFormAnimals的成员函数(而不是针对某个实例的)。执行的时候由TApplication create 一个 FormAnimals.TAnimal当然是自己随便编的,就跟apple、foo、bar一样。
有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
}
FormAnimals变量的使用:如果你的TFormAnimals是作为主窗体或者静态创建的窗体,你打开工程文件就能看到他们被Application调用的语句了
Application.createform(TFormAnimals,FormAnimals);如果你的窗体是运行时创建,你必须显示的生成TFormAnimals的实例。当然窗体中的FormAnimals: TFormAnimals;你也不可以在窗体中声明。
当你需要创建一个窗体的实例的时候在去声明也可以
有什么用?,好象程序中并沒有使用到FormAnimals,而是使用的TFormAnimals,是不是TFormAnimals就是當前的窗体?
}
procedure TFormAnimals.FormCreate(Sender: TObject);//定义类的成员函数
begin
MyAnimal := TAnimal.Create;//相当于 self.MyAnimal := TAnimal.Create;
end;
//self 同VC++中的this指针
TAnimal是什么類型,DELPHI中有這种類型嗎?//TAnimal是自定义类型
這個類型由其他的那些類型組成呢?如結构体類型就包含許多其他類型!