密码输入错误三次,强制退出的VFP程序如何编写

密码输入错误三次,强制退出的VFP程序如何编写,第1张

简单模拟一下,假设表单上就一个文本框(用于输入密码)和一个确定按钮,再假设正确密码为"AAA"

表单的INIT事件里写上:

PUBLIC nClickCounter

nClickCounter=0

确定按钮CLICK代码:

nPassword=ALLTRIM(THISFORMTEXT1VALUE)

IF nPassword<>"AAA"

nClickCounter=nClickCounter+1

IF nClickCounter=3

clear

clear events

quit

ENDIF

ELSE

密码正确时处理的代码

ENDIF

两个表要建立临时关系。建立临时关系的方法有两个。(这两个表可以是自由表)

一是用命令。

要求主表与子表要有相同字段,子表要建立此字段的索引。

如学籍表和成绩表,都有学号字段。

sele 2

use 成绩

index on 学号 tag 学号

sele 1

use  学籍

set relation to 学号 into b

就建立完成了,当主表的指针移动时,子表的指针自动移动到与它相同学号的记录上。

二是在窗口菜单的“数据工作期”窗口,点“关系”按钮可以实现

楼上说的是建立永久关系。临时关系关闭两个表中的任何一个,此关联就取消了。需要时重新建立,而永久关系会一直保存在数据库中。

vfp60的十个实用技巧

---- 一选择网络打印机

---- 笔者单位里的局域网上安装有多台网络打印机,在使用vfp 60编制的程序进行打印 *** 作时,是否可以选择其中的某一台空闲的网络打印机进行打印,而不一定非要从默认打印机输出,从而提高工作效率呢?经笔者研究,在执行命令: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 60创建的应用程序,被编译成可执行程序后,若要使其脱离vfp环境独立运行,除了我们所知道的在应用程序目录中需包含一个名为"configfpw"的配置文件外,经笔者试验发现还必须包含"vfp6rdll"、"vfp6rchsdll"、"vfp6renudll"这三个动态链接库文件。这三个文件在"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 notfeof(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 等。分解出来的我们分别以a0bmp、a1bmp……这样的形式保存。在表单中添加计时器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 = mod (i+1,n)

j = alltrim( str(i) )

thisformimage1picture="a"-j-"bmp"

运行表单,我们就可以看到熟悉的gif动画了。

---- 九粘贴vfp顶层表单

---- 当你将表单设置为顶层表单并独立运行于windows下,就会发现表单中复制粘贴功能失效,给实际工作造成极大的不便,从而使编制的软件达不到专业水准。通过认真分析与实践,笔者认为,造成这一问题的原因是微软设计vfp时,只考虑了位于系统选单下的表单的复制和粘贴情况,即位于系统选单下的表单可使用复制及粘贴热键,而处于windows下的表单完全脱离了系统选单的控制,因此复制及粘贴热键失效。

---- 解决的办法是可在表单的控件(本文举例为文本框)中,为keypress event编写如下事件处理程序,该事件处理程序首先将选择内容复制到windows剪贴板上,然后再将剪贴板上的内容添加到控件中。

keypress event

lparameters nkeycode, nshiftaltctrl

if nkeycode=3

&& ctrl+c 复制

-cliptext=thisseltext

endif

if nkeycode=22

&& ctrl+v 粘贴

do case

case thisselstart=0

thisvalue=-cliptext+thisvalue

case thisselstart〉=1

and thisselstart〈=len(thisvalue)

thisvalue=subs(thisvalue,1,thisselstart)+

-cliptext+subs(thisvalue,thisselstart+1)

endcase

endif

thisformgrid1column1setfocus()

sele recetem

if not eof()

skip

endif

thisformrefresh

---- 十为vfp添加循环微调控件类

---- 在vfp编程中,微调控件是最常用的控件之一。按照微调控件提供的基本功能,通过单击向上或向下箭头,而达到微调控件的最大或最小值时,如继续单击向上或向下箭头,将保持最大或最小值不变。笔者通过对spinner控件属性和事件的分析,用编程的方法实现了循环微调控件功能。

---- 循环微调控件(cyclespinner)所实现的功能是:当单击向上箭头而达到最大值时,再单击向上箭头,能自动跳到最小值;当单击向下箭头而达到最小值时,能自动跳到最大值;其余功能均继承spinner基类的功能。具体实现方法如下:利用表单控件,在表单中设计一个微调按钮,并设置如下属性:

spinnerhighvalue=max

&&max应小于spinner基类所

&&提供的最大默认值

spinnerlowvalue=min

&&min应大于spinner基类所

&&提供的最小默认值

value=1

name=''cyclespinner''

在init事件中写入如下代码:

thisspinnerhighvalue=this

spinnerhighvalue+thisincrement

thisspinnerlowvalue=this

spinnerlowvalue-thisincrement

在interactivechange事件中写入如下代码:

if thisvalue=thisspinnerhighvalue

thisvalue=int(this

spinnerlowvalue+thisincrement)

endif

if thisvalue=thisspinnerlowhvalue

thisvalue=int(this

spinnerhighvalue-thisincrement)

endif

thisformrefresh

---- 再将其作为类保存起来,添加到你的类库中。

---- 若你在编程中,需用此功能,就可直接用此循环微调控件类了。

“VFP程序设计”简称VFP或VF。VFP是面向对象的数据库管理系统将使您可以创建出具有艺术性的企业数据库解决方案。

VFP是一个功能强大的交互式数据管理工具,而且可以创建应用程序来充分发挥其完善的功能。掌握 Visual FoxPro的面向对象程序设计技术以及事件驱动模型,可以最大限度地提高程序设计的效率。

VFP还提供了一个集成化的系统开发环境,它不仅支持过程式编程技术,而且在语言方面作了强大的扩充,支持面向对象可视化编程技术,并拥有功能强大的可视化程序设计工具。目前,VFP是用户收集信息、查询数据、创建集成数据库系统、进行实用系统开发较为理想的工具软件。

VISUAL FOXPRO的基本数据元素:

(1) 常量、变量、表达式。

(2) 常用函数:字符处理函数、数值计算函数、日期时间函数、数据类型转换函数、测试函数。

以上就是关于密码输入错误三次,强制退出的VFP程序如何编写全部的内容,包括:密码输入错误三次,强制退出的VFP程序如何编写、VFP6.0程序、关于visual foxpro 6.0中的打印输出问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10066759.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存