| 网络开发 | 调用API函数 | 报表打印 | 常用技术 | 经验汇总 | 控件使用 | 软件工程 | 数据处理 |
VFP6.0编程经验四则 笔者最近使用VFP6.0进行数据库开发,现结合自己在实际开发中对VFP的认识和体会,介绍VFP应用中使用的一些技巧和经验,以求交流。 一.恢复丢失了的FPT文件 由于误操作,将自由表的备注文件删除,致使自由表无法打开。遇到这种情况可采用下述方法解决。 1.创建一个新的自由表,且该自由表只含一个字段,其类型为备注型,关闭该自由表,将其扩展名为FPT的备注文件复制给误删的自由表的备注文件,或将该备注文件改名为误删的自由表的备注文件即可。 运行下面的程序同样也可以恢复丢失了的FPT 文件: accept '请输入丢失了.FPT文件的自由表名称(不带扩展名):' to namef namef=trim(namef)+'.bbb' crea dbf &namef (aa m) use dele file &namef 2.用VFP低级文件函数创建一个空的FPT文件,使原自由表即可打开:程序清单如下: accept '请输入丢失了.FPT文件的自由表名称(不带扩展名):' to namef namef=trim(namef)+'.FPT' hand=fcreate(namef) abc=repl(chr(0),3)+chr(8)+repl(chr(0),3)+'@'+repl(chr(0),504) =fwrite(hand,abc) =fclose(hand) return 上述方法只是为丢失了的FPT文件的自由表,建立了一个新的FPT文件,原FPT文件中 的内容已经丢失,无法恢复。在实际操作中若遇到这种情况最好是恢复原来的FPT文件,若 原FPT文件无法恢复时再采用上述方法。上述方法同样适合Foxpro For Windows。 二.移动字幕 在电视上经常见到字幕从左到右,或从下到上移动显示,利用VFP同样也可实现。程序清单如下: frmm=createobject('myform') frmm.addobject('label1','label') frmm.label1.top=200 frmm.label1.caption='移动字幕的实现' frmm.label1.Autosize=.T. frmm.label1.Backstyle=0 frmm.label1.Forecolor=RGB(255,255,0) frmm.label1.Fontbold=.T. frmm.label1.Fontsize=36 frmm.label1.visible=.t. frmm.addobject('timer1','ttimer') frmm.Label1.Left=frmm.Width &&从左到右移动显示 *frmm.Label1.top=frmm.top+frmm.height &&从下往上移动显示 frmm.show() read events define class myform as form proc destroy clear events endproc enddefine define class ttimer as timer Interval=100 proc timer *从左到右移动显示 if frmm.Label1.left< 0-frmm.Width frmm.Label1.Left=frmm.Width endif frmm.Label1.Left=frmm.Label1.Left-5 *从下往上移动显示 *if frmm.Label1.top< frmm.top-60 * frmm.Label1.top=frmm.top+frmm.height *endif *frmm.Label1.top=frmm.Label1.top-5 endproc enddefine 三.用VFP实现进度条 1.在VFP中建立一新表单,并将其Caption设定为"进度条",Autocenter属性设为.T.; 2.在表单上建立一个文本框text1,width为200、height为25、top为112、left为87, 并将其Enabled属性设为.T.; 3.在表单上建立一个标签label1,设定其top为113、left为87、width为200、height 为23、autosize为.F.、backstyle为0、forecolor为(0,0,160)、fontsize为12、 Caption为' 0%'; 4.在表单上建立一个标签label2,设定其top为113、left为87、width为0、height为 23、forecolor为(255,255,255)、backcolor为(0,0,160),fontsize为12; 5.在表单底部建立一个按钮,设定其Caption属性为"开始",并在其Click编辑窗中 键入以下代码: public lhw if lhw=.f. this.caption='正在处理' this.enabled=.f. do while thisform.label2.width< 200 thisform.label2.width=thisform.label2.width+1 thisform.label1.caption=space(11)+allt( str(thisform.label2.width/2,3,0))+'%' thisform.label2.caption=thisform.label1.caption i=inkey(1) enddo lhw=.t. this.caption='结束' this.enabled=.t. thisform.text1.enabled=.f. else release thisform lhw=.f. endif 6.运行该表单,即可得到效果很好的进度条。 四.利用VFP中低级文件函数加密数据库 VFP有一个十分薄弱的环节就是数据库的保密性差。由于.DBF文件都是敞开式的, 甚至用DOS中最简单的TYPE命令都可以浏览。因此,笔者从以下两方面对数据进行加密 处理:1.在向自由表中增加数据时,就进行加密,即更新自由表时就对数据进行加密,在 读取数据时再解密。2.用VFP提供了低级文件函数进行加密,加密后的文件无法打开、 浏览,使用时,再执行该加密程序即可将加密的自由表还原。 **加密数据库程序(同时也是解密程序)** set talk off close all clea @10,10 say "请输入要加密的数据库名(含扩展名):" get file1 defa ' ' read handle=fopen("&file1",2) if handle< 0 @14,10 say "不能打开文件!" =inkey(0) retu endif j=0 do while .not.feof(handle) bb=fread(handle,1) cc=chr(mod(asc(bb)+128,256)) =fseek(handle,j) =fwrite(handle,cc) ?asc(bb),asc(cc) j=j+1 enddo =fclose(handle) close all retu | ||||