ccidnet????

出版日期:2000-01-10 总期号:891 本年期号:03

本期导读
要闻综合
电脑工作室
市场
硬件
软件
infotimes
给程序变个脸

王守银

  在vfp编制的应用系统中,一般情况下采用的是选单方式,这时除了选单条以外,屏幕的其它部分都是空白的,屏幕的颜色比较单一,十分不美观。那么,如何在应用系统中改变屏幕窗口呢?笔者在开发应用系统时,制作了一个通用的壁纸设置程序,用来实现屏幕的壁纸功能,下面是简要介绍实现过程。

  其实在vfp中实现壁纸功能是十分容易的,我们可以通过改变vfp系统中的—screen.picture属性来实现。


  一、新建数据表


  首先新建一个数据表bzwj.dbf,数据表中有两个字段,用来存放所有的壁纸文件名,供用户选择使用。字段属性如下表。

字段名 类型 长度
picname 字符型 60
picwz 字符型 1


  二、 新建表单


  利用表单设计器新建一个表单,在表单各控件分布如下图:


  在这个壁纸设置表单中,在数据环境下加入数据表bzwj.dbf,同时表单上使用了一个列表框控件,一个图像控件,三个命令按钮控件,一个选项按钮组控件和一些标签、形状控件组成。下面是各个控件属性及事件代码情况:

  1. 表单中属性设置如下:

  form1.caption=′壁纸设置′

  form1.activate事件代码如下:

  sele bzwj

  loca for picwz=′1′

  wz1=recn()

  mz1=allt(bzwj.picname)

  2. list1列表框的属性设置如下:

  list1.controlsource=bzwj.picname

  list1.browsource=bzwj.picname

  list1.browsourcetype=6-字段

  list1.click event事件代码如下:

  mz1=allt(bzwj.picname)

  if thisform. optiongroup1.value=1

  thisform.im1.stretch=1

  else

  thisform.im1.stretch=2

  endif

  thisform.im1.picture=mz1

  3.command1命令按钮的属性设置如下:

  command1.caption=′应用′

  command1.click event事件代码如下:

   —screen.picture=mz1

  wz11=recn()

  repl picwz with ′ ′ all

  go wz11

  repl picwz with ′1′

  4.command2命令按钮的属性设置如下:

  command2.caption=′确定′

  command2.click event事件代码如下:

  thisform.release

  5.command3命令按钮的属性设置如下:

  command3.caption=′浏览′

  command3.click event事件代码如下:

  picfile= getfile(′bmp;jpg′)

  if len(allt(picfile))>1

   sele bzwj

  appe blan

  repl picname with picfile

  go bott

  thisform.list1.click

  endif

  6.optiongroup1选择按钮组的属性设置如下:

  option1.caption=′等比填充′

  option2.caption=′变比填充′

  optiongroup1.interactivechange event事件代码如下:

  thisform.image1.stretch=this.value


  三、 运行表单


  全部控件属性设置和事件代码输入结束后,运行这个表单,我们可以选择列表框中任一个图像文件作为应用程序的壁纸文件。

  当鼠标点击列表框中一个文件名时,在图像框中将对这个图像文件进行预览,也可以通过浏览按钮查找到一个图像文件(这里允许使用bmp和jpg格式的图像文件)作为壁纸文件增加到列表框中,同时在壁纸数据表中增加这个图形文件名。选择按钮组的属性可改变图像为等比或变比显示模式。点击“应用”按钮后系统将更换为所选择的图像,同时将壁纸数据表中的标识位字段picwz赋值为“1”,使得系统在下次运行时自动将系统壁纸更换为所选择的壁纸图像,这时要在主程序(如main.prg)执行段中加入如下代码:

  …

  sele bzwj

   loca for picwz=′1′

   wz1=recn()

   mz1=(bzwj.picname)

  —screen.picture=mz1

  …

  说明:一般情况下,可以事先对壁纸图像进行处理,使其同系统显示器分辨率设置相符,使图像显示更加清晰。如当显示器设置为800×600分辨率时,我们可以把壁纸图像文件处理为800×600,并将文件命名为汉字名,这样可以很直观的表达图像文件的内容。