/// <summary> /// Handles the PrintRequested event; we handle this so that form scripts are able /// to request prints. /// </summary> private void mfc_PrintRequested(object sender, MiCo.MiForms.MiFormsComponent.PrintRequestedEventArgs e) { _bPagesPrinted = false; if (e.Form == null) { return; } if (e.Page < 1 || e.Page > e.Form.Form.Pages.Count) { return; } // we'll override the default render type so that the script author can // specify the desired render type _bOverrideRenderType = true; _xRenderType = e.RenderType; MiCo.MiForms.LoadedForm xlform = miFormsComponent1.ActiveForm; // fire off the print job _printDoc.DocumentName = xlform.Form.Name + " (" + xlform.Form.GetSessionDescriptor() + ")"; _printDoc.PrintController = new System.Drawing.Printing.StandardPrintController(); _printDoc.PrinterSettings.FromPage = e.Page; _printDoc.PrinterSettings.ToPage = e.Page; _nPageToPrint = _printDoc.PrinterSettings.FromPage; _printDoc.Print(); e.Success = true; }
private void mnuItmPrint_Click(object sender, System.EventArgs e) { _bPagesPrinted = false; _bPrintPreview = false; MiCo.MiForms.LoadedForm xlform = miFormsComponent1.ActiveForm; _printDoc.DocumentName = xlform.Form.Name + " (" + xlform.Form.GetSessionDescriptor() + ")"; _printDialog.AllowSomePages = true; _printDialog.PrintToFile = true; _printDialog.PrinterSettings.FromPage = 1; _printDialog.PrinterSettings.ToPage = xlform.Form.Pages.Count; _printDialog.PrintToFile = false; try { if (_printDialog.ShowDialog() == DialogResult.OK) { MiCo.MiForms.RenderType xType = MiCo.MiForms.RenderType.FieldValues; // call SignalFormPrint() in case the client script wants to cancel the // print if (miFormsComponent1.SignalFormPrint(xlform, _printDialog.PrinterSettings.FromPage, _printDialog.PrinterSettings.ToPage, xType)) { _nPageToPrint = _printDoc.PrinterSettings.FromPage; _printDoc.PrintController = new System.Drawing.Printing.StandardPrintController(); _printDoc.Print(); } } } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(this, String.Format("Print failed: {0}", ex.Message)); } }
private void enableToolbarButtons() { MiCo.MiForms.LoadedForm xlf = miFormsComponent1.ActiveForm; if (xlf == null) { mnuItmPrint.Enabled = false; mnuItmPrintPreview.Enabled = false; return; } mnuItmPrint.Enabled = true; mnuItmPrintPreview.Enabled = true; _btnPrevPage.Enabled = (xlf.CurrentPage > 1); _btnNextPage.Enabled = (xlf.CurrentPage < xlf.Form.Pages.Count); }
private void mnuItmPrintPreview_Click(object sender, System.EventArgs e) { MiCo.MiForms.LoadedForm xlform = miFormsComponent1.ActiveForm; _bPrintPreview = true; _nPageToPrint = 1; _printDoc.DocumentName = xlform.Form.Name + " (" + xlform.Form.GetSessionDescriptor() + ")"; try { // call SignalFormPrint() so the form script has the chance to cancel the print if (miFormsComponent1.SignalFormPrint(xlform, 1, xlform.Form.Pages.Count, MiCo.MiForms.RenderType.FieldValues)) { _printPreviewDialog.ShowDialog(); } } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(this, String.Format("Print preview failure: {0}", ex.Message)); } }
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e) { MiCo.MiForms.LoadedForm xlf = miFormsComponent1.ActiveForm; if (e.Button == this._btnPrevPage) { if (xlf.CurrentPage > 1) { miFormsComponent1.GotoPage(xlf, xlf.CurrentPage - 1); } } else if (e.Button == this._btnNextPage) { if (xlf.CurrentPage < xlf.Form.Pages.Count) { miFormsComponent1.GotoPage(xlf, xlf.CurrentPage + 1); } } enableToolbarButtons(); }
/// <summary> /// Standard QueryPageSettings event handler /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void printDocument_QueryPageSettings(object sender, System.Drawing.Printing.QueryPageSettingsEventArgs e) { MiCo.MiForms.LoadedForm xlform = miFormsComponent1.ActiveForm; // call SignalPagePrint in the component to see if the client's script // code wants to cancel the print... while ((!miFormsComponent1.SignalPagePrint(xlform, _nPageToPrint, MiCo.MiForms.RenderType.FieldValues) && _nPageToPrint <= xlform.Form.Pages.Count)) { _nPageToPrint++; } bool bTooBig = false; if (_nPageToPrint > xlform.Form.Pages.Count) { bTooBig = true; } if (!bTooBig) { _bPagesPrinted = true; MiCo.MiForms.FormPage xFormPage = (MiCo.MiForms.FormPage)xlform.Form.Pages[_nPageToPrint - 1]; if (xFormPage.Size.Width > xFormPage.Size.Height) { e.PageSettings.Landscape = true; } else { e.PageSettings.Landscape = false; } } else { if (!_bPagesPrinted) { e.Cancel = true; } } }
/// <summary> /// Standard PrintPage event handler /// </summary> private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { System.Drawing.Graphics xGraphics; xGraphics = e.Graphics; System.Drawing.Bitmap xBitmap; // create a render engine that we'll use to render the given page MiCo.MiForms.RenderEngine xRender = new MiCo.MiForms.RenderEngine(); if (_bOverrideRenderType) { // this is set via the script call RequestPrint(); xRender.Type = _xRenderType; _bOverrideRenderType = false; } else { // here you could use a user preference if you wanted; we just hard-code // it to render field values xRender.Type = MiCo.MiForms.RenderType.FieldValues; } MiCo.MiForms.LoadedForm xlform = miFormsComponent1.ActiveForm; MiCo.MiForms.FormPage xFormPage = (MiCo.MiForms.FormPage)xlform.Form.Pages[_nPageToPrint - 1]; double nMaxResolution = 0; double nResolution = 0; foreach (MiCo.MiForms.BackgroundImage xBackground in xFormPage.BackgroundImages) { if (xBackground.Resolution > nMaxResolution) { nMaxResolution = xBackground.Resolution; } } nMaxResolution *= 2.54; if (xGraphics.DpiX < nMaxResolution) { nResolution = xGraphics.DpiX; } else { nResolution = nMaxResolution; } nResolution /= 2.54; xBitmap = xRender.RenderPage(xFormPage, nResolution); xGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; xGraphics.DrawImage(xBitmap, 0, 0); if (_bPrintPreview) { if (_nPageToPrint < xlform.Form.Pages.Count) { _nPageToPrint++; e.HasMorePages = true; } else { e.HasMorePages = false; _nPageToPrint = 1; } } else if (_nPageToPrint < _printDoc.PrinterSettings.ToPage) { _nPageToPrint++; e.HasMorePages = true; } else { e.HasMorePages = false; _nPageToPrint = 1; } }