当前位置:文档之家› vf 中控件属性click事件代码

vf 中控件属性click事件代码

【转载】vf常用代码集锦(上)

2010-07-20 16:04

◆文字滚动的效果

在表单添加一个计时器,把计时器INTERVAL设为30

如要走动的文字在标签1也就是LABLE1,

在计时器的timer里写下如果代码:

if bel1.left+bel1.width=0

bel1.left=thisform.width

else

bel1.left=bel1.left-1

endif

此时,LABLE1的文字将从右到左不停的走动,这时,如果要加一些效果,比如说是文字让它变颜色,一直闪烁的话。

可以再加“文字闪烁的效果”里的代码,两者结合,效果很好。

◆文字闪烁的效果

假设要闪烁的标签文字在Label1上。在表单添加一个计时器 设Interval的值为30。在表单的Alwaysontop也就是表单属性的第一个值里声明变量,代码为:

Public I

I=0

在计时器Timer1的Timer写下代码

i=i+10

if i>=255*2

thisform.timer1.enabled=.t.

i=0

endif

if i>=255

bel1.forecolor=RGB(255*2-i,50,110)

else

bel1.forecolor=RGB(i,80,170)

endif

打开表单,就会出现文字闪烁了,如果你有兴趣,试试看

◆密码的设置

在表单中添加两个文本框,text1为用户名;text2为密码,添加两个命令按钮,设为确定和取消,数据表的结构两个字段:(name

*用于存放用户名)和(mm *用于存放密码)

在确定按钮的click事件写入

if thisform.text1.value="".or.thisform.text2.value=""

=messagebox ("用户名或密码不能为空!",0+48,"警告!")

else

sele 1

use shujubiao\yonfu.dbf

if name=allt(thisform.text1.value).and.mm=all(thisform.text2.value)

use

thisform.text1.value=" " thisform.text2.value=" "

wait"登陆成功,正在加载数据,等稍等" time 2 windows

thisform.visible=.f.

thisform.release

close all

do form zym.scx *写入您要执行的表单

else

use

messagebox("用户名或密码错误,请重新输入!",0+48,"警告!")

thisform.text1.value=" "

thisform.text2.value=" "

endif

endif

在取消按钮的click写入

close all

thisform.release

确记啊,不能把“确定”按钮设为Enter的模式,如果设定后,启动表单时,可是不用输入密码直接按确定就可以进入了。

◆密码修改源程序

表单中四个文本框,分别为用户名、密码、新用户名、新密码对应为:text1;text2;text3;text4。此表单所用的数据表和密码设置为同一张表。在表单的“确定”按钮click写入代码

if thisform.text1.value="".or.thisform.text2.value="".or.thisform.text3.value="".or.thisform.text4.value=""

=messagebox("存在空输入框,无法修改!",0+64,"警告")

else

use e:\xyz\表1.dbf *打开数据表

if not eof()

loca for name=allt(thisform.text1.value).and.mm=allt(thisform.text2.value)

if name=allt(thisform.text1.value).and.mm=allt(thisform.text2.value)

if messagebox("要保存修改吗?",32+4+256,"询问;")=6

repla name with thisform.text3.value,mm with thisform.text4.value

if messagebox("修改已完成,是否退出?",32+4+256,"询问")=6

use

thisform.release

endif

endif

else

messagebox("密码或用户名有误,请重新输入!",0+48,"警告")

endif

endif

endif

use

thisform.text1.value=" "

thisform.text2.value=" "

thisform.text3.value=" "

thisform.text4.value=" " thisform.text1.setfocus

以上代码,您可以略做修改,做为密码修改的代码。

◆顶层表单的实现

大家不知道有没有过这样的一种经历,设为顶层表单的表单一运行,就会一闪而过,明明是该设的都设好了啊,呵呵,没事,这里,本人帮你解决问题。在表单的属性Activate Event里加上Read Even,然后再属性里的Release里加上一句 Clea Even。记住,一定要在Release里加上这一句,不然,无法关闭表单的

你再试一下看看,顶层表单不会再一闪而过了。

◆一个程序多个顶层表单的问题

如果你的程序里要用到两个或两个以上的表单,你会发现,打开出来后的表单会没有办法关闭第一个,这时,就要用到隐藏了,如果你第一个表单运行后,进入第二个时,用_Screen.visible=Off。这时,在Windows的状态栏里,你会看到只有一个程序了,可是这时,如果你用Ctrl+Alt+Del来结束当前程序的时候,会发现,其实关闭的只是当前的表单,而被隐藏的表单没有被关闭,怎么来解决这个问题呢?没事,在第二个顶层表单,也就是你要关闭的表单的属性里面的Destroy Even加上一句:_Screen.Show

然后再追加一条Quit。好了,这里你再试一下看看,你会发现你用Ctrl+Alt+Del来结束程序的时候,在Windows任务进程里的程序被关闭了。到此,你的表单问题解决了

◆给顶层表单添加工具栏

1.在类库MyVcx中建立一个工具栏类MyToolBar,将工具栏的ShowWindow属性设置为1——最上层表单;

2.给顶层表单添加一个自定义属性TopToolBar;

3.编辑顶层表单的Activate event,输入以下代码:

This.TopToolBar=NewObject("MyToolBar","MyVcx")

This.TopToolBar.show()

This.TopToolBar.dock(0)

现在,你就可以享受顶层表单的工具栏了!

◆为表单建立功能键

对于数据输入人员而言,使用鼠标反而降低操作的效率。比方说,假设操作人员要新增数据时,除了可以使用鼠标按下新增按钮,也可以直接按下功能键[F2],在这种情况下,您觉得操作人员会使用什么方法呢?根据经验,由于数据输入人员对键盘上各类按键的配置位置相当熟悉,因此几乎所有的输入人员都会采用立即可按下的功能键,而不会去使用鼠标,因为他或她不需要将手离开键盘使用鼠标,操作的效率自然提高。所以,一个设计良好的系统,应该是既能使用鼠标操作,也能使用键盘操作。由此可见,为表单建立功能键的重要性。

要为表单建立功能键,关键在于KeyPress事件的使用。因为每当您在表单中按下并放开某一键时,表单的KeyPress事件便会被引发。显然您只需要在表单的KeyPress事件程序中,去拦截使用者在表单中所按下的每一个键,并且判断它是否是特定功能键,便能决定是否要执行特定的操作。

然而,这却引发了另一个值得讨论的问题,那就是并非只有表单才拥有KeyPress事件,许多控件也拥有KeyPress事件。比方说,您目前在表单中的某一TEXT输入框中,此时若按下并放开某一按键,所引发的将是此TEXT输入框的KeyPress事件,而表单的KeyPress事件将不会引发。因此也许您会问,我们是否必须为表单中所有控件的KeyPress事件程序都撰写判断使用者是否按下功能键的程序码?当然不是,因为这样不仅繁琐,而且还会降低效率。

要让表单的KeyPress事件拦截作用控件的KeyPress事件,也就是先引发所属的表单的KeyPress事件再引发作用控件的KeyPress事件,只要将表单的KeyPressView属性设为.T.即可。这样,您只需要在表单的KeyPress事件程序中撰写判断使用者是否按下建立功能键的程序码,而不需要在表单所内含的各个控件的KeyPress事件中写此代码。

几项说明:

1、由于VFP本身已经为各个功能键定义了按键集合,因此要使您所设定的各个功能键生效,首先必须清除VFP的按键集合定义。要清除VFP的按键集合定义,必须在表单的INIT事件程序中加入下面这道命令:

CLEAR MACROS

2、请务必将表单的属性设定为逻辑真值。 3、VFP会自动传递两个参数给KeyPress事件程序,因此您必须在KeyPress事件程序的开头处使用LPARAMETERS或PARAMETERS命令来接收这些参数,否则将发生错误。第一个参数nKeyCode是一个数值型参数,其值为使用者是否按下功能键。第二个参数nShiftAltCtrl是一个数值型参数,从这个参数您可以判断出使用者按按键是否包含组合键Shift/Alt/Ctrl键。KeyPress事件程序的代码:

LPARAMETERS nKeyCode,nShiftAltCtrl

DO CASE

CASE nKeyCode= -1 &&[F2]

WITH THISFORM.cmdfind

.SetFocus

.Click

ENDWITH

CASE nKeyCode= -2 &&[F3]

WITH THISFORM.cmdprint

.SetFocus

.Click

ENDWITH

CASE nKeyCode= -3 &&[F4]

WITH THISFORM.cmdadd

.SetFocus

.Click

ENDWITH

ENDCASE

从上面的程序中您可以发现,当按下特定功能键后,我们调用相对应的按钮的Click事件程序,也就是说,要执行的操作仍然是写在各个按钮本身的Click事件中。而调用SetFocus事件的是为了造成该按钮在外观和视觉上被选定的感觉。 ----4、我们希望在程序结束执行后,恢复默认的按钮集合定义。要达到此目的,必须在表单的退出事件中撰写下列命令:

RESTORE MACROS

◆VFP中实现背景音乐的几种方法

一、利用set bell to

VFP5.0的set bell to命令的使用格式不同于FoxPro2.X的格式。在VFP5.0中,它的格式为Set Bell To [cWAVFileName,

nDuration]。其中cWAVFileName为一个.WAV文件;nDuration为持续时间(注意该项不可省略,否则会产生语法错误)。这样当在个人程序的初始模块中用set bell to 定向到一.WAV文件后,便可在后面的模块中用?chr(7)来播放该.WAV文件。

示例1:

set bell on &&使bell有效

set bell to'.WAV文件',0 &&定向到一个.wav文件。

?chr(7) &&播放该.WAV文件

二、利用OLE容器控件

创建一表单,单击表单控件工具栏中的“OLE容器控件”按钮,然后在表单上适当位置点击或拖动。在出现的“Insert Object”窗口中选“Creat New”或“Creat From File”,用“Browse”按钮选取自己的.WAV文件,确定即可。

在当前表单中会出现一“喇叭”图标,设置该图标的属性“ AutoActivate”为1,可使每当表单运行时自动播放该.WAV文件,实现背景音乐;设置Height、Width均为0时,可隐藏“喇叭”图标。

三、利用VFP库Foxtools.fll

用=Regfn()和=Callfn()可访问Foxtools.fll中的音频模块,进行播放声音文件。

示例2:

创建一表单,在其Activate事件中输入下列代码:

相关主题