List 7-174 FormPrintPreviewフォームのDrawFrameプロシージャ


  1: Private Sub DrawFrame(objPic As Object, _
                           objFrame As Frame, _
                           upMargin As Long, _
                           leftMargin As Long, _
                           downMargin As Long, _
                           rightMargin As Long, _
                           drawFlag As Boolean)
  2:     ' 指定されたフレームに置かれているラベルとテキストボックスを印刷する
  3:     ' 【引数】
  4:     '   objPic = 描画対象となるオブジェクト(ピクチャボックスかPrinterオブジェクトのいずれか)
  5:     '   objFrame = 描画したいラベルやテキストボックスを含むFrameオブジェクト
  6:     '   leftMargin = 左余白
  7:     '   rightMargin = 右余白
  8:     '   座標単位はすべてTwips単位になっていると仮定する
  9:     ' 【戻り値】
 10:     '   なし
 11:     Dim objChild As Object
 12:     Dim sc As Long, dv As Long
 13:     
 14:     sc = objPic.Width - (leftMargin + rightMargin)
 15:     dv = objFrame.Width
 16:     
 17:     ' フレームに含まれているコントロールの列挙
 18:     For Each objChild In objFrame.Parent
 19:         If objChild.Container Is objFrame Then
 20:             If TypeName(objChild) = "Label" Then
 21:                 ' ラベルである
 22:                 objPic.Font.Name = objChild.Font.Name
 23:                 objPic.Font.Bold = objChild.Font.Bold
 24:                 objPic.Font.Charset = objChild.Font.Charset
 25:                 objPic.Font.Italic = objChild.Font.Italic
 26:                 objPic.Font.Size = objChild.Font.Size
 27:                 objPic.Font.Strikethrough = objChild.Font.Strikethrough
 28:                 objPic.Font.Underline = objChild.Font.Underline
 29:                 
 30:                 objPic.CurrentX = (objChild.Left + leftMargin) * sc / dv
 31:                 objPic.CurrentY = (objChild.Top + upMargin) * sc / dv
 32:                 myPrint objPic, objChild.Caption, drawFlag
 33:             End If
 34:             If TypeName(objChild) = "TextBox" Then
 35:                 ' テキストボックスである
 36:                 objPic.Font.Name = objChild.Font.Name
 37:                 objPic.Font.Bold = objChild.Font.Bold
 38:                 objPic.Font.Charset = objChild.Font.Charset
 39:                 objPic.Font.Italic = objChild.Font.Italic
 40:                 objPic.Font.Size = objChild.Font.Size
 41:                 objPic.Font.Strikethrough = objChild.Font.Strikethrough
 42:                 objPic.Font.Underline = objChild.Font.Underline
 43:                 
 44:                 objPic.CurrentX = (objChild.Left + leftMargin) * sc / dv
 45:                 objPic.CurrentY = (objChild.Top + upMargin) * sc / dv
 46:                 DrawBox objPic, objChild.Text, objChild.Width, objChild.Alignment,drawFlag
 47:             End If
 48:             If TypeName(objChild) = "Line" Then
 49:                 ' ラインである
 50:                 With objChild
 51:                     myLine objPic, (.x1 + leftMargin) * sc / dv, (.y1 + upMargin) * sc / dv, _
                                        (.x2 + leftMargin) * sc / dv, (.y2 + upMargin) * sc / dv, drawFlag
 52:                 End With
 53:             End If
 54:         End If
 55:     Next
 56:     
 57:     objPic.CurrentY = objFrame.Height + upMargin
 58:     
 59: End Sub