Visual FoxPro 6.0学习笔记十四

第十四章表单设计(一)

表单建立的三种方式:一是利用表单设计器,二是利用系统提供的表单向导,三是利用表单生成器。

一、设计圆面积计算表单

(1)执行系统菜单中“文件”/“新建”命令,在“新建”对话框中选择“表单”,然后单击“新建文件”按钮,启动“表单设计器”窗口。

(2)在“表单设计器”窗口中,在“表单控件”工具栏中依次单击“标签”、“文本框”和“命令按钮”,在表单窗口中添加3个标签,2个文本框和2个命令按钮控件对象。

(3)然后为每个控件设定向相应的属性,各个控件的属性设置为:

(4)双击“计算”按钮,打开事件代码编辑窗口,从“过程”列表中选择“Click”事件代码:

r=THISFORM.TEXT1.VALUE&&将TEXT1文本框的值赋给r

THISFORM.TEXT2.VALUE=3.14159*VAL(R)*VAL(R)

(5)双击“退出”按钮,从“过程”列表中选择“Click”事件,然后输入Click事件代码:

THISFORM.RELEASE&&释放表单,结束运行

(6)保存并运行表单,输入圆的半径,单击“计算”按钮,则圆的面积将显示在“面积”后的文本框中。单击“退出”按钮,结束程序的运行。

二、设计求解一元二次方程的根的表单程序

一元二次方程的三个参数a,b,c从表单的文本框中输入,计算结果显示在相应的文本框中且只显示不能修改,请在表单设计器中完成该表单程序的设计,并参照表单设置表单对象(包括其所包含的控件)的属性与属性值,并写出“求解”和“退出”按钮的Click事件过程代码。

(1)“文件”菜单下“新建”,选择“表单”,单击“新建文件”。

(2)单击确定后弹出表单设计器界面。

(3)在“表单设计器”中按照题目要求添加控件:

这里想要计算的结果只显示不能修改只需要将对应文本框的Enable属性改成F即可。

(4)给求解按钮和退出按钮分别编写对应的Click事件:

a=thisform.text1.value
b=thisform.text2.value
c=thisform.text3.value
a=val(a)
b=val(b)
c=val(c)
x1=(-b+sqrt(b^2-4*a*c))/(2*a)
x2=(-b-sqrt(b^2-4*a*c))/(2*a)
thisform.text4.value=x1
thisform.text5.value=x2

thisform.release

(5)保存表单,进行测试:

三、利用表单向导建立单表表单

Visual FoxPro中建立表单最便捷的方法是利用系统提供的表单向导,但表单向导创建的表单只能是数据表表单,即对数据表进行操作的窗口。

(1)执行Visual FoxPro系统窗口中的“文件”菜单下的“新建”命令,将出现“新建”对话框。在新建文件类型对话框中选择“表单”,再单击“向导”按钮,将弹出“向导选取”对话框。

(2)在“向导选取”对话框中选择“表单向导”,然后单击“确定”按钮,将会出现表单向导“步骤1—字段选取”对话框。

(3)在“字段选取”对话框的“数据库和表”列表框中选择需要处理的数据表(例如STUDENT),然后将“可用字段”列表框中出现的部分或全部字段添加到“选择字段”框中。单击“下一步”按钮,进入表单向导“步骤2—选择表单样式”对话框。

(4)在“选择表单样式”对话框中的“样式”列表框中选择“标准式”表单样式,在“按钮类型”列表框中选择表单中的按钮样式,例如“文本按钮”,然后单击“下一步”按钮,进入表单向导“步骤3—排列次序”对话框。

(5)在“排列次序”对话框中的“可用字段或索引标识”列表框中选择“学号”字段作为记录的排序依据,然后单击“下一步”按钮,进入表单向导“步骤4—完成”对话框。

(6)在“完成”对话框中的“请输入表单标题”文本框中输入表单的标题文字“STUDENT”,然后选择表单的保存方式,如“保存并运行表单”,单击“完成”按钮,将出现“保存”对话框,输入表单的文件名“STUDENT”,单击“保存”按钮,将运行设计的表单。

注意:由表单向导建立的表单,可以通过表单设计器对其已有的对象进行修改,同时也可以向表单中添加新对象。

四、数据环境的设置与应用

借助于Visual FoxPro数据环境,设计用于对“rsgl.dbc”数据库中的“员工.DBF”表进行操作的表单。

若希望通过表单控件来显示和修改数据表中的字段数据,通常的方法是设置这些控件的数据源属性ControlSource,以实现数据的绑定。但最简单的方法是在已经建立起表单数据环境的情况下,直接从“数据环境设计器”窗口中将字段、表或视图拖到表单中,系统将自动产生相应的控件并建立起与表、字段等数据源的绑定,自动设置其ControlSource属性。

(1)建立表单中用于显示和编辑数据记录的控件对象

在“表单设计器”窗口中,首先打开rsgl.dbc数据库,然后执行系统“显示”菜单下的“数据环境”命令,将弹出的“添加表或视图”对话框,然后在对话框中将数据库中的“员工”表添加到数据环境窗口中。

(2)单击“关闭”按钮,将出现“数据环境设计器”窗口,在“员工”字段列表窗口中的上单击并将其拖动到表单窗口中,然后调整各个对象的位置。

(3)建立数据记录操作的命令按钮组

①在“表单控件”工具栏上单击“命令按钮组”控件按钮,向表单中添加一个按钮组控件对象,然后在“命令按钮组”控件对象上单击鼠标的右键,并在弹出的快捷菜单中选择“生成器”,将打开“命令组生成器”窗口。

②切换至“按钮”选项卡,将“按钮的数目”微调框中的值设置为5,然后依次在标题列中设置按钮组中每个按钮的标题,即各个按钮Caption属性的属性值。

③切换至“布局”选项卡,从布局选项卡中设置按钮的布局,如按钮组是“垂直”或“水平”放置、按钮之间的间隔等。

(4)在事件过程代码编辑窗口中,编写命令按钮组CommandGroup1的Click事件代码如下:

DO CASE
    CASE THIS.VALUE=1&&单击“第一个”按钮执行的代码
        GO TOP
        THIS.COMMAND1.ENABLED=.F.&&第1个按钮无效
        THIS.COMMAND2.ENABLED=.F.&&第2个按钮无效
        THIS.COMMAND3.ENABLED=.T.&&第3个按钮有效
        THIS.COMMAND4.ENABLED=.T.&&第1个按钮有效
    CASE THIS.VALUE=2&&单击“上一个”按钮执行的代码
        SKIP -1&&上移一条记录
        IF !BOF()&&若记录指针没有移动到表头
            THIS.COMMAND1.ENABLED=.T.&&第1个按钮有效
            THIS.COMMAND2.ENABLED=.T.&&第2个按钮有效
        ELSE
            SKIP 1&&下移一条记录
            THIS.COMMAND1.ENABLED=.F.&&第1个按钮无效
            THIS.COMMAND2.ENABLED=.F.&&第2个按钮无效
        ENDIF
        THIS.COMMAND3.ENABLED=.T.&&第3个按钮有效
        THIS.COMMAND4.ENABLED=.T.&&第4个按钮有效
        THISFORM.REFRESH
    CASE THIS.VALUE=3&&单击“下一个”按钮执行的代码
        SKIP 1&&下移一条记录
        IF !EOF()&&若记录指针没有移动到表尾
            THIS.COMMAND3.ENABLED=.T.&&第3个按钮有效
            THIS.COMMAND4.ENABLED=.T.&&第4个按钮有效
        ELSE
            SKIP -1&&上移一条记录
            THIS.COMMAND3.ENABLED=.F.&&第3个按钮无效
            THIS.COMMAND4.ENABLED=.F.&&第4个按钮无效
        ENDIF
        THIS.COMMAND1.ENABLED=.T.&&第1个按钮有效
        THIS.COMMAND2.ENABLED=.T.&&第2个按钮有效
        THISFORM.REFRESH
    CASE THIS.VALUE=4&&单击“最后一个”按钮执行的代码
        GO BOTTOM
        THIS.COMMAND3.ENABLED=.F.&&第3个按钮无效
        THIS.COMMAND4.ENABLED=.F.&&第4个按钮无效
        THIS.COMMAND1.ENABLED=.T.&&第1个按钮有效
        THIS.COMMAND2.ENABLED=.T.&&第2个按钮有效
        THISFORM.REFRESH&&刷新表单,显示新纪录
    CASE THIS.VALUE=5&&单击“退出”按钮执行的代码
        THISFORM.RELEASE
    ENDCASE
    THISFORM.REFRESH

运行结果为:

用于显示字段数据的各个对象的ControlSourse属性为员工.对应字段

Name属性的属性值为:

思考与练习

5.实现员工表中的记录逐条显示

(1)按照题目要求将表单的基本布局填充设置完整:

(2)设置命令组按钮的上一条和下一条的Click事件:

DO CASE
    CASE THIS.VALUE=1&&“上一条”按钮执行的代码
        SKIP -1
        IF !BOF()
            THIS.COMMAND1.ENABLED=.T.&&未到达表头则“上一条”按钮可以使用
        ELSE
            SKIP 1
            THIS.COMMAND1.ENABLED=.F.&&到达表头则“上一条”按钮不能使用
        ENDIF
        THIS.COMMAND2.ENABLED=.T.
        THISFORM.REFRESH
    CASE THIS.VALUE=2&&“下一条”按钮执行的代码
        SKIP 1
        IF !EOF()
            THIS.COMMAND2.ENABLED=.T.&&未到达表尾则“下一条”按钮可以使用
        ELSE
            SKIP -1
            THIS.COMMAND2.ENABLED=.F.&&到达表尾则“下一条”按钮不能使用
        ENDIF
        THIS.COMMAND1.ENABLED=.T.
        THISFORM.REFRESH
ENDCASE
THISFORM.REFRESH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值