河北省.任丘市
朱运喜
一.选择网络打印机
笔者单位里的局域网上安装有多台网络打印机,在使用VFP 6.0编制的程序进行打印操作时,是否可以选择其中的某一台空闲的网络打印机进行打印,而不一定非要从默认打印机输出,从而提高工作效率呢?经笔者研究,在执行命令:Report From … To Printer 之前,先执行下列程序代码:Set Printer To Name Getprinter(),就可以调用操作系统的"打印设定"对话框,用户利用该窗口即可达到灵活选择空闲打印机进行打印输出的功能。(注:可供选择的打印机名是用户计算机上已安装好的打印机名。)
二.恢复丢失了的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文件无法恢复时再采用上述方法。
三.脱离VFP运行程序
利用VFP 6.0创建的应用程序,被编译成可执行程序后,若要使其脱离VFP环境独立运行,除了我们所知道的在应用程序目录中需包含一个名为"CONFIG.FPW"的配置文件外,经笔者试验发现还必须包含"VFP6R.DLL"、"VFP6RCHS.DLL"、"VFP6RENU.DLL"这三个动态链接库文件。这三个文件在"Windows\System"目录下,用户可直接将其复制到自己的应用程序目录中。最后再经过编译形成可执行程序,运行安装向导创建发布磁盘,我们开发的小应用程序就可以堂堂正正地在Win 98下安装运行了。
四.低级文件函数加密数据库
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
五.简易设置TextBox对象的输入长度
在以前的Xbase语法中,我们可以通过Picture参数定义某变量或文本栏的输入长度格式,而在VFP中的TextBox对象中则支持了Format和InputMask属性来定义输入的格式。我们可以使用比较原始的方法来进行设定,比如当要求输入有20个栏位的文本框对象时,我们可以在此对象的InputMask属性中定义为InputMask="XXXXXXXXXXXXXXXXXXXX"。
但是这样的设定方法非常麻烦,尤其是当面对更长的字符串输入时更是不方便。其实我们完全可以用另外一种方法来把这样的需求设计过程变得很简单,下面就具体介绍一下这种简易的快速设定输入栏位的方法。
利用Replicate()函数设定输入长度这里我们同样利用了对象的InputMask属性来定义输入格式和输入长度,但是当对象的输入比较长时,则可以借助算术表达式的方式来对其进行设定。通过属性窗口中的InputMask属性建立表达式对话框,我们可以利用Replicate()函数设定重复的"X"的个数即可(本例为20)。完成后回到属性设置窗口,我们可以看到在InputMask属性栏中出现了"=Replicate(20)"位值的表达式,这样,我们就轻松地完成了长字符输入的长度控制。由此我们也可以体会到善于使用表达式给我们带来的方便之处。
六.中文文本框的设计方法
在程序开发过程中,我们经常要设计一些文本框,而且这些文本框要求只能输入中文。在这种情况下,通常需手工启动某一种中文输入法。如果软件能够自动启动缺省的中文输入法,那么将会给编程人员带来很大的方便。下面的类便能实现这一功能,具体的设计步骤如下:
1.创建一个新类,其基类是"TextBox",类名为"中文TextBox",存储于"myclass"类库中。
2.进入类设计器后,设置"中文TextBox"的各项属性,如字体、颜色等。
3.设计GotFocus事件,代码为: =IMESTATUS(1) 表示当光标移到此框后,自动启动中文输入法。
4.设计LostFocus事件,代码为: =IMESTATUS(0) 表示当光标移开此框后,自动关闭中文输入法。设计好后,保存到文件即可。
七.立体框类的设计方法
在VFP的标准类里提供了一个形状控制类(Shape),可以简单地将S hape的"SpecialEf fect"属性设置为"0-3D",将"BackStyle"属性设为 "0-透明",来设计三维立体框。
然而这样的三维立体框太单调,缺少变化。通过以下的设计方法, 我们可以作出类似于VB中的Three_D Panel那样的效果。具体设计步骤如下:
1.新建一个类,基类是"Container",类名为"Three_Panel",存储于"myclass"类库中。
2.进入类设计器后,设置"Three_ panel"的各项属性,如表1所示。属性设计完毕后,存入文件,就可以得到凸起效果的边框类。
3.通过调整"SpecialEffect"的值为"1-凹下",可以设计凹下效果的边框类(three_p anel_ao)。 调整其余参数可以得到不同效果的边框。
八.在程序中播放动画
我们知道,VFP只支持静止的图片,无法直接播放GIF动画。但网上许多有趣而华丽的GIF动画的确令人心动,如何将这些动画插入到你的VFP程序中,让你的程序更吸引人呢?
其实很简单,将GIF动画分解成各单独的静止的GIF或BMP图片,然后在VFP使用计时器让这些静止的图片轮流出现,就产生动画效果了。
将GIF动画分解为静止图片的软件有很多,在网上很容易找到,如Animagic GIF 等。分解出来的图片我们分别以a0.bmp、a1.bmp……这样的形式保存。在表单中添加计时器TIMER1,TIMER1的Interval属性设为100,Enabled属性设为.T.,再添加Image1控件,其Backstyle属性设为0(透明),Stretch也设为0(裁剪)。
在FORM的LOAD过程中写代码:
Public I , N
I=0
N=5(静止图片的总共数目)
在TIMER1的TIMER过程中写代码:
Local j
i VFP 6.0的十个实用技巧 共有2页 第 1 2 页
|