已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
11.3在表单中操作表,实用的VFP应用程序需要在表单中操作数据表,这就要编写事件代码来实现。11.3.1在表单中显示浏览窗口【例11-4】在表单中使用命令方式来打开浏览窗口,显示并修改数据表的内容(如图11-16所示)。,设计步骤如下:建立应用程序用户界面与设置对象属性。选择“新建”表单,进入表单设计器。增加两个命令按钮Command1、Command2,并按图11-17所示设置其属性。,1,编写代码。在表单的Load事件代码中打开数据表:USExs在表单的Destroy事件代码中关闭数据表:USE在命令按钮Command1的Click事件代码中打开编辑窗口:GOTOPEDIT在命令按钮Command2的Click事件代码中打开浏览窗口:,GOTOPBROWSE11.3.2数据环境虽然在表单中可以使用USE命令来打开和关闭数据表,但是在一些较为复杂的情况下,比如使用多表或数据库时,不易协调各表之间的关系。比较可靠的办法是使用“数据环境”。数据环境是一个对象,它包含与表单相互作用的表或视图,以及表单所要求的表之间的关系。可以在“数据环境设计器”中直观地设置数据环境,并与表单一起保存。在表单运行时,数据环境可以自动打开、关闭表和视图。在表单创建了数据环境,就可以通过“属性”窗口来设置控件的ControlSource属性。,2,【例11-5】在上例的表单中使用数据环境。设计步骤如下:创建“数据环境”。选择新建表单,进入表单设计器。在系统菜单的“显示”子菜单中选择“数据环境”,或在表单设计器中单击鼠标右键,从弹出的快捷菜单中选择“数据环境”,或单击表单设计器中“数据环境”按钮(如图11-18),均可打开“数据环境设计器”窗口。,在“数据环境”窗口中单击鼠标右键,在快捷菜单中选择“添加”,可添加表单所要控制的数据表:xs.dbf,如图11-19所示。修改代码。删除上例表单中的Load事件代码与Destroy事件代码,改由数据环境来处理数据表的打开与关闭。运行表单,结果完全相同。,3,11.3.3在表单中操作数据表用表单设计器设计一个可以浏览和编辑数据表的程序。【例11-6】设计一个操作数据表的表单,使之具有按记录浏览、编辑的功能。例题:浏览数据表设计步骤如下:创建数据环境。选择新建表单,进入表单设计器。打开“数据环境设计器”窗口,在“数据环境”窗口中单击鼠标右键,在快捷菜单中选择“添加”,添加表单所要控制的数据表:xs.dbf,如图11-19所示。建立应用程序用户界面与设置对象属性。依次将表中“xh”、“xm”、“xb”等字段用鼠标拖拉至表单中。表单上出现相应的标签和文本框,如图11-20左所示。然后增加一个命令按钮组CommandGroup1和一个标签Label1。修改各对象属性如图11-20右所示。,4,11.3.4使用表格控件虽然“浏览”窗口可以满足浏览数据的需要,但是缺乏对数据的有效控制。为了更好地控制数据的显示,可以使用表格(Grid)控件。表格是一个容器对象,表格包含列。这些列除了包含列标题和控制外,每一个列还拥有自己的一组属性、事件和方法,即可以提供对表格单元的大量控制。【例11-7】在例11-6的表单中增加一个浏览窗口。如图11-23所示。设计步骤如下:打开上例的表单文件,进入表单设计器。首先修改表单布局,并在表单上增加一个“表格”控件Grid1,如图11-24所示。,5,用鼠标右键单击Grid1,在弹出的快捷菜单中选择“生成器”,打开“表格生成器”。用鼠标单击“数据库和表”右边的命令按钮“.”,如图11-25左所示,可以选择数据表。然后选择“可用字段”中的“学号”、“姓名”、“性别”和“总学分”等字段,按添加按钮,将其添加到“选定字段”列表中,如图11-25右所示。,在“布局”页中,用鼠标指向标题行的分隔线可以调整列标题的宽度,如图11-26。,6,按“确定”退出表格生成器。运行表单,发现表格中的记录和文本框中的记录不同步。为此,重新打开“表单设计器”,继续修改表单。修改事件代码。编写表格Grid1的AfterRowColCHange事件代码:LPARAMETERSnColIndexTHISFORM.Refresh其中第一行是原有的。第二行表示当光标在表格中移动时,随时刷新表单。在命令按钮组Command的Click事件代码最后增加一条命令:THISFORM.Grid1.SetFocus,修改后的数据表单运行时如图11-23所示。11.3.5使用页框如果感觉表单界面太狭小,可以在设计时扩大表单,或者为表单添加页面。【例11-8】在例11-7的表单中使用页面技术。如图11-27所示。,7,设计步骤如下:在“文件”菜单中选择“打开”或直接用鼠标单击“常用工具栏”中的“打开”按钮,选择例11-6的表单文件,进入表单设计器。增加页框。将表单中除标题和命令按钮组外的所有控件做“多重选定”(如图11-28)。,8,编写代码。在例11-6的基础上增加如下代码:页框pageFrame1中第一页page1的Activate事件代码:THIS.txtxh.SetFocus页框pageFrame1中第二页page2的Activate事件代码:THIS.grdxs.SetFocus第二页page2中表格Grdxs的AfterRowColChange事件代码:LPARAMETERSnColIndexTHIS.Parent.Parent.Page1.Refresh,9,另外修改命令按钮组CommandGroup1的Click事件代码:在原代码后添加如下代码:IFTHISFORM.PageFrame1.ActivePage=2THISFORM.PageFrame1.Page2.Grdxs.SetFocusELSETHISFORM.RefreshENDIFTHISFORM.Refresh,10,11.3.7编辑表单的设计【例11-10】修改例11-9,使之具有增加、删除、编辑记录的功能(如图11-35),在例11-9的基础上进行修改,具体步骤如下:,11,在表单上增加一个命令按钮组CommandGroup2,将其按钮个数属性ButtonCount改为:3,并依次修改各按钮的Caption属性,如图11-35所示。修改第一页中各文本框、编辑框、选项按钮组的属性,见表11-5。,在表单中增加一个自定义的方法disi(),用来控制第一页中输入框的可用与否。修改数据环境中数据表的Exclusive(独占)属性改为:.T.真,BufferModeOverride属性改为:2保守式行缓冲。编写代码。编写自定义方法disi()的代码:,12,LPARAMETERSLTHIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),TextBox)THIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),OptionGroup)THIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),EditBox)THIS.CommandGroup1.Enabled=IIF(L,.F.,.T.)编写命令按钮组CommandGroup2中各按钮的事件代码如下:Command1的Click事件代码:IFTHIS.Caption=添加THIS.Caption=保存THIS.Parent.Command2.Caption=取消THISFORM.disi(.T.)THIS.Parent.Tag=STR(RECNO()APPENDBLANKELSETHIS.Caption=添加THIS.Parent.Command2.Caption=编辑THISFORM.disi(.F.)ENDIFTHISFORM.PageFrame1.RefreshCommand2的Click事件代码:,13,IFTHIS.Caption=编辑THIS.Caption=取消THIS.Parent.Command1.Caption=保存THISFORM.disi(.T.)THIS.Parent.Tag=STR(RECNO()ELSETHIS.Caption=编辑THIS.Parent.Command1.Caption=添加TABLEREVERT()THISFORM.disi(.F.)THISFORM.PageFrame1.Page1.RefreshENDIFGOVAL(THIS.Parent.Tag)THISFORM.PageFrame1.Page1.RefreshCommand3的Click事件代码:a=MESSAGEBOX(是否确定删除当前记录?,32+4+256,删除记录)IFa=6THIS.Tag=THISFORM.PageFrame1.Page2.grdxs.RecordSourceDELETENEXT1PACKTHISFORM.PageFrame1.Page2.grdxs.RecordSource=THIS.TagENDIF,14,运行表单后,各输入框禁用,只有当按下“添加”或“编辑”按钮后,各输入框才被启用。此时两按钮分别变为:“保存”和“取消”,按下“保存”,可以将添加的记录或对记录所作的修改存盘,按下“取消”,则取消所作的添加或修改。说明:方法SetAll()为容器对象中的所有控件或某类控件指定一个属性值。函数TABLEREVERT()可以取消对当前记录的修改。11.3.8使用下拉列表框【例11-11】修改例11-10,在数据环境中增加一个班级代码表,并且使用下拉列表框来输入班级编号“bjbh”(如图11-36所示)。在例11-10的基础之上进行修改,具体步骤如下:修改数据环境,增加班级代码表bj,在数据环境设计器中,从xs表中拖动“bjbh”字段至bj表,按“bjbh”建立了两个表之间的关系,如图11-37所示。,15,修改表单,删除第一页中输入班级编号的文本框“txtbjbh”,增加一个组合框Combo1。另外再将“照片”删除。修改组合框的属性,见表11-6。,修改自定义方法disi()的代码:LPARAMETERSLTHIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),TextBox)THIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),Optiongroup)THIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),editbox)THIS.PageFrame1.Page1.SetAll(Enabled,IIF(L,.T.,.F.),Combobox)THIS.CommandGroup1.Enabled=IIF(L,.F.,.T.),16,表单中的控件可以分为两类:与表中数据绑定的控件和不与数据绑定的控件。当用户使用绑定型控件时,所输入或选择的值将保存在数据源中(数据源可以是表的字段、临时表的字段或内存变量)。要想绑定控件和数据,可以设置控件的ControlSource属性。如果要绑定“表格”和数据,则需要设置表格的RecordSource属性,见表11-7。,17,如果没有设置控件的ControlSource属性,用户在控件中输入或选择的值只作为属性设置保存。在控件生存期之后,这个值并不保存在磁盘上,也不保存到内存变量中。部分通过使用控件完成的任务需要将数据与控件绑定,其他任务则不需要。在上面的例子中,因为直接从“数据环境”中将字段拖到表单上,系统自动将各字段与相应的控件绑定,无需另外操作。如果是先建立控件,就需要手工操作将控件与相应的字段绑定。,18,11.4定制表,可以在表中设置一个过滤器来定制自己的表,有选择地显示某些记录。还可以通过设置字段过滤器,对表中的某些字段的访问进行限制,这样可以选择显示哪些字段。11.4.1筛选表,如果只想查看某一类型的记录,可以通过设置过滤器对“浏览”窗口中显示的记录进行限制。在某些情况下,例如只想查看销售额高于某一数值的商品,或者在某段时间内雇用的职员,筛选就显得非常有用。1.使用“浏览”窗口若要在表中建立过滤器,首先打开表,然后浏览要筛选的表。从“表”菜单中选择“属性”命令。在“工作区属性”,对话框中的“数据过滤器”框内输入筛选表达式,如图11-38所示。或者,选择“数据过滤器”框后面的对话按钮,在“表达式生成器”中创建一个表达式来选择要查看的记录,然后单击“确定”按钮。浏览表时则只显示经筛选表达式筛选过的记录。例如,在“数据筛选”对话框中输入显示所有女同学记录的表达式:NOTxs.xb,19,2.使用命令可用SETFILTER命令筛选数据。若要指定一个暂时的条件,使表中只有满足该条件的记录才能访问时,这个命令特别有用。SETFILTER命令的语法格式为:SETFILTERTO逻辑表达式【例1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行自助设备外包合同
- 2026年铸造工(高级)铸造材料成本控制与节约考试试卷及答案
- 隧道衬砌钢筋施工工艺
- 坪山企业劳务外包合同
- 机场停机坪道面施工工艺
- 注册公用设备工程师(暖通空调)《专业基础考试》真题试卷及答案详解
- 骨折合并糖尿病护理-1
- 工业园区保安外包合同
- 电商客户维护外包合同
- 农村煤改气安检外包合同
- 2026年安徽省体育彩票管理中心编外聘用人员公开招聘11名考试参考题库及答案解析
- 2026重庆物流集团数字科技有限公司招聘3人笔试历年参考题库附带答案详解
- 2026年滨州国有资本投资运营集团有限公司公开招聘国有企业工作人员(15名)笔试参考题库及答案解析
- 2026广西能汇投资集团有限公司校园招聘笔试参考题库及答案解析
- 河南省顶级名校2026届高三年级5月押题导向卷(一)历史试卷(含答案及解析)
- 开封市汽车产业投资有限公司、开封市文心科教投资发展有限公司招聘笔试题库2026
- 2026年安全生产月活动宣贯培训课件
- 上海静安区社区工作者招聘考试真题2024
- 从创意到创业知到智慧树章节测试课后答案2024年秋湖南师范大学
- GB/T 197-2003普通螺纹公差
- GB/T 11373-2017热喷涂金属零部件表面的预处理
评论
0/150
提交评论