예제 #1
0
        private void OnCustomDrawColumnHeader(object sender, CustomDrawColumnHeaderEventArgs e)
        {
            if (e.Column == null)
            {
                return;
            }

            ColumnInfo info = (ColumnInfo)e.ObjectArgs;

            for (int i = 0; i < info.InnerElements.Count; i++)
            {
                if (info.InnerElements[i].ElementInfo is GridFilterButtonInfoArgs)
                {
                    return;
                }
            }

            GridSmartSkinFilterButtonPainter painter          = new GridSmartSkinFilterButtonPainter(UserLookAndFeel.Default);
            GridFilterButtonInfoArgs         filterButtonInfo = new GridFilterButtonInfoArgs();

            filterButtonInfo.Cache    = e.Cache;
            filterButtonInfo.Graphics = e.Graphics;

            DrawElementInfo elementInfo = info.InnerElements.Add(painter, filterButtonInfo);

            elementInfo.RequireTotalBounds = true;
            info.InnerElements.CalcBounds(e.ObjectArgs, e.Cache, e.Painter.GetObjectClientRectangle(e.ObjectArgs), e.Bounds);

            Rectangle captionRect = e.CaptionRect;

            captionRect.Width -= elementInfo.ElementInfo.Bounds.Width;
            info.CaptionRect   = captionRect;
        }
예제 #2
0
        private void RemoveSortGlyphIfNeccessary(ColumnHeaderCustomDrawEventArgs args)
        {
            DrawElementInfo elementInfo = FindSortGlyphElement(args.Info);

            if (elementInfo == null)
            {
                return;
            }
            args.Info.InnerElements.Remove(elementInfo);
            args.Painter.CalcObjectBounds(args.Info);
        }
예제 #3
0
        private static GridFilterButtonInfoArgs GetFilterButtonInfoArgs(ColumnInfo colInfo)
        {
            if (colInfo == null)
            {
                return(null);
            }

            DrawElementInfo elementInfo = colInfo.InnerElements.Find(typeof(GridFilterButtonInfoArgs));

            if (elementInfo != null)
            {
                return((GridFilterButtonInfoArgs)elementInfo.ElementInfo);
            }

            return(null);
        }
        private void OnCustomDrawBandHeader(object sender, BandHeaderCustomDrawEventArgs e)
        {
            if (e.Band == null)
            {
                return;
            }
            //...
            DrawElementInfo buttonElementInfo = null;

            for (int i = 0; i < e.Info.InnerElements.Count; i++)
            {
                if (e.Info.InnerElements[i].ElementInfo is EditorButtonObjectInfoArgs)
                {
                    buttonElementInfo = e.Info.InnerElements[i];
                    break;
                }
            }

            if (buttonElementInfo == null)
            {
                ButtonPredefines buttonKind = ButtonPredefines.Minus;
                if (GetBandColumnsDefaultOnlyVisibility(e.Band))
                {
                    buttonKind = ButtonPredefines.Plus;
                }

                EditorButton               button         = new EditorButton(buttonKind);
                EditorButtonPainter        buttonPainter  = EditorButtonHelper.GetPainter(BorderStyles.Default);
                EditorButtonObjectInfoArgs buttonInfoArgs = new EditorButtonObjectInfoArgs(e.Cache, button, e.Info.Appearance);

                buttonElementInfo = new DrawElementInfo(buttonPainter, buttonInfoArgs);
                buttonElementInfo.ElementInfo.Bounds = CalcButtonBounds(e.Bounds);
                buttonElementInfo.ElementInfo.State  = ObjectState.Normal;

                e.Info.InnerElements.Add(buttonElementInfo);
                e.Info.CaptionRect = CalcCaptionRectWithButton(e, true);
            }

            e.Painter.DrawObject(e.Info);
            e.Handled = true;
        }
        private ImageBrick GetImageBrick(Rectangle rect, DrawElementInfo element)
        {
            ImageBrick ib = new ImageBrick(BorderSide.None, 0, AppearancePrint.HeaderPanel.BorderColor, AppearancePrint.HeaderPanel.BackColor);

            ib.Rect = rect;
            GlyphElementInfoArgs glyphInfo = element.ElementInfo as GlyphElementInfoArgs;

            if (glyphInfo.Glyph != null)
            {
                ib.Image = glyphInfo.Glyph;
            }
            else
            {
                if (glyphInfo.ImageIndex < 0)
                {
                    return(null);
                }

                if (glyphInfo.ImageList is ImageCollection)
                {
                    ImageCollection imageList = glyphInfo.ImageList as ImageCollection;
                    ib.Image = imageList.Images[glyphInfo.ImageIndex];
                }
                else if (glyphInfo.ImageList is ImageList)
                {
                    ImageList imageList = glyphInfo.ImageList as ImageList;
                    ib.Image = imageList.Images[glyphInfo.ImageIndex];
                }
                else
                {
                    SharedImageCollection collection = glyphInfo.ImageList as SharedImageCollection;
                    ib.Image = collection.ImageSource.Images[glyphInfo.ImageIndex];
                }
            }

            return(ib);
        }
        public override void PrintHeader(IBrickGraphics graph)
        {
            if (!View.OptionsPrint.PrintHeader)
            {
                return;
            }

            Point     indent         = new Point(Indent, HeaderY);
            Rectangle r              = Rectangle.Empty;
            bool      usePrintStyles = View.OptionsPrint.UsePrintStyles;

            SetDefaultBrickStyle(graph, Bricks["HeaderPanel"]);

            foreach (PrintColumnInfo col in Columns)
            {
                if (!usePrintStyles)
                {
                    AppearanceObject temp = new AppearanceObject();
                    AppearanceHelper.Combine(temp, new AppearanceObject[] { col.Column.AppearanceHeader, View.Appearance.HeaderPanel, AppearancePrint.HeaderPanel });
                    SetDefaultBrickStyle(graph, Bricks.Create(temp, BorderSide.All, temp.BorderColor, 1));
                }
                r = col.Bounds;
                r.Offset(indent);
                string caption = col.Column.GetTextCaption();
                if (!ColumnsInfo[Columns.IndexOf(col)].Column.OptionsColumn.ShowCaption)
                {
                    caption = string.Empty;
                }

                DevExpress.XtraGrid.Drawing.GridColumnInfoArgs columnsInfo = ColumnsInfo[Columns.IndexOf(col)];
                DrawElementInfoCollection innerElements   = columnsInfo.InnerElements;
                DrawElementInfo           columnImageInfo = null;
                GlyphElementInfoArgs      elementInfo     = null;
                this.ViewViewInfo.Painter.ElementsPainter.Column.CalcObjectBounds(columnsInfo);
                for (int i = 0; i < innerElements.Count; i++)
                {
                    if (innerElements[i].ElementInfo is DevExpress.Utils.Drawing.GlyphElementInfoArgs)
                    {
                        columnImageInfo = innerElements[i];
                        elementInfo     = columnImageInfo.ElementInfo as GlyphElementInfoArgs;
                        break;
                    }
                }

                ITextBrick tBrick = null;
                if (elementInfo.Glyph == null && elementInfo.ImageIndex < 0)
                {
                    tBrick = DrawTextBrick(graph, caption, r);
                }
                else
                {
                    IPanelBrick panelBrick      = new XETextPanelBrick(graph.DefaultBrickStyle);
                    float       offsetForBorder = panelBrick.BorderWidth;

                    if (columnImageInfo.Alignment != StringAlignment.Center)
                    {
                        tBrick       = new TextBrick();
                        tBrick.Rect  = new RectangleF(offsetForBorder, offsetForBorder, r.Width, r.Height);
                        tBrick.Text  = caption;
                        tBrick.Style = graph.DefaultBrickStyle;
                        tBrick.Sides = BorderSide.None;
                        panelBrick.Bricks.Add(tBrick);
                    }

                    panelBrick.Value = caption;
                    Rectangle columnRect = r;
                    Rectangle imageRect  = new Rectangle(new Point((int)offsetForBorder, (int)offsetForBorder), elementInfo.GlyphSize);
                    imageRect.Y = r.Y + columnImageInfo.ElementInterval;

                    switch (columnImageInfo.Alignment)
                    {
                    case StringAlignment.Near:
                        tBrick.Rect = new RectangleF(new PointF(imageRect.Location.X + imageRect.Size.Width, tBrick.Rect.Y), tBrick.Rect.Size);
                        MakeInflate(ref tBrick, 2 * offsetForBorder, 2 * offsetForBorder);
                        break;

                    case StringAlignment.Center:
                    {
                        imageRect.X += (r.Width - imageRect.Width) / 2;
                    }
                    break;

                    case StringAlignment.Far:
                        tBrick.Rect = new RectangleF(tBrick.Rect.Location, new SizeF(tBrick.Rect.Width - imageRect.Width, tBrick.Rect.Height));
                        MakeInflate(ref tBrick, 2 * offsetForBorder, 2 * offsetForBorder);
                        imageRect.X = (int)tBrick.Rect.Right;
                        break;
                    }


                    ImageBrick iBrick = GetImageBrick(imageRect, columnImageInfo);
                    if (iBrick != null)
                    {
                        panelBrick.Bricks.Add(iBrick);
                    }

                    graph.DrawBrick(panelBrick, columnRect);
                }


                if (tBrick == null)
                {
                    continue;
                }

                if (AppearancePrint.HeaderPanel.TextOptions.WordWrap == WordWrap.NoWrap && View.OptionsPrint.UsePrintStyles)
                {
                    using (Graphics g = this.View.GridControl.CreateGraphics())
                    {
                        SizeF s = g.MeasureString(tBrick.Text, tBrick.Font, 1000, tBrick.StringFormat.Value);
                        if (s.Width + 5 >= r.Width)
                        {
                            tBrick.Text      = "";
                            tBrick.TextValue = "";
                        }
                    }
                }
            }
        }