Доброе утро! Пытаюсь установить область печати для PrintInfo методом SetAreaRect и что-то странное творится. Delphi XE6 , Zulu 8.0.0.6912u
P := CoPrintInfo.Create; rect := CoZrectangle.Create();
// беру область у нужного слоя (слой активный, если что) rect := Layer.GetBoundsRectangle;
// устанавливаю область печати по этому слою P.SetAreaRect(rect.Xmin,rect.Ymin,rect.Xmax,rect.Ymax);
// устанавливаю опции печати (ePrintInfoConstants) P.Options := ePrintDrawFrame + ePrintExplicitRect;
в результате при печати вижу только рамку, остальное поле пустое если к опциям добавлю ePrintLayerExtents и установлю P.HorzPages и P.VertPages, то наблюдаю на печати целиком слой и игнорирование SetAreaRect.
Игра с набором опций не дала никакого понимания как это все работает. Поясните пожалуйста как соотносится работа SetAreaRect с набором опций, чтобы получить на печать определенную область карты.
Тогда присоветуйте еще как вывести на печать номер листа/страницы при печати карт. Ранее в форуме мелькало пожелание колонтитулов с выводимой в него переменной Page и прочих, я так понимаю по аналогии с Internet Explorer.
Хотелось бы достучаться до колонтитулов программно, либо, если их можно настроить в макете печати, то программно выбрать нужный макет и вывести его на печать.
Vic написал: Поперечная Меркатора (Гаусса-Крюгера (Пулково 1942), Зона 6) И на какую проекцию мне переехать в таком случае?
Скачайте обновление. Добавили методы работы с областью печати с учетом разных проекций. Пример Вашего сценария теперь звучит так:
Код
' ActiveX enumeration values definitions start (do not change!)
Const ePrintFitToPage = 2
Const ePrintExplicitRect = 64
' ActiveX enumeration values definitions end
Sub PrintTest
Set doc = zulu.ActiveMapDoc
Set P = CreateObject("ZuluLib.PrintInfo")
'Получаем габариты слоя в проекции карты
Set rect = doc.Layers.Active.GetBoundsCRSRectangle(doc.GetCRS)
'Задаем область печати, с указанием, к какой проекции относится этот прямоугольник
P.SetAreaRectangle doc.GetCRS, rect
'Печать на одну страницу заданной области
P.Options = ePrintFitToPage + ePrintExplicitRect
doc.PrintOut P
End Sub