一个用VB编写ActiveX自定义控件的例子进度条控.docx
- 文档编号:7297229
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:4
- 大小:15.28KB
一个用VB编写ActiveX自定义控件的例子进度条控.docx
《一个用VB编写ActiveX自定义控件的例子进度条控.docx》由会员分享,可在线阅读,更多相关《一个用VB编写ActiveX自定义控件的例子进度条控.docx(4页珍藏版)》请在冰豆网上搜索。
一个用VB编写ActiveX自定义控件的例子进度条控
个用VB编写ActiveX自定义控件的例子——进度条控
设计方法:
1.在UserControl中添加一个Label控件Label1,将它设为平面,用来做外框。
添加两个PictureBox控件PictureBox1
做为进度指示,PictureBox2控件做为控件背景。
2.加入以下代码
OptionExplicit
''定义私有变量用于存储属性值
PrivatemvarMaxAsLong
PrivatemvarMinAsLong
PrivatemvarValueAsLong
PrivateRateAsString
PrivateSubUserControl_Initialize()
''初始化
Picture2.BackColor=vbBlue
EndSub
PublicPropertyGetBackColor()AsOLE_COLOR
''读取BackColor属性
BackColor=Picture1.BackColor
EndProperty
PublicPropertyLetBackColor(ByValvNewValueAs
OLE_COLOR)
''设置BackColor属性
Picture1.BackColor=vNewValue
EndProperty
PrivateSubUserControl_InitProperties()
''初始化属性
Max=100
Min=0
Value=0
EndSub
PrivateSubUserControl_ReadProperties(PropBagAs
PropertyBag)
''读取从属性窗体中设置的属性值
mvarMax=PropBag.ReadProperty("Max",100)
mvarMin=PropBag.ReadProperty("Min",0)
''Value属性值这里未提供,主要是模仿VB自带的进度条控件
''mvarValue=PropBag.ReadProperty("Value",0)
EndSub
PrivateSubUserControl_WriteProperties(PropBagAs
PropertyBag)
''保存从属性窗体中设置的属性值
PropBag.WriteProperty"Max",mvarMax,100
PropBag.WriteProperty"Min",mvarMin,0
''PropBag.WriteProperty"Value",mvarValue,0
EndSub
PrivateSubUserControl_Resize()
''Resize事件
Label1.Move0,0,UserControl.Width/
Screen.TwipsPerPixelX,UserControl.Height/
Screen.TwipsPerPixelY
Picture1.Move1,1,UserControl.Width/
Screen.TwipsPerPixelX-2,UserControl.Height/
Screen.TwipsPerPixelY-2
Picture2.Move1,1,1,UserControl.Height/
Screen.TwipsPerPixelY-2
PublicPropertyGetMax()AsLong
''读取Max属性
Max=mvarMax
EndProperty
PublicPropertyLetMax(ByValvNewValueAsLong)
''设置Max属性
mvarMax=vNewValue
IfvNewValue<MinThenErr.Raise"1001",,"Max必须大于Min"
PublicPropertyGetMin()AsLong
''读取Min属性
Min=mvarMin
EndProperty
PublicPropertyLetMin(ByValvNewValueAsLong)
''设置Min属性
IfvNewValue>MaxThenErr.Raise"1000",,"Min必须小于Max"
mvarMin=vNewValue
PublicPropertyGetValue()AsLong
''读取Value属性
Value=mvarValue
EndProperty
PublicPropertyLetValue(ByValvNewValueAsLong)
''设置Value属性
''原理就是在两个PictureBox中以不同颜色打印百分比进
DimDXAsLong,DYAsLong
IfvNewValue>MaxThenErr.Raise"1002",,"Value不能大于Max"
mvarValue=vNewValue
Picture2.Width=Value/(Max-Min)*(UserControl.Width/Screen.TwipsPerPixelX-2)
Rate=Int(Value/(Max-Min)*100)&"%"
DX=(Picture1.Width-Picture1.TextWidth(Rate))/2
DY=(Picture1.Height-Picture1.TextHeight(Rate))/2
Picture1.ForeColor=vbBlack
Picture2.ForeColor=vbWhite
IfDX<Picture2.WidthThen
Picture2.Cls
Picture2.CurrentX=DX
Picture2.CurrentY=DY
Picture2.PrintRate
Else
Picture1.Cls
Picture1.CurrentX=DX
Picture1.CurrentY=DY
Picture1.PrintRate
EndIf
EndProperty
3.新建另一个测试工程,加入一个自己的进度条控件和个系统的进度条控件,加入以下代码:
OptionExplicit
PrivateSubCommand1_Click()
UnloadMe
EndSub
PrivateSubTimer1_Timer()
myProgressBar1.Value=myProgressBar1.Value+2
ProgressBar1.Value=ProgressBar1.Value+2
IfmyProgressBar1.Value=myProgressBar1.MaxThen
Timer1.Enabled=False
EndSub
OK.运行看看效果吧。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 VB 编写 ActiveX 自定义 控件 例子 进度条