网络开发 调用API函数 报表打印 常用技术 经验汇总 控件使用 软件工程 数据处理
您的位置:首页 >> vfp教程 >> 网上文摘 >> 经验汇总 >> 正文

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

[返回]

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号