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中低级文件函数加密数据库

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
return

☆ 移动字幕

用PowerPoint制作幻灯片时有一种效果就是图片或文字在屏幕中从左到右，或从下到上移动显示，当然用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
(张　槿)