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