コード例 #1
0
        /// <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;
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        /// <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;
                }
            }
        }
コード例 #7
0
        /// <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;
            }
        }