VFP经验谈

Author: 风帆 Date: 1999年 第46期 13版


  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这个网址有使用方法介绍和下载。