コード例 #1
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            if (Disabled)
            {
                return;
            }

            int        pageNo     = PreviewPages.FindPage(Offset.X + e.X, Offset.Y + e.Y);
            ReportPage page       = PreparedPages.GetCachedPage(pageNo);
            Rectangle  pageBounds = PreviewPages.GetPageBounds(pageNo);

            SetPageNo(pageNo + 1, false);
            Cursor          = curHandMove;
            FLastMousePoint = e.Location;

            // reset page's NeedRefresh flag
            page.NeedRefresh = false;
            page.NeedModify  = false;

            // generate mousedown event
            if (FActiveObject != null)
            {
                FActiveObject.OnMouseDown(new MouseEventArgs(e.Button, e.Clicks,
                                                             (int)Math.Round((Offset.X + e.X - pageBounds.X) / Zoom - page.LeftMargin * Units.Millimeters - FActiveObject.AbsLeft),
                                                             (int)Math.Round((Offset.Y + e.Y - pageBounds.Y) / Zoom - page.TopMargin * Units.Millimeters - FActiveObject.AbsTop),
                                                             e.Delta));
            }

            // reset search highlight
            if (SearchInfo != null && SearchInfo.Visible)
            {
                SearchInfo.Visible = false;
                Refresh();
            }

            // modify and refresh the page if requested in the object's script
            if (page.NeedModify)
            {
                PreparedPages.ModifyPage(pageNo, page);
            }
            if (page.NeedRefresh)
            {
                Refresh();
            }
        }
コード例 #2
0
        public void EditPage()
        {
            if (Disabled)
            {
                return;
            }

            using (Report report = new Report())
            {
                ReportPage page = FPreparedPages.GetPage(PageNo - 1);

                OverlayBand overlay = new OverlayBand();
                overlay.Name   = "Overlay";
                overlay.Width  = (page.PaperWidth - page.LeftMargin - page.RightMargin) * Units.Millimeters;
                overlay.Height = (page.PaperHeight - page.TopMargin - page.BottomMargin) * Units.Millimeters;

                // remove bands, convert them to Text objects if necessary
                ObjectCollection allObjects = page.AllObjects;
                foreach (Base c in allObjects)
                {
                    if (c is BandBase)
                    {
                        BandBase band = c as BandBase;
                        if (band.HasBorder || band.HasFill)
                        {
                            TextObject textObj = new TextObject();
                            textObj.Bounds = band.Bounds;
                            textObj.Border = band.Border.Clone();
                            textObj.Fill   = band.Fill.Clone();
                            overlay.Objects.Add(textObj);
                        }

                        for (int i = 0; i < band.Objects.Count; i++)
                        {
                            ReportComponentBase obj = band.Objects[i];
                            if (!(obj is BandBase))
                            {
                                obj.Anchor = AnchorStyles.Left | AnchorStyles.Top;
                                obj.Dock   = DockStyle.None;
                                obj.Left   = obj.AbsLeft;
                                obj.Top    = obj.AbsTop;
                                overlay.Objects.Add(obj);
                                i--;
                            }
                        }
                    }
                }

                page.Clear();
                page.Overlay = overlay;
                report.Pages.Add(page);
                page.SetReport(report);
                page.SetRunning(false);

                if (report.DesignPreviewPage())
                {
                    page = report.Pages[0] as ReportPage;
                    FPreparedPages.ModifyPage(PageNo - 1, page);
                    Refresh();
                }
            }
        }
コード例 #3
0
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            if (Disabled)
            {
                return;
            }

            Cursor = curHand;

            // find object under mouse to invoke its PreviewClick event
            int        pageNo     = PreviewPages.FindPage(Offset.X + e.X, Offset.Y + e.Y);
            ReportPage page       = PreparedPages.GetCachedPage(pageNo);
            Rectangle  pageBounds = PreviewPages.GetPageBounds(pageNo);

            // reset NeedRefresh flag
            page.NeedRefresh   = false;
            page.NeedModify    = false;
            Report.NeedRefresh = false;

            // generate mouseup event
            if (FActiveObject != null)
            {
                FActiveObject.OnMouseUp(new MouseEventArgs(e.Button, e.Clicks,
                                                           (int)Math.Round((Offset.X + e.X - pageBounds.X) / Zoom - page.LeftMargin * Units.Millimeters - FActiveObject.AbsLeft),
                                                           (int)Math.Round((Offset.Y + e.Y - pageBounds.Y) / Zoom - page.TopMargin * Units.Millimeters - FActiveObject.AbsTop),
                                                           e.Delta));

                Hyperlink hyperlink = FActiveObject.Hyperlink;
                switch (hyperlink.Kind)
                {
                case HyperlinkKind.URL:
                    try
                    {
                        Process.Start(hyperlink.Value);
                    }
                    catch
                    {
                    }
                    break;

                case HyperlinkKind.PageNumber:
                    PageNo = int.Parse(hyperlink.Value);
                    break;

                case HyperlinkKind.Bookmark:
                    Bookmarks.BookmarkItem bookmark = PreparedPages.Bookmarks.Find(hyperlink.Value);
                    if (bookmark != null)
                    {
                        PositionTo(bookmark.PageNo + 1, new PointF(0, bookmark.OffsetY));
                    }
                    break;

                case HyperlinkKind.DetailReport:
                    // if detail report name is empty, refresh this report
                    if (String.IsNullOrEmpty(hyperlink.DetailReportName))
                    {
                        hyperlink.SetParameters(Report);
                        Report.NeedRefresh = true;
                    }
                    else
                    {
                        // open a new report. check if such tab is opened already
                        if (!Preview.SwitchToTab(hyperlink.Value))
                        {
                            FLocked = true;
                            try
                            {
                                using (Report report = hyperlink.GetReport(true))
                                {
                                    report.Prepare();
                                    Preview.AddPreviewTab(report.PreparedPages, hyperlink.Value);
                                    report.SetPreparedPages(null);
                                }
                            }
                            finally
                            {
                                FLocked = false;
                            }
                        }
                    }
                    break;

                case HyperlinkKind.DetailPage:
                    ReportPage reportPage = Report.FindObject(hyperlink.DetailPageName) as ReportPage;
                    if (reportPage != null)
                    {
                        hyperlink.SetParameters(Report);

                        // check if such tab is opened already
                        if (!Preview.SwitchToTab(hyperlink.Value))
                        {
                            FLocked = true;
                            Preview.Lock();
                            PreparedPages pages = new PreparedPages(Report);
                            try
                            {
                                Report.SetPreparedPages(pages);
                                Report.PreparePage(reportPage);
                            }
                            finally
                            {
                                FLocked = false;
                                Preview.Unlock();
                                Preview.AddPreviewTab(pages, hyperlink.Value);
                            }
                        }
                    }
                    break;
                }

                FActiveObject.OnClick(EventArgs.Empty);
            }

            // modify and refresh the page if requested in the object's script
            if (page.NeedModify)
            {
                PreparedPages.ModifyPage(pageNo, page);
            }
            if (page.NeedRefresh)
            {
                Refresh();
            }
            if (Report.NeedRefresh)
            {
                bool saveShowProgress = Config.ReportSettings.ShowProgress;
                Config.ReportSettings.ShowProgress = false;
                RefreshReport();
                Config.ReportSettings.ShowProgress = saveShowProgress;
            }
        }