VFP表单设计案例.docx
《VFP表单设计案例.docx》由会员分享,可在线阅读,更多相关《VFP表单设计案例.docx(21页珍藏版)》请在冰豆网上搜索。
![VFP表单设计案例.docx](https://file1.bdocx.com/fileroot1/2023-1/10/d3aca3d4-2008-43da-a8eb-c9e774479d9f/d3aca3d4-2008-43da-a8eb-c9e774479d9f1.gif)
VFP表单设计案例
VFP表单控件应用设计与案例
表单控件的应用要点:
1.条件语句在表单中应用:
IF语句和docase语句
2.循环语句在表单中应用:
for语句和dowhile语句
3.计时器的应用
4.数据表在表单中应用:
skip
5.SQL语句的应用
6.列表框的应用
难点:
SQL的应用
表单控件对象有:
表单表单集文本框编辑框列表框组合框表格
复选框选项按钮组(单选框)页框Container容器
命令按钮命令按钮组
标签线条形状图像
计时器微调控件ActiveX绑定控件超级链接控件
对象分为:
控件对象和容器控件。
控件对象是基本对象:
命令按钮、文本框、标签、线条、形状、复选框、组合框。
。
。
。
容器控件包含其他对象的对象:
表单、表单集、Container容器、命令按钮组、微调控件、选项按钮组(单选框)、页框、页面、表格、表格列
从功能上分为:
输出类:
标签、图像、线条、形状
输出类:
文本框、编辑框、列表框、组合框、微调控件
控制类:
命令按钮、命令按钮组、复选框选项按钮组(单选框)、计时器
多重容器类:
表格、页框、Container容器、表单集
连接类:
ActiveX绑定控件超级链接控件
1、条件语句在表单中应用
单分支语句:
if….Else….Endif
多分支语句:
docase……endcase
If…endif语句一般都是与
For…endfor配合应用。
案例1多分支0901
参考答案:
“计算”按钮的clickevent代码:
x=thisform.text1.value
docase
casex<-10
y=2*(sin(x)+1)
casex<10
y=(abs(x)-5)/3
other
y=x/7-8
endcase
thisform.text2.value=y
thisform.refresh
案例2多分支0912
k=thisform.text1.value
docase
casek>=0andk<60
m="不合格"
casek<85
m="合格"
casek<=100
m="优秀"
other
m="非法数据"
endcase
thisform.text2.value=m
2.循环语句在表单中应用
案例0906
m=alltrim(thisform.text1.value)
k=len(m)
s=0
fori=1tok
n=substr(m,i,1)
ifn>="a"andn<="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
m=a*b+c*d
ifm>=300
m=m*0.9
endif
thisform.text5.value=round(m,0)
thisform.refresh
3.计时器的应用
属性:
Interval:
计时时间间隔,单位毫秒。
1秒=1000毫秒
Enabled:
计时启用与停止
事件:
Timer1:
interval设置计时点运行事件代码。
计时器启用条件:
interval>0andenabled=.t.
计时器停止条件:
interval=0orenabled=.f.
案例1
【要点解答】“开始”按钮的click事件如下:
mand1.enabled=.f.
thisform.timer1.enabled=.t.
Timer1事件的timer代码如下:
ifthisform.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
ifmod(thisform.text1.value,2)=0
thisform.backcolor=rgb(0,0,255)
else
thisform.backcolor=rgb(0,255,0)
endif
thisform.refresh
3案例0406
【要点解答】“开始”按钮的click事件如下:
ifthis.caption="开始"
this.caption="停止"
thisform.timer1.enabled=.t.
else
this.caption="开始"
thisform.timer1.enabled=.f.
endif
thisform.refresh
Timer1事件的timer代码如下:
if.not.eof()
skip
else
go1
endif
thisform.text1.value=号码
thisform.refresh
4案例1012
“开始”按钮的click事件:
ifthis.caption="开始"
this.caption="停"
thisform.timer1.enabled=.t.
else
this.caption="开始"
thisform.timer1.enabled=.f.
endif
计时器的timer事件:
ifthisform.optiongroup1.value=8
thisform.optiongroup1.value=1
else
thisform.optiongroup1.value=thisform.optiongroup1.value+1
endif
thisform.refresh
4.数据表在表单中应用
数据环境:
添加表
Controlsource属性
Skip命令
Recno()函数
1案例0906
按钮的click事件编码:
Ifrecno()>1
Skip-1
Else
This.enabled=.f.
Endif
Tmand2.enabled=.t.
Thisform.refresh
“下一条”按钮的click事件编码:
Ifrecno()Skip
Else
This.enabled=.f.
Endif
Tmand1.enabled=.t.
Thisform.refresh
2案例1106
“上一条”的cilck
mand1.enabled=.t.
ifrecno()skip
else
this.enabled=.f.
endif
thisform.refresh
“下一条”的click
mand2.enabled=.t.
ifrecno()=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="SELECTPfb.评委编号,Pfb.分数;
FROMpfbINNERJOINgsb;
ONPfb.歌手编号=Gsb.歌手编号;
WHEREgsb.歌手姓名=bo1.valueINTOCURSORtmp"
SELECTAVG(Pfb.分数);
FROMpfbINNERJOINgsb;
ONPfb.歌手编号=Gsb.歌手编号;
WHEREgsb.歌手姓名=bo1.value;
GROUPBYPfb.歌手编号INTOarraya
thisform.text1.value=a
(1)
thisform.refresh
2案例0901
ifthis.value=1
SELECTAVG(Book1.单价);
FROMbook1;
WHEREBook1.种类=bo1.value;
GROUPBYBook1.种类intoarraya
thisform.text1.value=a
(1)
endif
ifthis.value=2
SELECTSUM(Book1.数量);
FROMbook1;
WHEREBook1.种类=bo1.value;
GROUPBYBook1.种类intoarraya
thisform.text1.value=a
(1)
endif
thisform.refresh
3案例0901
参考答案:
1)text1对象的value属性中写:
=date()
2)在“查询”command1对象的clickevent中代码:
thisform.grid1.recordsourcetype=4
thisform.grid1.recordsource="SELECTOrders.订单号,Orders.签订日期,Orders.金额;
FROMorders;
WHEREOrders.签订日期<=thisform.text1.value;
INTOCURSORtmp"
thisform.refresh
4案例1012
SELECTFshangpf.售价(万),Fshangpf.地址;
FROMfshangpf;
WHEREFshangpf.房型=bo1.value;
INTOcursorbb
thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource="bb"
SELECTAVG(Fshangpf.售价(万));
FROMfshangpf;
WHEREFshangpf.房型=bo1.valueintoarraya
thisform.text1.value=a
(1)
thisform.refresh
5案例1106
b=thisform.optiongroup1.value
docase
caseb=1
kk="1房"
caseb=2
kk="2房"
caseb=3
kk="3房"
endcase
SELECTCOUNT(*),AVG(Housexs.售价);
FROMhousexs;
WHEREHousexs.房型=kkintoarrayy
thisform.text1.value=y
(1)
thisform.text2.value=y
(2)
thisform.refresh
6.列表框的应用
1案例0706
参考答案:
“添加并计算”按钮的clickevent代码如下:
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案例1006P206
Thisform.list2.clear
fori=1tothisform.list1.listcount
ifthisform.list1.selected(i)
thisform.list2.additem(thisform.list1.list(i))
endif
endfor
thisform.refresh
ᔏ큨娣ᘀ踿漀Ĩᘲ䭨䵼䈀ਪ䩃8䩏
ༀ㒄ᄈ岄ᗾ׆Ā࠴帆㒄怈岄俾Պ儀Պ漀(梇ༀ粄ᄋ岄ᗾ׆Ā帆粄怋岄俾Պ儀Պ漀(梇ༀ쒄ᄎ岄ᗾ׆Āໄ帆쒄怎岄俾Պ儀Պ漀(梇
ༀ䢄ᄃ岄ᗾ׆Ā͈帆䢄怃岄俾Պ儀Պ漀(梇ༀ還ᄆ岄ᗾ׆Āڐ帆還怆岄俾Պ儀Պ漀(梇ༀᄉ岄ᗾ׆Ā帆怉岄俾Պ儀Պ漀(梇ༀ₄ᄍ岄ᗾ׆Āഠ帆₄怍岄俾Պ儀Պ漀(梇
!
),.:
;?
]}¨·ˇˉ―‖’”…∶、。
〃々〉》」』】〕〗!
"'),.:
;?
]`|}~¢([{·‘“〈《「『【〔〖(.[{£¥
翿翿翿翿翿翿翿査Ÿ
SummaryInformationDocumentSummaryInformation