Delphiwe编写规范
1、变量声明d
所有的变量不论类型,均以v开头,如:
varvWorkerName:string;
vYear:integer;
vDate:tdate;
_recordset对象的前缀为vrs。
特殊的变量:vsql:基本上所有的sql语句均先用变量vsql斌值,如:
var vSql:string;
begin
vsql:=’select a.fdworker ‘;
vsql:=vsql ’ from tabworker a ‘;
end;
控件命名
类前缀示例
TEditededWorkerNo
TDBGridgrdgrdWorker
TComboboxcbocboWorker
TDateTimePickerdpdpDate
TButtonccOk cCancel
TCheckBoxchkchkCancel
TSpeedButtonsbsbWorker
TClientDataSetclnclnWorker
TDataSourcedsdsWorker
TAdoDataSetadodsadodsWorker
TPanelpanpanTop
TFormfrmfrmWorker
TDataSetProviderpvdpvdWorker
TTreeviewtrvtrvRawType
TListviewlstlstWorker
TPageControlpcpcWorkerInformation
TImageimgimgWorker
TMemoededMemo
2、函数及过程的命名3、
函数的前缀用f
例如:处理数据检查的函数:function fCheckData:boolean;
过程的前缀用p
例如:处理工人离职的过程:procedure pWorkerLeave;
命名规则
所有变量或控件的命名均采取英文意义命名,并且尽量不要用缩写。
例如:对输入工人姓名的TEdit的命名为:edWorkerName
而不要命名为:edWN等缩写形式
数据表的前缀为tab,字段的前缀为fd。
例如:工人表的名称为:tabworker
工人编号的字段为:fdworkerno
数据库操作方法
操作数据库(选择、插入、更新、删除):基本上用SQL语句来操作数据库,避免用Data Aware类的控件来操作数据库。
例如:插入一条生产记录:
varvSql:string;
vWorkerID:string;
vProductNum:string;
begin
xxxxxx;
………;
vsql:=’insert into tabproduct (fddate,fdworkerid,fdproductnum) values(‘;
vsql:=vsql vinfo.vdbsqldate(date);
vsql:=vsql ’,’ (vWorkerID);
vsql:=vsql ’,’ (vProductNum);
vsql:=vsql ’)’;
vinfo.execute(vsql);
end;
*注:vinfo代表一个自定义类TInfo的一个实例,里面封装了各种函数,具体内容在后面有说明。
用tdbgrid显示数据的方法:
1.使用TDBGrid TDataSource TClientDataSet TDataSetProvider TAdoDataSet控件。
2.连接方式为TDBGrid->TDataSource->TClientDataSet->TDataSetProvider->TAdoDataSet
3.先用_recordset对象来接收数据,4.然后把_recordset对象斌给TAdoDataSet控件,5.再调用TClientDataSet的Close方法、Open方法。
多用户操作数据的处理:通常把要操作的表进行锁定,锁定方法为用tinfo类的plocktable方法。
数据合法性检查方法
通常在要保存数据的时候之前进行数据合法性的检查,不要在输入的时候检查数据的合法性。
检查包括:
1.检查是否是整数;
用类TInfo的fIsInt函数判断。
2.检查是否是浮点数;
用类TInfo的fIsFloat函数判断。
3.检查是否是日期;
日期用TDateTimePicker来进行输入,通常不用检查。
4.检查是否没有输入;
用类TInfo的flen函数判断。
5.数据完整性的检查(检查内容会在开发文档中说明);
6.数据逻辑性的检查(检查内容会在开发文档中说明);
对于字符类型的数据,注意一定要用trim函数清除前后的空格。
类TInfo的说明
Tinfo类封装了一些基本的函数、过程及常数:
函数及过程:
6.function fIsFloat(vData:string):boolean;
7.function fIsInt(vData:string):boolean;
8.function fLen(vData:string):boolean;
9.procedure pBeginTrans;//事务开始
10.procedure pCommitTrans;//事务提交
11.procedure pRollBack;//事务回滚
12.procedure execute(const vSql:string;var vRs:_recordset;vAbort:boolean=false);overload;
安全的SQL执行函数1,vSql为要执行的SQL语句,vrs为接收返回值的_recordset对象,vAbort表示当发生属于连接(网络中断)的错误时,是否中止处理。通常执行包含在一个事务里的SQL语句时用true,而不在事务里的SQL语句不用指定。
例如:varvSql:string;
vrsWorker
begin
vsql:=’select a.fdworkerno,a.fdworkername ‘;
vsql:=vsql ’ from tabworker a ‘;
vinfo.execute(vsql,vrsworker);//这句没有指定vabort,则缺省为false
{上面这一句在执行,如果网络中断,导致不能连接到数据库,则会进行提示是否要重试,如果不要重试,则退出整个系统;如果重试,则会重试连接到数据库,但如果仍然不能连接,则重复进行提示直到连接上或由用户取消连接以退出系统}
vinfo.execute(vsql,vrsworker,true);//这句指定vabort
{上面这一句在执行,如果网络中断,导致不能连接到数据库,则会进行提示不能连接到数据库,所以执行中止。并会尝试连接到数据库。如果不能连接,则提示是否要重试,如果不要重试,则退出整个系统;如果重试,则会重试连接到数据库,但如果仍然不能连接,则重复进行提示直到连接上或由用户取消连接以退出系统}
end;
13.procedure execute(const vSql:string;vAbort:boolean=false);overload;
安全的SQL执行函数2,与1的区别在于1有返回数据集。
常数:
1.vDateStr:当前计算机的日期格式,2.如果当前计算机的格式为2位年份,3.则转化为4位年份。
例如:当前计算机的短日期格式为’yy-mm-dd’,则vDateStr为’yyyy-mm-yy’。
4.vCurrentUserNo:当前登录的操作员的编号。
5.vCurrentUserName:当前登录的操作员的名6.称。