VFP表单设计案例2011

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VFP表单控件应用设计与案例
表单控件的应用要点:
1.条件语句在表单中应用:IF语句和do case语句
2.循环语句在表单中应用:for语句和do while语句
3.计时器的应用
4.数据表在表单中应用:skip
5.SQL语句的应用
6.列表框的应用
难点:SQL的应用
表单控件对象有:
表单表单集文本框编辑框列表框组合框表格
复选框选项按钮组(单选框)页框 Container容器
命令按钮命令按钮组
标签线条形状图像
计时器微调控件 ActiveX绑定控件超级链接控件
对象分为:控件对象和容器控件。

控件对象是基本对象:命令按钮、文本框、标签、线条、形状、复选框、组合框。

容器控件包含其他对象的对象:表单、表单集、Container容器、命令按钮组、微调控件、选项按钮组(单选框)、页框、页面、表格、表格列
从功能上分为:
输出类:标签、图像、线条、形状
输出类:文本框、编辑框、列表框、组合框、微调控件
控制类:命令按钮、命令按钮组、复选框选项按钮组(单选框)、计时器
多重容器类:表格、页框、Container容器、表单集
连接类:ActiveX绑定控件超级链接控件
1、条件语句在表单中应用
单分支语句:
if …. Else…. Endif
多分支语句:
do case ……endcase
If…endif语句一般都是与
For…endfor配合应用。

案例1多分支0901
参考答案:
“计算”按钮的click event代码:x=thisform.text1.value
do case
case x<-10
y=2*(sin(x)+1)
case x<10
y=(abs(x)-5)/3
other
y=x/7-8
endcase
thisform.text2.value=y thisform.refresh
案例2多分支0912
k=thisform.text1.value
do case
case k>=0 and k<60
m="不合格"
case k<85
m="合格"
case k<=100
m="优秀"
m="非法数据"
endcase
thisform.text2.value=m
2. 循环语句在表单中应用
案例0906
m=alltrim(thisform.text1.value) k=len(m)
s=0
for i=1 to k
n=substr(m,i,1)
if n>="a" and n<="z"
s=s+1
endif
endfor
thisform.text2.value=s
案例0906
a=thisform.text1.value
b=thisform.text2.value
c=thisform.text3.value
d=thisform.text4.value
if m>=300
m=m*0.9
endif
thisform.text5.value=round(m,0)
thisform.refresh
3.计时器的应用
属性:
Interval:计时时间间隔,单位毫秒。

1秒=1000毫秒Enabled:计时启用与停止
事件:
Timer1:interval设置计时点运行事件代码。

计时器启用条件:
interval>0 and enabled=.t.
计时器停止条件:
interval=0 or enabled=.f.
案例1
【要点解答】“开始”按钮的click事件如下:mand1.enabled=.f.
thisform.timer1.enabled=.t.
Timer1事件的timer代码如下:
if thisform.text1.value=0
mand1.enabled=.t.
thisform.timer1.enabled=.f.
else
thisform.text1.value=thisform.text1.value-1 endif
thisform.refresh
案例2(1006)
在开始计时按钮的click代码:
thisform.timer1.enabled=.t.
thisform.text1.value=0
计时器的timer代码:
thisform.text1.value=thisform.text1.value+1 if mod(thisform.text1.value,2)=0
thisform.backcolor=rgb(0,0,255)
else
thisform.backcolor=rgb(0,255,0)
endif
thisform.refresh
3案例0406
【要点解答】“开始”按钮的click事件如下:
if this.caption="开始"
this.caption="停止"
thisform.timer1.enabled=.t.
else
this.caption="开始"
thisform.timer1.enabled=.f.
endif
thisform.refresh
Timer1事件的timer代码如下:
if .not.eof()
skip
else
go 1
endif
thisform.text1.value=号码
thisform.refresh
4案例1012
“开始”按钮的click事件:
if this.caption="开始"
this.caption="停"
thisform.timer1.enabled=.t.
else
this.caption="开始"
thisform.timer1.enabled=.f.
endif
计时器的timer事件:
if thisform.optiongroup1.value=8
thisform.optiongroup1.value=1
else
thisform.optiongroup1.value=thisform.optiongroup1.value+1 endif
thisform.refresh
4.数据表在表单中应用
数据环境:添加表
Control source属性
Skip命令
Recno()函数
1案例0906
按钮的click事件编码:
If recno()>1
Skip -1
Else
This.enabled=.f.
Endif
mand2.enabled=.t. Thisform.refresh
“下一条”按钮的click事件编码:If recno()<recount()
Skip
Else
This.enabled=.f.
Endif
mand1.enabled=.t. Thisform.refresh
2案例1106
“上一条”的cilck
mand1.enabled=.t.
if recno()<reccount()
skip
else
this.enabled=.f.
endif
thisform.refresh
“下一条”的click
mand2.enabled=.t.
if recno()=1
this.enabled=.f.
else
skip -1
endif
thisform.refresh
5. SQL语句的应用
1)查询产生SQL
2)哪个对象?什么事件发生代码?
3)查询结果显示在哪个对象?查数据源属性。

4)表格、组合框等配合应用
5)查询结果有多条记录、统计数等类型
1案例0901
thisform.grid1.recordsourcetype=4
thisform.grid1.recordsource="SELECT Pfb.评委编号, Pfb.分数; FROM pfb INNER JOIN gsb ;
ON Pfb.歌手编号 = Gsb.歌手编号;
WHERE gsb.歌手姓名 = bo1.value INTO CURSOR tmp" SELECT AVG(Pfb.分数);
FROM pfb INNER JOIN gsb ;
ON Pfb.歌手编号 = Gsb.歌手编号;
WHERE gsb.歌手姓名 =bo1.value;
GROUP BY Pfb.歌手编号 INTO array a
thisform.text1.value=a(1)
thisform.refresh
2案例0901
if this.value=1
SELECT AVG(Book1.单价);
FROM book1;
WHERE Book1.种类 =bo1.value;
GROUP BY Book1.种类 into array a
thisform.text1.value=a(1)
endif
if this.value=2
SELECT SUM(Book1.数量);
FROM book1;
WHERE Book1.种类 =bo1.value;
GROUP BY Book1.种类 into array a
thisform.text1.value=a(1)
endif
thisform.refresh
3案例0901
参考答案:
1)text1对象的value属性中写:= date()
2) 在“查询”command1对象的click event中代码:
thisform.grid1.recordsourcetype=4
thisform.grid1.recordsource="SELECT Orders.订单号, Orders.签订日期, Orders.金额;
FROM orders;
WHERE Orders.签订日期<= thisform.text1.value;
INTO CURSOR tmp"
thisform.refresh
4案例1012
SELECT Fshangpf.售价(万), Fshangpf.地址;
FROM fshangpf;
WHERE Fshangpf.房型 =bo1.value;
INTO cursor bb
thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource="bb"
SELECT AVG(Fshangpf.售价(万));
FROM fshangpf;
WHERE Fshangpf.房型 =bo1.value into array a thisform.text1.value=a(1)
thisform.refresh
5案例1106
b=thisform.optiongroup1.value
do case
case b=1
kk="1房"
case b=2
kk="2房"
case b=3
kk="3房"
endcase
SELECT COUNT(*), AVG(Housexs.售价);
FROM housexs;
WHERE Housexs.房型 =kk into array y
thisform.text1.value=y(1)
thisform.text2.value=y(2)
thisform.refresh
6. 列表框的应用
1案例0706
参考答案:
“添加并计算”按钮的click event代码如下:
thisform.list1.additem(thisform.text1.value) thisform.list2.additem(str(len(thisform.text1.value))) thisform.refresh
2案例0901
thisform.list1.additem(thisform.text1.value+"
"+alltrim(str(len(thisform.text1.value))))
thisform.text1.setfocus
thisform.refresh
3案例1006 P206
Thisform.list2.clear
for i=1 to thisform.list1.listcount
if thisform.list1.selected(i)
thisform.list2.additem(thisform.list1.list(i)) endif
endfor
thisform.refresh
ᔏ큨娣ᘀ踿漀Ĩᘲ䭨䵼䈀ਪ䩃8䩏
ༀ㒄ᄈ岄ᗾ׆Ā࠴帆㒄怈岄俾Պ儀Պ漀(梇ༀ粄ᄋ岄ᗾ׆Ā࠴帆粄怋岄俾Պ儀Պ漀(梇ༀ쒄ᄎ岄ᗾ׆Āໄ帆쒄怎岄俾Պ儀Պ漀(梇
ༀ䢄ᄃ岄ᗾ׆࠴࠴帆䢄怃岄俾Պ儀Պ漀(梇ༀ還ᄆ岄ᗾ׆Āڐ帆還怆岄俾Պ儀Պ漀(梇ༀ 岄ᗾ׆Ā࠴帆怉岄俾Պ儀Պ漀(梇ༀ₄ᄍ岄ᗾ׆Āഠ帆₄怍岄俾Պ儀Պ漀(梇
!),.:;?]}¨·ˇˉ―‖’”…∶、。

〃々〉》」』】〕〗!"'),.:;?]`|}~¢([{·‘“〈《「『【〔〖(.[{£¥
翿翿翿翿翿翿翿査࠴
SummaryInformationDocumentSummaryInformation。

相关文档
最新文档