Теперь создадим в нашем классе свойство PrinttableBounds, которое представляет собой коллекцию из 9 точек определяющих границы внутреннего поля страницы.
Данная коллекция представлена 4-мя элементами:
1. Подколлекция координат 3-х Верхних точек;
2. Подколлекция координат 3-х Центральных точек;
3. Подколлекция координат 3-х Нижних точек;
4. Элемент представляющий текстовую информацию о координатах всех точек
Public Property Get PrinttableBounds() As Collection
Dim TopBounds As Collection, lstXY As Collection, Info As String
Dim CenterBounds As Collection
Dim BottomBounds As Collection
Set PrinttableBounds = New Collection
Set TopBounds = New Collection
Set CenterBounds = New Collection
Set BottomBounds = New Collection
Set lstXY = New Collection
lstXY.Add Me.FormatValue(Me.LeftMargin), "X"
lstXY.Add Me.FormatValue(Me.TopMargin), "Y"
Info = Info & " Точка_1: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
TopBounds.Add lstXY, "Bounds_1"
Set lstXY = New Collection
lstXY.Add Me.FormatValue((Me.LeftMargin + Me.PrinttableWidth) / 2), "X"
lstXY.Add Me.FormatValue(Me.TopMargin), "Y"
Info = Info & " Точка_2: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
TopBounds.Add lstXY, "Bounds_2"
Set lstXY = New Collection
lstXY.Add Me.FormatValue(Me.LeftMargin + Me.PrinttableWidth), "X"
lstXY.Add Me.FormatValue(Me.TopMargin), "Y"
Info = Info & " Точка_3: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
TopBounds.Add lstXY, "Bounds_3"
Set lstXY = New Collection
lstXY.Add Me.FormatValue(Me.LeftMargin), "X"
lstXY.Add Me.FormatValue((Me.TopMargin + Me.PrinttableHeight) / 2), "Y"
Info = Info & " Точка_4: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
CenterBounds.Add lstXY, "Bounds_4"
Set lstXY = New Collection
lstXY.Add Me.FormatValue((Me.LeftMargin + Me.PrinttableWidth) / 2), "X"
lstXY.Add Me.FormatValue((Me.TopMargin + Me.PrinttableHeight) / 2), "Y"
Info = Info & " Точка_5: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
CenterBounds.Add lstXY, "Bounds_5"
Set lstXY = New Collection
lstXY.Add Me.FormatValue(Me.LeftMargin + Me.PrinttableWidth), "X"
lstXY.Add Me.FormatValue((Me.TopMargin + Me.PrinttableHeight) / 2), "Y"
Info = Info & " Точка_6: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
CenterBounds.Add lstXY, "Bounds_6"
Set lstXY = New Collection
lstXY.Add Me.FormatValue(Me.LeftMargin), "X"
lstXY.Add Me.FormatValue(Me.TopMargin + Me.PrinttableHeight), "Y"
Info = Info & " Точка_7: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
BottomBounds.Add lstXY, "Bounds_7"
Set lstXY = New Collection
lstXY.Add Me.FormatValue((Me.LeftMargin + Me.PrinttableWidth) / 2), "X"
lstXY.Add Me.FormatValue(Me.TopMargin + Me.PrinttableHeight), "Y"
Info = Info & " Точка_8: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
BottomBounds.Add lstXY, "Bounds_8"
Set lstXY = New Collection
lstXY.Add Me.FormatValue((Me.LeftMargin + Me.PrinttableWidth)), "X"
lstXY.Add Me.FormatValue(Me.TopMargin + Me.PrinttableHeight), "Y"
Info = Info & " Точка_9: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
BottomBounds.Add lstXY, "Bounds_9"
PrinttableBounds.Add TopBounds, "TopBounds"
PrinttableBounds.Add CenterBounds, "CenterBounds"
PrinttableBounds.Add BottomBounds, "BottomBounds"
Info = "Координаты точек внутреннего поля:" & Chr(13) & Info
PrinttableBounds.Add Info
End Property
Следующим шагом будет создание очень важного свойства PrinttableCenterBounds, которое представляет собой координату центральной точки внутреннего поля и составляет коллекцию из 2-х элементов:
1. Подколлекция координат центральной точки;
2. Элемент представляющий текстовую информацию о координатах центральной точки внутреннего поля.
Public Property Get PrinttableCenterBounds() As Collection
Dim lstXY As Collection, Info As String
Set PrinttableCenterBounds = New Collection
Set lstXY = New Collection
lstXY.Add Me.FormatValue((Me.LeftMargin + Me.PrinttableWidth) / 2), "X"
lstXY.Add Me.FormatValue((Me.TopMargin + Me.PrinttableHeight) / 2), "Y"
PrinttableCenterBounds.Add lstXY
Info = "Центр внутреннего поля:" & Chr(13)
Info = Info & " Точка_5: X = " & lstXY(1) & "; "
Info = Info & "Y = " & lstXY(2) & Chr(13)
PrinttableCenterBounds.Add Info
End Property
Важность этого свойства в том, что центральная точка страницы и центральная точка внутреннего поля совпадают только при одинаковых значениях всех полей страницы, а 95% случаев выравнивание объектов нужно именно относительно координат внутреннего поля.
Далее модернизируем уже созданное поле InfoText и проверяем правильность созданных нами свойств макросом Test_clsPage
Public Property Get InfoText() As String
InfoText = InfoText & "Ширина страницы = " & Me.PageWidth & Chr(13)
InfoText = InfoText & "Высота страницы = " & Me.PageHeight & Chr(13)
InfoText = InfoText & "Площадь страницы = " & Me.PageSpace & Chr(13)
InfoText = InfoText & "Левое поле страницы = " & Me.LeftMargin & Chr(13)
InfoText = InfoText & "Правое поле страницы = " & Me.RightMargin & Chr(13)
InfoText = InfoText & "Вернее поле страницы = " & Me.TopMargin & Chr(13)
InfoText = InfoText & "Нижнее поле страницы = " & Me.BottomMargin & Chr(13)
InfoText = InfoText & "Ширина внутреннего поля страницы = " & Me.PrinttableWidth & Chr(13)
InfoText = InfoText & "Высота внутреннего поля страницы = " & Me.PrinttableHeight & Chr(13)
InfoText = InfoText & "Площадь внутреннего поля страницы = " & Me.PrinttableSpace & Chr(13)
InfoText = InfoText & Me.PrinttableBounds(4)
InfoText = InfoText & Me.PrinttableCenterBounds(2)
End Property
Модернизированный файл прилагаю
Post's attachmentsBlog1.dot 92 Кб, 1 скачиваний с 2012-05-18
You don't have the permssions to download the attachments of this post.