VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 用VB实现动态显示操作进度程序
发表评论(0)作者:, 平台:, 阅读:9771, 日期:2000-03-17
用VB实现动态显示操作进度程序


江苏镇江港务局微机室(212001)蔡可训



凡是用过Windows的用户都非常熟悉Windows安装程序所提供的界面,即随着安装盘文件拷贝到硬盘,有一蓝色的水平尺随着百分数的增加而不

断增加,当百分数达到50%时,原为白底黑字显示百分比,变成蓝底白字显示,水平尺动态显示工作进度的动感非常强。


如何在自己的应用程序加入显示动态操作进度的功能,笔者在VB编程工作中总结出两种方法。


1.方法一:


建立两个图片框,这两个图片框的大小和位置都相同。将一个设置为可见,白色背景和黑色前景。另一个设置为不可见,蓝色背景和白色前景,

AUTODRAW为TURE。将不可见图片框中的蓝色位图通过Windows API中的BITBLT函数拷贝到可见的图片框中。两个图片框中输出百分数的位置

相同。


①在目标文件列表(OBJECT)中选择GENERAL,在过程列表(PROC)中选择DECLARATIONS(声明),进入窗体级代码定义窗口输入:


DECLARE FUNCTION BITBLT% LIB "GDI"(BYVAL DESTDC%,BYVAL X%,BYVAL Y%,

BYVAL W %BYVAL H%,BYVAL SRCDC%,BYVAL XSRC%,BYVAL YSRC%,BYVAL RASTEROP&)


CONST SRCCOPY = &HCC0020


②建立一个计时器,设置每隔五毫秒使水平尺增加1%。


输入计时器的程序代码:


SUB TIMER1_TIMER ()


STATIC COUNT AS INTEGER


COUNTS!=COUNT/100


PERCENT$ = FORMAT(COUNTS!,"0%")


P1.PRINT PERCENT$ `显示百分数.P1是可见框的控制名称.


P2.PRINT PERCENT$ `显示百分数.P2是不可见框的控制名称.


R% = BITBLT(P1.HDC,0,0,P2.WIDTH*COUNTS!,P2.HEIGHT,P2.HDC,0,0,SRCCOPY)


COUNT = COUNT +


IF COUNT = 100 THEN


COUNT = 0


`计数清零


END IF


END SUB


这种方法实现起来太繁琐且运行效果表现为水平尺的动感强,但缺乏立体美感,所以笔者只提供了程序代码的主要部分,下面将着重介绍方法二。


2.方法二:


充分利用三维控件的属性,制作一个三维立体界面。


①先介绍3D控件中的特殊属性(本文用到的)含义:


SHADOWCOLOR 用于控制阴影的颜色,它有1-黑色,0-浅灰色两种选项,本文选0。


BEVELOUTER


用于控制控件倾斜框外边形状。它有0-没有,1-凹入,2-凸出三项。


BEVELINNER


用于控制控件倾斜框内边形状。选项同BEVELOUTER。


BEVELWIDTH


用于控制控件倾斜框的宽度。


BORDERWIDTH 用于控制控件边框的宽度。


FLOODTYPE


用于控制在面板内填充的方式,0-没有,1-从左到右,2-从右到左,


3-从上到下,4-从下到上,本文选1。


FLOODCOLOR


指定填充时的填充颜色。


FLOODSHOWPCT 控制是否在填充时显示完成的百分比。有TRUE/FALSE两种选项,本文设置为TRUE。


②建立含有如下控件的窗体:


控件 NAME CAPTION BEVELINNER BEVELOUTER BEVELWIDTH BORDERWIDTH


FLOODCOLOR


窗体 FORM1 动态显示操作演示 `程序窗口


命令按钮 COMMAND1 退出 `程序结束


计时器 TIMER1 (INTERVAL为5)


面板 PANEL3D1 空 1 1 1 4 蓝色


由于显示超宽,部分属性的设置见2①属性说明


③利用计时器,每隔5毫秒就使水平尺增加1%。当达到50%时,百分数显示由原来的白底黑字变成蓝底白字;当达到100%时,将百分数清零再从头显

示水平尺。


(1)输入计时器的代码:


SUB TIME1_TIMER()


STATIC COUNT AS INTEGER


PANEL3D1.FORECOLOR = &H0


`设置百分数为黑字.


PANEL3D1.FLOODPERCENT = COUNT `显示百分数.


COUNT = COUT +


IF COUNT >=50 THEN


PANEL3D1.FORECOLOR = &HFFFFFF `设置百分数为白字.


IF COUNT = 100 THEN


COUNT = 0 `计数清零.


END IF


END IF


END SUB


(2)输入退出按钮的代码:


SUB COMMAND1_CLICK()


END


END SUB


以上程序在AST PIII+4/66D上,VISUAL BASIC 3.0 FOR WINDOWS环境中运行通过,用户可将本程序适当修改加入到自己的应用程序中,增加程序

界面的立体美感。