Beispiel #1
0
        public void InitPages(int index)
        {
            FUpdatingTabs = true;

            // add tabs
            FTabs.Tabs.Clear();

            // code tab
            TabItem codeTab = new TabItem();

            codeTab.Text  = Res.Get("Designer,Workspace,Code");
            codeTab.Image = Res.GetImage(61);
            FTabs.Tabs.Add(codeTab);

            // page tabs
            foreach (PageBase page in FReport.Pages)
            {
                TabItem pageTab = new TabItem();
                pageTab.Tag  = page;
                pageTab.Text = page.PageName;
                ObjectInfo info = RegisteredObjects.FindObject(page);
                pageTab.Image = info.Image;
                FTabs.Tabs.Add(pageTab);
            }

            FUpdatingTabs   = false;
            ActivePageIndex = index;
            FTabs.Refresh();
        }
        private void PrepareReportEditor()
        {
            // Скрытие неподдерживаемых элементов

            var insertOperations = RegisteredObjects.FindObject(typeof(ReportPage));

            if (insertOperations != null)
            {
                foreach (var insertOperation in insertOperations.Items)
                {
                    if (insertOperation.Object == null || SupportedObjects.Contains(insertOperation.Object) == false)
                    {
                        insertOperation.Enabled = false;
                    }
                }
            }

            // Настройка элементов редактора

            PrepareControl(new Func <Control, bool>[]
            {
                DisableStandardToolBar,
                DisableStyleToolBar,
                EnableTextToolBar,
                EnableBorderToolBar,
                EnableLayoutToolBar,
                SetObjectsToolBar,
                FindDataWindow,
                FindPropertiesWindow,
                FindConfigBandsButton
            }, new List <Control>(), _reportEditor);
        }
Beispiel #3
0
        private void EnumComponents(Base rootComponent, TreeNodeCollection rootNode)
        {
            string name = rootComponent is Report ?
                          "Report - " + Designer.ActiveReportTab.ReportName : rootComponent.Name;
            TreeNode node = rootNode.Add(name);

            node.Tag = rootComponent;

            FComponents.Add(rootComponent);
            FNodes.Add(node);

            ObjectInfo objItem = RegisteredObjects.FindObject(rootComponent);

            if (objItem != null)
            {
                int imageIndex = objItem.ImageIndex;
                node.ImageIndex         = imageIndex;
                node.SelectedImageIndex = imageIndex;
            }

            foreach (Base component in rootComponent.ChildObjects)
            {
                EnumComponents(component, node.Nodes);
            }
        }
Beispiel #4
0
 private TreeNodeCollection AddBand(BandBase band, TreeNodeCollection nodes)
 {
     if (band != null)
     {
         ObjectInfo info     = RegisteredObjects.FindObject(band);
         string     infoText = Res.Get(info.Text);
         infoText += ": " + band.Name;
         if (band is DataBand || band is GroupHeaderBand)
         {
             if (!String.IsNullOrEmpty(band.GetInfoText()))
             {
                 infoText += " (" + band.GetInfoText() + ")";
             }
         }
         TreeNode node       = nodes.Add(infoText);
         int      imageIndex = info.ImageIndex;
         node.ImageIndex         = imageIndex;
         node.SelectedImageIndex = imageIndex;
         node.Tag = band;
         if (band == FLastSelectedBand)
         {
             tvBands.SelectedNode = node;
         }
         AddBand(band.Child, node.Nodes);
         return(node.Nodes);
     }
     return(null);
 }
Beispiel #5
0
        /// <inheritdoc/>
        public override void Draw(FRPaintEventArgs e)
        {
            Graphics g = e.Graphics;

            UpdateWidth();
            if (IsDesigning)
            {
                RectangleF bounds = Bounds;
                bounds.X      *= e.ScaleX;
                bounds.Y      *= e.ScaleY;
                bounds.Width   = DesignWidth * e.ScaleX;
                bounds.Height *= e.ScaleY;

                if (ReportWorkspace.ClassicView && Width != 0)
                {
                    RectangleF fillRect = new RectangleF(bounds.Left, bounds.Top - (HeaderSize - 1) * e.ScaleY,
                                                         bounds.Width, (HeaderSize - 1) * e.ScaleY);
                    if (Bounds.Top == HeaderSize)
                    {
                        fillRect.Y       = 0;
                        fillRect.Height += e.ScaleY;
                    }
                    DrawBandHeader(g, fillRect, true);

                    ObjectInfo info = RegisteredObjects.FindObject(this);
                    string     text = Res.Get(info.Text);
                    if (GetInfoText() != "")
                    {
                        text += ": " + GetInfoText();
                    }
                    fillRect.X += 4;
                    TextRenderer.DrawText(g, text, DrawUtils.Default96Font,
                                          new Rectangle((int)fillRect.Left, (int)fillRect.Top, (int)fillRect.Width, (int)fillRect.Height),
                                          SystemColors.WindowText, TextFormatFlags.VerticalCenter);
                }

                g.FillRectangle(SystemBrushes.Window, bounds.Left, (int)Math.Round(bounds.Top),
                                bounds.Width, bounds.Height + (ReportWorkspace.ClassicView ? 1 : 4));
                DrawBackground(e);
                if (ReportWorkspace.ShowGrid)
                {
                    ReportWorkspace.Grid.Draw(g, bounds, e.ScaleX);
                }

                if (!ReportWorkspace.ClassicView)
                {
                    Pen pen = e.Cache.GetPen(Color.Silver, 1, DashStyle.Dot);
                    g.DrawLine(pen, bounds.Left, bounds.Bottom + 1, bounds.Right + 1, bounds.Bottom + 1);
                    g.DrawLine(pen, bounds.Left + 1, bounds.Bottom + 2, bounds.Right + 1, bounds.Bottom + 2);
                    g.DrawLine(pen, bounds.Left, bounds.Bottom + 3, bounds.Right + 1, bounds.Bottom + 3);
                }
            }
            else
            {
                DrawBackground(e);
                Border.Draw(e, new RectangleF(AbsLeft, AbsTop, Width, Height));
            }
        }
Beispiel #6
0
 private void CreateInsertMenu()
 {
     if (Designer.ActiveReportTab != null && Designer.ActiveReportTab.ActivePage != null)
     {
         ObjectInfo pageItem = RegisteredObjects.FindObject(Designer.ActiveReportTab.ActivePage);
         if (pageItem != null)
         {
             InsertMenuCreateMenus(pageItem, miInsert.SubItems);
         }
     }
 }
Beispiel #7
0
        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            e.DrawBackground();

            Base  c   = Items[e.Index] as Base;
            Image img = c == null?Res.GetImage(76) : RegisteredObjects.FindObject(c).Image;

            e.Graphics.DrawImage(img, e.Bounds.X + 2, e.Bounds.Y + 1);
            using (Brush b = new SolidBrush(e.ForeColor))
            {
                e.Graphics.DrawString(c == null ? Res.Get("Misc,None") : c.Name, e.Font, b,
                                      e.Bounds.X + 24, e.Bounds.Y + (e.Bounds.Height - DrawUtils.DefaultItemHeight) / 2);
            }
        }
Beispiel #8
0
        private void CreateButtons()
        {
            if (Designer.ActiveReport != null && Designer.ActiveReport == FCurrentReport &&
                Designer.ActiveReportTab.ActivePage == FCurrentPage)
            {
                return;
            }
            FCurrentReport = Designer.ActiveReport;
            if (Designer.ActiveReportTab != null)
            {
                FCurrentPage = Designer.ActiveReportTab.ActivePage;
            }
            else
            {
                FCurrentPage = null;
            }

            // delete all buttons except pointer
            int i = 0;

            while (i < Items.Count)
            {
                if (Items[i] == btnSelect)
                {
                    i++;
                }
                else
                {
                    Items[i].Dispose();
                    Items.RemoveAt(i);
                }
            }

            if (FCurrentPage == null)
            {
                RecalcLayout();
                return;
            }

            // create object buttons
            ObjectInfo pageItem = RegisteredObjects.FindObject(FCurrentPage);

            if (pageItem != null)
            {
                DoCreateButtons(pageItem, Items);
            }

            RecalcLayout();
        }
Beispiel #9
0
        private void AfterDragDrop(Point location)
        {
            DataFilterBaseControl control = Designer.SelectedObjects[0] as DataFilterBaseControl;

            if (control is TextBoxControl)
            {
                // show menu with different control types
                ContextMenuStrip menu = new ContextMenuStrip();
                menu.Renderer = Config.DesignerSettings.ToolStripRenderer;

                Type[] controlTypes = new Type[] {
                    typeof(TextBoxControl), typeof(MaskedTextBoxControl),
                    typeof(ComboBoxControl), typeof(CheckedListBoxControl),
                    typeof(ListBoxControl), typeof(DataSelectorControl)
                };

                foreach (Type controlType in controlTypes)
                {
                    ObjectInfo        info = RegisteredObjects.FindObject(controlType);
                    ToolStripMenuItem item = new ToolStripMenuItem(Res.Get(info.Text), Res.GetImage(info.ImageIndex));
                    menu.Items.Add(item);
                    item.Tag    = controlType;
                    item.Click += new EventHandler(ControlTypeItem_Click);
                }

                menu.Show(this, new Point((int)control.AbsLeft + Offset.X, (int)control.AbsBottom + Offset.Y));
            }
            else
            {
                // look for another controls of same type in a form that bound to the same DataColumn
                // and setup the FilterOperation
                foreach (Base c in Page.AllObjects)
                {
                    if (c != control && c.GetType() == control.GetType() &&
                        (c as DataFilterBaseControl).DataColumn == control.DataColumn)
                    {
                        (c as DataFilterBaseControl).FilterOperation = FilterOperation.GreaterThanOrEqual;
                        control.FilterOperation = FilterOperation.LessThanOrEqual;
                        Designer.SetModified(this, "Change");
                        break;
                    }
                }
            }
        }
Beispiel #10
0
        private void lbGroups_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.Graphics.FillRectangle((e.State & DrawItemState.Selected) != 0 ? SystemBrushes.Highlight : SystemBrushes.Window,
                                     new Rectangle(e.Bounds.X + 22, e.Bounds.Y, e.Bounds.Width - 22, e.Bounds.Height));

            if (e.Index < 0)
            {
                return;
            }
            GroupHeaderBand c   = lbGroups.Items[e.Index] as GroupHeaderBand;
            Image           img = RegisteredObjects.FindObject(c).Image;

            e.Graphics.DrawImage(img, e.Bounds.X + 2, e.Bounds.Y);
            using (Brush b = new SolidBrush(e.ForeColor))
            {
                e.Graphics.DrawString(c.GetInfoText(), e.Font, b,
                                      e.Bounds.X + 24, e.Bounds.Y + (e.Bounds.Height - lbGroups.ItemHeight) / 2);
            }
        }
Beispiel #11
0
        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            e.DrawBackground();

            if (e.Index < 0)
            {
                return;
            }
            BandBase c   = Items[e.Index] as BandBase;
            Image    img = c == null?Res.GetImage(76) : RegisteredObjects.FindObject(c).Image;

            e.Graphics.DrawImage(img, e.Bounds.X + 2, e.Bounds.Y);
            using (Brush b = new SolidBrush(e.ForeColor))
            {
                string text = "";
                if (c == null)
                {
                    text = Res.Get("Misc,None");
                }
                else
                {
                    text = Res.Get(RegisteredObjects.FindObject(c).Text);
                    if (c is DataBand)
                    {
                        text += ": " + c.GetInfoText();
                    }
                    else if (c is DataFooterBand)
                    {
                        text += ": " + c.DataBand.GetInfoText();
                    }
                    else if (c is GroupFooterBand)
                    {
                        text += ": " + (c.Parent as GroupHeaderBand).GetInfoText();
                    }
                }
                e.Graphics.DrawString(text, e.Font, b,
                                      e.Bounds.X + 24, e.Bounds.Y + (e.Bounds.Height - ItemHeight) / 2);
            }
        }
Beispiel #12
0
        private void DrawItems(Graphics g)
        {
            List <BandStructureNode> list = new List <BandStructureNode>();

            EnumNodes(list, FRoot);

            foreach (BandStructureNode node in list)
            {
                int offs = 24 + Offset - 2;

                RectangleF fillRect = new RectangleF(node.Left, node.Top + offs, Width - node.Left - 1, node.Height);
                BandBase   bandFill = null;

                foreach (BandBase band in node.Bands)
                {
                    bandFill = band;
                    if (band is GroupHeaderBand || band is DataBand)
                    {
                        break;
                    }
                }

                // highlight active band group
                //foreach (BandBase band in node.Bands)
                //{
                //  if (Designer.SelectedObjects.IndexOf(band) != -1)
                //  {
                //    fillBrush = new LinearGradientBrush(fillRect, Color.FromArgb(220, 235, 255),
                //      Color.FromArgb(130, 170, 230), LinearGradientMode.Vertical);
                //    break;
                //  }
                //}

                // fill node area
                bandFill.DrawBandHeader(g, fillRect, false);
                g.DrawRectangle(SystemPens.ControlDark, node.Left, node.Top + offs, Width - node.Left - 1, node.Height);

                // draw band title
                float scale = ReportWorkspace.Scale;
                using (StringFormat sf = new StringFormat())
                {
                    foreach (BandBase band in node.Bands)
                    {
                        g.DrawLine(SystemPens.ControlDark, node.Left + 8, band.Top * scale + offs, Width, band.Top * scale + offs);

                        RectangleF textRect = new RectangleF(node.Left + 4, band.Top * scale + offs + 4,
                                                             Width - (node.Left + 4) - 4, band.Height * scale - 4);
                        ObjectInfo info = RegisteredObjects.FindObject(band);
                        string     text = Res.Get(info.Text);
                        if (band.GetInfoText() != "")
                        {
                            text += ": " + band.GetInfoText();
                        }

                        float           textHeight = DrawUtils.MeasureString(g, text, DrawUtils.Default96Font, textRect, sf).Height;
                        TextFormatFlags flags      = textHeight > textRect.Height ?
                                                     TextFormatFlags.WordBreak : TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;
                        TextRenderer.DrawText(g, text, DrawUtils.Default96Font,
                                              new Rectangle((int)textRect.Left, (int)textRect.Top, (int)textRect.Width, (int)textRect.Height),
                                              SystemColors.WindowText, flags);

                        if (band.IsAncestor)
                        {
                            g.DrawImage(Res.GetImage(99), (int)(node.Left + Width - 10), (int)(band.Top * scale + offs + 3));
                        }
                    }
                }
            }
        }
Beispiel #13
0
        protected override void OnDragOver(DragEventArgs drgevent)
        {
            base.OnDragOver(drgevent);
            if (!Designer.cmdInsert.Enabled)
            {
                drgevent.Effect = DragDropEffects.None;
                return;
            }

            if (FMode1 != WorkspaceMode1.DragDrop)
            {
                DictionaryWindow.DraggedItem item = (DictionaryWindow.DraggedItem)drgevent.Data.GetData(
                    typeof(DictionaryWindow.DraggedItem));

                Type dataType = null;
                if (item.Obj is Column)
                {
                    dataType = (item.Obj as Column).DataType;
                }
                else if (item.Obj is Parameter)
                {
                    dataType = (item.Obj as Parameter).DataType;
                }

                // determine type of control to insert
                Type controlType = typeof(NumericUpDownControl);
                if (dataType == typeof(string) || dataType == typeof(char))
                {
                    controlType = typeof(TextBoxControl);
                }
                else if (dataType == typeof(DateTime) || dataType == typeof(TimeSpan))
                {
                    controlType = typeof(DateTimePickerControl);
                }
                else if (dataType == typeof(bool))
                {
                    controlType = typeof(CheckBoxControl);
                }
                else if (dataType == typeof(byte[]))
                {
                    controlType = null;
                }

                if (controlType == null)
                {
                    drgevent.Effect = DragDropEffects.None;
                    return;
                }

                // create label and control
                bool needCreateLabel = controlType != typeof(CheckBoxControl);
                if (needCreateLabel)
                {
                    Designer.InsertObject(new ObjectInfo[] {
                        RegisteredObjects.FindObject(controlType),
                        RegisteredObjects.FindObject(typeof(LabelControl))
                    }, InsertFrom.Dictionary);
                }
                else
                {
                    Designer.InsertObject(RegisteredObjects.FindObject(controlType), InsertFrom.Dictionary);
                }

                // setup control datafiltering
                DataFilterBaseControl control = Designer.SelectedObjects[0] as DataFilterBaseControl;
                control.Top += (16 / Grid.SnapSize) * Grid.SnapSize;
                if (item.Obj is Column)
                {
                    control.DataColumn = item.Text;
                }
                else if (item.Obj is Parameter)
                {
                    control.ReportParameter = item.Text;
                }

                // setup label text
                string labelText = "";
                if (item.Obj is Column)
                {
                    labelText = (item.Obj as Column).Alias;
                }
                else if (item.Obj is Parameter)
                {
                    labelText = (item.Obj as Parameter).Description;
                    if (String.IsNullOrEmpty(labelText))
                    {
                        labelText = (item.Obj as Parameter).Name;
                    }
                }

                if (needCreateLabel)
                {
                    LabelControl label = Designer.SelectedObjects[1] as LabelControl;
                    label.Text = labelText;
                }
                else
                {
                    control.Text = labelText;
                }

                FEventArgs.DragSource = control;
            }

            FMode1 = WorkspaceMode1.DragDrop;
            Point pt = PointToClient(new Point(drgevent.X, drgevent.Y));

            OnMouseMove(new MouseEventArgs(MouseButtons.Left, 0, pt.X, pt.Y, 0));
            drgevent.Effect = drgevent.AllowedEffect;
        }