为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[汇总]delphi7教程

2017-10-21 33页 doc 85KB 40阅读

用户头像

is_569018

暂无简介

举报
[汇总]delphi7教程[汇总]delphi7教程 delphi7教程 本文由qing347056贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 软件程序编制规范 3.2,软件程序编制规范 3.2.1,编制程序:根据系统分析要求编制程序,要求实现代码的复用,算法的优化,程序代码的优化, 发现数据库设计不合理的及时反馈,减少循环嵌套,基础数据避免重复更新,保证进入的数据就是齐全的, 正确的. 3.2.2,程序自测:负责按测试方案进行自测,交付测试的程序不能出现不能正常运行,未按公式计算的 简单错误. ...
[汇总]delphi7教程
[汇总]delphi7教程 delphi7教程 本文由qing347056贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 软件程序编制 3.2,软件程序编制规范 3.2.1,编制程序:根据系统分析要求编制程序,要求实现代码的复用,算法的优化,程序代码的优化, 发现数据库设计不合理的及时反馈,减少循环嵌套,基础数据避免重复更新,保证进入的数据就是齐全的, 正确的. 3.2.2,程序自测:负责按测试方案进行自测,交付测试的程序不能出现不能正常运行,未按公式计算的 简单错误. 3.2.3,程序测试:将完成的程序转系统分析人员按测试方案测试. 3.2.4,开发工具的程序编制规范:详见详细规范. 3.2.5,.net 编程规范 一.安装方法: 1, 安装 IIS 与 frontpage 扩展:点击控制面板,点击添加删除程序,选择添加删除 WINDOWS 组件,选 择应用程序服务器. 点击详细信息, 选择 internet 信息服务 IIS, 点击详细信息, 选择 frontpage 2002 server extensions 与 internet 信息服务管理器,按向导提示点击下一步,然后放入系统盘. 2, 要在防火墙退出的环境下进行安装,把网线拔掉. 3, 放入第一张光盘,他会提示安装.net 必备,放入第三张光盘,根据向导提示安装.安装完第一张, 第二张就可以运行.net 了.第四,五,六张为 MSDN 帮助文件.(07.02.06 添加) 3.2.6 Delphi7.0 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 控件 第 1 页 共 22 页 运行 Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\DclEhLib70.dpk 文件,在弹出窗口中点击 Conpile, 再点击 install,提示安装成功后在 Delphi—Tools—Environment Options—Library—Library Path 中添加路径 Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\ 2, Fastreport 控件 分别运行 fastreport 2.53\source\fr7.dpk, fastreport 2.53\source\ado\ FRADO7.dpk, fastreport 2.53\source\BDE\FRBDE7.dpk, fastreport 2.53\source\DBX\FRDBX7.dpk fastreport 2.53\QueryBuilder\Source\dclOQB70.dpk fastreport 2.53\QueryBuilder\Source\ADO\dclOQBADO70.dpk fastreport 2.53\QueryBuilder\Source\BDE\dclOQBBDE70.dpk fastreport 2.53\QueryBuilder\Source\DBX\dclOQBDBX70.dpk, fastreport 2.53\QueryBuilder\Source\IBX\dclOQBIBX70.dpk 文件, 在弹出窗 口中点击 Conpile,再点击 install; 安装完毕后,在 Delphi—Tools—Environment Options—Library—Library Path 中 添加路径: fastreport 2.53\source fastreport 2.53\source\ado fastreport 2.53\source\bde fastreport 2.53\source\dbx fastreport 2.53\source\ibx fastreport 2.53\QueryBuilder\Source fastreport 2.53\QueryBuilder\Source\ado fastreport 2.53\QueryBuilder\Source\bde fastreport 2.53\QueryBuilder\Source\dbx fastreport 2.53\QueryBuilder\Source\ibx 3,Raize 控件 分别运行 Raize\RC3\Source\Rz30Ctls_Dsgn70.dpk,Raize\RC3\Source\ Rz30DBCtls_Dsgn70.dpk,在弹 出窗口中点击 Compile, 再点击 install; 安装完毕后, Delphi—Tools—Environment Options—Library 在 —Library Path 中添加路 径:Raize\RC3\Source 4,VirtualTreeview 控件 VirtualTreeview4.0.12\VirtualTreeview\Packages\VirtualTrees D7D.dpk 文件,在弹出窗口中点击 Compile, 再点击 install; 安装 完毕后, Delphi—Tools—Environment Options—Library—Library Path 在 中添加路 径:VirtualTreeview4.0.12\VirtualTreeview\Packages 5,xlreport 控件 分别运行 xlreport\xlr4pro123.exe 和 xlreport\xlr4dfull123.exe,注意安装过程中只保留 delphi7 和 demo 两个选项即可,安装完毕后将安装路径下的 AfalinaSoft\XL Report 4\Source 文件夹的所有文件拷 到 AfalinaSoft\XL Report 4\d7units 中,运行 d7XLR4_D.dpk 文件;同样将 AfalinaSoft\ProOptionPack\Source 内的所有文件拷到 AfalinaSoft\ProOptionPack\d7units 中,运行 d7OPack.dpk 文件 五,第三方控件的下载与安装:用到的第三方控件在了解其用途后,经 主任审批后,方可进行安装. 六,控件功能的学习方法:凡第三方提供 的控件均有 DEMO 的演示示例,可根据所学知识查看其属性设置 及 事件,运行演示结果,便可学习控件的功能,领会其功能,做到灵活运 用. 七,将经常用到的控件直接拖动放在前面,使用起来比较方便. 第 2 页 共 22 页 部分: 程序设计要求: 第二部分: 程序设计要求: 一,所有代码 必须有注释.所有代码单行的注释用(//),多行的注释用{},注释用中文.每段程序的注 释说明要简洁明确,说明程序编制的目的及主要功能,按照系统分析文件的功能节点进行分段注释.每段 开头与结尾分别用一行'/'包括.在每个功能段内部根据具体情况进行分段注释,每段开头与结尾分别 用一行'/'包括. 1,程序(unit)头的注释:标明对应的系统分析文件名和最早开始编制时间. 2, 函数(过 程)(function, procedure)头的注释内容包括: (1)函数(过程)的目的(purpose). (2)函数(过程)返回值(结果集)(return value)的类型及含义(程序标准事件不用标明). (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)'; 语句,用于记录模块使用信息. 十三,用程序实现的数据更改,在程序试运行前必须经主任审批,主任不在时由代理人员审批. 十四,所有录入类,查询类中的必须录入项,如没有录入必须提示,否则不能执行. 第 3 页 共 22 页 十五,所有计算类程序实现,先查看数据类型,用 QY 连接实现公式计算的,参照 SQL 函数使用方法,用 DELPHI 连接字段或变量计算的,参照 DELPHI 函数使用方法. 十六,代码必须采用缩进格式表示嵌套,多层嵌套的也遵循此规则.标准格式,如下: 缩进快捷键:CTRL+SHIFT+I 为向后,CTRL+SHIFT+U 为向前,选中部分块后可以直接按快捷键操作.输写 各层嵌套时可先将 BEGIN……END 对应,然后再进行嵌套. while do begin if then begin if then 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 语句: 第 4 页 共 22 页 Case 语句适用于被判断的变量或属性是整形,字符型,枚举型或 子界型时用 case 语句进行逻辑跳转比编 写复杂的 if 语句容易阅 读,而且程序代码整形较快.例: Procedure Tform1.button1click(sender:Tobject); Var Number:integer; Begin Number:=strtoint(edit1.text); case number of 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); until i=10; 2, while 条件 do begin end; 3,升序:for i:=0 to a do/降序: for i:=a downto 0 do begin end; 十九,在应 用程序中所有 QY 的 connection 设置为主 FORM 中的 Adoconnection,所有的连接数据库设置均 在 INI 文件中实现. 二 十,多条语句不能写在一行,一条语句过长应分行写,分行尽量做到平 均,层次性与语句的完整性.例: qy2.SQL.Add('update '+bm+' set jhdh=jhdh*'+qy1.FieldByName('lb').AsString+' '+ 'where rq='''+zxrq+''' and gx='+''''+ListBox1.Items[ListBox1.ItemIndex]+''' '+ 'and charindex(xm,'+''''+qy1.FieldByName('sm').AsString+''')>0'); 二十一,程序流程要清晰,一条 sql 语句实现的功能要单一.Sql 查 询结果使用虚拟表保存的,使用前后 清除虚拟表. 二十二,使用 else 语句时要避免语句过长,造成 if else 混乱. 二十三,多个系 统调用的模块,要形成 DLL 文件,要有模块使用记录,更新时同步更 新. 二十四,遇到需要与 VFP 接口的程序,要将 VFP 表维护好以后 形成 SQL 表,不能直接连 VFP 表,导出 VFP 表后在原程序中使用. 二十五,sql 与 delphi 常用函数对照,使用方法及注意事项: 第 5 页 共 22 页 1,在 delphi 程序中用变量取数据库表中字段值时,用 DELPHI 的类型对应 SQL 表字段中的类型来声明变 量的类型. 2,在程序中 执行 SQL 语句时,用 SQL 语句的语法. 3,经常用到的函数列表: delphi 字段 类型 字符型 整型 小数型 日期时间型 截取 字符位 置 string integer double tdatetime Copy(maskedit1.text,1,2) Pos('101',qy1.fieldbyname( 'bhxs').asstring) Round(4.5)=5;round(3.5)=3; 函 数取值规则为四舍六入,五取偶, Formatfolat('0.00',1.1234) ='1.12' Trunc(4.9)=4 Inttostr(qy1.fieldbyname('d dqs').asinteger),floattostr ,strtoint,strtofloat,datetim etostr Length() Uppercase() Lowercase() Trim sql varchar,nvarchar,char,text int float,numeric datetime substring(rq,1,2) Charindex('101',bhxs) 取小数位数 函数 取整 Round(1.1234,2)=1.12 Round(1.1234,0)=1 Cast(ddqs as varchar(10)) convert(int,a.LcLastDate+10-a. sndate) Len() Upper() Lower() 去左边的空格 Ltrim() 去右边的空格 Rtrim() 类型转换 取长度 大写 小写 去空格 举例如下: je:=strtofloat(formatfloat('0.00', qy1.fieldbyname('dj').asfloat* qy1.fieldbyname('ddqs').asinteger)); qy1.sql.add('select round(cast(hgjs as float)/cast(jhjs as float),2)… ') 4,所有 Format+类型的函数,返回的类型均为字符型,在使用时注意,类型要对应. 5,整形的字段进行数值计算时必须先转换成 float 型后再计算. 二十六,函数,过程的使用: 1,函数的声明: 函数头: Function<函数名>(<形式参数表>):<类型>; 函数体: Begin <语句>; <语 句>; …… <语句>; END; 2,在函数体中必须有一个赋值语句,将函数的返回值赋给函数名. 第 6 页 共 22 页 例: Function Total(x,y:integer):integer; Begin Total:=x+y; End; 3,函数的调用:例: Procedure Tform1.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 在 之间编制实现功能.例:Procedure Tcbgl.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]+' 条件'; for i:=1 to zzbm.Count-1 do begin a:=a+' union all select 字段 from '+zzbm[i]+' 条件'; end;. 二十七,公共属性部分: 序号 1 2 3 4 属性名称 Caption name visible enabled 属性说明 设置窗口,控件等的显示内容. 窗口,控件的名称. 窗口,控件是否可视. 窗口,控件是否获得焦点. 第 7 页 共 22 页 5 6 7 8 序号 1 Taborder Align font readonly 事件名称 onshow 控件获得焦点的顺序. 控件布局. 字体各项设置.一般设定宋体 11 设置控件是否只读. 事件说明 窗口显示时触发,在此事件中一般声明公共变量,函数过 程等,格式设置,dbgrideh,combobox 等控件的数据来 源实现,动态设置控件属性内容. 关闭窗口,释放内存.Form 名.Release 控件单击时触发.一般情况用在命令按钮中. 双击控件时触发.一般用在 DEGRIDEH 控件中. 当控件内容改变时触发.一般用在 COMBOBOX,RZEDIT 等 此类控件. 当焦点离开控件时触发.一般用在非 DBGRIDEH 控件实现 的数据录入,如统一领转录入. 通过键盘操作触发,一般用于回车键代替 TAB 键. 读取数据表中数据,有改变的记录,在更新记录之前触发 的事件,一般用于记录更新信息及自动计算项目.一般用 于 QY 控件. 更新完数据后触发,一般用于记录更新后信息.一般用于 QY 控件. 二十八,常用事件列表: 2 3 4 5 6 7 8 onclose onclick ondbclick onchange onexit onkeypress Beforepost 9 afterpost 二十九,虚拟表使用方法: 1,虚拟表命名方法:#+表名; 2,判断虚 拟表是否存在,如果存在则删除: qy1.Close; qy1.SQL.Clear; qy1.SQL.Add('if object_id(''tempdb..#1'') is not null'); qy1.SQL.Add('drop table #1'); qy1.execsql; 3,创建虚拟表方法: a.qy1.Close; qy1.SQL.Clear; qy1.SQL.Add('if object_id(''tempdb..#1'') is null'); qy1.SQL.Add('create table #1(字段名 字段类型)'); qy1.execsql; b.qy2.Close; qy2.SQL.Clear; qy2.SQL.Add('select * into #1 from jcb'); qy2.execsql; 4,对虚拟表进行更新和追加时,要使用 update 和 insert 语句,不能使用 edit 和 append,避免出现忽 略数据库名称 的错误. 5,对虚拟表使用后要进行清除,避免再次调用时系统报错. 三十,调试程序:当程序出现错误不好查明原因,或运算结果不是想要 的结果时,可以进入调试程序,跟 踪运行阶段的各个状态,以便更好 地分析错误的原因. 第 8 页 共 22 页 1,单步执行:run-step over/f8,单步执行将把整个过程或函数 当做一行,调试器每执行一行,当前执 行点就自动移到下个要执行的 行. 2,跟踪执行:run-Trace into,一次只执行一行,当执行到有过程 或函数调用的行以后,当前执行点将 进入过程或函数的内部. 3,跳 过一段代码:RUN-Run To cursor,以非调试方式执行到光标所在的行, 然后调试器接管对程序运行 的控制,还可以再选择单步或跟踪执行. 4,返回到执行点:RUN-Show Execution Point,如果已执行完,调试器 将重新打开此窗口. 5,暂停运行:Run-Program Pause:使程序运行暂 时停止. 6,重新开始运行:Run-Program Reset,终止程序的运行并释 放所有占用的内存和资源,并闭所有打开 的文件,清除所有的变量设 置,然后重新运行程序,但不删除先前设置的断点和观察窗口. 三十 一,如果在表中设置字段的默认值,录入时经常出现"键列信息不足", 所在在编制程序时,所有 字符型字段取值=isnull(字段 名,'').08.07.08 增 控件的详细 的详细使用方法 第三部分 控件的详细使用方法 一,模块设置方法: 模块设置方法: 1,将单元文件拷到相应的工程文件夹下,打开工程文件后再打开单元文件. 2,点击 Project->Addtoproject,选择相应的单元文件加入工程. 3,点击 Project->options,进入工程属性设置界面,在 forms 界面可以选择主界面 main form;在 application 可以设置 exe 文件图标 icon. 4, 单元文件的声明: 在单元文件程序代码窗口中, implementation 和{$R *.dfm}两部分中间添加 uses 加 main form 的单元文件名,如果当前单元文件需要调用其他单元文件,或者其他单元文件的控件,虚拟表 或者其他公共变量时,还需要在 uses 后添加其他单元文件名,例如: implementation uses ucbgl(main form,主要利用它的 ADOConnection,各类函数,过程),usjcx(公共窗口),uyhdl (登录窗口,主要利用它保存的登录人相关信息); {$R *.dfm} 5,将单元文件中的数据连接控件 query 的 Connection 属性设置为工程 main form 中的 ADOConnection 控 件名. 6,在总菜单中添加新增的按钮的 caption 属性,及 onclick 事件程序,例如 If Application.findcomponent('cgjhtb')=nil Then Application.CreateForm(Tcgjhtb,cgjhtb); cgjhtb.show; 并记录下此按钮的名称(name). 7,在本单元用到系统自带函数或类时,在 interface 下 uses 中进行定义.例:inifiles 权限设置方法:控件:standardActionList1 二,权限设置方法:控 件:standard--ActionList1 1,双击 main form 的 actionlist1,双击后点击 new action,添加新的 actions,命名为"q"+form 名. 定义 actions 的 caption 属性为新增按钮的 caption 属性,actions 的 onexecute 事件定义为按钮名 称. 2,设置新添加按钮的 action 事件,选择对应的 actions("q"+FORM 名). 3,删除自动创建项,减少程序运行时占用内存,点击 Project->Viewsource 打开工程文件将相应 Application.CreateForm(Tform, form);语句删除,只保留主 FORM 与用户登录的创建语句. 4,菜单权限设置方法(以实时计划 8.0 设置为例): A,执行实时计划 8.0 中的权限管理菜单下的权限管理按钮,查看新添加的按钮的上级模块的模块数及命 名,填写在上 级模块对应的 2 文本框中,根据显示当模块总数,并在新增模块中对应的 2 个文本框中 填写新增按钮的模块数(模块总数+1),及新增按钮的 caption 属性,点击确定. 第 9 页 共 22 页 B,选择需添加权限的角色,在左边的系统资源中添加,更改选择角色的权限.如果还没有该角色,则首 先在上,下角色框中分别输入上级角色,角色后点击添加按钮. 事务处理使用方法: 三,事务处理使用方法 当更改性操作数据均要求使用事务处理,输入类,计算类均要求使用事物处理,可以重复计算且计算量大 的,数据感知控件直接更新数据库数据的,为减少服务器负载,可以不用事务处理,示例如下: cbgl.ADOConnection1.BeginTrans;(把要执行的语句放入内存) TRY(开始试执行) 更新或计算语句 cbgl.ADOConnection1.CommitTrans;(把已经更新的数据更新到数据库中,释放内存) 提示执行完毕,在运行过程中使用时不用提示. Except 如果执行不成功 cbgl.ADOConnection1.RollbackTrans;(执行数据回滚,把已更新的恢复到未执行状态) 提示未能执行,计算类的关闭窗口,录入类的,清空已输入的内容. end; 控件使用规范,控件:ADOADOConnection1 四,ADOConnection 控件使用规范,控 件:ADO--ADOConnection1 1,commandtimeout:连接自动跳出时间,设置为 200; 2,connectionstring:设置数据库的连接属性; 3,loginprompt:是否输入用户名和密码; 4,ADOConnection 连接数据库设置方法 (1)静态连接: 点击 ADO,点击 ADOConnection,设置其属性 connectionstring 为数据库的连接属性.Loginprompt 设置 为 FALSE,在运行程序时不提示数据库的密码录入界面.点击 ADOQUERY 设置 connection 属性为相应的 ADOConnection 名. (2)ini 文件连接方法: ini:=Tinifile.Create(ExtractFilePath(Application.ExeName)+' cbgl.ini'); ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;passw ord='+pw+';Persist Security Info=False;User ID=SA;Initial Catalog='+ini.ReadString('SERVER','DATANAME','')+'; Data Source='+ini.ReadString('SERVER','servername',''); (3)注意事项:使用 INI 文件连接时,connectionstring 为空. 日期设置标准方法: 控件,控件:additional :additional-五,日期设置标准方法:使用 MaskEdit 控件,控件:additional-- MaskEdit1 1,设置 MaskEdit 属性为!99/99/00;1;,并将 character for blanks 设置为'' 2,设置 MaskEdit 的 autoselect 属性为 false 3,在 form 的 oncreate 或 onshow 事件中增加 DateSeparator:='.'; ShortDateFormat:='yy/mm/dd';实现日期格式为' . . '. 4,在控件 onchange 事件增加 IF MaskEdit1.SelStart=8 THEN selectNext(ActiveControl, True, True); 第 10 页 共 22 页 使输入完毕自动移到下一焦点. 六,query 控件的使用方法,控件:ADO- ADOQuery1 控件的使用 控件:ADO1,查询类数据: qy1.close; qy1.SQL.Clear; qy1.SQL.Add('select……'); qy1.Open; 2,更改类 数据: qy1.close; qy1.SQL.Clear; qy1.SQL.Add('update……/insert……'); qy1.execsql; 3,对数据 进行更改的方法: a.qy1.edit ……qy1.post; b.SQL 语句'update 表名 set 字段='+''''+变量值(非字符型要转换成字符型)+''' ' C.注意引号的用法. 4,追加,插入数据的方法: a.qy1.append……qy1.post; b.SQl 语句'insert into 表名(字段名,……) values('+''''++''',……)' 5,SQL 语句中常量,变量调用标准: a.常量前后要添加两个半角单引号,即''常量'',例 select * from mlb where dw=''包装 一车间'',特别注意字符用双引号; b.变量必须转换为字符型再引用,引用方法'+''''+变量+''', '+inttostr(变量)+', 例 select * from mlb where dw='+''''+dlid.dw+'''; 6,动态建立索引方法:SQL 语句'create index 表名 on 索引名 (索引字段)' 7,设置 QUERY 控件 commandTimeout 属性值为 200,单位为秒,特殊情况可适当延长. 8, 设置 query 的 connection 属性为相应的 ADOconnection 控件名, 一般引用程序主窗口的 ADOconnection. 使用规范,控件:Ehlib七,Dbgrideh 使用规范,控件:Ehlib- DBGridEh1 1,Datasource 属性. 选择数据来源,点击下拉框显示本单元或其他在本单元声明使用单元的 datasource 控件. 2,AllowedOperations 属性:设置每条记录的属性,alopInsertEh 允许插入,alopUpdateEh 允许更 新,alopDeleteEh 允许删除,alopAppendEh 允许追加. 3,Align 属性.设置 Dbgrideh 显示方法.Alleft 为靠左显示;alright 为靠右显示;Altop 为靠上显示; albottom 为靠下显示;alclient 为充满窗口;alnone 为保持编译程序时位置. 4,colunms 属性.点击按钮显示列名列表.点击某行按 F11 显示此行属性. (1)fieldname.输入对应结果集字段. (2)title 属性的 caption 属性为列标题. (3)footers.点击按钮显示 foot 列表.点击某行按 F11 显示此行属性. A.fieldname.输入对应结果集字段 B.Valuetype.选择对字段的操作.Fvtavg 求平均值;fvtsum 求和;fvtcount 计 数;fvtfieldvalue 显示结果集最后一条记录值;fvtnone 无操作;fvtstatictext 为静态值; (4)Readonly 设置字段为只读. (5)width 为列宽度. (6)wordwrap 为是否自动折行. (7)visible 设置列是否可见. 第 11 页 共 22 页 (8)displayformat:设置显示格式,例如日期型字段可设置为"yy.mm.dd",双精度型字段可以定义小 数位数,3 位"0.000". 5, EditActions: 对整个 DBGRIDEH 的属性设置, geaCutEh 允许剪切,geaCopyEh 允许复制,geaPasteEh 允 许粘贴,geaDeleteEh 允许删除,geaSelectAllEh 允许全部选择. 6,options 的 dgmultiselect 属性设置多行选择. 7,optionseh 的 dghenterastab 设置响应回车键换列,会自动跳过只读列,到一列焦点. 8,footerrowcount 设置页脚行数. 9,sumlist 的 active 属性设置页脚计算是否生效. 10,visible 设置控件是否可见. 11,Rowsizingallowed 属性设置是否自动折行. 12,popupmemu 选择弹出菜单. 13,Readonly 设置控件是否为只读. 14,Borderstyle 设置是否有网格线. 15,Drowmemotext 设置 textx 型和 image 型字段是否显示原内容. 16,Font 属性设置显示字体. 17,Titlefont 设置标题字体. 18,Usemultitile 设置是否使用父子标题.具体设置方 法: (1)将 Usemultitile 设置为 true; (2)将各列的标题 caption 属性设置为"父标题|子标题"的形式 19,enabled 设置焦点是否可控. 20,其他属性保持默认值. 21,建立页脚合计的方法: (1)设置 Dbgrideh 的 footercolor 为 clYellow; (2)设置 Dbgrideh 的 footerrowcount 为 1; (3)设置 Dbgrideh 的 sumlist-active 为 true; (4)双击 Dbgrideh,点击相应的字段属性中的 footers 按钮,在弹出框中点击添加按钮,新增一个合计 字段后,设置其属性 fieldname 为相应字段名,并选择 valuetype; (5)动态设置页脚合计方法: DBGridEh1.SumList.Active:=true; DBGridEh1.footerrowcount:=1; DBGrideh1.FooterColor:=clYellow; DBGrideh1.Columns[0].Footer.ValueType :=fvtcount; DBGrideh1.Columns[1].Footer.ValueType :=fvtSum; 注:valuetype 类型介绍:fvtAvg 平均值,fvtCount 记录条 数,fvtfieldname 字段名,fvtnone 无, fvtStaticText 文本内容,fvtSum 合计值 (6)自动调整宽度设置方法实例:在窗口的 onshow 事件中增加以下语句 for i:=0 to dbgrideh1.columns.count-1 do dbgrideh1.Columns[i].OptimizeWidth; qy1.Last; 22,颜色设置: 在 ondrawcolumncell 事件中进行设置: if qy1.FieldByName('tjsp').AsBoolean=true THEN//条件 DBGridEH1.Canvas.Brush.Color :=cllime;//浅绿色,$00BAFFB0 为绿色,clred 为红色,clyellow 为黄色. DBGridEH1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 23,主从 DBGRIDEH 的设置: 第 12 页 共 22 页 从表的 Query 的 Datasource 是主表的 datasource,从表的对应字段=:主表的对应字段,字段为主从关系 的关联字段. 控件的使用,控件:Standard八,ComboBox 控件的使用,控件:Standard- ComboBox1 1.静态设置 items 属性:点击 items 属性后的 edit 按钮,在编辑框中直接输入选项内容. 2.动态设置 items 属性:通过 query 将选项搜出后进行循环,追加到 items 属性中,例如,往 ComboBox1 中追加单位名称, ComboBox1.Clear; qydw.close; qydw.SQL.Clear; qydw.SQL.Add('select dw from mlb order by sxh'); qydw.Open; while not qydw.eof do begin ComboBox1.Items.Add(qydw.FieldByName('dw').asstring); qydw.Next; end; 使用规范,控件:Fastreport- frReport1,双击后进入设计界面. 九,Fastreport 使用规范,控件:Fastreport- frReport1,双击后进入报表设计界面.连接 FORM 的 QY 时 frDBDataSet1, frADOComponents1. 用 frDBDataSet1,连接 Fastreport 里 QY 时用 frADOComponents1. 1,Band 的使用. (1)报表标题.在报表第一页显示,点击"插入矩形框/Memo",双击后可以编辑标题显示内容. (2)报表合计.在报表最后一页显示,可以放入 Memo 框显示数值合计,报表注释. (3)页头.在每页开头显示,如果第一页有报表标题,则在报表标题后显示.当明细数据标题需要在每 页显示用于显示明细数据标题. (4)页脚.在每页最后显示.一般用于显示页号. (5)主项头.只在数据集开头显示,当明细数据标题不需要在每页显示时可以用于明细数据标题. (6)主项数据.显示数据集.设置 datasource 确定数据来源.放入 Memo 框显示数据集字段,例如 [dialogform.qy1."sono"]. (7)主项脚.紧跟主项数据显示,用于显示数据集合计值.放入 Memo 框显示数据集字段合计值,例如 [sum([dialogform.qy1."pkgnum"])]. (8)细项头.当需要显示主从表时,显示从表明细数据标题. (9)细项数据.显示从表数据集.设置 datasource 确定数据来源.放入 Memo 框显示数据集字段,例如 [dialogform.qy1."sono"].同时设置细项数据数据来源的主从关系. 例如主项数据数据源为 dialogform.qy1, 细项数据数据源为 dialogform.qy2, dialogform.qy2 的 datasource 需要设置为 dialogform.qy1. (10)细项脚.紧跟细项数据显示,用于显示数据集合计值.放入 Memo 框显示数据集字段合计值,例如 [sum([dialogform.qy2."pkgnum"])]. (11)子.其他 Band 类型有 childband 属性,设置后子紧跟此 Band 显示. 2,对话框. (1)添加对话框.在设计界面页头点击右键添加对话框.在对话框添加各种控件. (2)ADO Query 控件.Database 设置 connection.Datasource 设置主从表关系.Name 为 Query 名. (3)其他控件与 delphi 标准控件方法相同. 3,变量引用方法: (1)报表变量:在 frReport 控件的 ongetvalue 事件中给变量赋值后(if ParName='dw' then ParValue:=dlid.dw;),直接在报表中用[dw]的形式进行引用. 第 13 页 共 22 页 (2)query 字段的引用:a.利用对话框中的 query 时,用 [dialogform.qy1. "mjbh"]的形式引用;b.利用 form 中的 query 时, 首先增加 frDBDataSet 控件的 dataset 属性, 设置相应数据源, 再利用[qy1. "mjbh"] 的形式引用. 4,常用报表函数:a.[LINE#] 自动增长序号;b.[PAGE#]当前页码, [TOTALPAGES]总页码(设置总页码 时要将通过报表-文件-报表设置中的两遍报表打上勾) 5,报表建立基本步骤: (1)增加报表需要的 band 和矩形框及其具体内容. (2)连接数据源,并根据变量引用方法设置好报表数据. (3)通过报表-文件的报表设置和页面设置完善报表. 6,报表调用方法: frReport1.LoadFromFile(extractfilepath(paramstr(0))+'报表\报表名.frf'); frReport1.PrepareReport; frreport1.ShowPreparedReport; Xlreport,控件: xlReportxlReport1 十,Xlreport,控件: xlReport--xlReport1 1.Name 为控件名称,例如 XLREPORT1. 2.XLSTemplate 为存放路径,一般设置为打包软件默认路径. 3.模板设计 (1)进入模板文件,显示数据集单条数据可以在单元格中输入'='+query 名+'_'+字段名,例如 =qy1_sono.设置 XLREPORT 控件的 Datasource 属性,点击后,点击 ADDNEW,选中当前行,设置 Alias, Dataset 属性为 qy1. (2)进入模板文件, 显示数据集多条数据, 例如在 D12 输入 =qy2_itemno 后, A12 至 D13 之间的区域选中, 将 点击插入->名称->定义,输入区域名称'range1', range1 左第一列必须是空,定义时 range 必须包含 空列,点击添加,在 excel 模板中添加区域 range1.设置控件的 Datasource 属性,点击后,点击 ADDNEW, 选中当前行,设置 Alias,Dataset 属性为 qy2, mastersource 设为 qy2,Range 设为在 EXCEL 表中定义的 RANGE 的名称,此例 为:range1. (3) 生成报表时调用:控件名(XLREPORT1).Report; (4)excel 设置:点击工具-->宏-->选择安全性,在第二页可靠发行商,在信任对于"visual Basic 项目" 的访问,有此类相关程序,在使用前通知用户进行设置. 十一, 控件使用规范,控件-RaizePanel Panels 十一,Raize 控件使用规范,控件-RaizePanels 1,Raize Panel 1)Align 属性.设置 Raize Panel 在窗口上的显示属性.alleft 为靠左显示;alright 为靠右显示;altop 为靠上显示; albottom 为靠下显示;alclient 为充满窗口;alnone 为保持当前位置. 2)Caption 属性设置控件标题内容. 3)Font 属性设置显示字体. 4)Height 为列宽度. 5)width 为列宽度. 6)Taborder 为当前控件的焦点序号. 7)visible 设置控件是否可见. 8)其他属性一般保持默认值. 2,Raize Edit 1) Align 属性.设置 Raize Edit 在窗口上的显示属性.alleft 为靠左显示;alright 为靠右显示;altop 为靠上显示; albottom 为靠下显示;alclient 为充满窗口;alnone 为保持当前位置. 2)Charcase 属性:设置输入字母大小写属性.ecNormal 为以输入为准;ecLowerCase 为始终小写; ecUpperCase 为始终大写. 3)Readonly 设置字段为只读. 4)Height 为列宽度. 第 14 页 共 22 页 5)width 为列宽度. 6)Taborder 为当前控件的焦点序号. 7)Tabonenter 为回车键到下一焦点是否生效. 8)visible 设置列是否可见. 9)其他属性保持默认值. 3,Raize DBEdit 1,除包含 Raize Edit 所有属性外,还有 1)Fieldname 属性:输入对应结果集字段. 2)Datasource 属性.设置数据来源,直接输入或点击下拉框显示的本单元和其他在本单元声明使用单元 的 datasource 控件. 4,Raize RzComboBox 1)Align 属性.设置 Raize Edit 在窗口上的显示属性.alleft 为靠左显示;alright 为靠右显示;altop 为靠上显示; albottom 为靠下显示;alclient 为充满窗口;alnone 为保持当前位置. 2)Charcase 属性:设置输入字母大小写属性.ecNormal 为以输入为准;ecLowerCase 为始终小写 ; ecUpperCase 为始终大写. 3)Items 属性:设置 RzComboBox 的下拉菜单内容. 4)Readonly 设 置字段为只读. 5)Height 为列宽度. 6)width 为列宽度. 7)Taborder 为当前控件的焦点序号. 8)Tabonenter 为回车键到下 一焦点是否生效. 9)visible 设置列是否可见. 10)其他属性保持默 认值. 5,Raize RzDBComboBox 除包含 Raize Edit 所有属性外,还有 1)Fieldname 属性:输入对应结果集字段. 2)Datasource 属性.设置 数据来源,直接输入或点击下拉框显示的本单元和其他在本单元声明 使用单元的 datasource 控件. 6,RzSizePanel:实现用户随意调整 高度和宽度,使用方法: (1)将 RzSizePanel 控件的 align 属性 (Raize Edit 在窗口上的显示属性.alleft 为靠左显示;alright 为 靠右显示;altop 为靠上显示; albottom 为靠下显示;alclient 为 充满窗口;alnone 为保持当前位置) 设置好,建议不要用 alclient, 否则该控件不起作用; (2)将用户可以调整的控件,如 DBGridEh 控 件放置到 RzSizePanel 上,并设置 DBGridEh 的 align 属性 为 alclient. 十二,存储过程,控件:ADO十二,存储过程,控件:ADO- ADOStoredProc1 1,存储过程格式 创建存储过程 Create Proc dbo.存储过程名 存储过程参数 AS 执行语句 Return 执行存储过程 GO 2,变量 (1),变量的声明:变量时必须在变量前加@符号 第 15 页 共 22 页 DECLARE @A INT (2),变量的赋值,变量赋值时变量前必须加 set SET @A = 30 (3),声明多个变量 DECLARE @s varchar(10),@a INT 例 如: CREATE Procedure SoCtrl_SCGL(@Sono Varchar(30)) As Declare @FPkgNo Varchar(30),@FOrderNo varchar(50), -- 形式 @Type2 Varchar(30),@Type3 Varchar(30),@ShipMent DateTime, @ItemLNo Varchar(100),@TTRATE FLOAT,@TTAMT FLOAT --获取可户包装号,定 单号 Select @FPkgNo=FPkgNo,@FOrderNo=Case When CharIndex('-',isNull(HisNo,0))=0 Then '' Else Left(HisNo,isnull(CharIndex('-',HisNo),0)-1) End,@ShipMent=Shipment,@TTRATE=TTRATE,@TTAMT=TTAMT, @ItemLNo=ItemLNo From Soctrl Where Sono=@Sono Delete From SoDtl5 Where Sono=@Sono --刷新商品编号 Update SoDtl Set ItemNo=Cphh.FItemName From SoDtl S ,MD_CPHH CpHH Where S.HIsNo=CpHH.FCphh And S.Sono=@Sono And ((S.ItemNo='') or (S.itemno is null)) GO 3,存储过程调用方法:通过 ADOStoredProc 控件调用 (1),设置 ADOStoredProc 的 connection 属性为 mainform 的 ADOconnection 名; (2),设置 ADOStoredProc 的 Procedurename 为在数据库中创建的存储过程名; (3),执行 ADOStoredProc1.ExecProc;语句执行存储过程. (4),在调用存储过 程之前,先给定义的参数进行赋值. 导入导出数据: 十三,导入导出 数据: 1,导入 vfp 数据到 SQL 的应用 (1),在 form 的 implementation 之前位置声明函数 function SQLDisconnect(hdbc:double):integer; stdcall; external 'ODBC32.DLL'; function SQLConfigDataSource(hwndParent: Integer; fRequest: Integer;lpszDriverString: String; lpszAttributes: String): Integer; stdcall; external 'ODBCCP32.DLL'; (2),在执行导入数据程序的事件名称后声明 const ODBC_ADD_SYS_DSN=1; 第 16 页 共 22 页 (3), 在执行导入的程序中首先带入参数, 执行 SQLConfigDataSource 函数, 例如: SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, 'Microsoft Visual FoxPro Driver'+ CHR(0), 'dsn=dz' + CHR(0) + 'BackgroundFetch=Yes' + CHR(0)+ 'Description=descripcion de la conexion' + CHR(0)+ 'Exclusive=Yes' + CHR(0) +'sourceDB=C:\'+ CHR(0) +'Sourcetype=DBF'); 定义了接口程序所有 ODBC 的名称为 dz,连 接属性为 Microsoft Visual FoxPro Driver,连接路径为 C:\, 连接 文件类型为 DBF 文件. (4),新建 ADOconnection 控件 ADOconnection2 连接 ODBC 名称 dz:首先点击 ADOconnection2 的 connectionstring 属性,选择提供程序为 ODBC Drivers,并设置数 据源名称为 dz 后,测试连接. (5),新建 query 控件 qydz,设置其 connection 属性为 ADOconnection2,再通过 query 的标准用法就 可 以查询出对应 dbf 文件名的内容. 2,将 SQL 数据导出为 vfp 表的应用 (1),删除对应路径下,文件名为导出的 dbf 类型的文件, 例如:DeleteFile('c:\'+bm1); (2),新建 ADOConnection 控件 ADOConnection2,并动态设置其连接属性,将要导出的内容导出到固 定的 vfp 表,例如:ADOConnection2.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;'+'Extended Properties=dBase 5.0'; ADOConnection2.Execute('select * into kq from kqhz IN [ODBC] [ODBC;Driver=SQL Server;UID=aa;PWD=aaa;Server=jnmd;DataBase=ckyw] '); ADOConnection2.Close; 十四, 控件使用方法 十四,Treeview 控件 使用方法 1,设置 items 属性: (1),new item:增加新的节点; (2),new subitem 为当前节点增加新的子节点; (3),delete 删除当 前节点; (4),load 导入节点; (5),TEXT:显示文字; (6),Image Index:显示图形序号; (7),Selected Index:选中时的序号; (8),State Index:状态序号; 2,新增 RZPageControl 控件,并添加多个 TabSheet 页面,使 treeview 控件的每个节点都有对应一个 TabSheet 页面. 3,在 TreeView1Click 事件中写入点击每个节点时 的响应事件,例如 with Treeview1.Selected do begin jcwh:=Treeview1.selected; with RZPageControl1 do begin case jcwh.SelectedIndex of 1:begin ActivePage:=TabSheet1; …… end; 2:begin ActivePage:=TabSheet2; …… end; …… 第 17 页 共 22 页 end; 4,根据界面设计需要,多页显示的控件可设置可视不可视, 以达到美化界面的效果. 十五,chart 控件使用方法:控件 Additional 十五,chart 控件使用方法:控件--Additional 1,双击 chart 控件,在 chart 页 title 页,录入显示内容,以湿压强度为例: 可以录入湿压强度曲 线图. 2,在 chart 页 series 页,点击 ADD, 会显示各种图,根据需要进行设置,在下面的框 3D 前打勾,为 3D 模 式,否则为普通模式. 3,设置 SERIES 页中 datasource 属性,设置 为 randomValue. 4,用 query 控件搜出相应的记录,通过循环和 DBChart1.Series[0].add()函数,将每一条记录加 载 series 中,例 如: qy1.Close; qy1.SQL.Clear; qy1.sql.Add('select rq,avg(syqd) as syqd from xssjb '+ 'where sydw=''铸造一车间'' and rq>=''06.12.01'' and rq<=''06.12.31'' '+ 'group by rq'); qy1.Open; qy1.First; DBChart1.Series[0].Clear; while not qy1.Eof do begin BChart1.Series[0].add(qy1.fieldbyname('syqd').AsFloat,qy1.f ieldbyname('rq').AsStr ing,200); qy1.Next; end; add 有三个参数:第一个参数为图表 y 轴的数值;第二个参数为图表 x 轴的数值;第三个参数为图表 中该点的颜色(clteecolor 为默认颜色红色) . 5. add 函 数 标 准 形 式 : function addxy(const axvalue,ayvalue:double;const axlabel:string;acolor:tcolor)):longint;其中,参数 axvalue,zyvalue 表示点的横坐标和值,axlabel 为横坐标 签,acolor 为点的颜色. 6,常用的 series 类型: 1)line:用折线将各点连接起来的形式绘制图表; 2)area:用这项将序列各点连接起来,还要将折线与 x 轴之间进行填充. 3)point:用一组点的形式显示 series 中各个点. 4)bar:用垂直的直方图绘制图形,每一个直方条代表一个 series 点. 5)Horizontal bar:与 bar 相似,只不过是用水平方向的直方图绘制图形. 6)pie:用圆饼图绘制图形,每一个 series 点是圆饼中的一个扇形. 7,常用属性: 1)active:设置序列是否在图表上显示. 2)datasource:设置为序列提供的数据的数据源. 3)xvalues:序列的横坐标数据. 4)yvalues:序列的纵坐标数据. 5)xlablessource:序列的横坐标标签的数据来源. 6)seriescolor:绘制序列是所用的颜色. 8,常用事件: 1)afterdrawvalues:序列中的点被绘制后触发. 2)onbeforedrawvalues:序列中的点被绘制前触 发. 第 18 页 共 22 页 3)onafteradd:序列中插入一个点后触发. 4)onbeforeadd:序列中插入一个点前触发. 5)onclearvalues:当调用 clear 方法或 delete 方法删除序列中的点时触发. 第四部分: 第四部分:常出错现象及原因分析 一,内存地址错误 提示如下: 原因分析:在创建 FORM 时,在 PROJECT 的 VIEWSOURCE 里创建 了 FORM,在整理时以减少内存已清除,调用 下级 FORM,赋初始值时, 需在创建后执行语句,然后显示.修改内容如下: If Application.findcomponent('jjhzcx')=nil Then Application.CreateForm(Tjjhzcx,jjhzcx); jjhzcx.qy1.Close; jjhzcx.qy1.sql.clear; jjhzcx.qy1.sql.add('select * from #gz'); jjhzcx.qy1.open; jjhzcx.qy2.Close; jjhzcx.qy2.sql.clear; jjhzcx.qy2.sql.add('select * from #gzmx where xm=:xm'); xm=:xm'); jjhzcx.qy2.open; jjhzcx.show; 二,is not a valid floating point value 是无效的浮点值. 原因分析:可能试图将一个 值转换为一个浮点数,但编译器无法将其识别为浮点值. 快速纠正: 在给变量赋值前,验证该值是一个有效的浮点值. 三,Assignment to FOR-Loop Variable 给 FOR-Loop 变量<>赋值. 原因分析:在 32 位 Delphi 中,你可能试图给 For 循环(换言之,Do 之后)中的循环控制 变量赋值. 快速纠正:删除 Do 保留字后面为 For 循环控制变量的 赋值. 四,Cannot initialize locall variables 无法初始化局部变 量. 原因分析:可能在声明一个局部变量时试图为其赋值. 第 19 页 共 22 页 快速纠正:不要在一个过程或函数的 Var 段给变量赋值.不要在 一个过程或函数的 Const 段给常量分配数 据类型. 五,Cannot perform this operation on a closed database 无法对一个关闭的 数据库执行这种操作. 原因分析:可能试图调用一个 TDataBase 组 件的 StartTransaction 方法,而没有将其 Connected 属性设 置为 True,或者没有调用其 Open 方法. 快速纠正:调用 StartTransaction 前,在设计时或在代码中将 Connected 属性设置 为 True,或者调用 TDatabase 组件的 Open 方法. 六,Cannot perform this operation on a closed dataset 无法在一个关闭的 数据集上执行这种操作. 原因分析:1,可能试图刷新,编辑,清空,删 除或搜索一个没有打开或激活的 TDataset 组件. 2,可能一个数据 集需要的辅助数据集没有激活或者关闭. 3,可能调用了一个用于多级应用的 TClientDataSet 的 Open 方法或者将其 Active 属性设置为 True,并且 没有将 TClientDataSet 的 Provider 属性设置为一个有效的 TDataSetProvider 组件. 4,可能调用了一个用于单级应用的 TClientDataSet 的 Open 方法或者将其 Active 属性设置为 True,但没 有打开包含数据的文件. 快速纠正:1,2,执行上述操作前,打开所有需要的数据集. 3,将一个 TDataSetProvider 赋给 TClientDataSet 组件. 4,在对数据工作前,或者设置 TClientDataSet 的 FileName 属性,或者调用 LoadFromFile.在 Delphi 6 及以上版本中,可以以一种或两种格式保存数据("传统"或"典型"的 ClientDataSet 二进制格式,带 有.CDS 扩展名;或者以 XML 格式,带有一个.XML 扩展名). Cannot perform this operation on an open database 无法在一个打开的数据库上执行此操作. 原因分析:1,可能在一个 TTable 的 Active 属性为 True 时,试图将其 Exclusive 属性设置为 True. 2,可能在一个 TTable 的 Active 属性为 True 时,试图给其 TableName 属性赋一个值. 3,可能在数据库的 Connected 属性设置为 True 时,试图给 TDatabase 的 Alias 或 DatabaseName 属性赋 值. 4,可以在 TDatabase 组件的 Connected 属性设置为 True 时,试图将 TSession 组件的 Active 或 AutoSessionName 属性设置为 True. 快速纠正:1-4,在试图进行这种操作前,确保 TTable 或 TDatabase 没有激活. 七,Cannot perform this operation on an open dataset 无法对一个打开的数据集执行此操作. 原因分析: 可能当表打开时, 1, 试图修改一个 TTable 的 Exclusive, ReadOnly, DatabaseName, TableName, TableType 或 SessionName 属性. 2,可能在进行查询时,调用了一个 TQuery 的 Unprepare 方法. 3,可能在一个 SQLQuery 组件的 Active 属性设置为 True 时,修改了其 SQL 属性. 快速纠正:1,修改上述提到的任何属性前要关闭 TTable. 2,调用 Unprepare 前关闭 TQuery. 3,在再次打开/激活数据集前,先将它的 Active 属性设置为 False,或者调用其 Close 方法,然后进行修 改. 八,Division by zero:被零除. 原因分析:可能试图用零除一个数. 快速纠正:在 除法操作前确保除数不为零,或者将除法操作封入一个 Try…Except 块中. 九,Field index out of range:字段索引越界. 原因分析:1,可能试图通过一个索引元素访问一个表的索引,但该索引元素大于表定义的最大索引元素 数. 第 20 页 共 22 页 2,可以正使用 TTable 的 FimdKey 或 FindNearest 方法作用于 dBASE 表和表达式索引. 3,可能试图索引一个计算出的字段,其 FieldKind 属性为 fkCalculated. 4,可能有一个 Master/Detail 关系,但没有将 Detail 表的 IndexName 属性与 Master 表匹配. 快速纠正:1,记住,索引元素通常是从零开始的. 2,使用 TTable 组件的 GoToNearest 方法作用于 dBASE 表和表达式索引. 3, 如果想基于一个计算出的字段排序, 则将字段的 FieldKind 属性由 fkCalculated 改为 fkInternalCalc. 4,设置 Detail 表的外部键(与 Master 表的主键匹配)作为其 IndexName 属性. 十,For loop control variable must have ordinal type For 循环控制变量必须是序数类型. 原因分析:可能你试图使用一个非序数类型 (Boolean,Char,WideChar,Integer,枚举,子界)的数据 类型作为一个 For 循环的控制变量. 快速纠正:使用一个序数类型作为 For 循环的控制变量,通常使用一个声明为 i 的整型. 十一,Invalid floating point operation 无效的浮点操作. 原因分析:1,可能试图将一个过长的数字赋给一个浮点数据类型. 2,可能试图使用 Round 或 Trunc 函数反一个实型数转化为整型,但这个数太大,以致于没有合适的整数 与之对应. 3,计算机可能缺少算术协处理器. 快速纠正:1,保证没有赋一个很大的数,可以通过编码显式禁止,也可以把赋值语句写在 Try…Except 块中. 2,把 Round 或 Trunc 调用放在 Try…Except 块中. 3,可以升级计算机,使其包含算术协处理器.或者在单元开始处设置{$N-}编译命令. 十二,Label declared and referenced,but not set 标号已声明并引用,但没有设置. 原因分析:可能已经声明并调用了标号(在 GoTo 语句中),但是标号没有定义. 快速纠正:必须使用一个 GoTo 语句可以到达的位置. 十三,Line too long[more than 255 characters] String[直接量]至多 255 个 元素 原因分析:1,可能声明了一个短字符串,它包含的元素多于 255 个. 2,可能给一个把一个多于 255 个元素的字符串赋给一个短字符串. 3, 在代码编辑器中有一行赋了一个多于 255 个元素的字符串 (这种情况下, 即使长字符串也会发生错误) . 4,可能声明的字符串常量长度超过 255 个字符. 快速纠正:1,使用 ShortString 时,保证它的大小小于 256. 2,不要把一个大于 255 个元素的字符串赋给一个 ShortString 变量. 3,使用字符串连接操作符(+)把字符串分割为多行. 4,减少字符串常量的大小,或者声明多个常量,然后进行连接. 十四,Missing connection or Connection String 缺少连接或者连接字符串. 原因分析:1,可能已经对 TADODataSet,TADOTable 或者 TADOQuery 组件初始化了 Fields Editor(从上下 文菜单中选择 Fields Editor,或者双击),然后从 Fields Editor 的上下文菜单中选择 Add Fields 或者 Add All Fields,但是 Connection 属性或 ConnectionString 属性中没有有效的项. 2, 可能试图执行一个 SQL 语句, 但没有指定 TADOQuery 和 TADODataset 组件对应的 TADOConnection 组件. 快速纠正:1-2,通过指定 TADOQuery 和 TADODataset 组件的 Connection 属性使其与 TADOConnection 组 件相连. 十五,Not enough actual parameters:没有足够的实参. 原因分析:1,可能调用了一个函数或过程,但是没有提供所有需要的参数. 第 21 页 共 22 页 2,可能试图覆盖父类方法,但是没有提供父类中声明的所有参数. 3,可以试图检查事件句柄是否有效,即检查 event 属性的值是否为 nil. 4,可能在调用过程或者函数的时候用分号代替了逗号. 快速纠正:1,提供缺少的参数. 2,删除构造函数定义的 inherited 部分以创建新的构造函数,而不是从 TComponent 的构造函数中继承. 为了继承 TComponent 的构造函数,在声明,定义和调用中添加参数. 3,使用 Assigned 函数进行测试. 4,用逗号代替分号. 十六,Object or class type required:缺少对象或者类的类型. 原因分析:可能试图调用一个方法,但该方法所属类型并不是一个对象或者类. 快速纠正:将不可识别的类型用对象或者类代替. 十七,Stream read Error:流 读取错误. 原因分析:可能试图在 Delphi 1 中加载在 32 位 Delphi 中创建的窗体. 快速纠正:如果可行的话,升级为 32 位 Delphi 版本,最好是最新版本.如果必须坚持使用 Delphi 1 打 开 32 位 Delphi 创建的窗体,从窗体文件(.DFM)中删除 32 位 Delphi 中的所有特性.可以在文本编辑器 (比如写字板)中编辑该文件来实现. 十八,Type mismatch for field,expecting:,actual: 字段类型不匹配,需要<字段类型>,实际为<字段类型> 原因分析:可能使用 TclientDataSet 保存(hold)数据,并以一种特定格式(比如 AsMemo)为特定列保 存数据,然后创建了另一种数据类型(比如 TStringField)的 TFieldType 派生类,随后试图在实际文件 中为 ClientDataSet 的字段赋值. 快速纠正:为磁盘存储和内存处理使用相同的数据类型. 十九,Type of expression must be BOOLEAN 表达式类型必须是 BOOLEAN 原因分析:1,可能 If,While 或者循环语句中使用了条件语句,但该语句不是一个 boolean 类型(无法 计算得出 True 或者 False). 2,当试图对 Sender 参数进行类型强制转换时,有时这个错误消息是由语法错误引起的. 快速纠正:1,保证编译器明确需要 True/False 答案的条件能够计算出 Boolean 值. 2,这里,需要在 Sender as TDBEdit 和 Tag 属性之间添加点操作符:if (sender as TDBEdit).Tag=8 then 第五部分, 第五部分,版本信息 序 号 1 2 3 4 5 6 版本 号 A-G G G G H H 修改 次数 0 1 2 3 0 1 修改内容 新版工作规范. 增加程序设计要求. 完善 Query 用法. 完善 sql 与 delphi 函数对比. 对各项内容进行规范,进行完善. 常出错原因分析. 发布日期 2007 年 7 月 1 日 2007 年 9 月 30 日 2007 年 10 月 2 日 2007 年 10 月 4 日 2007 年 11 月 17 日 2007 年 11 月 21 日 第 22 页 共 22
/
本文档为【[汇总]delphi7教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索