使用伪代码开发数据表维护屏幕(续)
来源:FOXPRO网络工作室 作者:徐 萍 出处:综艺读书 2005-11-18对于Form中的其它和数据表中的非关键字字段对应的控件都与字段名绑定。
|
|
|||
其中m.oldkey用以存储主关键字的原值;
漫游过程my根据其中不同的"漫游代码"一般要化成好几个不同的漫游过程放入Form中不同的漫游按钮中,常见的漫游按钮有记录指针上移、下移、到顶、到底和各种查找记录定位按钮;
把if sc()
thisform.release
else
thisform.refresh
endif
嵌入Form中的删除按钮中;把dojs,thisform.release嵌入Form中的结束按钮中。
㈢新增+编辑模式
{伪代码开始}
priv m.stat,m.xzok
priv m.key,m.key1,m.key2,m.key3,m.KeyText,m.oldkey
m.stat=1
m.xzok=.f.
m.key=""
m.key1=""
m.key2=""
m.key3=""
m.oldkey=""
m.KeyText=""
{
open ....
}
scatter memvar blank
go top
if eof()
m.stat=1 && 新增
else
m.stat=2 && 编辑
endif
do case
case m.stat=1 && 新增
do ToAppe
case m.stat=2 && 编辑
do ToEdit
endcase
{
do form XXX.scx
}
pack
close data all
retu
*** 关键字输入确认
proc KeyOK
{
m.key=f(m.key1,m.key2,m.key3)
do case
case m.stat=1 && 新增
if !theWorkStat.KeyExist(n,m.key,.t.)
m.FDkey=m.key
m.KeyText=f(m.key)
m.xzok=.t.
else
=messagebox(...)
endif
case m.stat=2 && 编辑
if m.key==m.oldkey.or.!theWorkStat.KeyExist(n,m.key,.t.)
m.FDkey=m.key
m.KeyText=f(m.key)
else
=messagebox(...)
endif
endcase
}
retu
*** 新增
proc sz
do case
case m.stat=1 && 新增
if m.xzok
appe blank
gather memvar
do ToAppe
endif
case m.stat=2 && 编辑
gather memvar
do ToAppe
endcase
retu
*** 删除
proc sc <
do case
case m.stat=1 && 新增
if eof()
if m.xzok
do ToAppe
endif
else
do ToEdit
endif
case m.stat=2 && 编辑
dele
go top
if eof()
do ToAppe
else
do ToEdit
endif
endcase
retu
*** 漫游
proc my
do case
case m.stat=1 && 新增
if m.xzok
appe blank
gather memvar
m.stat=2
else
if !eof()
do ToEdit
endif
endif
case m.stat=2 && 编辑
gather memvar
{
漫游代码...
}
do ToEdit
endcase
retu
*** 结束
proc js
do case
case m.stat=1 && 新增
if m.xzok
appe blank
gather memvar
endif
case m.stat=2 && 编辑
gather memvar
endcase
retu
*** 进人新增
proc ToAppe
scatter memvar blank
m.KeyText=f(m.key)=""
m.key="********"
{
m.key1=...
m.key2=...
m.key3=...
.....
}
m.stat=1
m.xzok=.f.
retu
*** 进人编辑
proc ToEdit
scatter memvar
{
m.oldkey=m.FDkey
m.key=m.oldkey
m.KeyText=f(m.key)
m.key1=f1(m.key)
m.key2=f2(m.key)
m.key3=f3(m.key)
}
m.stat=2
retu
{伪代码结束}
对于Form中的其它和数据表中的非关键字字段对应的控件都与m.字段名绑定。
把doKeyOK和thisform.refresh嵌入Form中的关键字输入确认按钮中;把do xz和thisform.refresh嵌入Form中的新增按钮中;
把dosc和thisform.refresh嵌入Form中的删除按钮中;把各个domy... 和thisform.refresh分别嵌入Form中的各个漫游按钮中;把dojs和thisform.release嵌入Form中的结束按钮中。
这样经过步骤1.-4.一个数据表维护屏幕设计的有关代码已基本上完成了。
结束语:可能有的读者会感到它还太麻烦,还想探索更为精简的代码。但最后笔者还想再强调一下,由于被数据表维护屏幕本身的复杂性所决定,其相应的代码不可能是简单的,以上由修改伪代码而成的代码虽不能说是最精简的,但也算是够精简的了;如果一个数据表维护屏幕的代码它真的非常简单,成么对于绝大多数的应用来说它是不会使用户满意的,甚至是不能使用的。
注:伪代码中可能需要修改的部分都用{}括进,其他部分一般不需修改。
参考文献:
1.ProgrammingVisualFoxpro3.0.WhilHentzen.电子工业出版社
2.VisualFoxpro系列丛书技术篇.周建成.人民邮电出版社
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |




