VFP客房管理系统 第3页
图4 客房管理表单运行结果
1.表单设计
(1)在客房管理系统项目中,添加一个新表单,名称为Kfmanage。
(2)在表单中添加Label控件、Combo控件、Text控件、Edit控件、Command控件、Commandgroup控件、PageFrame控件和Grid控件。
(3)重要控件属性如表2所示。
表2 重要控件的重要属性及值
控件名 |
属性 |
值 |
Combo1 |
DisplayValue RowSource RowSourceType |
房间号 房间号,房间类型,房态 1-值 |
Combo2 |
RowSource RowSourceType Style |
All,like,=,>,< 1-值 2-下拉列表框 |
2.代码设计
在表单的Load事件中添加以下代码:
public cx,l &&定义全局变量
cx=0
l=.f.
在表单的Resize事件中添加以下代码:
thisform.pageframe1.page1.text1.value=tabkfinfo.房间号 &&赋值给Text1等
thisform.pageframe1.page1.combo1.value=tabkfinfo.房间类型
thisform.pageframe1.page1.text3.value=tabkfinfo.价格
thisform.pageframe1.page1.combo2.value=tabkfinfo.房态
thisform.pageframe1.page1.text5.value=tabkfinfo.营业时间
thisform.pageframe1.page1.text6.value=tabkfinfo.备注
thisform.pageframe1.page1.text7.value=tabkfinfo.使用设置
thisform.pageframe1.page1.edit1.value=tabkfinfo.配置
L是全局变量,当L为.T.或.F.时,这个值会集体赋给相关控件的Enabled属性。这种写法其实将Init事件当成一个设相关控件是否有效的函数。在表单的Init事件中添加以下代码:
store l to thisform.pageframe1.page1.combo1.enabled=l
thisform.pageframe1.page1.combo2.enabled=l
thisform.pageframe1.page1.text5.enabled=l
thisform.pageframe1.page1.text6.enabled=l
thisform.pageframe1.page1.text7.enabled=l
thisform.pageframe1.page1.edit1.enabled=l
在combo2控件的InteractiveChange事件中添加以下代码:
if alltrim(thisform.combo2.value)="All"
thisform.text1.value=''
thisform.text1.enabled=.f.
else
thisform.text1.enabled=.t.
endif
在“查询”按钮的Click事件中添加可以根据用户选择的条件查找记录的代码。
cx=0
cif=alltrim(thisform.combo1.displayvalue)
ccif=alltrim(thisform.combo2.displayvalue)
ctext=alltrim(thisform.text1.value)
if empty(ccif)
messagebox('请输入查询条件!',48,'操作失败!')
thisform.combo2.setfocus &&Combo2获得焦点
else
if empty(ctext)
if ccif!="All"
messagebox('请输入查询条件!',48,'操作失败!')
thisform.text1.setfocus
else
select *; &&选择所有字段
from roommanage!tabkfinfo; &&指定查询的数据库文件
order by tabkfinfo.房间号; &&查询结果升序排序
into cursor lindeping
thisform.pageframe1.page2.grid1.recordsource='lindeping' &&赋数据源
lkfnumber=lindeping.房间号
select tabkfinfo
set order to 房间号 &&指定控制索引文件
seek lkfnumber &&快速查询
thisform.resize &&执行表单的Resize事件
thisform.pageframe1.page1.text1.enabled=.f.
thisform.pageframe1.page1.text3.enabled=.f.
l=.f.
thisform.init &&执行表单的Init事件
thisform.commandgroup2.enabled=.t.
endif
else
if thisform.combo2.displayvalue='like'
MySQL=cif+" "+ccif+" '"+"%"+ctext+"%'"
else
MySQL=cif+" "+ccif+" '"+alltrim(thisform.text1.value)+"'"
endif
select * from roommanage!tabkfinfo where &MySQL.into cursor lindeping
go top
if eof()
go bottom
messagebox('客房不存在',48,'信息窗口')
thisform.commandgroup2.enabled=.f.
thisform.commandgroup1.cmodify.enabled=.f.
thisform.commandgroup1.cdel.enabled=.f.
cx=1
else
lkfnumber=lindeping.房间号
select tabkfinfo
set order to 房间号
seek lkfnumber
thisform.resize &&执行表单的Resize事件
thisform.pageframe1.page1.text1.enabled=.f.
thisform.pageframe1.page1.text3.enabled=.f.
l=.f.
thisform.init &&执行表单的Init事件
thisform.commandgroup2.enabled=.t.
endif
thisform.pageframe1.page2.grid1.recordsource='lindeping'
endif
endif
thisform.commandgroup2.command1.setfocus
thisform.refresh
在页框控件的Init事件中添加以下代码:
thisform.pageframe1.page1.text1.enabled=.f.
thisform.pageframe1.page1.text3.enabled=.f.
l=.f.
thisform.init &&执行表单的Init事件
thisform.resize &&执行表单的Resize事件
在“客房基本信息”选项卡的Activate事件中添加以下代码:
thisform.commandgroup1.csave.enabled=.f.
thisform.commandgroup1.ccancel.enabled=.f.
thisform.commandgroup1.cadd.enabled=.t.
thisform.commandgroup1.cexit.enabled=.t.
thisform.commandgroup1.cmodify.enabled=.t.
thisform.commandgroup1.cdel.enabled=.t.
thisform.commandgroup2.enabled=.t.
在“客房基本信息列表”选项卡的Activate事件中添加以下代码:
thisform.commandgroup1.csave.enabled=.f.
thisform.commandgroup1.ccancel.enabled=.f.
thisform.commandgroup1.cadd.enabled=.f.
thisform.commandgroup1.cmodify.enabled=.f.
thisform.commandgroup1.cdel.enabled=.f.
thisform.commandgroup1.cexit.enabled=.t.
thisform.commandgroup2.enabled=.f.
thisform.refresh
在edit1控件的KeyPress事件中添加以下代码:
if nKeycode=3
thisform.commandgroup1.csave.setfocus
endif
在Combo1控件的Interactivechange事件中添加以下代码:
kftype=alltrim(thisform.pageframe1.page1.combo1.displayvalue)
select *;
from roommanage!tabkflx;
where 客房类型=kftype;
order by tabkflx.类型编号;
into cursor linshi
thisform.pageframe1.page1.text3.value=linshi.价格
在“|<”按钮的Click事件中添加以下代码:
go top &&把记录指针定位到第一条记录
this.parent.command1.enabled=.f.
this.parent.command2.enabled=.f.
if cx=1
this.parent.command3.enabled=.f.
this.parent.command4.enabled=.f.
thisform.commandgroup1.cmodify.enabled=.f.
thisform.commandgroup1.cdel.enabled=.f.
else
this.parent.command3.enabled=.t.
this.parent.command4.enabled=.t.
endif
thisform.resize &&执行表单的Resize事件
thisform.refresh
在“<”按钮的Click事件中添加以下代码:
if cx=1
messagebox('已是第一个记录',48,'信息窗口')
this.parent.command1.enabled=.f.
this.parent.command2.enabled=.f.
this.parent.command3.enabled=.f.
this.parent.command4.enabled=.f.
thisform.commandgroup1.cmodify.enabled=.f.
thisform.commandgroup1.cdel.enabled=.f.
thisform.resize &&执行表单的Resize事件
else
skip-1 &&记录指针向上移一条记录
thisform.resize &&执行表单的Resize事件
if bof()
messagebox('已是第一个记录',48,'信息窗口')
this.parent.command1.enabled=.f.
this.parent.command2.enabled=.f.
thisform.resize &&执行表单的Resize事件
else
this.parent.command1.enabled=.t.
this.parent.command2.enabled=.t.
endif
this.parent.command3.enabled=.t.
this.parent.command4.enabled=.t.
endif
thisform.refresh