vfp表单教案
vfp表单教案(精选4篇)
vfp表单教案 第1篇
7.1 基本概念
1.名词解释
表单:
即用户与计算机进行交流的一种屏幕界面,用于数据的显示、输入、修改,
VFP教程 七、 表单设计
。该界面可以自行设计和定义,是一种容器类,可包括多个控件(或称对象)。
表单集:
可包含一张或多张表单的容器。
数据环境:
在打开或修改一个表单或报表时需要打开的全部表、视图和关系。它以窗口形式(类似于数据库设计器)反映出与表单有关的表、视图、表之间关系等内容。可以用数据环境设计器来创建和修改表单的数据环境。
2.表单设计界面
主要包括: 表单向导、表单设计器、 表单设计器工具栏、 表单控件工具栏、 属性窗口
3.表单设计中常用的属性、事件与方法介绍
属性、事件、方法
说明
默认值
AlwaysOnTop属性控制表单是否总是处在其他打开窗口之上假(.F.)AutoCenter属性控制表单初始化时是否让表单自动地在Visual FoxPro主窗口中居中假(.F.)BackColor属性决定表单窗口的颜色255,255,255BorderStyle属性决定表单是否有边框,若有边框,是单线边框、双线边框,还是系统边框,
电脑资料
如果BorderStyle为3(系统),用户可重新改变表单大小3Caption属性决定表单标题栏显示的文本FormlClosable属性控制用户是否能通过双击“关闭”框来关闭表单真(.T.)MaxButton属性控制表单是否具有最大化按钮真(.T.)MinButton属性控制表单是否具有最小化按钮真(.T.)Movable属性控制表单是否能移动到屏幕的新位置真(.T.)WindowState属性控制表单是最小化、最大化还是正常状态0 正常WindowType属性控制表单是非模式表单(默认)还是模式表单。如果表单是模式表单,用户在访问应用程序用户界面中任何其他单元前必须关闭该表单0 非模式Activate事件当激活表单时发生Click事件在控制上单击鼠标左键时发生DblClick事件在控制上双击鼠标左键时发生Destroy事件当释放一个对象的实例时发生Init事件在创建表单对象时发生Error事件当某方法(过程)在运行出错时发生KeyPress事件当按下并释放某个键时发生Load事件在创建表单对象前发生Unload事件当对象释放时发生RightClick事件在单击鼠标右键时发生AddObject方法运行时,在容器对象中添加对象Move方法移动一个对象Refresh方法重画表单或控制,并刷新所有值Release方法从内存中释放表单Show方法显示一张表单
基于VFP的查询表单设计与实现 第2篇
1 表单设计
表单是数据处理的用户界面,用户通过各种表单来认识和使用数据处理应用软件。在开发一个数据库应用系统时,表单的设计是非常重要、不可缺少的一个环节。
表单设计的基本步骤:
1)设置数据环境。分析表单是否涉及到数据表或视图中的数据,根据需要在数据环境中添加数据表或视图。数据环境及其中的表或视图都是对象,可以对其进行属性设置,数据环境的设置与表单一起保存。在运行表单时,VFP自动打开其数据环境中的表或视图。
2)设计表单界面:添加各类控件,设置各个对象的属性,调整布局。
3)编写事件代码:事件代码设计是表单设计的关键。对某些对象,如命令按钮等进行相关的事件设计,事件代码在对象的事件触发时自动执行。
2 数据源说明
本文以学生-课程-成绩数据库为数据源,数据库中包括主要三个数据表,关系模式分别为:
Xuesheng(Xh,Xm,Xb,Csrq),字段分别表示学生的学号、姓名、性别和出生日期;
Kecheng(Kcdh,Kcm,Llxs,Syxs,Bxk,Xq,Kcbz),其中字段分别表示课程代号、课程名、理论学时、实验学时、必修课、开课学期和课程备注;
Chengji(Xh,Kcdh,Cj),其中字段分别表示学号、课程代号和成绩。
在Xuesheng与Chengji之间、Kecheng与Chengji之间建立一对多永久关系。
部分数据如图1所示。
3 查询表单设计
运行查表单询,用户可以通过交互方式,实现根据输入查询信息,得到相关信息。
本文设计如图2所示的查询表单,运行表单,用户输入学生姓名,点击“查询”按钮查询其选修课程及成绩,结果显示在表单上的表格中,点击“退出”按钮,释放表单。
3.1 利用SQL-SELECT语句设计查询表单
SELECT语句是SQL(Structured Query Language)语言的核心语句,提供对数据库的查询。SELECT语句使用方式灵活,功能丰富,不仅可以完成单表查询,也可以完成复杂的连接查询和嵌套查询。
表单设计分析:利用SELECT语句设计图2所示表单,设计界面如图3所示,表单文件名设为F1。单击“查询”按钮,根据文本框Text1中输入的姓名进行查询,查询结果保存在临时表T1中,要使查询结果在Grid1中显示,表格Grid1的数据源Recordsource应设定为临时表T1。为避免表单初次运行表格Grid1中无数据出现空白表,在表单的Init事件中将表格的数据源进行初始化。
设计步骤如下:
1)使用SELECT语句不需要打开要查询的数据表,所以无需考虑数据环境。
2)添加两个标签,将Label1的Caption属性设为“基于VFP的查询表单”,FontName为“楷体_GB2312”,FontSize为18,Label2的Caption属性设为“请输入姓名”,FontName为“楷体_GB2312”,FontSize为14。
3)添加一个文本框Text1,用于运行时输入要查询的信息。
4)添加两个命令按钮,Caption属性分别设为“查询”和“退出”,FontName为“楷体_GB2312”。
5)添加表格Grid1,用于显示查询信息。
6)调整各个对象大小和布局。
7)表单事件代码设计:
Form1的Init事件代码:
讨论:由于SQL-SELECT语句功能强大,可以对单表、多表实现单条件查询、多条件组合查询的查询功能,使用这种方法设计查询表单。对于不同的数据源和查询要求,可参照上例,多条件时增加输入文本框(或使用组合框、选项按钮组等),修改SELECT语句即可。3.2利用参数化视图设计查询表单
3.2 利用参数化视图设计查询表单
视图是关系数据库系统提供给用户从多种角度观察数据库中数据的重要机制。视图是从一个或者几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。在创建视图时,可以创建参数化视图,用它来限定视图的作用范围,避免每取一部分记录就单独创建一个视图。
利用参数化视图设计如图2所示表单,设计界面如图4所示,表单文件名设为F2。
设计步骤如下:
1)打开学生-课程-成绩数据库,利用视图设计器创建参数化视图St1。将Xuesheng、Chengji与Kecheng添加到视图中,在字段选项卡选定Xuesheng.Xh,Xuesheng.Xm,Kecheng.Kcdh,Kecheng.Kcm,Chengji.Cj,在“筛选”选项卡中设置条件:Xuesheng.Xm=?xx,用“?xx”方式调用参数变量。这里,xx是变量名。参数化视图St1的设计界面如图5所示。
2)将参数化视图St1添加到查询表单数据环境中,并将数据环境中的参数化视图St1(Cursor1)的Nodataonload属性设置为.t.。Nodataonload属性设为.t.,表单初始化时,打开视图,但视图不取得任何数据。这样可以避免运行表单时参数化视图弹出要求输入参数变量的对话框。
3)标签、文本框、命令按钮的添加和属性设置同图3表单F1的设计。
4)把数据环境中的参数化视图St1拖放到表单中,生成表格grdSt1。
5)调整各个对象大小和布局。
6)表单事件代码设计:
Form1的Init事件代码:
Local xx&&通过定义变量xx,实时改变视图的参数变量。
“查询”按钮的Click事件代码:
讨论:视图从一个或者几个基本表(或视图)导出数据,同样可以对单表、多表实现单条件查询、多条件组合查询。通过设计参数化视图,当参数变量发生变化时刷新视图,实现交互查询。对于不同的数据源和查询要求,参照上例,多条件时增加输入文本框(或使用组合框、选项按钮组等),修改参数化视图的设计即可。在设计时需要根据参数的个数、名称在表单的Init事件中设置对应的变量,在对参数变量重新赋值后,使用=ReQuery()函数刷新视图。ReQuery()的参数为视图名。
3.3 利用数据过滤器设计查询表单
在VFP中数据过滤器可以为数据表或视图设置逻辑表,将不符合条件的记录“屏蔽”起来。一个表或视图设置过滤器后,对表的操作仅限于满足条件的记录。数据过滤器实现可以通过菜单方式,也可以使用SET FILTER TO命令实现。
利用SET FILTER TO命令设计如图2所示的查询表单,设计界面如图6所示,表单文件名设为F3。设计步骤如下:
1)该表单查询数据涉及到的数据表有Xuesheng.dbf、Kecheng.dbf和Chengji.dbf,打开学生-课程-成绩数据库,创建视图St2,字段包含Xuesheng.dbf中的Xh,Xm,Kecheng.dbf中的Kcdh,Kcm,Chengji.dbf中的Cj字段。将视图St2添加到表单数据环境中。
2)标签、文本框、命令按钮的添加和属性设置同图3表单的设计。
3)把数据环境中的视图St2拖放到表单中,生成表格grdSt2。
4)调整各个对象大小和布局。
5)表单事件代码设计:
“查询”按钮的Click事件代码:
讨论:表单F3涉及多个表,使用视图作为数据源相对来说操作更方便,如果要多条件组合查询,只需在表单上增加输入文本框,修改SET FILTER TO命令的条件即可。如果对单表进行查询,用这种设计方法更能显出优势,直接将要查询的数据表加入数据环境,代码编写简单,易于实现。
4 结束语
该文对VFP查询表单的涉及进行了探讨,利用SQL-SELECT、参数化视图和数据过滤器等方法设计并实现了查询表单,详细说明了设计思路及步骤,提供了事件代码。利用SQL-SELECT方法设计查询表单,关键在SELECT语句。利用参数化视图,关键在参数化视图的设计。数据过滤器方法关键在数据源的组织和SET FILTER TO命令中条件表达式的表示。
摘要:利用SQL-SELECT、参数化视图和数据过滤器等方法设计并实现了查询表单,并对三种设计方法进行了讨论。
关键词:VFP,查询,表单设计
参考文献
[1]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.
[2]刘瑞新,汪远征.Visual FoxPro程序设计教程[M].北京:电子工业出版社,2006.
VFP表单登录界面之设计 第3篇
关键词:控件;表单;数据表;数据环境;属性;程序代码
中图分类号:TP311.1 文献标识码:A文章编号:1007-9599 (2010) 13-0000-01
Login Screen Design of VFP Form
Xie Minghui
(Hefei Railway Engineering School,Hefei230011,China)
Abstract:In order to maintain data confidentiality and security,general application has a login authentication interface.This article use the VFP forms associated design.
Keywords:Control;Form;Data sheet;Data environment;Property;Program code
用户在使用某个数据库时,一般都会被要求输入用户名和密码。这是设计者为了维护数据的保密性和安全性而设计的。只有输入了正确的用户名和密码后,方才被允许进入系统,使用其中的数据。在编写应用程序时,多数人也希望自己的程序具有此功能。设计这个界面的方法有多种,下面我就以Visual FoxPro的表单为例,说明如何设计出这一登录界面。
一、在表单中设计登录界面
在VFP环境中,创建一个表单控件,并在其中添加三个标签控件,两个文本框控件,两个命令按钮控件,一个计时器控件。
各控件如下图放置:
二、在属性窗口中设置各控件的相关属性:
设置表单form1属性:
Thisform.caption=”登录界面”
Thisform.width=426
Thisform.high=300
Thisform.autocenter=.t.
设置标签1属性:
Thisform.label1.value=”欢迎登录成绩查询系统”
Thisform.label1.fontmane=”楷体_GB2312”
Thisform.label1.fontbold=.t.
Thisform.label1.fontsize=20
Thisform.label1.forecolor=rgb(0,128,255)
Thisform.label1.height=26
Thisform.label1.width=232
Thisform.label1.left=70
Thisfrom.label1.top=112
Thisform.label1. alignment=2
Thisform.label1.backstyle=0
设置标签2属性:
Thisform.label2.caption=”用户名”
设置标签3属性:
Thisform.label3.caption=”密码”
设置文本框2属性:
Thisform.text2.passwordchar=”*”
设置命令按钮1属性:
Thisform.command1.caption=”确定”
设置命令按钮2属性:
Thisform.command2.caption=”退出”
设置计时器1的属性:
Thisform.timer1.enabled=.t.
Thisform.timer1.interval=70
三、为表单设置一个数据环境
(一)创建mdb.dbf数据表文件,并建立由用户名和密码两个字段构成的表结构,且根据实际情况填充具体记录值。
mdb.dbf表结构
mdb.dbf表记录
(二)在表单控件form1中添加相关联的数据环境
给表单控件form1的数据环境添加mdb.dbf数据源。即右击表单控件form1的空白处,选择其快捷菜单中的“数据环境…”菜单项,将mdb.dbf数据表文件添加进来,这样,mdb.dbf数据表文件将随着表单的运动而自动打开,随着表单的关闭而自动关闭。
编写程序代码
1.利用Timer1控件的time事件设计一个滚动欢迎字幕
ifthisform.label1.left<-232标签label1已移出了表单的左边界
thisform.label1.left=290 重置label1的位置于表单的右侧
thisform.label1.left=thisform.label1.left-3 向左侧移动3个像素,产生滚动效果
else
thisform.label1.left=thisform.label1.left-3
endif
2.在表单的load事件中输入如下代码:
Public n定义一个全局变量
n=0 给变量赋初值为零
3.在表单command1的click事件输入如下代码:
yhm=alltrim(thisform.text1.value)用变量yhm来提取并存储用户输入的用户名
mm=alltrim(thisform.text2.value) 用变量mm来提取并存储用户输入的密码
go top
locate for 用户名=yhm .and. 密码=val(mm)在mdb.dbf数据表查找并核对用户名和密码
if found()=.n. 在mdb.dbf数据表中找不到满足条件的记录,说明用户输入的用户名或密码至少有一个值是错误的
n=n+1 用于记录用户登录的次数,起到了计数器的作用
if n=3
wait window "用户名或密码不对,登陆失败..2秒后自动退出程序!!"timeout 2
thisform.release
quit
else 用户登录的次数小于3 ,可以重新登录
wait window"用户名或密码不对,请重新输入"timeout 2
thisform.text1.setfocus
thisform.text1.value=""
thisform.text2.value=""
thisform.refresh
endif
else 找到了滿足条件的记录,说明该用户名和密码同时存在,是一个合法的用户,可以登录放行
do start.scx运行下一个表单,执行主程序
endif
4.在表单的command2的click事件中输入如下代码:
thisform.release
quit
结束语:
vfp表单教案 第4篇
关键词:Visual Foxpro 6.0,表单设计,数据环境
在Visual Foxpro中, 面向对象的程序设计部分一直都是日常教学和国家计算机等级考试的重点。在表单设计过程中, 为表单设置数据环境是其中的重要环节之一。表单的数据环境附属于表单, 定义了表单要使用的数据源, 包含了表单运行所需的所有表、视图和表间关系, 供表单中的各个控件对象使用。数据环境的设置具有操作简单, 直观等优点, 但在实际使用过程中, 特别是数据环境中需要添加多个表时, 往往会遇到表单运行后, 信息无法正确显示的问题。
1 表单实例
例如, 建立一个查询表单。表单的功能是利用组合框选择父表中某位学生的姓名后, 将子表中该学生的相关信息在表格中显示出来。基本设计步骤如下:
1) 首先确定主表和子表。在本例中, 根据题意应将姓名字段所在的xuesheng.dbf作为主表, chengji.dbf作为子表。将两表分别添加到表单的数据环境中, 并为两表建立关联。
2) 将表单所需控件对象逐一添加到表单中, 并在各个对象的属性窗口中设置对象的初始属性。
3) 设置组合框的数据源Row Source Type为字段, Row Source为xuesheng.姓名。
4) 利用表格生成器, 以子表chengji.dbf为基础生成表格。
5) 设计完成, 保存并运行表单。完成后的表单界面及表单对应的数据环境如图1所示。
按以上步骤设计并运行表单后, 可能出现表格中无法显示任何信息或表格中显示所有同学而非选中同学信息的情况。
2 问题分析
经过多次测试后发现, 步骤1数据环境设置中主表xuesheng.dbf和子表chengji.dbf的添加顺序与问题的产生有直接关联。若在数据环境设计器中先添加主表xuesheng.dbf, 后添加子表chengji.dbf, 则表单可以正常运行。反之, 若先添加子表chengji.dbf, 后添加主表xuesheng.dbf, 则会出现上述问题。在表单运行过程中, 分别打开能正常运行的表单的数据工作期窗口, 如图2所示。不能正常运行的表单的数据工作期的窗口, 如图3所示。经比较可以发现, 正常表单运行时, 其当前工作区为主表所在工作区, 而异常表单运行时, 其当前工作区为子表所在工作区。此外, 在命令窗口中, 利用select () 和dbf () 测试函数也可以得到同样的验证结果。由此可知, Visual Foxpro 6.0程序默认将先添加到表单数据环境中的表作为当前表在当前工作区打开。另外, 数据环境中的表间关系是临时关系, 表间指针移动遵循临时关系中表间指针的移动规则:主表的记录指针移动, 子表的记录指针发生关联移动。子表的记录指针移动, 主表的记录指针不发生关联移动。由于设置正常表单的数据环境时, 先添加主表后添加子表, 因此, 图2中正常表单的当前工作区为主表所在工作区, 主表记录指针移动, 子表记录指针会发生关联移动, 从而使表格中的信息能正确显示。而设置异常表单的数据环境时, 先添加子表后添加主表, 因此, 图3中异常表单的当前工作区为子表所在的工作区, 子表记录指针移动, 显然不会引起主表指针发生关联移动, 从而导致表格中的信息无法正确显示。
3 解决方法
根据以上的分析, 上述问题可以通过以下三种方式解决:第一种方式是, 在表单的数据环境中添加表时, 注意表的添加顺序, 即先添加主表, 后添加子表。第二种方式是, 在表单加载或初始化过程中, 以代码的方式将主表所在工作区设置为当前工作区。实现这种方式需要在表单的Load事件或Init事件中添加代码:Select<主表别名>, 这样无论数据环境中先添加的是主表还是子表, 表单在运行时都会自动将主表所在工作区设置为当前工作区。第三种方式是, 利用SQL-SELECT语句设计查询表单, 具体思路为:首先, 利用SQL-SELECT语句将满足条件的记录查询出来, 并将查询结果保存到新的表或临时表中。然后, 将表格的数据来源类型Record Sourcetype设置为0或1, 其中0对应数据源类型为表, 1对应数据源类型为临时表。将表格的数据来源Record Source设置为存放结果的表或临时表。由于SQL-SELECT语句功能非常强大, 在查询语句中已包含选择数据来源和建立表间关联的子句, 因此设计表单时, 无需在数据环境中为两表建立表间关系, 本文在此暂不作讨论。
4 结论
经过分析和测试发现, Visual Foxpro 6.0的数据环境设计器默认将先添加进数据环境中的表在当前工作区中打开。若在设计一对多表单时忽略该情况, 则可能导致信息无法正确显示。在添加表时, 注意主表子表的添加顺序或通过代码的方式将主表所在工作区设置为当前工作区均可以解决该问题。此外, 利用SQL-SELECT语句编写表单的事件代码的方式无需在数据环境中设置表间关系, 也可以避免出现该问题。
参考文献
[1]周敏.大学计算机基础教程[M].科学出版社, 2010
[2]朴春赫.浅析在VFP中创建一对多表单时出现的问题及解决方法[J].农业网络信息2009 (9) :133-134
vfp表单教案
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。