关于Font对象(二)

TrueZq 2002-11-21 08:10:53
看起来更简单的一个问题。
题:
设UFont1为一ActiveX 控件
其中字体属性接口为
Public Property Get Font() As StdFont
'......
End Property

Public Property Set Font(ByVal New_Font As StdFont)
'......
End Property
'////////////////////////

Private Sub Form_Load()
UFont1.Font.Size = 18
Command1.Font.Size = 12
End Sub

Private Sub Command1_Click()
Set UFont1.Font = Command1.Font
UFont1.Font.Size = 24
Command1.Caption = Command1.Font.Size
问:'此时Command1.Caption为多少?
End Sub

...全文
29 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-11-21
  • 打赏
  • 举报
回复
那就没变——12
TrueZq 2002-11-21
  • 打赏
  • 举报
回复
如果照上面的一般做法,答案就是24
但如果控件作者这样实现 Font属性的话
结果就不同了。

方法 B:
'Set m_stdFont = New_Font
'拷贝字体属性
With m_stdFont
.Bold = New_Font.Bold
.Italic = New_Font.Italic
.Name = New_Font.Name
.Size = New_Font.Size
'......
End With
TrueZq 2002-11-21
  • 打赏
  • 举报
回复
现在贴出 控件UFont的所有代码:
注意:UFont上面没有任何子控件,所有属性为默认值
Private WithEvents m_stdFont As StdFont

Private Sub m_stdFont_FontChanged(ByVal PropertyName As String)
Set UserControl.Font = m_stdFont
UserControl.Refresh
End Sub

Private Sub UserControl_Initialize()
Set m_stdFont = New StdFont
End Sub

Private Sub UserControl_Terminate()
Set m_stdFont = Nothing
End Sub

Private Sub UserControl_Paint()
Cls ' 清除原来显示的内容
Print m_stdFont.Name & m_stdFont.Size
End Sub

'为用户控件初始化属性
Private Sub UserControl_InitProperties()
Set m_stdFont = Ambient.Font
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Set m_stdFont = PropBag.ReadProperty("Font", Ambient.Font)
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("Font", m_stdFont, Ambient.Font)
End Sub

Private Sub UserControl_Show()
Set UserControl.Font = m_stdFont
End Sub


Public Property Get Font() As StdFont
Set Font = m_stdFont
End Property

Public Property Set Font(ByVal New_Font As StdFont)
方法 A:
Set m_stdFont = New_Font
PropertyChanged "Font"
End Property
zyl910 2002-11-21
  • 打赏
  • 举报
回复
24吧

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧