Печать таблицы

Для печати таблицы предназначен интерфейс ITabSheetPrinter.

Приведен пример настройки параметров страницы и печати регламентного отчета с идентификатором «REPORT_TAB».

В результате выполнения примера будет напечатана первая страница отчета.

Пример Fore

Для выполнения примера добавьте ссылки на системные сборки: Drawing, Metabase, Report, Tab.

Sub TablePrint;
Var
    mb: IMetabase;
    Report: IPrxReport;
    Table: ITabSheet;
    SheetPrinter: ITabSheetPrinter;
    PageSettings: ITabPageSettings;
    pCount: Integer;
    Image: IGxImage;
    Graph: IGxGraphics;
    Rect: IGxRect;
    Color: IGxColor;
    Printer: IGxDocumentPrinter;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем регламентный отчет
    Report := mb.ItemById("REPORT_TAB").Bind As IPrxReport;
    // Получаем таблицу
    Table := (Report.ActiveSheet As IPrxTable).TabSheet;
    // Получаем параметры печати
    SheetPrinter := Table.CreatePrinter;
    // Задаем отступы для первой страницы
    SheetPrinter.FirstPageHeaderGap := 20;
    SheetPrinter.FirstPageFooterGap := 20;
    SheetPrinter.DifferentFirstPageGap := True;
    // Задаем отступы для четных страниц
    SheetPrinter.EvenHeaderGap := 10;
    SheetPrinter.EvenFooterGap := 10;
    SheetPrinter.DifferentEvenPageGap := True;
    // Получаем параметры страницы
    PageSettings := SheetPrinter.PageSettings;
    // Указываем, что печатаем таблицу с оформлением
    PageSettings.BlackAndWhite := False;
    // Указываем, что используем формат A4
    PageSettings.PaperFormat := GxPaperFormat.A4;
    // Выравниваем таблицу по горизонтали
    PageSettings.CenterHorizontal := True;
    // Выводим таблицу на печать
    pCount := SheetPrinter.GetPageCount;
    If pCount > 0 Then
        Image := GxBitmap.CreateNew(10001000, GxPixelFormat.Format64bppArgb);
        Graph := GxGraphicsClass.FromImage(Image);
        Rect := New GxRect.Create(0110001000);
        Color := New GxColor.CreateRGB(255255255);
        Graph.FillColorRectangle(Color, Rect);
        SheetPrinter.PrintPage(1, Graph);
        Printer := GxPrinters.DefaultPrinter As IGxDocumentPrinter;
        Printer.StartDocument("Table");
        Printer.NewPage;
        Printer.Graphics.DrawImageTransparent(Image, NullNullNull);
        Printer.EndDocument;
    End If;
End Sub TablePrint;

Пример Fore.NET

Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    Report: IPrxReport;
    Table: ITabSheet;
    SheetPrinter: ITabSheetPrinter;
    PageSettings: ITabPageSettings;
    pCount: Integer;
    Image: GxImage;
    Graph: GxGraphics;
    Rect: GxRectClass;
    Color: GxColorClass_2;
    Printer: IGxDocumentPrinter;
    Bitmap: GxBitmapClassClass;
    GraphicsClass: GxGraphicsClassClass;
    Printers: GxPrintersClassClass;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем регламентный отчет
    Report := mb.ItemById["REPORT_TAB"].Edit() As IPrxReport;
    // Получаем таблицу
    Table := (Report.ActiveSheet As IPrxTable).TabSheet;
    // Получаем параметры печати
    SheetPrinter := Table.CreatePrinter();
    // Задаем отступы для первой страницы
    SheetPrinter.FirstPageHeaderGap := 20;
    SheetPrinter.FirstPageFooterGap := 20;
    SheetPrinter.DifferentFirstPageGap := True;
    // Задаем отступы для четных страниц
    SheetPrinter.EvenHeaderGap := 10;
    SheetPrinter.EvenFooterGap := 10;
    SheetPrinter.DifferentEvenPageGap := True;
    // Получаем параметры страницы
    PageSettings := SheetPrinter.PageSettings;
    // Указываем, что печатаем таблицу с оформлением
    PageSettings.BlackAndWhite := False;
    // Указываем, что используем формат A4
    PageSettings.PaperFormat := GxPaperFormat.pfA4;
    // Выравниваем таблицу по горизонтали
    PageSettings.CenterHorizontal := True;
    // Выводим таблицу на печать
    pCount := SheetPrinter.GetPageCount();
    If pCount > 0 Then
        Bitmap := New GxBitmapClassClass.Create();
        Image := Bitmap.CreateNew(10001000, GxPixelFormat.pifFormat64bppArgb);
        GraphicsClass := New GxGraphicsClassClass.Create();
        Graph := GraphicsClass.FromImage(Image);
        Rect := New GxRectClass.Create();
        Rect.Create(0110001000);
        Color := New GxColorClass_2.Create();
        Color.CreateRGB(255255255);
        Graph.FillColorRectangle(Color, Rect);
        SheetPrinter.PrintPage(1, Graph);
        Printers := New GxPrintersClassClass.Create();
        Printer := Printers.DefaultPrinter As IGxDocumentPrinter;
        Printer.StartDocument("Table");
        Printer.NewPage();
        Printer.Graphics.DrawImageTransparent(Image, NullNullNull);
        Printer.EndDocument();
    End If;
End Sub;

См. также:

Общие принципы программирования с использованием сборки Tab