private void btnPreviewSample_Click(object sender, EventArgs e) { C1.C1Preview.C1PrintDocument doc = null; if (_selectedWrapper != null) { doc = _selectedWrapper.MakeDoc(_printInfo, printer_LongOperation); if (doc == null) { C1FlexGrid flex = _selectedWrapper.Flex; if (flex != null) { C1.Win.C1FlexGrid.C1FlexGridPrinter printer = new C1.Win.C1FlexGrid.C1FlexGridPrinter(flex); printer.LongOperation += new C1.C1Preview.LongOperationEventHandler(printer_LongOperation); doc = new C1.C1Preview.C1PrintDocument(); printer.PrintInfo = _printInfo; C1.C1Preview.RenderObject gridRO = printer.MakeGridTable(doc); // if flex grid borders are not printed, provide our own: if (!_printInfo.PrintBorders && chkOverrideBorders.Checked) { gridRO.Style.GridLines.All = new C1.C1Preview.LineDef("0.5pt", Color.LightGray); } doc.Body.Children.Add(gridRO); doc.PageLayout.PageHeader = printer.MakePageHeader(doc); doc.PageLayout.PageFooter = printer.MakePageFooter(doc); } } } if (doc != null) { doc.PageLayout.PageSettings.Landscape = chkLandscape.Checked; C1.Win.C1Preview.C1PrintPreviewDialog pview = new C1.Win.C1Preview.C1PrintPreviewDialog(); // Assign document after showing the dialog - this delays generation // and improves user experience for long documents: // pview.Document = doc; pview.Shown += (o, ev) => { pview.Document = doc; }; pview.ShowDialog(); progressBar1.Value = 0; label2.Text = string.Format((string)label2.Tag, 0); } else { MessageBox.Show("Could not load the selected sample."); } }
// we must provide a MakeDoc implementation because // square brackets used in this sample grid's texts // are interpreted as expression parentheses otherwise. public C1.C1Preview.C1PrintDocument MakeDoc(C1FlexGridPrintInfo printInfo, C1.C1Preview.LongOperationEventHandler longOperation) { bool customBorders = _flex.DrawMode == DrawModeEnum.OwnerDraw; C1.C1Preview.C1PrintDocument doc = new C1.C1Preview.C1PrintDocument(); doc.TagOpenParen = "@@@["; doc.TagCloseParen = "@@@]"; C1.Win.C1FlexGrid.C1FlexGridPrinter printer = new C1.Win.C1FlexGrid.C1FlexGridPrinter(_flex); printer.LongOperation += longOperation; printer.PrintInfo = printInfo; // the best way to draw custom borders around the resulting table's cells is // to do it explicitly against the C1PrintDocument object model, hence this: printer.PrintInfo.PrintBorders = !customBorders; C1.C1Preview.RenderTable rtbl = printer.MakeGridTable(doc); if (customBorders) { // to draw custom borders, change them on the table returned: C1.C1Preview.LineDef lineBlack = new C1.C1Preview.LineDef("1pt", Color.Black); C1.C1Preview.LineDef lineGray = new C1.C1Preview.LineDef("1pt", Color.LightGray); C1.C1Preview.LineDef lineGreen = new C1.C1Preview.LineDef("2pt", Color.Green); // rtbl.Style.GridLines.Left = lineBlack; rtbl.Style.GridLines.Top = lineBlack; rtbl.Style.GridLines.Right = lineBlack; rtbl.Style.GridLines.Bottom = lineBlack; rtbl.Style.GridLines.Vert = lineGray; rtbl.Style.GridLines.Horz = lineGray; // "company" cell: rtbl.Cells[0, 1].Style.Borders.All = lineGreen; // "sales" group: rtbl.UserCellGroups.Add(new C1.C1Preview.UserCellGroup(new Rectangle(2, 0, 4, 2))); rtbl.UserCellGroups[0].Style.Borders.All = lineGreen; // "purchases" group: rtbl.UserCellGroups.Add(new C1.C1Preview.UserCellGroup(new Rectangle(6, 0, 4, 2))); rtbl.UserCellGroups[1].Style.Borders.All = lineGreen; } doc.Body.Children.Add(rtbl); doc.PageLayout.PageHeader = printer.MakePageHeader(doc); doc.PageLayout.PageFooter = printer.MakePageFooter(doc); return(doc); }
public C1.C1Preview.C1PrintDocument MakeDoc(C1.Win.C1FlexGrid.C1FlexGridPrintInfo printInfo) { C1FlexGrid flex = _tab.SelectedTab.Controls[0] as C1FlexGrid; if (flex == null) { return(null); } C1.Win.C1FlexGrid.C1FlexGridPrinter printer = new C1.Win.C1FlexGrid.C1FlexGridPrinter(flex); C1.C1Preview.C1PrintDocument doc = new C1.C1Preview.C1PrintDocument(); printer.PrintInfo = printInfo; C1.C1Preview.RenderObject gridRO = printer.MakeGridTable(doc); // if flex grid borders are not printed, provide our own: if (!printInfo.PrintBorders) { gridRO.Style.GridLines.All = new C1.C1Preview.LineDef("0.5pt", Color.LightGray); } doc.Body.Children.Add(gridRO); doc.PageLayout.PageHeader = printer.MakePageHeader(doc); doc.PageLayout.PageFooter = printer.MakePageFooter(doc); return(doc); }