VFP经验谈
1.在VFP的文本框中进行数据合法性校验:
在VALID事件中编写校验代码,比如:
if val(this.value)>100
return .t.
else
return .f.
endif
即输入大于100为合法,小于100则为非法,光标不能离开该控件,可以设置表格的partition属性做到。
2.在GRID中使用PACK命令,GRID将全部显示为空白问题的解决:
因为PACK命令要关闭数据库,因此会造成一片空白,所以在表格中不能使用PACK,最好在关闭表格时,才将记录真正删除,如要不显示已做删除标记的记录,可用set delete on,如果一定要PACK,可用如下语句代替:
copy to lsk for .not. delete()
zap
append from l
3.对VFP中的表进行加密:
加密部分:(建议将该程序放于退出系统事件中,从而保证在退出时能对表完成加密过程)
restore from c:\bf\tbs additive &&恢复原表头值变量
if file(′c:\bf\dz.dbf′) &&dz.dbf为要保护的数据表
getid=fopen(′c:\bf\dz.dbf′)
bt=fread(getid,1) &&获得当前表头第一字节的值
if bt=b && b 为tbs中存贮的原表头值变量若bt=b表明未加密
bt=′a′
endif
=fclose(getid)
newid=fopen(′c:\bf\dz.dbf′,12) &&将文件以可读写且非缓冲方式打开
=fwrite(newid,bt) &&将表头加密
=fclose(newid)
endif
解密部分与加密部分基本相同,只需将相应判断语句修改一下即可:
其中b 值可以用如下方法取得:
if file(′c:\bf\dz.dbf′)
getid=fopen(′c:\bf\dz.dbf′)
b=fread(getid,1)
endif
save to c:\bf\tbs all like b
注:程序中两次打开同一文件是为了使文件指针指向第一个字节,Fseek(gitid,0,0)可将指针移到开头
4.在VFP中捆绑OLE控件,调用WORD或EXCEL文件:
使用如下命令可以调用WORD、EXCEL等:
PUBLIC MYOLE
MYOLE=CREATEOBJECT(″WORD.APPLICATION″)
&&若是调用EXCEL,以上括号中改为EXCEL.APPLICATIONMYOLE.VISUBLE=.T.就可以了
5.在VFP应用程序中破坏系统画面做资料备份:
如不压缩,直接用copy file...to...复制,大数据库可用copy to...分隔成若干小数据库。如要压缩,在调用压缩软件时,如arj,rar等带n2参数,比如:run /n2 rar...
即设置窗口最小化。以上方法比较简单易行,完善的方法可调用两个共享的动态链接库AZIP.DLL和AUNZIP.DLL来完成,在http://happyfox.163.net/foxtips.html这个网址有使用方法介绍和下载。