前台培训开发基础.ppt

上传人:za****8 文档编号:15298277 上传时间:2020-08-07 格式:PPT 页数:25 大小:240.50KB
收藏 版权申诉 举报 下载
前台培训开发基础.ppt_第1页
第1页 / 共25页
前台培训开发基础.ppt_第2页
第2页 / 共25页
前台培训开发基础.ppt_第3页
第3页 / 共25页
资源描述:

《前台培训开发基础.ppt》由会员分享,可在线阅读,更多相关《前台培训开发基础.ppt(25页珍藏版)》请在装配图网上搜索。

1、时长:一小时 一、 主要内容: a) 前后台数据交换机制。 b) 基类窗体的层次。 c) 窗体中的六个关键方法。,培训课程一,前后台数据交换机制-1,在传统方式下用delphi开发MIS系统的程序员,可能 接触较多的的TDataBase, TAdoDataSet, TDataSource 这些与数据库打交道的数据控件,但是对于本系统, 是没有任何数据感知控件的。本系统基于BS架构,所 有的业务逻辑主要由服务器端来完成,前端与后台之 间的数据交换主要如下图:,前后台数据交换机制-2,前后台数据交换机制-3,在本架构中,TBizObject这个类是所有业务的核心, 该对象实现了业务对象与XML文件

2、之间的转换,与后台 JSP之间的交互,文件的上传与下载等关键业务,对于 开发人员而言,并不需要深入了解该类的具体实现方式, 只需要知道,所有的业务对象都必须继承自该类,而我 们,只需要将数据转为对象,或者从对象中取出我们感 觉趣的数据,表现在具体界面上就行了。,基类窗体的层次1,所有的业务类必须继承自TBizObject,而所有的前台开发窗体,也必须继承自TBaseForm单元,以下为CPC开发架构较常用的基类窗体及说明. 其结构图如下:,基类窗体的层次2,procedure DoInit; override; /初始化 /Step2、清空界面数据,供后代继承覆盖 procedure Clea

3、rInformation; override; / Step3 查询方法 procedure SearchBillObj(strSqlWhere: string); override; /Step4、设置窗体数据(将需要维护的对象属性值反映到界面上),供后代继承覆盖 /通常在维护属性时使用 procedure SetFormData(Item: TBizObject); override; /Step5、数据有效性检查,供后代继承覆盖 function ValidCheck(var strErr: string): Boolean;Override; /Step6、保存信息,供后代继承覆盖 p

4、rocedure SaveInformation(var Item: TBizObject);override;,窗体中的六个关键方法,procedure TBaseUomForm.SaveInformation(var Item: TBizObject); var ItemTmp: TUom; begin inherited; ItemTmp := TUom.Create; /把常规页上各属性值设入对象中 SetCtrlsValueToObjProp(ItemTmp, Self); Item := ItemTmp; end; procedure TBaseUomForm.SearchBill

5、Obj(strSqlWhere: string); var ItemTmp: TUom; begin inherited; ItemTmp := TUom.Create; MySearchBillObj(ItemTmp,StrSqlWhere); end;,procedure TBaseUomForm.SetFormData(Item: TBizObject); begin inherited; /根据属性设置常规页上各控件值 SetObjPropValueToCtrls(Item, self); end;,培训课程二,时长:一小时 主要内容: delphi编程基础。 前台编程规范。 业务类的

6、创建 控件的命名规范 界面设计的注意事项 利用专家来建立业务类和窗体控件,delphi编程基础1 Pascal,面向对象(Object-Oriented Programming,简称为OOP) 基本特征: 类 继承 多态性,delphi编程基础2,类(封装 ):type Ttest = class Tobject 类是一个样板,以操作、表示和算法的形式完整地定义了一组对象的行为。它通常也是面向对象语言中的模块化、封装和数据抽象的基础。简单地说,类是一种数据类型,而对象是类的一个实例。 继承: 继承提供了创建新类的一种方法,这种方法就是说,一个新类可以通过对已有类进行修改或扩充来满足新类的要求。

7、新类共享已有类的行为,而自己还具有修改的或额外添加的行为。因此,可以说继承的本质特征是行为共享。 多态性 : 多态性隐含着表明对象可以属于多于一个的分类,因而提高类代码的重用性以及可维护性 (overload指示),delphi编程基础3,例子: 电器(祖先类) 属性:在电的驱动下工作; 电脑(父类) 属性:在电的驱动下工作;在给定指令下自动计算; 笔记本电脑(子类) 属性:在电的驱动下工作;在给定指令下自动计算;体积小、方便携带(自身具备);,Override指示,用Class关键 字进行定义,delphi编程基础4,基本控制结构: 1、if 条件满足 Then else ;/条件控制。 2

8、、for I := 0 to 100 do begin end;/循环控制. 3、while 条件满足 do begin end;/循环控制. 4、repeatuntil 条件 /循环控制结构。 5、 case 整型变量 of 值1:begin.end; 值2:begin.end; end; 6、function 函数名(参数.):返回类型;/函数定义; 7、procedure 过程名(参数.); /过程定义 8、数据类型(Sting; integer; double; boolean),Delphi不区 分大小写,前台编程规范业务类的创建,TCPCObjConf = class(TBizOb

9、ject) private /变量定义区域 FObjTypeId: integer;/ 单据类型ID FObjTypeName: string; FCodeField: string;/编码字段名 FSqlWhere: string; /查询条件语句 FObjRptConfOfObjConf: TList; /关联报表列表 public/常用方法定义 . procedure SetDocId(ptType: TPostType = ptStrWait); /设置文档对象ID constructor Create; overload; override; /构造. destructor Dest

10、roy; override; /析构 published property ObjTypeId: integer read FObjTypeId write FObjTypeId; property TableName: string read FTableName write FTableName; . property ObjRptConfOfObjConf: TList read FObjRptConfOfObjConf write FObjRptConfOfObjConf; . end;,所有继承自TBizObject对象的业务类,本身就已经有了insert,Delete, Updat

11、e, Search, Select, SelectRef等方法,因此没有殊的定义方法,我们就不需要在public中定义。,如果打开数据库中的cpcobjconf表,就会发现,在published中声明的属性,其属性名,变量类型实际上和数据库是一致的,如果我们需要能够访问数据表中所有字段,就要在业务类中把该表所有字段全部Published出来,为什么一定要在published里面声明呢,这就要涉及到delphi的另一个关键技术:RTTI,当然篇幅有限,兴趣的可以自已去研究一下toolapi目录下的typinfo单元。对于和数据表一致的属性,我们称之为数据元,前台编程规范-控件命名,控件的命名规则

12、很简单:命名 = 前缀 + 属性名,属性名就是相应于你需要用该控件显示业务类的哪个属性,而前缀则和控件的类型有关:,如果使用了不在以上类型的控件, 则SetObjPropValueToCtrls和 SetCtrlsValueToObjProp这两个方法不 一定能支持,还需要自行处理。,前台编程规范-命名规范,用delphi开发过mis系统的程序员,在搭配TDataSet控件时都会用上TDbEdit,TDbMemo等数据集感知控件,在本开发架构中已经不需要了。那么,在本开发平台中,是如何把数据显示到界面上,又如何把界面上的数据转换到具体的业务类对象中呢? 在本平台里,显示数据我们最常用的是控件主

13、要有TEdit, TCombobox, TCheck 、TMemo,TSpinEdit,TButtonEdit,而用于显示多条数据,常用的是TDataStringGrid控件,对于继承自(TBaseTempForm, TBasePropEditForm)等业务单据类窗体 。 假设定义了类TMyTest,有两个属性 ObjName, ObjType,相应于界面上的两个TEdit控件,那么在SetFormData方法中,标准的写法如下: procedure TPMCostClasForm.SetFormData(Item: TBizObject); begin inherited; with TP

14、MCostClas(Item) do begin edtObjName.Text := ObjName; edtObjType.Text := ObjType; end; end; 想象一下,如果该类有30个(甚至更多),就意味着我们要写上30句话,当然可能更多,而且在SaveInformation里,也需要写类似的代码,相比原有的DbEdit控件,只需要设上一个DataField,DataSource属性就能搞定的美好时光,相信再有耐心的开发人员都会对需要写上这么多没点技术含量的代码而无奈,当然如果以后数据表中又新加了字段,还不能忘记又要在这两个方法中再加上相应的处理代码. 值得庆幸的是,大

15、部分的时侯,我们仅仅需要调用SetObjPropValueToCtrls和SetCtrlsValueToObjProp这两句话,就可以达到相同的效果,但这两个方法可是严格依照你对控件的命名来处理的。可以想象一下,DbEdit之类的控件,我们可以通过DataField属性名来找到它对应的字段,因此你可以用DbEdit1,DbEdit2这种不规范的方式来取名,反正delphi也能保证找得到,而edit,memo之类的控件,如果用edit1,edit2的命名方式,那么edit1对应的属性名到底是什么呢?或许只有上帝和比尔.盖茨才清楚了。,窗体(.dfm): 模块名+表名+Form pas.: 模块名

16、+表名+Frm,前台编程规范-界面注意事项1,界面的设计在前台开发中占有很大的比例,是很重要的一个部分。 界面上有些控件是可以编辑修改的,而有些则是只显示数据的而不能编辑的。对于可编辑的控件,要将其 Tag属性设置为0,ReadOnly属性为默认值False。对于不可编辑的控件则是将其Tag属性设置为1,ReadOnly属性为True。 在界面设计中会有很多让用户查询选择的控件,如:销售部、经销商、仓库等一些基础信息。这些控件在选择上一般是:可编辑的编码用TButtonEdit(如BedtDeptCode),属性ButtonStyle设置为lsEllipsis(编辑框右边有个小按钮,点击可以弹

17、出查询窗体),后面紧跟着不可编辑的名称,名称用TEdit(EdtDeptName),设置为只读,改变颜色为灰色。BedtDeptCode还有几个很重要的属性要设置。,对于用于显示名称的TLabel控件,alignment属性必须设为taRightJustify类型,因为有可能要做多语言版本。同一列上的多的label,在排列时按右对齐方式排版。 如果需些控件值希望保存前做是否非空的判断,则需设置其对应的label控件,将对应label的focusControl属性指向自身,并设label的Tag=2。 设计时需要调整控件的TabOrder属性,在回车时也跳移到正确的位置。,前台编程规范-界面注意

18、事项2,时长:一小时 主要内容: 常用控件说明。 常用函数说明。 开发样例。 进阶应用。,培训课程三,常用控件说明-TbuttonEdit,ButtonEdit控件: 说明: 这就是ButtonEdit控件,它继承自TCustomEdit,与TEdit控件的区别主要是它可以在右边出现一个小按钮,通过点击按钮事件,可以处理相应代码。 主要属性:item_Id, item_code, item_name(产品) AddOnId:附加的Id值,用于存放扩展的一个integer类型数据 AddOnidFieldName:和BizObject搭配使用的值,设置该属性值后在调用BaseFrm中的SetOb

19、jPropValueToCtrls方法里,会自动把BizObject对象中的某个integer类型的属性值放入AddOnid中。 ButtonStyle: lsNormal(正常模式); lsEllipsis(会在控件右边出现.的小按钮); lsDropdown(小按钮会变成类似Combobox控件下拉的效果) DataFormat:dfString(字符串类型);dfInteger(整型);dfNumber(实数型); dfDate(日期); dfDateTime(时间) DisplayFormat:格式化显示字符串。为#,#0.00,常用于显示金额类型。,常用控件说明-DataString

20、Grid,DataStringGrid控件:,1、 procedure SetItemKindByCust(AForm: TForm; bedtItemKind: TButtonEdit; OrgId,CustId: integer); overload;/根据分公司,经销商,设定可用产品组织。 2、 procedure SetObjPropValueToCtrls(Obj: TPersistent; AOwner: TComponent; bLimitParent: Boolean = False);/根据属性设置常规页上各控件值 3、 procedure SetListTodg(AList

21、: TList; var dg: TDataStringGrid; IsSetRowObjct: Boolean = True; IsCreateNew: Boolean = False);/置入产品列表信息 4、MySearchBillObj(ObjTmp, strSqlWhere, GetSearchSqlByFormStyle(BillFormStyle);/查询信息 5、 function NoEmptyValidCheck: string;/非空检查。 6、 SetCtrlsValueToObjProp(ObjTmp, Self); /把常规页上各属性值设入对象中 7、 proced

22、ure SetDictToList(strDictCode: string; NameList: TStrings; ValueList: TStrings = nil; CodeList: TStrings = nil; intInvOrgId: integer = 0; intEntId: integer = 0; LoadAll: Boolean = True);/设定系统词汇表内容,常用函数说明1,常用函数说明2,8、 procedure SetRightByLogin(AForm: TForm); /根据登陆用户设定经销商控件、网点的只读属性, 机构的只读属性无需设定,因为已经通过S

23、QL设定好了。 9、 procedure SetValueByLogin(AForm: TForm); /根据登陆用户设定默认的经销商控件, 机构控件,区域(分公司上级机构)的值 10、 function SetOrgSqlCond(strPreField: string = ; bChooseArea: Boolean = False): string;/根据当前用户, 在选择机构业务单据时设置机构的过滤条件(因为存在用户兼职几个分公司的情况) 11、 procedure GetOrderByArr(arrNum: array of double; var arrResult: array

24、of integer); /通用的排名算法, 得到一个数组的排名,传入的数组为待排名的元素,如:arrNum0 := 9; arrNum1 := 8;返回的数据为该数组数据的排名 则arrResult0 := 1 arrResult1 := 2 越大的量排名越靠前,常用变量说明1,1、 IsNeedSelect := True; /主从表的查询需要这一句,该句代码在doInit中定义,应在inherited之前; 2、bAddShowFilter := True; /显示过滤按钮 3、 if BillFormStyle in bfsCheck, bfsSearch then DisableControls(tsMain); 4、ShowpmFilterData/审核时在tbFind按钮旁显示一过滤下拉菜单 5、bInsert/当前是否插入状态。updae 6、 FIsPostData := false;/是否提交数据;(在TBasePropForm中定义的。) 7、function TDrpGCustSaleOrderHeaderForm.GetSearchSqlByFormStyle( Value: TBillFormStyle):/ Value值对三种情况(bfsSearch,bfsCheck, bfsEdit)须明确定义。,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!