表单设计范例(一)
一、简单的信息显示界面的设计
例6.1 设计一个信息行(显示的是当前的系统时间)可以在表单的高度范围(顶部与底部)之间动态上下平等移动的界面。P285
特点:
1表单上任何的控件对象只用于显示某种信息,无需用户做任何操作
2显示的信息可以是静态的,也可以是动态的
主要涉及到的例题有:时钟,文字形状的缩放移动
二、交互对话界面的设计
特点:
1一般都会有文本框和按钮这两类控件,如果问题复杂点还有可能包含复选框,选项组,按钮组,微调控件等一切需要鼠标单击或键盘输入的控件
2强调“交互”,即交流对话,也就是用户作一个输入或单击,系统则给出相应的反应
主要涉及到的命题:口令登录问题,计算类问题(求圆面积,求三角形面积,求正方体面积,输出20个能被3整除且个位是3的数字等),列表框中数据移动
以下是部分例题总结:
1、口令登录问题(四种不同形式的例子)
形式一:
题目描述:在文本框输入口令,如果输入的是“SUPER“,则在下面的标签里面显示“正确”,否则显示“错误”。
FORM1.INIT
THIS.LABEL2.VISIBLE=.F.
THIS.TEXT1.PASSWORDCHAR=“*”
TEXT1.VALID
THISFORM.LABEL2.VISIBLE=.T.
IF ALLT(THIS.VALUE)=="SUPER"
THISFORM.LABEL2.CAPTION="正确!"
ELSE
THISFORM.LABEL2.CAPTION="错误!"
ENDIF
形式二:
题目描述:在文本框中输入口令,如果输入的是“SUPER”,则在弹出的消息框中提示“正确”,否则提示“错误”。要求当输入完毕按下回车即能触发“确定”按钮,单击“退出”按钮则能释放表单,结束程序。
FORM1.INIT
THIS.TEXT1.PASSWORDCHAR="*"
THIS.COMMAND1.DEFAULT=.T.
COMMAND1.CLICK
IF ALLT(THISFORM.TEXT1.VALUE)=="SUPER"
MESSAGEBOX("正确!")
ELSE
MESSAGEBOX("错误!")
ENDIF
COMMAND2.CLICK
THISFORM.RELEASE
形式三:
题目描述:在页框第一页的登录界面的文本框中输入口令,当输入为“SUPER”时则激活第二页,显示“欢迎使用本系统!”,否则则激活第三页,显示“你无权使用本系统!”。要求输入完毕按回车即能触发“确定”按钮。单击“退出”按钮则能释放表单,结束程序。
FORM1.INIT
THIS.PAGEFRAME1.PAGE1.TEXT1.PASSWORDCHAR="*"
THIS.PAGEFRAME1.PAGE1.ENABLED=.T.
THIS.PAGEFRAME1.PAGE2.ENABLED=.F.
THIS.PAGEFRAME1.PAGE3.ENABLED=.F.
THIS.PAGEFRAME1.ACTIVEPAGE=1
THIS.PAGEFRAME1.PAGE1.TEXT1.SETFOCUS
THIS.PAGEFRAME1.PAGE1.COMMAND1.DEFAULT=.T.
COMMAND1.CLICK
IF ALLT(THIS.PARENT.TEXT1.VALUE)="SUPER"
THISFORM.PAGEFRAME1.PAGE1.ENABLED=.F.
THISFORM.PAGEFRAME1.PAGE2.ENABLED=.T.
THISFORM.PAGEFRAME1.PAGE3.ENABLED=.F.
THISFORM.PAGEFRAME1.ACTIVEPAGE=2
ELSE
THISFORM.PAGEFRAME1.PAGE1.ENABLED=.F.
THISFORM.PAGEFRAME1.PAGE2.ENABLED=.F.
THISFORM.PAGEFRAME1.PAGE3.ENABLED=.T.
THISFORM.PAGEFRAME1.ACTIVEPAGE=3
ENDIF
COMMAND2.CLICK
THISFORM.RELEASE
形式四:
题目描述:利用表单集来实现口令验证的对话界面,在第一张表单中的文本框中输入口令,当输入的口令为“SUPER”时则显示第二张表单,否则若输入次数没有超过3次,那么可以重复输入,若已经达到3次则显示第三张表单,在第三张表单中有“再试”按钮,单击该按钮可以再次显示第一张登录表单。
FORMSET1..INIT
THISFORMSET.VLD=.F.
THISFORMSET.CNT=0
THISFORMSET.FORM1.TEXT1.PASSWORDCHAR="*"
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM3.HIDE
THISFORMSET.FORM2.TIMER1.ENABLED=.F.
THISFORMSET.FORM2.TIMER1.INTERVAL=3000
TEXT1.VALID
IF EMPTY(THIS.VALUE)
THISFORMSET.VLD=.F.
RETURN .T.
ENDIF
IF ALLT(THIS.VALUE)==”SUPER”
THISFORMSET.VLD=.T.
RETURN .T.
ELSE
THISFORMSET.CNT=THISFORMSET.CNT+1
IF THISFORMSET.CNT>=3
THISFORMSET.VLD=.F.
RETURN .T.
ELSE
RETURN .F.
ENDIF
ENDIF
FORM1.COMMAND1.CLICK
IF THISFORMSET.VLD=.T.
THISFORMSET.FORM2.TIMER1.ENABLED=.T.
THISFORMSET.FORM2.SHOW
ELSE
THISFORMSET.FORM3.SHOW
ENDIF
THISFORM.HIDE
FORM1.COMMAND2.CLICK
THISFORMSET.RELEASE
FORM2.TIMER1.TIMER
THISFORMSET.RELEASE
FORM3.COMMAND1.CLICK
THISFOM.HIDE
THISFORMSET.FORM1.SHOW
FORM3.COMMAND2.CLICK
THISFORMSET.RELEASE
2、实现两个列表框数据移动P289
FORM1.INIT
SCAN
THIS.LIST1.ADDITEM(姓名)
ENDSCAN
COMMAND1.CLICK
THISFORM.LIST2.ADDITEM(THISFORM.LIST1.VALUE)
THISFORM.LIST1.REMOVEITEM(THISFORM.LIST1.LISTINDEX)
THISFORM.LIST1.REQUERY
THISFORM.LIST2.REQUERY
THISFORM.REFRESH
COMMAND2.CLICK
THISFORM.LIST1.ADDITEM(THISFORM.LIST2.VALUE)
THISFORM.LIST2.REMOVEITEM(THISFORM.LIST2.LISTINDEX)
THISFORM.LIST1.REQUERY
THISFORM.LIST2.REQUERY
THISFORM.REFRESH
COMMAND3.CLICK
THISFORM.LIST2.CLEAR
FOR I=1 TO THISFORM.LIST1.LISTCOUNT
THISFORM.LIST2.ADDITEM(THISFORM.LIST1.LIST(I))
ENDF
THISFORM.LIST1.CLEAR
THISFORM.REFRESH
COMMAND4.CLICK
THISFORM.LIST1.CLEAR
DO WHILE THISFORM.LIST2.LISTCOUNT>0
THISFORM.LIST1.ADDITEM(THISFORM.LIST2.LIST(1))
THISFORM.LIST2.REMOVEITEM(1)
ENDDO
THISFORM.REFRESH
三、与数据源有关的数据浏览界面的设计
特点:
1通过界面上的控件对数据环境中数据表的全部或部分信息进行显示
2一般通过数据绑定的方法去实现,也可以用非数据绑定的方法去做,具体要看题目要求
3在实现的控件中分两种:一种是通过文本框,复选框,编辑框等控件逐一去体现,因此要为每一个控件设置相应的数据源,涉及到的数据源名称一般是controlsource;另一种则是用表格控件整体显示数据表的内容,因此通常只为表格控件设置一个数据源,涉及到的数据源名称一般是recordsource和recordsourcetype
4从功能实现上看,可以分成手动的浏览和自动浏览,后者要用到计时器控件,因此不能忘记对计时器进行interval和enabled的设置
以下是部分例题:
例1:P259 程序设计第2题
FORM1.INIT
THIS.SETALL("READONLY",.T.)
THIS.TIMER1.INTERVAL=1000
TIMER1.TIMER
SKIP
IF EOF()
GO TOP
ENDIF
THISFORM.REFRESH
例2:P292 例6.4
第二篇:设计订单表格范例
设计订单
日期: 年 月 日
设计订单
日期: 年 月 日