教学课件Delphi实用教程

上传人:痛*** 文档编号:241417207 上传时间:2024-06-24 格式:PPT 页数:98 大小:2.17MB
返回 下载 相关 举报
教学课件Delphi实用教程_第1页
第1页 / 共98页
教学课件Delphi实用教程_第2页
第2页 / 共98页
教学课件Delphi实用教程_第3页
第3页 / 共98页
点击查看更多>>
资源描述
61、辍学如磨刀之石,不见其损,日有所亏。62、奇文共欣赞,疑义相与析。63、暧暧远人村,依依墟里烟,狗吠深巷中,鸡鸣桑树颠。64、一生复能几,倏如流电惊。65、少无适俗韵,性本爱丘山。课件课件Delphi实用教程实用教程9.2.2建立存储过程建立存储过程 编写试题库管理系统中使用的试卷生成存储过程。思路:根据试卷信息表(sj)的试卷编号(sjbh),查找到相应记录的试卷内容。根据试卷内容(sjnr),创建一个新的试卷表(paper)。试卷表(paper)包含两个字段:题型代码(txdm)和题目内容(tmnr)。代码如下:第9章数据库应用程序开发9.2.2建立存储过程建立存储过程CREATE PROCEDURE sjscsjbh tinyint ASDROP TABLE paper;CREATETABLE paper(txdm tinyint,tmnr text);DECLARE i int;SET i=-3;WHILE i”按钮。第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计 第三,选择连接属性,这个界面上要求选择的内容较多。需根据SQL Server数据服务器的设置来定。本例中按以下步骤进行设置:(1)单击“选择或输入服务器名称”下拉列表框的下拉按钮,显示当前系统可以访问的SQL服务器的列表,选择其中的一个,单击“Refresh”按钮,获得最新的SQL服务器列表。本例SQL服务器名为cjhdb,如图所示。第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计 (2)在“登录服务器的信息”中,输入相应SQL Server数据服务器的登录信息。本例以系统管理员sa身份登录计算机。(3)选中“选择数据库”单选框,单击其列表框的下拉按钮,如果在第(2)步输入的登录信息正确,则会显示在第1步选择的SQL Server数据服务器中数据库的列表,否则系统就会显示出错提示。设置完后,单击“TestConnection”按钮测试输入的登录信息是否正确。(4)单击“确定”按钮,连接字符串设置完毕(如图)。单击OK 按钮返回。第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计3.主窗体设计主窗体设计 试题库管理系统具有试题维护、试卷生成和维护等功能,设计的主界面如图所示。试题库管理系统主窗体所包含的组件及其属性值列于表中 试题库管理系统主窗体试题库管理系统主窗体试题库管理系统主窗体和组件对象属性表试题库管理系统主窗体和组件对象属性表第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计程序代码如下程序代码如下:/引用stwh,sjwh,sjsc三个单元。/可以手工写入,也可以在完成模块单元后,使用File-Use Unit命令。uses stwh,sjwh,sjsc;/按钮BtnSTWH的OnClick事件代码,用于调用“试题维护”窗体。/其它两个按钮BtnSJWH、BtnSJSC的OnClick事件代码与它类似。procedure TFrmMain.BtnSTWHClick(Sender:TObject);begin FrmSTWH.ShowModal;end;保存该单元为main,保存项目为StkPrj。第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计4.试题维护窗体试题维护窗体 试题维护窗体主要用于试题和答案的输入和修改,其界面如图所示,试题维护窗体所包含的组件及其属性值列于表中。在程序的实现部分要引用数据模块单元DMUSTK,即使用语句:uses DMUSTK;试题维护窗体试题维护窗体试题维护窗体和组件对象属性表试题维护窗体和组件对象属性表通过从数据模块DMStk中拖拽永久字段TabSTtmnr、TabSTckda获得第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计5.试卷维护窗体试卷维护窗体 试卷维护窗体主要用于试卷内容和评价等信息的输入和修改,其界面如图所示。其中的组件对象属性表及源程序与试题维护窗体及程序类似。试题维护窗体试题维护窗体通过从数据模块DMStk中拖拽永久字段DSetSJsjnr、DSetSJjspj获得试卷内容为三位数,以逗号分开第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计6.试卷生成窗体试卷生成窗体 试卷生成窗体主要用于显示试卷内容,其界面及结构分别如图所示,该窗体所包含的组件及其属性见下表。试卷生成窗体试卷生成窗体窗体结构窗体结构第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计试卷生成窗体和组件对象属性表 第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计程序代码如下:/在程序的实现部分引入以下三个单元usesDMUStk,dysj,DMUStkDy;/窗体FrmSJSC的OnHide事件代码。procedureTFrmSJSC.FormHide(Sender:TObject);beginDMSTK.QryTMNR.Active:=false;MenSJ.Lines.Clear;end;第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计/菜单项MIDY的OnClick事件代码。用于打印试卷。procedureTFrmSJSC.MIDYClick(Sender:TObject);begin 重新打开数据集,获得最新的数据。这里只列出了QryXZ组件的代码,其它的组件QryTK、QryPD、QryJD、QryJS、QryLS、QryWD、QryBC的代码从略。DMStkDy.QryXZ.Active:=false;DMStkDy.QryXZ.Active:=true;./下面四条语句根据试卷编号,获得试卷名。/用于在打印出的试卷卷头中加入试卷名。DMStkDy.QrySJM.Close;DMStkDy.QrySJM.Parameters.ParamByName(bh).Value:=strtoint(EdtSJBH.Text);DMStkDy.QrySJM.Open;FrmDY.RvProSJ.Execute;/打印试卷end;第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计/菜单项MIExit的OnClick事件代码。procedureTFrmSJSC.MIExitClick(Sender:TObject);beginFrmDY.Close;end;第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计/按钮BtnSJSC的OnClick代码。调用存储过程。procedureTFrmSJSC.BtnSJSCClick(Sender:TObject);beginMenSJ.Lines.Clear;/执行存储过程,按试卷编号生成试卷。DMSTK.SPSJSC.Parameters1.Value:=strtoint(EdtSJBH.Text);DMSTK.SPSJSC.ExecProc;DMSTK.QryTMNR.Close;DMSTK.QryTMNR.Open;withDMSTKdo/在Memo1中显示试卷内容beginQryTMNR.Active:=true;QryTMNR.First;whilenotQryTMNR.EofdobeginMenSJ.Lines.Append(QryTMNRtmnr.AsString);QryTMNR.Nextend;end;end;第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计试题库管理系统的主要窗体都已设计完成,只有与打印相关的数据模块DMStkDy和试卷打印窗体FrmDy尚未设计,将在9.4节讨论。程序的运行结果如图所示。第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计6.使用项目管理器对项目使用项目管理器对项目StkPrj进行管理进行管理(1)选择主菜单下的FileOpen Project,打开项目StkPrj。(2)选择主菜单下的ViewProject Manager菜单命令,弹出Project Manager对话框,如图所示。通过项目管理器的树状结构和弹出式菜单,可以很方便地管理项目StkPrj。项目项目StkPrj第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计(3)选择主菜单下的ProjectOptions命令,弹出Project Options对话框,选择Forms页。Forms页用来设置应用程序的主窗体以及选择哪些窗体被系统自动创建、哪些窗体需用户自己创建,项目StkPrj中的窗体如图所示。第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计(4)选择主菜单的ProjectViewView Source命令,打开当前项目文件StkPrj,可以查看该项目的源代码。下面的代码是项目文件StkPrj中的内容。programStkPrj;/项目文件StkPrjusesForms,maininmain.pasFrmMain,DMUStkinDMUStk.pasDMSTK:TDataModule,stwhinstwh.pasFrmSTWH,sjwhinsjwh.pasFrmSJWH,sjscinsjsc.pasFrmSJSC,dysjindysj.pasFrmDY,DMUStkDyinDMUStkDy.pasDMStkDy:TDataModule;$R*.res 第9章数据库应用程序开发9.2.4 C/S数据库应用程序设计数据库应用程序设计beginApplication.Initialize;Application.CreateForm(TFrmMain,FrmMain);Application.CreateForm(TDMSTK,DMSTK);Application.CreateForm(TFrmSTWH,FrmSTWH);Application.CreateForm(TFrmSJWH,FrmSJWH);Application.CreateForm(TFrmSJSC,FrmSJSC);Application.CreateForm(TFrmDY,FrmDY);Application.CreateForm(TDMStkDy,DMStkDy);Application.Run;end.第9章数据库应用程序开发9.3三层结构程序设计三层结构程序设计 三层结构指的是将用户界面、业务逻辑、数据管理三个层次部署在不同的位置上。用户界面是客户端桌面上实现的功能业务逻辑是在一个专门的应用服务器上实现的功能数据管理是在一个专门的数据库服务器上实现的功能三层结构的优势:瘦客户端结构业务逻辑的集中封装集中的资源管理第9章数据库应用程序开发9.3.1 基于基于DataSnap的三层数据库应用概述的三层数据库应用概述 基于DataSnap的三层数据库图:三层数据库应用的结构(基于三层数据库应用的结构(基于BDE)三层数据库应用的结构(基于三层数据库应用的结构(基于ADO)第9章数据库应用程序开发9.3.1 基于基于DataSnap的三层数据库应用概述的三层数据库应用概述从图中可见三层数据库应用的结构与两层结构的区别在于:把原来集中在一台机器上的数据源和数据集组件分别放于网络中不同的机器上(有时也存放在一台物理机器上,但逻辑上仍属于三层结构),通过在应用服务器端增加供应器,在客户端增加连接组件和客户端数据集,使两者联系起来。在一个三层应用中,客户端通过应用服务器得到数据和进行数据更新的过程,通常按照如下顺序和方式实现:(1)用户启动客户端应用。客户端连接到应用服务器(可以在设计时或者运行时指定)。如果应用服务器尚未运行,它将被启动。(2)客户端从应用服务器请求数据。(3)应用服务器从数据库服务器获取数据,为客户端打包数据,返回一个数据包给客户端。额外的信息(例如,字段显示特性),可以被包含在数据包的元数据中。这个将数据打包的过程叫做“供应(providing)”。(4)客户端解开数据包,显示数据给用户。第9章数据库应用程序开发9.3.1 基于基于DataSnap的三层数据库应用概述的三层数据库应用概述(5)当用户与客户端程序交互时,数据被更新(增加、删除或修改记录)。这些改动被客户端记录在一个变更日志中。(6)客户端向应用服务器提请更新(Apply Updates),通常是响应用户的一个操作。为了提请更新,客户端将它的变更日志打包并作为一个数据包发送给服务器。(7)应用服务器解开数据包,并向数据库服务器递交更新(Post Updates)(如果需要,在一个事务的环境中)。如果一个记录不能被递交(例如,由于另一个应用在客户端请求之后、提请更新之前,改变了记录),应用服务器或者尝试用当前数据调整(Reconcile)客户端的改变,或者保存不能被提交的记录。这个提交记录和缓存问题记录的过程叫做“解析(Resolving)”。(8)当应用服务器完成解析过程,它返回没有递交的记录给客户端,以供后来的进一步解析。(9)客户端调整没有解析的记录。可以有多种方式,典型地,客户端尝试更正阻碍记录被递交的情况,或放弃变化。如果错误的情况可以被修正,客户端再次提请更新。(10)客户端从服务器得到数据刷新自己。第9章数据库应用程序开发9.3.1 基于基于DataSnap的三层数据库应用概述的三层数据库应用概述DataSnap组件表组件表 供应器和客户端数据集组件需要midas.d11或midaslib.dcu,它们管理作为数据包存储的数据集。由于供应器是用在应用服务器上,而客户端数据集用在客户端,所以如果使用midas.dll,则必须在应用服务器和客户端都要部署它。第9章数据库应用程序开发9.4.2应用服务器结构应用服务器结构 应用服务器的基础是一个远程数据模块(Remote Data Module),它是特殊的数据模块,支持IAppServer接口。在一个远程数据模块中同样包含一个或者多个数据集组件,来代表数据库服务器上的记录。同样也包含某种数据库连接组件,用来让数据集与数据库服务器交互。对于远程数据模块公布给客户端的每个数据集,必须有一个数据集供应器(DataSet Provider)。第9章数据库应用程序开发9.4.3客户端应用结构客户端应用结构 对于最终用户,三层应用中的客户端与一个使用缓存更新的传统两层应用看上去一样。用户的交互是通过标准的数据敏感组件,只是在这里,数据敏感组件从一个客户端数据集组件(ClientDataSet)得到数据进行显示。连接组件建立连接到应用服务器。通过一个连接组件,客户端数据集从一个供应器组件取回数据,并将更新提请给供应器。有多种的连接组件,使用各自不同的通信协议。对应于应用服务器上的不同种类的远程数据模块,在客户端需要使用不同种类的连接组件,如表所示。第9章数据库应用程序开发9.4.4三层应用开发三层应用开发 开发三层数据库应用的主要工作过程如图所示。第9章数据库应用程序开发9.4.4三层应用开发三层应用开发下面建立一个三层数据库应用,包括一个应用服务器stkServer和一个客户端Client。应用服务器实现与数据库stkgl的连接。客户端通过应用服务器对数据库中的试题表进行修改。1.建立应用服务器并注册建立应用服务器并注册 1)建立应用服务器)建立应用服务器建立应用服务器的步骤如下:(1)选择菜单FileNewApplication,新建一个应用。(2)选择菜单FileNewOtherMultitierRemoteDataModule,新建一个远程数据模块(如图),并设定类名RDMstk,其他取默认值。第9章数据库应用程序开发9.4.4三层应用开发三层应用开发(3)选择一个ADOQuery组件,再从组件面板的Data Access页选择一个数据集供应器组件 DatasetProvider,放入到远程数据模块中远程数据模块RDMstk所包含的组件及其属性列于表中。远程数据模块远程数据模块RDMstk的组件对象属性表的组件对象属性表第9章数据库应用程序开发9.4.4三层应用开发三层应用开发(4)设计应用服务器的主窗体。用于提示用户应用服务器已经工作,如图9.21所示,只需放入一个Label组件,修改其Caption为“正在运行”。(5)保存主窗体单元为stkServer,远程数据模块为RDMUstk,保存项目为stk3Prj。服务器端程序主窗体服务器端程序主窗体 第9章数据库应用程序开发9.4.4三层应用开发三层应用开发2)注册和运行)注册和运行(1)选择主菜单RunParameters,在Parameters栏中输入“/regserver”,如图所示。(2)选择主菜单RunRun,运行应用服务器stk3Prj。设置服务器运行参数设置服务器运行参数第9章数据库应用程序开发9.4.4三层应用开发三层应用开发2.建立客户端应用建立客户端应用(1)选择主菜单FileNew Application,新建一个应用。(2)从DataSnap页,选择一个DCOM连接组件DCOMConnection放入到窗体中。通常要设置DCOMConnection组件的以下属性:ComputerName属性该属性表明应用服务器所在的机器。若为空,表示应用服务器与客户端应用在同一台机器。ServerName属性 该属性指出应用服务器的组件类名字(即服务器注册的名字)。本例点击ServerName属性取值的下拉列表,选择stk3Prj。DCOM连接组件连接组件第9章数据库应用程序开发9.4.4三层应用开发三层应用开发(3)从DataAccess页,选择一个客户端数据集组件ClientDataSet (命名为CDSStu),放入到窗体中。通常ClientDataSet组件需设置的属性有:RemoteServer属性用于指出DCOM连接。本例设置为为DCOMConStu。ProviderName属性用于指出应用服务器的数据集提供者。本例点击属性栏的下拉列表,其中将有应用服务器中的数据集供应器的名字DSProST,选中它,如图所示。第9章数据库应用程序开发9.4.4三层应用开发三层应用开发(4)在窗体中放入其他相关的组件 第9章数据库应用程序开发9.4.4三层应用开发三层应用开发客户端应用程序所使用的窗体和组件及其属性列于表中。第9章数据库应用程序开发9.4.4三层应用开发三层应用开发客户端程序代码如下:按钮BtnXG的OnClick事件代码:procedureTFrmClient.BtnXGClick(Sender:TObject);beginCDSStu.ApplyUpdates(-1);end;按钮BtnSX的OnClick事件代码:procedureTFrmClient.BtnSXClick(Sender:TObject);beginCDSStu.Close;CDSStu.Open;end;第9章数据库应用程序开发9.4.4三层应用开发三层应用开发按钮BtnCX的OnClick事件代码:procedure TFrmClient.BtnCXClick(Sender:TObject);begin CDSStu.UndoLastChange(true);end;第9章数据库应用程序开发9.4.4三层应用开发三层应用开发3.运行程序运行程序 可以试着同时运行多个客户端,连接到同一个应用服务器,观察它们共同工作的情形。如图所示。第9章数据库应用程序开发9.4 数据库报表组件和报表设计器数据库报表组件和报表设计器9.4.1建立第一份报表建立第一份报表 下面通过最少的步骤,为数据库student中的表students建立第一份报表。(1)运行Delphi 7.0,创建一个新的应用。(2)在窗体上放入数据集组件,如Table、Query或其它数据集组件。在本例中放入一个Table组件,并设置其DatabaseName为student,TableName为students,Name为TabStu,Active为true。(3)在窗体上放入Rave页中的RvDataSetConnection组件,设置其DataSet属性为第2步中创建的TabStu,Name属性值为StuCXN。第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表(4)在窗体上放入Rave页中的RvProject组件,窗体界面如图所示。双击该组件(或者右击该组件,选择Rave Visual Designer菜单项),进入Rave报表设计器。报表应用程序主窗体报表应用程序主窗体第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表报表设计器,其主界面如图工具条工具条 属性面板页设计器项目树第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表(5)在Rave报表设计器的主菜单中选择FileNew Data Object,打开“Data Connection”对话框,如图所示。选择其中的Direct Data View项,单击Next按钮,在“Active Data Connections”列表框中选择“StuCXN (DT)”项,如图所示,单击OK按钮。选择数据对象类型对话框选择数据对象类型对话框 选择活动数据连接对话框选择活动数据连接对话框第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表(6)在项目树(Project Tree,在报表设计器的右边)中,打开数据视图条目(Data View Dictionary),选择刚被创立的DataView1,再使用属性面板,重命名DataView为DVStu,如图所示 重命名重命名DataView1 第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表(7)创建报表。下面通过报表创建向导来创建报表,步骤是:选择报表设计器主菜单下的ToolsReportWizardsSimpleTable,确保已选择DVStu,如图所示,单击Next按钮。第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表 将弹出如图所示的选择字段列表框,在列表框中选择所有字段(单击“All”按钮),单击Next。第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表 进入如图所示的界面,可以改变报表字段的顺序,单击Next。第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表 进入如图所示的界面,可以改变报表的标题。本例中把标题改为“学生情况表”后,单击Next。第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表 进入如下左图所示的界面,可以改变报表的字体。最后,单击“Generate”按钮生成报表。查看页面设计器中的内容,如下右图。改变报表的字体改变报表的字体页面设计器页面设计器第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表(8)预览报表,单击“Execute Report”,将出现“Output Option”对话框,选择Preview,然后点击OK按钮,将会看到生成报表的效果。如果所生成报表的效果不理想,可以通过页面设计器调整有关组件的位置。OutputOption对话框对话框第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表运行效果图报表预览报表预览第9章数据库应用程序开发9.4.1建立第一份报表建立第一份报表在报表中用到的一些技术:在报表中用到的一些技术:数据连接组件。在应用程序所提供的数据和Rave组件之间提供了一个桥梁。RvProject组件。提供了一些重要的属性和方法来创建报表。报表项目文件(.RAV文件)。这种类型的文件用来存放报表,是一种二进制文件,类似于Delphi的.DFM文件。报表(reports)。报表被存储在报表库中,报表由页组成。根据需要一个报表可以包含多页。数据视图(DataViews)。定义了从数据库中获得数据的方式。第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件 Rave页报表组件图:1.引擎类组件(引擎类组件(engine components)1.包括RvNDRWriter、RvSystem,用以生成报表。2.格式转换类组件格式转换类组件(render components)1.包括RvRenderPreview、RvRenderPrinter、RvRenderPDF、2.RvRenderHTML、RvRenderRTF和RvRenderText组件,可把NDR3.文件(Rave报表文件)或TRvNDRWriter生成的流转换为PDF、4.HTML、RTF、TEXT等格式。第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件3.数据连接组件数据连接组件数据连接组件包括RvCustonConnection、RvDataSetConnection和RvTableConnection,它们在应用程序和Rave可视化组件之间提供了一个桥梁,其作用和使用方法列于表中。第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件4.RvProject组件组件 RvProject组件是应用程序与Rave报表之间的接口,它有两个重要的属性:(1)Engine:指明输出引擎。(2)ProjectFile:指出一个已经用Rave设计好的报表项目文件(.rav文件)。使用RvProject组件生成报表的基本步骤为:(1)调用RvProject.Open。打开ProjectFile属性中定义的报表。(2)调用RvProject.GetReportList(ListBox1.Item,true)。在列表框中显示报表项目文件中的所有报表名。第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件(3)填写列表框ListBox1的OnClick事件,在其中调用以下两个方法:RvProject.SelectReport(ListBox1.ItemListBox1.ItemIndex,true);RvProject.ReportDescToMemo(Memo1);即当用户选择好需打印的报表后,把报表的描述信息显示在多行文本框Memo1中。根据实际应用背景,这一步可以省略。(4)调用RvProject.Execute。实际打印所选报表。(5)调用RvProject.Close。关闭报表项目文件,释放内存。第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件【例】【例】使用RvProject组件生成报表并进行打印的示例。本例按上述5个步骤生成报表,进行打印。所设计的应用程序主界面如图所示,所使用的窗体、组件及其属性值列于表。第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件窗体和组件对象属性表窗体和组件对象属性表 第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件下面编写程序代码:下面编写程序代码:/主窗体FrmRepPrn的OnCreate事件。完成创建报表的(1)-(2)步。procedureTFrmRepPrn.FormCreate(Sender:TObject);beginRvPro.Open;RvPro.GetReportList(LBRep.Items,true);end;/列表框LBRep的OnClick事件。/当在LBRep列表框中选择好要打印得报表后,完成生成报表的第3步。procedureTFrmRepPrn.LBRepClick(Sender:TObject);beginRvPro.SelectReport(LBRep.ItemsLBRep.ItemIndex,true);RvPro.ReportDescToMemo(MemDesc);end;第9章数据库应用程序开发9.4.2 数据库报表组件数据库报表组件/主窗体FrmRepPrn的OnDestroy事件。完成生成报表的第5步。procedure TFrmRepPrn.FormDestroy(Sender:TObject);begin RvPro.Close;end;/按钮BtnPrn的OnClick事件。完成生成报表的第4步。procedure TFrmRepPrn.BtnPrnClick(Sender:TObject);begin RvPro.Execute;end;/主窗体FrmRepPrn的OnShow事件。procedure TFrmRepPrn.FormShow(Sender:TObject);begin LBRep.ItemIndex:=0;LBRepClick(nil);end;第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器 1.Rave报表设计器报表设计器 有三种方法打开Rave 5.0报表设计器:(1)选择Delphi 7主菜单ToolsRave Designer。(2)在主窗体中放入RvProject组件后,双击该组件。(3)在主窗体中放入RvProject组件后,右击该组件,选择Rave Visual Designer。Rave报表设计器主界面,它包括四个部分:(1)设计器顶端显示各种工具条。(2)页(Page)。(3)项目树。包括三类节点,即报表库、全局页、数据视图。(4)属性面板,用于定义组件的外观和行为。第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器2.报表设计器组件报表设计器组件(1)基本组件)基本组件 Rave的的Standard组件组件Standard组件及其作用组件及其作用第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器(2)条形码组件)条形码组件(3)画图组件)画图组件 Bar Code页组件页组件 Drawing页组件页组件第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器(4)报表组件)报表组件 报表组件用于从数据库中取得数据,产生报表。Report页组件说明 Report页组件页组件第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器3.报表预览报表预览 三种方法执行一个报表:(1)选择Rave报表设计器主菜单中的FileExecute Report选项。(2)单击工具栏中或Project页中的ExecuteReport图标。(3)按F9键。4.表段表段表段是指特殊的数据输出区域,Rave5.0内定义了多种表段,如表头BodyHeader、分组组头GroupHeader、表格数据栏Detail、表尾BodyFooter等。第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器下面是下面是Delphi 7.0中自带的一个表段示例中自带的一个表段示例:(1)选择Rave主菜单中的FileOpen选项,打开RaveDemo.rav文件(在ProgramFilesBorlandDelphi7Rave5Demos目录下)。(2)在报表设计器右边的项目树中打开ReportLibrary,双击SimpleListingReport报表使其加亮显示,再单击其左侧的“+”打开它,出现MainPage页。(3)再单击MainPage页左侧的“+”,出现CustomerDVRegion区域,再打开它。(4)选中CustomerDVTitleBand,观察报表设计器左边的属性面板中的属性设置。本表段将作为ControllerBand属性定义的表段的表头或表尾,是表头还是表尾,取决于BandStyle属性。单击BandStyle属性右侧的,进入表段风格编辑器,如下图所示。第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器表段风格编辑器:第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器在表段风格编辑器中,可以定义或改变表段风格,表段风格包括表段的打印位置(即前面说明的表段的类型)和打印时机,两者分别给出报表静态和动态信息,两表列出了表段位置和打印时机的信息。表段的位置说明表段的位置说明表段打印时机说明表段打印时机说明第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器【例例】在上面已打开的报表中,为每行记录增加一行横线分隔符,并在报表的每一页页头打印出一个图标。步骤如下:(1)放入Report页中的两个Band组件(组件名BdLine和BdRear)到DVStuRegion区域。(2)将BdLine和BdRear的ControllerBand属性均设置为DVStuDataBand。这时,注意观察页面设计器中这两个表段前面的箭头形状和颜色的变化,从中可以清楚地看出这两个表段BdLine和BdRear与DVStuDataBand表段的对应关系。(3)在BdLine表段中,用Drawing页中的HLine组件画一横线。在BdRear表段中,放入Standard页组件中的Text组件(TxtRear),设置其Text属性为“学生情况表”,见图。第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器(4)选中BdLine,在属性面板中,单击BandStyle属性右侧的,进入表段风格编辑器,设置BdLine的BandStyle属性。在Print Header组中,选中Detail。在Print Occurrence组中,选中First。再设置BdRear的BandStyle属性。在Print Header组中,选中Body Footer。在Print Occurrence组中,选中First。设置完成后,表段的风格见图。打印预览学生情况报表如下一页图所示。第9章数据库应用程序开发9.4.3 Rave报表设计器报表设计器报表预览报表预览图图第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例 1.建立数据模块建立数据模块(1)打开项目文件StkPrj。(2)(2)建立数据模块DMStkDy(数据模块单元为DMUStkDy),向其中加入9个Query组件,如图所示,(每个Query组件与一种题型相对应),Query组件的属性按下一页表进行设置。数据模块数据模块DMStkDy第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例 数据模块中组件对象属性表数据模块中组件对象属性表设置对象属性的说明:设置对象属性的说明:(1)共有9个ADOQuery组件,其中QryXZ、QryTK、QryPD、QryJD、QryJS、QryLS、QryWD、QryBC共8个组件,它们之间的区别在于SQL语句中的where子句,从txdm=1到 txdm=8,在此从略。(2)点击QrySJM组件的Parameters参数右侧 ,设置参数bh的类型 为DataType为ftInteger。第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例(3)使用字段编辑器添加QryXZ、QryTK、QryPD、QryJD、QryJS、QryLS、QryWD、QryBC、QrySJM中的字段为永久字段。(4)在数据模块单元的实现部分引入DMUStk,即usesDMUStk;2.建立打印试卷窗体建立打印试卷窗体9个RvDataSetConnection组件每个RvDataSetConnection组件与数据模块DMStkDy中的一个Query组件对应。RAVEProject组件RvProSJ第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例打印试卷窗体和组件对象属性表打印试卷窗体和组件对象属性表 设置对象属性的说明:共有9个RvDataSetConnection组件(RvDSConXZ、RvDSConTK、RvDSConPD、RvDSConJD、RvDSConJS、RvDSConLS、RvDSConWD、RvDSConBC、RvDSConSJM),它们的DataSet 属性分别设置为(DMStkDy.QryXZ、RvDSConTK、DMStkDy.QryPD、DMStkDy.QryJD、DMStkDy.QryJS、DMStkDy.QryLS、DMStkDy.QryWD、DMStkDy.QryBC、DMStkDy.QrySJM),在此略去。第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例3.创建数据视图创建数据视图 进入Rave报表设计器,分别为RvDSConXZ至RvDSConBC和RvDSConSJM等9个组件创建数据视图DataView1至DataView9(重命名为DVXZ、DVTK、DVPD、DVJD、DVJS、DVLS、DVWD、DVBC、DVSJM,分别代表选择题、填空题、判断题、简答题、计算题、论述题、问答题、编程题和试卷名)。创建这些数据视图后,在RAVE报表设计器中Data Connections对话框将显示连接,如下左图所示。在项目树中将列出这9个数据视图,如右图所示。第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例4.创建试卷报表创建试卷报表(1)在报表中放入一个Report页中的DataText组件和三个Standard页中的Text组件(分别命名为DTxtSJM、TxtSJT1、TxtSJT2、TxtSJT3),用以填写试卷头。(2)在页中放入一个Region组件(命名为paper)。(3)在Region组件内放置一个Band组件(命名为BdXZT),在该Band组件内放置一个Text组件TxtXZT,用以填写“选择题”头。第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例(4)在Region组件内放入一个DataBand组件(命名为DBXZT)在该组件内放入一个Text组件TxtXZTNum,该组件用于填写选择题的题号,题号由TxtXZTNum的OnGetText事件代码生成。该事件代码为:TxtXZTNum.text:=inttostr(strtoint(TxtXZTNum.text)+1);/题号初值为1。放入TxtXZTNum组件后,单击报表的“EventEditor”页,见图,在“AvailableEvents”列表框中选择“OnGetText”,在最下方的编辑框中输入上述语句。创建试卷报表创建试卷报表第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例再在DBXZT组件内放入一个DataMemo组件DMemXZT,该组件用于写入试卷中选择题的内容。以上各组件的属性设置见表:第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例各组件的属性设置续表(5)重复第3步和第4步,完成填空题、简答题等其他题型的生成。参见下页图。第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例 产生的项目树产生的项目树 Paper页页第9章数据库应用程序开发9.4.4 试题库管理系统的打印模块实例试题库管理系统的打印模块实例实际产生的试卷实际产生的试卷第9章数据库应用程序开发9.4.5 进一步使用报表设计器进一步使用报表设计器 Rave 5.0还有一些附加的功能。其中一个较有用的功能是能将报表格式文件转换为HTML格式文件。例如把上图的试卷保存为HTML格式文件:procedureTForm1.Button1Click(Sender:TObject);varNDRStream:TMemoryStream;beginNDRStream:=TMemoryStream.Create;tryNDRStream.LoadFromFile(test.ndr);RenderHTML.PrintRender(NDRStream,test.html);finallyNDRStream.Free;end;ShowMessage(NDRConverted);end;第9章数据库应用程序开发66、节制使快乐增加并使享受加强。德谟克利特67、今天应做的事没有做,明天再早也是耽误了。裴斯泰洛齐68、决定一个人的一生,以及整个命运的,只是一瞬之间。歌德69、懒人无法享受休息之乐。拉布克70、浪费时间是一桩大罪过。卢梭
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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