分享
 
 
 

自制控件的属性保存(WriteProperties、ReadProperties)

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

一年前,VB中在编制OCX控件时的一点心得,发出来一起共享。

控件的属性在运行与设计模式切换时,属性值为丢失,可以要用WriteProperties来保存属性值,再用ReadProperties读取,具体情况如下:

1、在设计模式往运行模式切换时,先用WriteProperties保存属性值,由于在运行时要使用该值,所以用ReadProperties读出。

2、在结速运行状态切换到设计模式时,不需要保存控件在运行状态的值,所以不调用WriteProperties保存,而直接读取程序员在设计模式下的值。

3、WriteProperties及ReadProperties事件只在设计调试中有效,编译为EXE文件后不再有效。此两事件及PropBag对象只是为了方便设计而存在。

例程:

'本控件是text与updown控件的结合,使用updown改变数据值

'也可手工改变text值

'

'

Dim m_UpMax As Long

Dim m_DownMin As Long

Dim m_value As Long

Dim m_Enabled As Boolean

Private Sub Text1_Change()

On Error GoTo Err

Dim txti As Long

'txti用来零时保存text1值

txti = CLng(text1.Text)

If txti > UpDown1.Max Then

text1.Text = UpDown1.Max

End If

If txti < UpDown1.Min Then

text1.Text = UpDown1.Min

End If

txti = CLng(text1.Text)

UpDown1.Value = txti

Exit Sub

Err:

text1.Text = UpDown1.Value

End Sub

Private Sub UpDown1_Change()

text1.Text = UpDown1.Value

End Sub

Private Sub UserControl_Resize()

On Error Resume Next

Dim t As Long

Dim b As Long

t = UserControl.Width - UpDown1.Width

b = UserControl.Height - 1

text1.Width = t

text1.Height = b

text1.Move 0, 0

UpDown1.Move t, 0

UpDown1.Height = b

End Sub

Public Property Get UpMax() As Long

UpMax = m_UpMax

End Property

Public Property Let UpMax(ByVal vNewValue As Long)

m_UpMax = vNewValue

UpDown1.Max = m_UpMax

PropertyChanged "UpMax"

End Property

Public Property Get DownMin() As Long

DownMin = m_DownMin

End Property

Public Property Let DownMin(ByVal vNewValue As Long)

m_DownMin = vNewValue

UpDown1.Min = vNewValue

PropertyChanged "DownMin"

End Property

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("UpMax", m_UpMax, 0)

Call PropBag.WriteProperty("DownMin", m_DownMin, 0)

Call PropBag.WriteProperty("Value", CLng(text1.Text), 0)

Call PropBag.WriteProperty("Enabled", m_Enabled, True)

End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

'使用PropBag.ReadProperty时一定要有默认值,否则如果没有在设计时改变过属性值(

'即没有使用writeProperty保存属性值)就无法读取,会产生“运行时错误”

m_UpMax = PropBag.ReadProperty("UpMax", 0)

m_DownMin = PropBag.ReadProperty("DownMin", 0)

m_value = PropBag.ReadProperty("Value", 0)

m_Enabled = PropBag.ReadProperty("Enabled", True)

UpDown1.Max = m_UpMax

UpDown1.Min = m_DownMin

UpDown1.Value = m_value

UpDown1.Enabled = m_Enabled

text1.Text = m_value

text1.Enabled = m_Enabled

End Sub

Public Property Get Value() As Long

Attribute Value.VB_UserMemId = 0

m_value = CLng(text1.Text)

Value = m_value

End Property

Public Property Let Value(ByVal vNewValue As Long)

If vNewValue > m_UpMax Then

m_value = m_UpMax

ElseIf vNewValue < m_DownMin Then

m_value = m_DownMin

Else

m_value = vNewValue

End If

text1.Text = m_value

PropertyChanged "Value"

End Property

Public Property Get Enabled() As Boolean

Enabled = m_Enabled

End Property

Public Property Let Enabled(ByVal vNewValue As Boolean)

m_Enabled = vNewValue

UpDown1.Enabled = m_Enabled

text1.Enabled = m_Enabled

PropertyChanged "Enabled"

End Property

你也可以点击这里下载控件源程序

水平有限,欢迎交流 MSN:Equn_cn@hotmail.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有