Topic: печать

можно-ли распечатать таблицу не пребигая к мастеру отчетов?

Re: печать

У компонента TableGrid можно вызвать метод ExportToExcel, который в свою очередь возвращает ссылку на OLE объект, т.о. можно распечатать через Excel вызвав метод PrintOut


procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
    ExcelApp, Sheet: Variant;
begin
    ExcelApp := Form1.TableGrid2.ExportToExcel;
    ExcelApp.Visible := False;

    // необязательные настройки
    ExcelApp.Worksheets[1].PageSetup.LeftFooter := 'Левый нижний колонтитул';
    ExcelApp.Worksheets[1].PageSetup.LeftHeader := 'Левый верхний колонтитул';
    ExcelApp.Worksheets[1].PageSetup.CenterFooter := 'Центральный нижний колонтитул';
    ExcelApp.Worksheets[1].PageSetup.CenterHeader := 'Центральный верхний колонтитул';
    ExcelApp.Worksheets[1].PageSetup.RightFooter := 'Правый нижний колонтитул';
    ExcelApp.Worksheets[1].PageSetup.RightHeader := 'Правый верхний колонтитул';
     
    ExcelApp.Worksheets[1].PageSetup.Draft := True; // Для черновой печати
    ExcelApp.Worksheets[1].PageSetup.BlackAndWhite := True;  // Для чёрно-белой печати
    ExcelApp.Worksheets[1].PageSetup.PrintGridlines := True; // При печати будет видна сетка
    ExcelApp.Worksheets[1].PageSetup.PrintHeadings := True;  // При печати будут печататься названия столбцов и номера строк
    ExcelApp.Worksheets[1].PageSetup.FirstPageNumber := 5;   // Начать нумерацию страниц с пятой
    ExcelApp.Worksheets[1].PageSetup.Orientation := 1;  // Ориентация бумаги: 1=Книжная, 2=Альбомная
    ExcelApp.Worksheets[1].PageSetup.PaperSize := 9; // Указать размер бумаги. 8=А3, 9=А4, 11=А5

    ExcelApp.Worksheets[1].PrintOut;
    ExcelApp.DisplayAlerts := False;
    ExcelApp.Quit;
end;

только есть одна странность, процесс Excel будет висеть в памяти до тех пор, пока ваша программа не будет закрыта.

Dmitry.