新浪首页免费邮件用户注册网站地图
上移动梦网
赢手机大奖

新浪首页 > 科技时代 > 网上学园 > 高级编程 > 正文
用VFP实现的几则小功能

http://www.sina.com.cn 2001/07/04 10:37 赛迪网 周勇生

  1、给程序添加背景音乐

  在利用Visual Foxpro 编制应用程序时,如果能给应用程序添加背景音乐,无疑是件锦上添花的事,背景音乐能给应用程序增色不少。不般的方法是利用OLE(对象嵌入与链接)进行嵌套。具体方法是选择“表单控件”上的“OLE容器控件”,将其拖到表单上,再在“插入对象(Insert Object)”窗口中选择“媒体剪辑”,调用“媒体播放机”,利用它来播
放出音乐,同时把播放任务条隐藏起来。利用这种方法要占用大量系统资源,且要利用到外部程序“媒体播放机”,不是一个好方法。其实我们可以利用VFP的动态链接库foxtools.fll来轻松

  实现背景音乐,而且极少占用系统资源。foxtools.fll位于VFP的安装目录中,如下例中假设安装目录为C:VFP。假设Visual FoxPro 系统安装于C:VFP目录中。首先准备一WAV格式的背景音乐文件(这里以back.wav这例),放于指定目录如C:TEST中;可在表单(Form)的Activate事件中加入如下代码:

  public sound set defa to C:TEST

  set Library to c:vfp oxtools.fll &&指定FoxPro 动态链接库

  sound=regfn("SndplaySound","CI","I","Mmsystem")

  =callfn(sound,"back.wav",1)

  为了在表单释放时关闭音乐, 同时在LostFocus事件中加入代码:

  =Callfn(sound," ",10) set library to

  2、通过程序实现自动选择打印机

  如果单位里的局域网上安装有多台网络打印机,在使用VFP 6.0编制的程序进行打印操作时,可以选择其中的任意一台空闲的网络打印机进行打印,只须在执行命令:Report From … To Printer 之前,先执行:Set Printer To Name Getprinter(),就可以调用操作系统的“打印设定”对话框,用户利用该窗口即可达到灵活选择空闲打印机进行打印输出的功能。

  3、实现文字动画效果

  我们可以使用VFP来实现文字动画效果,这里笔者就以让文字逐个从屏幕底部飞入为例,来说明VFP在实现文字动画方面的功能。首先建立一个新的表单(Form1),设置表单的Backcolor属性为RGB(192,192,192),然后在表单上建立四个标签(Label1、Label2、Label3和Label4)和一个定时器(Timer1)。

  设置四个标签的Caption(标题)属性分别为‘文’、‘字’、‘动’、‘画’,Backstyle属性为0(透明),Fontsize属性为26,Autosize属性为.T.(自动调整大小);

  设置定时器的Interval(定时间隔)为100,Enabled属性为.T.(不可用)。我们假设Label1、Label2、Label3和Label4的Autosize属性为.T.,Alignment属性为0(左边)。

  下面就是实现该功能的部分源代码:

  Public Top,Num
  Num = 1
  Top = Thisform.Label1.Top
  For I = 1 To 4
  LabelT = 'Label' + STR(i,1) + '.Top'
  Thisform.&LabelT = Thisform.Height
  Endfor
  Thisform.Timer1.Enabled = .T.
  LabelT = 'Label' + STR(Num,1) + '.Top'
  If Thisform.&LabelT <= Top + 20
  Thisform.&LabelT = Top
  Num = Num + 1
  If Num = 5
  Thisform.Timer1.Enabled = .F.
  Endif
  Return
  Endif
  Thisform.&LabelT = Thisform.&LabelT – 20

  4、实现页面的自动换页功能

  当有大量数据需要录入时,可以使用页框(PageFrame)控件,为了实现页面的自动换页,应在页面上的最后一个控件(如文本框)的LostFocus事件中加上以下代码:

  thisform.WIZFRAME1.ACTIVEPAGE=2

  thisform.WIZFRAME1.page2.ZCZJ1.text1.setfocus

  其中的“2”要根据页数改变,如在第二页的最后一个对象中的LostFocus中加入如下代码:

  thisform.WIZFRAME1.ACTIVEPAGE=3

  thisform.WIZFRAME1.page3.CKGJ1.text1.setfocus

  这样的好处是录入员录到这页的最后一项时,系统会自动分页。

  5、粘贴VFP顶层表单

  当你将表单设置为顶层表单并独立运行于Windows下时,会发现表单中复制粘贴功能失效,这给实际工作造成极大的不便,从而使编制的软件达不到专业水准。其实,造成这一问题的原因是微软设计VFP时,只考虑了位于系统选单下的表单的复制和粘贴情况,即位于系统选单下的表单可使用复制及粘贴热键,而处于Windows下的表单完全脱离了系统选单的控制,因此复制及粘贴热键失效。解决的办法是可在表单的控件(本文举例为文本框)中,为KeyPress Event编写如下事件处理程序,该事件处理程序首先将选择内容复制到Windows剪贴板上,然后再将剪贴板上的内容添加到控件中。

  KeyPress Event
  LPARAMETERS nKeyCode, nShiftAltCtrl
  if nkeycode=3
  && CTRL+C 复制
  -cliptext=this.seltext
  endif
  if nkeycode=22
  && “CTRL+V” 粘贴
  do case
  case this.selstart=0
  this.value=-cliptext+this.value
  case this.selstart〉=1 and this.selstart〈=len(this.value)
  this.value=subs(this.value,1,this.selstart)+-cliptext+subs(this.value,this.selstart+1)
  endcase
  endif
  thisform.grid1.column1.setfocus()
  sele recetem
  if not eof()
  skip
  endif
  thisform.refresh

  (责任编辑:DawnSummit)



发表评论】【初学者园地】【科技聊天】【关闭窗口

新 闻 查 询

 相关链接
VFP视图技术应用介绍 (2001/06/22 16:01)
VFP 6 中文版安装向导捉虫记 (2001/06/08 14:46)
VFP6.0中ActiveX控件TreeView 使用实例 (2000/09/20 10:54)


科技时代意见反馈留言板 电话:010-82612286   欢迎批评指正

网站简介 | 用户注册 | 广告服务 | 招聘信息 | 中文阅读 | Richwin | 联系方式 | 帮助信息 | 网站律师

Copyright © 1996 - 2001 SINA.com, Stone Rich Sight. All Rights Reserved

版权所有 四通利方 新浪网