首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 软件频道 > 设计在线 > 网页UI设计 >改变思路,从另一个角度使用多态

改变思路,从另一个角度使用多态

2000-11-01 00:00作者:王文涛出处:yesky责任编辑:



第二步、添加两个类,实现该接口,并分别提供Printer对象和Picturebox控件相应的功能。

  下面仅以在Picturebox控件上实现该接口的类的部分代码作为示例:还需要添加一个实现预览的窗体(frmPreView),在上面添加一个Picturebox控件(pic)

类名:MyPic
Implements IMyPrinter
Dim frm As frmPreview
Private pic As PictureBox

Private Sub Class_Initialize()
 Set frm = New frmPreview
 Load frm
 Set pic = frm.pic
End Sub

Private Sub Class_Terminate()
 Set pic = Nothing
 Unload frm
 Set frm = Nothing
End Sub

Private Property Let IMyPrinter_CurrentX(ByVal RHS As Single)
 pic.CurrentX = RHS
End Property

Private Property Get IMyPrinter_CurrentX() As Single
 IMyPrinter_CurrentX = pic.CurrentX
End Property

Private Sub IMyPrinter_EndDoc()
 frm.Show vbModal
End Sub

Private Property Get IMyPrinter_Font() As StdFont
Dim F As StdFont
 Set F = New StdFont
 With pic.Font
  F.Size = .Size
  F.Name = .Name
  F.Size = .Size
  F.Bold = .Bold
  F.Italic = .Italic
  F.Strikethrough = .Strikethrough
  F.Underline = .Underline
  F.Weight = .Weight
 End With
Set IMyPrinter_Font = F
End Property

Private Property Set IMyPrinter_Font(ByVal RHS As StdFont)
 With pic.Font
  .Size = RHS.Size
  .Name = RHS.Name
  .Size = RHS.Size
  .Bold = RHS.Bold
  .Italic = RHS.Italic
  .Strikethrough = RHS.Strikethrough
  .Underline = RHS.Underline
  .Weight = RHS.Weight
 End With
End Property

Private Sub IMyPrinter_PLine(ByVal X1 As Single, ByVal Y1 As Single, ByVal X2 As Single, ByVal Y2 As Single, Optional ByVal HasB As Boolean = False, Optional ByVal HasF As Boolean = False)
 If HasF Then "本例中没有提供颜色选项
  pic.Line (X1, Y1)-(X2, Y2), , BF
 ElseIf HasB Then
  pic.Line (X1, Y1)-(X2, Y2), , B
 Else
  pic.Line (X1, Y1)-(X2, Y2)
 End If
End Sub

Private Sub IMyPrinter_PPrint(Optional ByVal F0D1H2 As Integer = 0, Optional PrnInfo As Variant)
 Select Case F0D1H2 ’该参数为0:跟分号;1:跟逗号;2:无符号
  Case 0
   If Not IsMissing(PrnInfo) Then
    pic.Print PrnInfo;
   End If
  Case 1
   If Not IsMissing(PrnInfo) Then
    pic.Print PrnInfo,
   End If
  Case 2
   If Not IsMissing(PrnInfo) Then
    pic.Print PrnInfo
   Else
    pic.Print
   End If
 End Select
End Sub

Private Function IMyPrinter_ScaleX(ByVal Width As Single, Optional ByVal FromScale As Variant, Optional ByVal ToScale As Variant) As Single
 IMyPrinter_ScaleX = pic.ScaleX(Width, FromScale, ToScale)
End Function

Private Function IMyPrinter_TextWidth(ByVal Str As String) As Single
 IMyPrinter_TextWidth = pic.TextWidth(Str)
End Function

Private Property Get IMyPrinter_Width() As Long
 IMyPrinter_Width = pic.Width
End Property

Private Property Let IMyPrinter_Width(ByVal RHS As Long)
 pic.Width = RHS
End Property
共4页。 9 1 2 3 4 :

关注此文的读者还看过:

返回软件频道首页

软件频道最新更新

热点推荐

IT嘉年华

编辑推荐

热门
推荐

网友关注

软件
资料
游戏

文章排行

本周
本月
最新更新
天极服务| 关于我们| About us| 网站律师| 电子杂志| RSS订阅| 友情合作| 加入我们| 网站地图| MSN/QQ上看天极
TMG
Copyright (C) 1999-2009 Yesky.com, All Rights Reserved
版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868 在线提交意见反馈
渝ICP证B2-20030003号  通用网址:天极网
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众
经营性网站备案信息 网警备案 中国网站排名