vf 中控件属性click事件代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【转载】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、请务必将表单的属性设定为逻辑真值。