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); }
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); } }
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); }
/// <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)); } }
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); } } }
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); } }
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(); }
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; } } } }
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); } }
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); } }
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)); } } } } }
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; }