自己编写vb进度条控件

简介: 自己编写vb进度条控件

image.png

主程序代码:

Option Explicit
Dim i As Double
Private Sub Command1_Click()
    i = 0
    Timer1.Interval = 50
    Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
    i = i + 0.05
    ProcessBar1.Percent = i
    If i > 1 Then Timer1.Enabled = False
End Sub

image.png

控件代码:

Option Explicit
Public Enum FigureStyle
    eOnlyValueInt
    eOnlyValueDouble
    ePercentInt
    ePercentDouble
End Enum
Private dblMyPercent As Double
Private lngMyValue As Long
Private isShowMsg As Boolean
Private strMsg As String
Private intMsgStyle As FigureStyle
Private Max As Long, Min As Long
Private Sub UserControl_Initialize()
    Min = 0
    Max = 100
'    lngMyValue = 30
    dblMyPercent = lngMyValue / (Max - Min)
    lblValue.Caption = Int(dblMyPercent * 100) & "/100"
    UserControl.Height = lblBase.Height
    intMsgStyle = ePercentInt
    Call setLabelSize
End Sub
Private Sub UserControl_Resize()
    Call setLabelSize
End Sub
Private Sub setLabelSize()
    lblBase.Move 0, 0, UserControl.ScaleWidth, UserControl.ScaleHeight
    lblTop.Move lblBase.Left, lblBase.Top, dblMyPercent * lblBase.Width, lblBase.Height
    lblValue.Move lblBase.Left, (lblBase.Height - lblValue.Height) / 2 + 20, lblBase.Width
End Sub
'set the value
Public Property Let Value(ByVal Value As Long)
    If Value < Min Then
        lngMyValue = Min
    ElseIf Value > Max Then
        lngMyValue = Max
    Else
        lngMyValue = Value
    End If
    dblMyPercent = lngMyValue / (Max - Min)
    lblTop.Width = dblMyPercent * lblBase.Width
    Select Case intMsgStyle
        Case eOnlyValueInt: strMsg = Int(dblMyPercent * 100)
        Case eOnlyValueDouble: strMsg = CStr(dblMyPercent * 100)
        Case ePercentInt: strMsg = Int(dblMyPercent * 100) & "/100"
        Case ePercentDouble: strMsg = CStr(dblMyPercent * 100) & "/100"
    End Select
    lblValue.Caption = strMsg
End Property
'
Public Property Get Value() As Long
    Value = lngMyValue
End Property
'set the percent
Public Property Let Percent(ByVal Percent As Double)
    If Percent < 0 Then
        dblMyPercent = 0
    ElseIf Percent > 1 Then
        dblMyPercent = 1
    Else
        dblMyPercent = Percent
    End If
    lngMyValue = dblMyPercent * (Max - Min)
    lblTop.Width = dblMyPercent * lblBase.Width
    Select Case intMsgStyle
        Case eOnlyValueInt: strMsg = Int(dblMyPercent * 100)
        Case eOnlyValueDouble: strMsg = CStr(dblMyPercent * 100)
        Case ePercentInt: strMsg = Int(dblMyPercent * 100) & "/100"
        Case ePercentDouble: strMsg = CStr(dblMyPercent * 100) & "/100"
    End Select
    lblValue.Caption = strMsg
End Property
Public Property Get Percent() As Double
    Percent = dblMyPercent
End Property
'is show msg
Public Property Let ShowMsg(ByVal ShowMsg As Boolean)
    isShowMsg = ShowMsg
    lblValue.Visible = isShowMsg
End Property
Public Property Get ShowMsg() As Boolean
    ShowMsg = isShowMsg
End Property
'msg style
Public Property Let MsgStyle(ByVal MsgStyle As FigureStyle)
    intMsgStyle = MsgStyle
    Select Case intMsgStyle
        Case eOnlyValueInt: strMsg = Int(dblMyPercent * 100)
        Case eOnlyValueDouble: strMsg = CStr(dblMyPercent * 100)
        Case ePercentInt: strMsg = Int(dblMyPercent * 100) & "/100"
        Case ePercentDouble: strMsg = CStr(dblMyPercent * 100) & "/100"
    End Select
    lblValue.Caption = strMsg
End Property
Public Property Get MsgStyle() As FigureStyle
    MsgStyle = intMsgStyle
End Property

以下为运行状态:

image.png

image.png

整个工程下载:GitHub - sysdzw/vbprocessbar: vb进度条控件

目录
相关文章
|
5月前
|
数据安全/隐私保护 容器
[Qt5&控件] 控件stackedWidget、lineEdit等的用法
[Qt5&控件] 控件stackedWidget、lineEdit等的用法
73 0
[Qt5&控件] 控件stackedWidget、lineEdit等的用法
零基础VB教程063期:如何用代码直接创建控件?从此不必拖控件了
零基础VB教程063期:如何用代码直接创建控件?从此不必拖控件了
294 0
|
Shell 程序员
Qt编写自定义控件65-光晕日历
一、前言 操作系统的更新迭代速度非常快,基本上三五年就有个新版本出来,WIN10操作系统还是一个比较成功的系统,据说现在市场份额越来越大,XP的份额已经很小,WIN7的份额也在逐步减少,在最新的WIN10系统中,右下角有个日历控件,还是自带农历的,这个本地化做的蛮好的,鼠标移上去还有光晕背景效果,体验非常赏心悦目,于是打算用Qt也高仿一个。
1485 0
|
XML 程序员 C语言
Qt编写控件属性设计器2-拖曳控件
一、前言 上一篇文章把插件加载好了,并且把插件中的所有控件都显示到了列表框中,这次要做的就是实现拖曳控件的功能,用户选择一个控件拖曳到画布上,松开,在松开位置处自动实例化该控件,这个需要用到dropEvent和dragEnterEvent事件,重新实现这两个事件,对拖曳的对象进行过滤并调用函数实例化该控件,在实例化该控件的同时实例化控件跟随控件以便拉伸调整大小和位置。
910 0
|
程序员 开发工具 C语言
Qt编写自定义控件42-开关按钮
一、前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ、360卫士、金山毒霸等,都有很多开关控制一些操作,在Qt widgets应用项目上,在项目中应用些类似的开关按钮,估计也会为项目增添不少新鲜感。
1412 0
|
程序员 C语言
Qt编写自定义控件48-面板窗体控件
一、前言 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也在很多系统中用到,比如温湿度设备面板,有几百个温湿度设备,需要一个容器放置,自动产生滚动条,可以设置面板的固定宽高或者自适应拉伸,其实就是放了表格布局+弹簧来设置。
1264 0
|
开发工具 C语言
Qt编写自定义控件32-等待进度条控件
一、前言 在各种各样的执行任务界面,有时候需要比较多的时间,需要给出一个直观的等待进度条表示当前正在执行的进度,而不至于懵逼在那里,用户不会觉得程序死了还是干嘛了。等待进度条有好几种办法,比如直接叫美工做好gif图,用QLabel配合QMovie来加载gif图片,这种方法最简单最省事,或者做好多张进度条的图片,采用定时贴图来实现,这些办法省事归省事,就是还不够灵活,写死了,比如有时候需要更换颜色或者换一种展示形式,又需要美工重新做图了,折磨的要死。
1920 0
|
开发工具 C语言
Qt编写自定义控件40-导航进度条
一、前言 导航进度条控件,其实就是支付宝、京东、淘宝订单页面的进度控件,提示当前第几步,总共有几步,然后当前进度特殊颜色显示,每个进度带有时间文字等信息,本控件特意将三种样式风格都集成进去了,京东订单流程样式/淘宝订单流程样式/支付宝订单流程样式,可以动态切换样式,控件自适应任何分辨率,可以自由调整自身大小以适应分辨率的改变,总步骤以及当前步骤都是自动计算占用区域比例,直接提供接口设置步骤对应的文字信息等,接口非常友好。
1318 0
|
开发工具 C语言
Qt编写自定义控件23-广告轮播控件
一、前言 广告轮播这个控件做的比较早,是很早以前定制一个电信客户端时候用到的,该客户端需要在首页展示轮播预先设定好的图片,图片的路径可以自由设定,然后轮播的间隔速度可以自由控制,同时该控件还需要提供两种指示器的风格,一种是迷你型的样式,一种是数字型的样式。
846 0
|
开发工具 C语言
Qt编写自定义控件17-按钮进度条
一、前言 按钮进度条,顾名思义,表面上长得像一个按钮,单击以后切换成进度条指示按钮单击动作执行的进度,主要用在一些需要直接在按钮执行动作显示对应进度的场景,在很多网页中经常看到这种效果,这个效果有个优点就是直接在原地显示进度条,不占用其他位置,然后提供各种颜色可以设置。
1247 0