五、窗体和数据模板
5.1 窗体
5.1.1 窗体类型命名标准
窗体类型的取名应能表达使用该窗体的目的。类型定义应加以前缀T。前缀后面跟随着描述性的名字。最后,应加以Form后缀来描述名字。例如,一个“关于”的窗体的类型的名字应为:
TAboutFrom = class(TForm);
主窗体的定义为:
TMainForm = class(TForm);
一个用户接入窗体的名字应象:
TCustomerEntryForm = class(TForm);
5.1.2 窗体实例命名标准
窗体实例应是没有带前缀T的相应类的名字。例如,对应于前面窗体类型而言,其实例的名字应为:
类型名称 实例名称
TAboutForm AboutForm
TMainForm MainForm
TCustomerEntryForm CustomerEntryForm
5.1.3 自动创建窗体
只有主窗体可以是自动创建的除非有其它更好的理由不这样做。所有其它的窗体必需从工程选项对话框中的自动创建列表中移走。查阅以下部分来获得更多的信息。
5.1.4 模式窗体实例化函数
所有的窗体单元都应包含一个窗体实例化函数,该函数用来创建、设置、模式地显示窗体,并释放窗体。该函数应返回窗体的模式结果。该函数要传递的参数应遵循本文档指定的“参数传递”标准。通过这种方式封装的函数性有助于代码的再利用和维护。
该窗体的变量要从单元中移走,并再窗体实例的函数中进行本地式地定义。注意,这就意味着该窗体必需从工程/选项对话框中的自动创建列表中剔除。参考本文档后面的“自动创建窗体”。
例如,下面的单元展示了再GetUserData窗体中的一个函数。
unit UserDataFrm;
interface
uses
windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TUserDataForm = class(TForm)
edtUserName : TEdit;
edtUserID : TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
function GetUserData(var aUserName : String; var aUserID : Integer) :
Word;
implementation
{$R *.DFM }
function GetUserData(var aUserName : String; var aUserID : Integer) :
word;
var
UserDataForm : TuserDataForm;
begin
UserDataForm := TuserDataForm.Create(Application);
try
UserDataForm.Caption := ‘Getting User Data’;
Result := UserDataForm.ShowModal;
if (Result = mrOK) then
begin
aUserName := UserDataForm.edtUserName.Text;
aUserID := StrToInt(UserDataForm.edtUserID.Text);
end;
finally
UserDataForm.Free;
end;
end;
end.
5.2 数据模板
5.2.1 数据模板命名标准
数据模板的取名要符合使用该数据模板的目的。类型的定义应加以前缀T,后面紧接着描述性的名字,最后要加以后缀单词“DataModule”。例如,一个自定义的数据模板有时候应该象:
TCustomerDataModule = class(TDataModule)
一个命令式的数据模板的名字应象:
TOrdersDataModule = class(TDataModule)
5.2.2 数据模板实例命名标准
数据模板实例的名称应是对应不带前缀T的类型的名称。例如,对于前面的窗体类型而言,其实例的名称应为:
类型名称 实例名称
TCustomerDataModule CustomerDataModule
TOrdersDataModule OrdersDataModule
六、包
6.1 使用运行包和设计包的比较
运行时刻的包应只包含其它构件包所要求的单元或构件。另外,包含属性/构件编辑器和其它只为设计的代码应放入到设计时刻包中。注册单元应放在设计包中。
6.2 文件命名标准
包的名称应依照下面的例子:
“iiilibvv.pkg” - 设计时刻包
“iiistdvv.pkg” - 运行时刻包
字符“iii”表示一个3字符标识前缀。这个前缀用来表明公司、个人或其它有标识意义的实体。
字符“vv”表示为该包想要对应Delphi某个版本的包的版本号。
注意,包的名字中包含“lib”或“std”的意思是表明这是一个设计时刻包还是一个运行时刻包。
如果既是设计时刻包又是运行时刻包,该文件的命名是同上面一样的,例如,为Delphi 4开发者指南做的包的名称应为:
DdgLib40.pkg – 设计时刻包
DdgStd40.pkg – 运行时刻包