delphi7经典教程.docx
《delphi7经典教程.docx》由会员分享,可在线阅读,更多相关《delphi7经典教程.docx(44页珍藏版)》请在冰豆网上搜索。
delphi7经典教程
软件程序编制规范
3.2、软件程序编制规范
3.2.1、编制程序:
根据系统分析要求编制程序,要求实现代码的复用、算法的优化、程序代码的优化、发现数据库设计不合理的及时反馈,减少循环嵌套,基础数据避免重复更新,保证进入的数据就是齐全的、正确的。
3.2.2、程序自测:
负责按测试方案进行自测,交付测试的程序不能出现不能正常运行、未按公式计算的简单错误。
3.2.3、程序测试:
将完成的程序转系统分析人员按测试方案测试。
3.2.4、开发工具的程序编制规范:
详见详细规范。
3.2.5、.net编程规范
一.安装方法:
1、 安装IIS与frontpage扩展:
点击控制面板,点击添加删除程序,选择添加删除WINDOWS组件,选择应用程序服务器。
点击详细信息,选择internet信息服务IIS,点击详细信息,选择frontpage2002serverextensions与internet信息服务管理器,按向导提示点击下一步,然后放入系统盘。
2、 要在防火墙退出的环境下进行安装,把网线拔掉。
3、 放入第一张光盘,他会提示安装.net必备,放入第三张光盘,根据向导提示安装。
安装完第一张、第二张就可以运行.net了.第四、五、六张为MSDN帮助文件。
(07.02.06添加)
3.2.6、Delphi7.0编程规范
第一部分:
软件安装与控件安装方法
一、软件安装:
光盘或网络安装后,将光盘CRACK目录下dent.slip拷贝到安装路径下。
未注册信息将不再显示。
二、基本安装:
1、对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;
2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可;
3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl文件名即可;
4、如果以上Install按钮为失效的话,试试Compile按钮;
5、是run time lib则在option下的packages下的runtimepackes加之。
如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决:
1、反安装的源文件拷入到Delphi的Lib目录下;
2、或者Tools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。
注意:
所安装的控件是否与你所用的Delphi版本相适应。
三、控件删除:
在Component/Install Packages中删除。
选Component/configure Palette…
有pages和components两个区域
双击components区域,选中要删除得控件,下面有得Delete按钮
但系统提供的控件只能Hide,不能delete。
打开控件所在的包文件(*.dpk),从中删除控件那个文件,再重新编译该包即可
如果是整个控件包都要删除的话,project->Option->Packages,删掉那个packages
四、详细控件安装
1、Ehlib控件
运行Ehlib.v3.4.for.Delphi5678\Ehlibv3.4\Delphi7\DclEhLib70.dpk文件,在弹出窗口中点击Conpile,再点击install,提示安装成功后在Delphi—Tools—EnvironmentOptions—Library—LibraryPath中添加路径Ehlib.v3.4.for.Delphi5678\Ehlibv3.4\Delphi7\
2、Fastreport控件
分别运行fastreport2.53\source\fr7.dpk,
fastreport2.53\source\ado\FRADO7.dpk,
fastreport2.53\source\BDE\FRBDE7.dpk,
fastreport2.53\source\DBX\FRDBX7.dpk
fastreport2.53\QueryBuilder\Source\dclOQB70.dpk
fastreport2.53\QueryBuilder\Source\ADO\dclOQBADO70.dpk
fastreport2.53\QueryBuilder\Source\BDE\dclOQBBDE70.dpk
fastreport2.53\QueryBuilder\Source\DBX\dclOQBDBX70.dpk,
fastreport2.53\QueryBuilder\Source\IBX\dclOQBIBX70.dpk文件,
在弹出窗口中点击Conpile,再点击install;
安装完毕后,在Delphi—Tools—EnvironmentOptions—Library—LibraryPath中添加路径:
fastreport2.53\source
fastreport2.53\source\ado
fastreport2.53\source\bde
fastreport2.53\source\dbx
fastreport2.53\source\ibx
fastreport2.53\QueryBuilder\Source
fastreport2.53\QueryBuilder\Source\ado
fastreport2.53\QueryBuilder\Source\bde
fastreport2.53\QueryBuilder\Source\dbx
fastreport2.53\QueryBuilder\Source\ibx
3、Raize控件
分别运行Raize\RC3\Source\Rz30Ctls_Dsgn70.dpk,Raize\RC3\Source\Rz30DBCtls_Dsgn70.dpk,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—EnvironmentOptions—Library—LibraryPath中添加路径:
Raize\RC3\Source
4、VirtualTreeview控件
VirtualTreeview4.0.12\VirtualTreeview\Packages\VirtualTreesD7D.dpk文件,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—EnvironmentOptions—Library—LibraryPath中添加路径:
VirtualTreeview4.0.12\VirtualTreeview\Packages
5、xlreport控件
分别运行xlreport\xlr4pro123.exe和xlreport\xlr4dfull123.exe,注意安装过程中只保留delphi7和demo两个选项即可,安装完毕后将安装路径下的AfalinaSoft\XLReport4\Source文件夹的所有文件拷到AfalinaSoft\XLReport4\d7units中,运行d7XLR4_D.dpk文件;同样将AfalinaSoft\ProOptionPack\Source内的所有文件拷到AfalinaSoft\ProOptionPack\d7units中,运行d7OPack.dpk文件
五、第三方控件的下载与安装:
用到的第三方控件在了解其用途后,经主任审批后,方可进行安装。
六、控件功能的学习方法:
凡第三方提供的控件均有DEMO的演示示例,可根据所学知识查看其属性设置及事件,运行演示结果,便可学习控件的功能,领会其功能,做到灵活运用。
七、将经常用到的控件直接拖动放在前面,使用起来比较方便。
第二部分:
程序设计要求:
一、所有代码必须有注释。
所有代码单行的注释用(//),多行的注释用{},注释用中文。
每段程序的注释说明要简洁明确,说明程序编制的目的及主要功能,按照系统分析文件的功能节点进行分段注释。
每段开头与结尾分别用一行’/’包括。
在每个功能段内部根据具体情况进行分段注释,每段开头与结尾分别用一行’/’包括。
1、程序(unit)头的注释:
标明对应的系统分析文件名和最早开始编制时间。
2、 函数(过程)(function,procedure)头的注释内容包括:
(1)函数(过程)的目的(purpose)。
(2)函数(过程)返回值(结果集)(returnvalue)的类型及含义(程序标准事件不用标明)。
(3)函数(过程)参数(parameters)的类型及含义列表(程序标准事件不用标明)。
(4)函数(过程)中使用的临时变量(var)的类型及含义列表。
二、所有项目、窗口、单元、控件、菜单等按照命名规范命名。
1、项目命名:
“P”+项目描述的第一个声码。
2、Form命名:
使用系统分析文件的程序名拼音头字母命名窗口。
如结存查询,窗口命名为jccx.再往下一级延伸的,在上级窗口名后加能区分要求的拼音头字母来命名。
3、Unit命名:
Unit的名称(name)用字母U后跟相应的Form名称。
4、自定义过程、函数(procedure,function)命名:
使用函数目的的拼音头字母命名。
5、简单变量、参数命名:
使用变量含义的拼音头字母命名。
6、控件命名:
一般情况下延用默认名。
Query控件命名:
query有复用的情况,命名时用qy1,qy2…标准命名,特定的query,命名时用“qy”+对应表名。
7、菜单命名:
延用默认名,含右键菜单。
三、所有直接调用DBGridEh的录入类程序必须添加标准右键菜单。
四、所有查询类程序必须有序号、合计,合计用页脚方式,动态形成序号,必须添加标准右键菜单,窗口必须有caption,必须标明系统分析人员、程序编制人员,所有录入类、循环计算类不得出现MESSAGE框为SQL语句代码,所有编译后的程序设置的断点要清除。
五、所有窗口均按照1024X768设置,窗口显示位置为桌面居中位置(设置position属性为poDesktopCenter),大小为占桌面屏幕的1/4为适,所有窗口必须设置为置前属性(设置Formstyle属性为fsStayOnTop),保证调用子窗口时显示在最前。
六、Dbgrideh的菜单使用右键标准菜单,包含筛选、升序、降序、多行合计、导出excel,基础库维护时还要有多行替换功能。
七、所有月份数据要形成月份表,如qcsjb、mksyjlb,并同时修改查询程序,利用通用的月份查询函数,每个月底要进行结转。
八、所有连接非SQL数据库的表(接口程序除外),必须建立SQL表,维护后导出,不允许直接读写。
九、编制程序要充分考虑输入时的出错情况:
判断是否输入了空格,是否输入了不合规则的内容,判断大小写,在程序中做出判断和限制。
如包装入库数据,导出VFP时必须为大写,可以直接将录入的内容转换在大写,再如进入结存数据,先判断录入的产品是否是存在的产品,否则造成结存表中的数据不正确。
十、所有单位引用统一、维护一致、显示顺序按照包装、加工、库……显示,考核汇报除外。
十一、对基础库维护信息都要记录,除记录字段更换信息外,还要求录入员和更新时间。
十二、实时计划、外贸业务、成本管理各类程序增加一级界面(点击主窗口按钮即显示的界面)时,均增加记录使用人、使用机器IP、使用计数信息,具体方法:
在新增form的
onshow事件中增加程序类型(ssjh、unit1、cbgl)+‘.jrmk(self.Caption)’;
onclose事件中增加程序类型(ssjh、unit1、cbgl)+‘.lkmk(self.Caption)’;
语句,用于记录模块使用信息。
十三、用程序实现的数据更改,在程序试运行前必须经主任审批,主任不在时由代理人员审批。
十四、所有录入类、查询类中的必须录入项,如没有录入必须提示,否则不能执行。
十五、所有计算类程序实现,先查看数据类型,用QY连接实现公式计算的,参照SQL函数使用方法,用DELPHI连接字段或变量计算的,参照DELPHI函数使用方法。
十六、代码必须采用缩进格式表示嵌套,多层嵌套的也遵循此规则。
标准格式,如下:
缩进快捷键:
CTRL+SHIFT+I为向后,CTRL+SHIFT+U为向前,选中部分块后可以直接按快捷键操作。
输写各层嵌套时可先将BEGIN……END对应,然后再进行嵌套。
whiledo
begin
ifthen
begin
ifthen
begin
end
else
begin
end;
end
else
begin
end;
end;
十七、跳转语句语法:
1、if语句:
会计算一个表达式,并根据计算结果决定程序流程。
If保留字后跟随一个生成boolean值True或False的表达式。
一般用“=”作为关系运算符,比较产生一个布尔型值。
当表达式为True时,执行Then后的语句。
否则执行else后的代码,if语句也可以不含else部分,表达式为False时自动跳到下一行程序。
If语句可以嵌套,当使用复合语句表达时,复合语句前后需加上begin……end。
Else保留字前不能加“;”,而且,编译器会将ELSE语句视为属于最靠近的IF语句。
必要时,须使用begin……end保留字来强迫else部分属于某一级的if语句。
(1)、单个条件:
if条件then
A、待执行语句单行时:
执行语句;
B、待执行语句多行时:
begin
语句1…
语句2…
……
end;
(2)、选择条件:
If(条件1)and(条件2)OR(条件3)……then
(3)、ELSE使用语法:
If条件then
语句1
Else
语句;
(4)、以上可以多层嵌套,每个嵌套里面均遵循以上语法。
2、case语句:
Case语句适用于被判断的变量或属性是整形、字符型、枚举型或子界型时用case语句进行逻辑跳转比编写复杂的if语句容易阅读,而且程序代码整形较快。
例:
ProcedureTform1.button1click(sender:
Tobject);
Var
Number:
integer;
Begin
Number:
=strtoint(edit1.text);
casenumberof
1,3,5,7,9:
label2.caption:
=’奇数’;
0,2,4,6,8:
label2.caption:
=’偶数’;
10..100:
Begin
Label2.caption:
=’在10到100之间’;
Form1.color:
=clblue;
End;
Else
Label2.caption:
=’大于100或为负数’;
END;
END;
END.
十八、循环语句语法:
1、repeat语句
i:
=0;
repeat
i:
=i+1;
writen(i);
untili=10;
2、while条件do
begin
end;
3、升序:
fori:
=0toado/降序:
fori:
=adownto0do
begin
end;
十九、在应用程序中所有QY的connection设置为主FORM中的Adoconnection,所有的连接数据库设置均在INI文件中实现。
二十、多条语句不能写在一行,一条语句过长应分行写,分行尽量做到平均、层次性与语句的完整性。
例:
qy2.SQL.Add('update'+bm+'setjhdh=jhdh*'+qy1.FieldByName('lb').AsString+''+
'whererq='''+zxrq+'''andgx='+''''+ListBox1.Items[ListBox1.ItemIndex]+''''+
'andcharindex(xm,'+''''+qy1.FieldByName('sm').AsString+''')>0');
二十一、程序流程要清晰,一条sql语句实现的功能要单一。
Sql查询结果使用虚拟表保存的,使用前后清除虚拟表。
二十二、使用else语句时要避免语句过长,造成ifelse混乱。
二十三、多个系统调用的模块,要形成DLL文件,要有模块使用记录,更新时同步更新。
二十四、遇到需要与VFP接口的程序,要将VFP表维护好以后形成SQL表,不能直接连VFP表,导出VFP表后在原程序中使用。
二十五、sql与delphi常用函数对照、使用方法及注意事项:
1、在delphi程序中用变量取数据库表中字段值时,用DELPHI的类型对应SQL表字段中的类型来声明变量的类型。
2、在程序中执行SQL语句时,用SQL语句的语法。
3、经常用到的函数列表:
delphi
sql
字段类型
字符型
string
varchar,nvarchar,char,text
整型
integer
int
小数型
double
float,numeric
日期时间型
tdatetime
datetime
函数
截取
Copy(maskedit1.text,1,2)
substring(rq,1,2)
字符位置
Pos(‘101’,qy1.fieldbyname(‘bhxs’).asstring)
Charindex(‘101’,bhxs)
取小数位数
Round(4.5)=5;round(3.5)=3;函数取值规则为四舍六入,五取偶,Formatfolat(’0.00’,1.1234)=’1.12’
Round(1.1234,2)=1.12
取整
Trunc(4.9)=4
Round(1.1234,0)=1
类型转换
Inttostr(qy1.fieldbyname(‘ddqs’).asinteger),floattostr,strtoint,strtofloat,datetimetostr
Cast(ddqsasvarchar(10))
convert(int,a.LcLastDate+10-a.sndate)
取长度
Length()
Len()
大写
Uppercase()
Upper()
小写
Lowercase()
Lower()
去空格
Trim
去左边的空格Ltrim()
去右边的空格Rtrim()
举例如下:
je:
=strtofloat(formatfloat(‘0.00’,qy1.fieldbyname(‘dj’).asfloat*qy1.fieldbyname(‘ddqs’).asinteger));
qy1.sql.add(‘selectround(cast(hgjsasfloat)/cast(jhjsasfloat),2)…’)
4、所有Format+类型的函数,返回的类型均为字符型,在使用时注意,类型要对应。
5、整形的字段进行数值计算时必须先转换成float型后再计算。
二十六、函数、过程的使用:
1、函数的声明:
函数头:
Function<函数名>(<形式参数表>):
<类型>;
函数体:
Begin
<语句>;
<语句>;
……
<语句>;
END;
2、在函数体中必须有一个赋值语句,将函数的返回值赋给函数名。
例:
FunctionTotal(x,y:
integer):
integer;
Begin
Total:
=x+y;
End;
3、函数的调用:
例:
ProcedureTform1.Button1Click(Sender:
Tobject);
Var
X,y,z:
integer;
Begin
X:
=2;
Y:
=3;
Z:
=total(x,y);//调用函数
Label1.Caption:
=inttostr(z);
End;
End.
4、函数在主FORM中声明,其它模块调用时,在USES窗口位置处,加引用的单元文件名,调用方法为FORM名+“.”+函数名。
按函数设置的参数赋值。
5、函数与过程的差异:
过程的关键字为Proceduce,在函数声明中,必须指明函数的返回类型,而过程不需要返回任何类型的值,无需声明返回类型,在函数体中,必须将函数的返回类型赋给函数名,而在过程中则不存在此语句。
6、函数及过程其它要求:
A、函数体或过程内容的编制在FORM的begin……END范围之内进行编制,是单独的,不要含在其它的控件或事件之内。
B、函数或过程内容查看方法:
按CTRL+SHIFT+鼠标点击,然后按向下箭头,便可达到函数体或过程内容。
C、函数体内容的编制方法:
先进行函数或过程声明,函数/过程命令+FORM名+函数/过程名+(参数1:
类型;参数2:
类型;)注:
返回的参数值与定义的类型一致,form名要与当前的FORM名一致,在BEGIN……end之间编制实现功能。
例:
ProcedureTcbgl.sx1(component:
string;form:
string);
D、函数或过程引用:
函数或过程所在的FORM名+“.”+函数或过程名+(参数1值,参数2值……),非参数定义的变量,要先赋值,再引用。
例:
cbgl.sx1(ActiveControl.Name,'ZZCLMX');
E、对不同的数据或通过参数赋值,执行同样的程序语句,多次复用的要抽出来做成函数或过程,以实现代码优化与复用。
F、跨月查询函数语句调用方法:
当月表名不带月份时,调用fycx函数,带月份时调用fycx1函数。
具体方法:
函数名(起始日期,截止日期,'表名',1);
a:
='';
a:
=a+'select字段from'+zzbm[0]+'条件';
fori:
=1tozzbm.Count-1do
begin
a:
=a+'unionallselect字段from'+zzbm[i]+'条件';
end;。
二十七、公共属性部分:
序号
属性名称
属性说明
1
Caption
设置窗口、控件等的显示内容。
2
name
窗口、控件的名称。
3
visible
窗口、控件是否可视。
4
enabled
窗口、控件是否获得焦点。
5
Taborder
控件获得焦点的顺序。
6
Align
控件布局。
7
font
字体各项设置。
一般设定宋体11
8
readonly
设置控件是否只读。
二十八、常用事件列表:
序号
事件名称
事件说明
1
onshow
窗口显示时触发,在此事件中一般声明公共变量、函数过程等,格式设置,dbgrideh、combobox等控件的数据来源实现,动态设置控件属性内容。
2
onclose
关闭窗口,释放内存。
Form名.Release
3
onclick
控件单击时触发。
一般情况用在命令按钮中。
4
ondbclick
双击控件时触发。
一般用在DEGRIDEH控件中。
5
onchange
当控件内容改变时触发。
一般用在COMBOBOX、RZEDIT等此类控件。
6
onexit
当焦点离开控件时触发。
一般用在非DBGRIDEH控件实现的数据录入,如统一领转录入。
7
onkeypress
通过键盘操作触发,一