工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VFP > 正文
VFP中状态栏控件的使用说明
[文章信息]
作者:
时间:2004-06-02
出处:论坛
责任编辑:方舟
[文章导读]
在VFP的程序设计中,其主窗口_screen有一个系统的状态栏,虽然可以很方便的使用命令set message to 字符
advertisement
热点推荐
· 真没想到VB也可以这样用之指针技术
· 禁止QQ登录的方法
· 给你的XML文件做个数字签名
· ImageReady制作“焰火”小动画
· Java加密和数字签名编程快速入门
[正文]
  在VFP的程序设计中,其主窗口_screen有一个系统的状态栏,虽然可以很方便的使用命令set message to 字符。。。但是有时侯还是会有美中不足之处,如系统的显示一个当前打开的当前工作区的表的决定路径,以及其所在的记录位置,和锁定方式,令人很是头疼。 

  当然不仅仅因为此,我们就要放弃该状态栏啊,有时我们需要使我们的状态栏显得更专业点,或者需要显示特定的状态栏信息,故,需要使用状态栏控件来使我们的程序更漂亮! 

  状态栏在显示时有两种模式,一是单版面,二是多版面。单版面就是在状态栏地方显示一个信息区,而且只可以放置简单的文字说明,而多版面可以放置二个或以上的信息区,并可以特定的系统说明,如CAPS,NUM,INS等的状态指示,并可以放置图片。而且两种模式在切换时还不互相干扰,互不影响! 

  下面说明一下其使用方法

  首先该控件需要文件 mscomctl.ocx 的支持,如果在安装了VFP6的环境下,系统目录下已经有了该文件,如果在修改或运行前提示要打开一个OCX文件,那么需要首先拷贝该文件到你的系统目录,然后再指定该文件,因为第一次指定时,系统即注册该文件,及其路径,所以不要随便在第一次去指定一个OCX文件,否则麻烦大了! 

  状态栏的属性之一STYLE,即上面所讲的两种显示模式,0 - Mutliple panels 和 1 - Single panel simple text 当为Single panel simple text 模式时,很方便的处理,只要指定状态的另一个属性 SimpleText即可,就象在操作VFP主窗口的状态栏时用 set message to 那么方便了,在这里就是thisform.OleStatus.SimpleText="新的字符串"即可。 

  而当在 Mutliple panels 时就不同了,其实我们需要这个控件也就是为了这个功能吧,不然用VFP主窗口的状态栏不就行了嘛?在多版面时,每一个版面作为一个对象来操作,即Panel,对之我摸索到如下的属性:

  1、Index 是指Panel的索引号,该索引号是顺序排列且唯一指定每一个Panel的。

  2、Text 是指在Panel上显示文本的,只有当其Style=0(文字)时才有效。

  3、ToolTipText 是当鼠标移到该Panel上时显示的提示信息,要当控件的ShowTips=.T.时才有效。

  4、Key 是用来唯一标志每一个Panel的值,该值要么不指定,即为空,要么就是要唯一指定。在做对Panel的删除时,需要指定Panel的Key值。

  5、Width 是指Panel的宽度,宽度不可以小于0,否则出错。

  6、Tag 用来存储额外数据的,一般没什么用。

  7、Visible 默认为.T.即可见,可以通过修改该值来隐含Panel.

  8、Enabled 默认为可用,可以通过修改该值来表示Panel的可用不可用状态。

  9、Alignment 对齐方式,默认为左对齐。

  10、Style 表示Panel的样式,如普通文字,CAPS,NUM,INS的键的状态指示,用来表示日期,时间等。

  11、Bevel 表示Panel的外观,有平面,突起,凹进三种。

  12、Picture 该参数还未知如何以编程方式来指定,他的值是作为一个对象存储的。 

  方法:

  1、添加

thisform.olestatus.panels.add(n,"key_"+allt(str(n)),"Ready",0 )

  以上代码参数表示:

   N 是指其INDEX值,该值必须唯一,且是顺序指定,"key_"+allt(str(n)) 表示其KEY值,要指定,必须使他唯一,否则出错。

   "Ready" 是在PANEL上显示的文字。 

   后面的0表示其样式为普通文字。 

  2、删除

thisform.olestatus.panels.remove(key)

  指定某一个PANEL的KEY值时,可以通过该命令来做删除。 

  3、更新

  详细见示例中 

  应用:

  1、显示进度条:

*-- PANEL 的宽度 = 12 * 方块个数 + 2
with thisform.olestatus.panels.item(1) && 在第一个PANEL里显示进度条 

.text = ""
nTotalNum = (.width - 2)/12 && 总方块个数
x = 0   && 当前所计算出的第几个方块数
y = 0   && 跟X参考比较数
nTotalSum = 100000   && 总数
for n = 1 to nTotalSum && 表示从1到100000之间的处理进度
  x = int((n * nTotalNum)/nTotalSum)  && 求得现在是需要显示第几个方块数 X
  if y <> x  && 当两个数不相等时,表明有新的数产生,则加一个方块
    .text = .text + '■'
    y = x
  endif
*-- 处理某事务
endfor
.text = "完毕"
end with 

  2、显示时钟

  这个很简单,只要在表单上放一个时钟控件,设频率为1000微妙,TIMER事件里写
thisform.olestatus.panels.item(1).text = ttoc(datetime())

表示在第一个PANEL里显示当前的时间,并每隔一秒更新,从而达到即时显示时间,但这个不是很有必要,毕竟他提供了时钟的功能,只是不显示秒?

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 民营家电商排队造手机 设备商全面杀入
  • 英特尔澄清杨旭任职传闻 官方没宣布此消息
  • 国资委河北密制联通拆分方案
  • 垃圾邮件害人害企害国 清除垃圾邮件不手软
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索