示例#1
0
        protected override void Paint(Graphics graphics,
                                      Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
                                      DataGridViewElementStates cellState, object value,
                                      object formattedValue, string errorText,
                                      DataGridViewCellStyle cellStyle,
                                      DataGridViewAdvancedBorderStyle advancedBorderStyle,
                                      DataGridViewPaintParts paintParts)
        {
            CardDataGridView grid = (CardDataGridView)DataGridView;

            int cardIndex = rowIndex;

            IList <Card> _cards = grid.GetCardsFromGrid();

            if (_cards != null)
            {
                int?color = _cards[cardIndex].TimeGroupColor;
                if (color != null)
                {
                    cellStyle.BackColor = _colors[color.Value];
                }
            }

            base.Paint(graphics, clipBounds, cellBounds, rowIndex,
                       cellState, value, formattedValue, errorText,
                       cellStyle, advancedBorderStyle, paintParts);
        }
示例#2
0
        public override void InitializeEditingControl(int rowIndex, object initialFormattedValue,
                                                      DataGridViewCellStyle dataGridViewCellStyle)
        {
            if (this.RowIndex < 0)
            {
                return;
            }

            // Set the value of the editing control to the current cell value.
            base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);

            DataGridViewTrackEditingControl ctl = DataGridView.EditingControl as DataGridViewTrackEditingControl;

            ctl.Font  = dataGridViewCellStyle.Font;
            ctl.Width = GetSize(this.RowIndex).Width;
            ctl.SelectionBackColor = dataGridViewCellStyle.BackColor;
            ctl.ParityText         = (StringWithParity)this.Value;
            CardDataGridView grid = (CardDataGridView)DataGridView;

            ctl.variant        = grid.GetVariant(rowIndex, this.ColumnIndex);
            ctl.originalLength = ctl.Text.Length;
            if (ctl.variant != null)
            {
                bool ali       = grid.GetVariant(rowIndex, this.ColumnIndex).Alignment == null;
                int  alignment = ali ? 0 : (int)grid.GetVariant(rowIndex, this.ColumnIndex).Alignment;
                ctl.Margin             = new Padding(alignment * CalculateFontSize(ctl.Font).Width + 3, 3, 3, 3);
                ctl.SelectionAlignment = HorizontalAlignment.Left;
                ctl.Modified           = false;
                if (ali)
                {
                    if (ctl.variant.HasSS)
                    {
                        ctl.SelectionAlignment = HorizontalAlignment.Left;
                    }
                    else if (ctl.variant.HasES)
                    {
                        ctl.SelectionAlignment = HorizontalAlignment.Right;
                    }
                    else
                    {
                        ctl.SelectionAlignment = HorizontalAlignment.Center;
                    }
                }
            }
            else
            {
                ctl.Margin             = new Padding(3, 3, 3, 3);
                ctl.SelectionAlignment = HorizontalAlignment.Center;
            }
        }
        protected override void Paint(System.Drawing.Graphics g,
                                      System.Drawing.Rectangle clipBounds,
                                      System.Drawing.Rectangle cellBounds,
                                      int rowIndex, DataGridViewElementStates cellState,
                                      object value, object formattedValue, string errorText,
                                      DataGridViewCellStyle cellStyle,
                                      DataGridViewAdvancedBorderStyle advancedBorderStyle,
                                      DataGridViewPaintParts paintParts)
        {
            CardDataGridView grid = DataGridView as CardDataGridView;

            int cardIndex = rowIndex;

            IDataGridViewProgressColumnValue columnValue = (IDataGridViewProgressColumnValue)this.DataGridView.DataSource;

            int progressVal = value != null ?(int)value:0;
            // Need to convert to float before division; otherwise C# returns int which is 0 for anything but 100%.
            float percentage     = ((float)progressVal / (float)columnValue.MaximumValue);
            Brush backColorBrush = new SolidBrush(cellStyle.BackColor);
            Brush foreColorBrush = new SolidBrush(cellStyle.ForeColor);


            // Draws the cell grid
            base.Paint(g, clipBounds, cellBounds,
                       rowIndex, cellState, value, formattedValue, errorText,
                       cellStyle, advancedBorderStyle, (paintParts & ~DataGridViewPaintParts.ContentForeground));

            if (percentage > 0.0)
            {
                // Draw the progress bar and the text
                g.FillRectangle(new SolidBrush(Color.FromArgb(163, 189, 242)), cellBounds.X + 2, cellBounds.Y + 2, Convert.ToInt32((percentage * cellBounds.Width - 4)), cellBounds.Height - 4);
                g.DrawString(progressVal.ToString() + "(" + ((int)(percentage * 100)).ToString() + "%)", cellStyle.Font, foreColorBrush, cellBounds.X + 6, cellBounds.Y + 2);
            }
            else
            {
                // draw the text
                if (this.DataGridView.CurrentRow.Index == rowIndex)
                {
                    g.DrawString(progressVal.ToString() + "%", cellStyle.Font, new SolidBrush(cellStyle.SelectionForeColor), cellBounds.X + 6, cellBounds.Y + 2);
                }
                else
                {
                    g.DrawString(progressVal.ToString() + "%", cellStyle.Font, foreColorBrush, cellBounds.X + 6, cellBounds.Y + 2);
                }
            }
        }
示例#4
0
        public override void DetachEditingControl()
        {
            if (DataGridView == null)
            {
                return;
            }

            DataGridViewTrackEditingControl ctl = DataGridView.EditingControl as DataGridViewTrackEditingControl;

            if (ctl != null && ctl.Modified)
            {
                StringWithParity text = ctl.ParityText;

                CardDataGridView grid = (CardDataGridView)DataGridView;
                Card             card = grid.GetCard(this.RowIndex);

                if (card != null)
                {
                    card.SetTrackString(this.ColumnIndex - (int)Presentation.cardGridColumn.TRACK1_COLUMN, text);
                }
                //maybe this will slow the programm, but it is needed.
                // otherwise we will get alignment bugs once content changed.
                ListCardUtil.SetAlignment(grid.GetActualCardsFromGrid(), 0);
                if (crf.Properties.Settings.Default.autoResize &&
                    (ctl.Text.Length > ctl.originalLength || ctl.Text.Length < ctl.originalLength - 10)
                    )
                {
                    grid.AutoResizeColumn(this.ColumnIndex);
#if DEBUG
                    CardDataGridView.RESIZECOLUMNCOUNT++;
                    grid.UpdateStatusStripTextWhenResizing();
#endif
                }
            }

            base.DetachEditingControl();
        }
示例#5
0
        protected override Size GetPreferredSize(Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize)
        {
            if (DataGridView == null)
            {
                return(new Size(0, 0));
            }

            CardDataGridView grid    = (CardDataGridView)DataGridView;
            Variant          variant = grid.GetVariant(rowIndex, this.ColumnIndex);
            StringWithParity value   = (StringWithParity)GetValue(rowIndex);
            Size             size    = new Size(0, 0);

            if (fontSize.Width == -1)
            {
                fontSize = CalculateFontSize(cellStyle.Font);
            }

            if ((value != null) && (variant != null))
            {
                string sValue = value.ToString();

                int alignment = 0;
                if (variant.Alignment != null)
                {
                    alignment = variant.Alignment.Value;
                }

                size.Width  = fontSize.Width * (sValue.Length + alignment);
                size.Height = fontSize.Height;
            }

            size.Width  += _editingControl.Margin.Left + _editingControl.Margin.Right + 1;
            size.Height += _editingControl.Margin.Bottom + _editingControl.Margin.Top + 1;

            return(size);
        }
示例#6
0
        protected override void Paint(Graphics graphics,
                                      Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
                                      DataGridViewElementStates cellState, object value,
                                      object formattedValue, string errorText,
                                      DataGridViewCellStyle cellStyle,
                                      DataGridViewAdvancedBorderStyle advancedBorderStyle,
                                      DataGridViewPaintParts paintParts)
        {
            if (value == null || DataGridView == null)
            {
                return;
            }

            CardDataGridView grid = (CardDataGridView)DataGridView;

            Variant variant = grid.GetVariant(rowIndex, this.ColumnIndex);

            //group might be empty.
            int?alignment = null;

            if (null != variant)
            {
                //issue 5: A card with SS and ES should not be aligned by the previous card.
                //                if (variant.HasSS && variant.HasES)
                //                {
                //                    cellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                //                }
                //                else
                if (variant.Alignment != null)
                {
                    alignment = variant.Alignment.Value;
                }
                else
                {
                    if (variant.HasSS)
                    {
                        cellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                    }
                    else if (variant.HasES)
                    {
                        cellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
                    }
                    else
                    {
                        cellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                    }
                }
            }

            /*
             * base.Paint(graphics, clipBounds, cellBounds, rowIndex,
             *         cellState, value.ToString(), formattedValue, errorText,
             *         cellStyle, advancedBorderStyle, paintParts);
             */

            base.Paint(graphics, clipBounds, cellBounds, rowIndex,
                       cellState, null, null, errorText,
                       cellStyle, advancedBorderStyle, paintParts);

            Image img = GetRtfImage(rowIndex, value, base.Selected, cellStyle, alignment);

            if (alignment == null)
            {
                alignment = 0;
            }

            if (fontSize.Width == -1)
            {
                fontSize = CalculateFontSize(cellStyle.Font);
            }

            if (img != null)
            {
                graphics.DrawImage(img,
                                   cellBounds.Left + _editingControl.Margin.Left + fontSize.Width * alignment.Value,
                                   cellBounds.Top + _editingControl.Margin.Top);
            }
        }