diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs index ba4d2fec..b34c54e5 100644 --- a/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.Designer.cs @@ -34,6 +34,7 @@ namespace Volian.Controls.Library // VlnFlexGrid // this.Rows.DefaultSize = 19; + ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); this.ResumeLayout(false); diff --git a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs index 5c0f5155..ce22aba2 100644 --- a/PROMS/Volian.Controls.Library/VlnFlexGrid.cs +++ b/PROMS/Volian.Controls.Library/VlnFlexGrid.cs @@ -19,8 +19,33 @@ namespace Volian.Controls.Library { public delegate void VlnFlexGridEvent(object sender, EventArgs args); public delegate void VlnFlexGridCursorMovementEvent(object sender, VlnFlexGridCursorMovementEventArgs args); - public partial class VlnFlexGrid : C1.Win.C1FlexGrid.C1FlexGrid - { + public partial class VlnFlexGrid : C1.Win.C1FlexGrid.C1FlexGrid + { + //[XmlElement("MyBorders")] + //[Browsable(false)] + //[EditorBrowsable(EditorBrowsableState.Never)] + //public string MyBorderDetailString + //{ + // get + // { + // return _MyBorderDetail.ToString(); + // } + // set + // { + // if (value != null) + // _MyBorderDetail = VlnBorderDetail.Get(value); + // else + // _MyBorderDetail = null; + // } + //} + //private VlnBorderDetail _MyBorderDetail; + //[XmlIgnore] + //public VlnBorderDetail MyBorderDetail + //{ + // get { return _MyBorderDetail; } + // set { _MyBorderDetail = value; } + //} + [XmlIgnore] public bool HasVScroll { get @@ -28,6 +53,7 @@ namespace Volian.Controls.Library return RTBAPI.HasVertScroll(this); } } + [XmlIgnore] public bool HasHScroll { get @@ -103,10 +129,6 @@ namespace Volian.Controls.Library { _DPI = value; } - if (value == 120) - Console.WriteLine("Test"); - if(!(TableCellEditor is StepRTB)) - Console.WriteLine("{0}",TableCellEditor.GetType().Name); } } #region Grid Initialize @@ -129,7 +151,6 @@ namespace Volian.Controls.Library InitializeComponent(); SetupGrid(1, 1); } - //public VlnFlexGrid(IContainer container) //{ // container.Add(this); @@ -417,7 +438,7 @@ namespace Volian.Controls.Library this.Styles.EmptyArea.BackColor = Color.Transparent; this.Styles.EmptyArea.Border.Style = BorderStyleEnum.None; this.Styles.Normal.Border.Color = Color.Black; - this.Styles.Normal.TextAlign = C1.Win.C1FlexGrid.TextAlignEnum.LeftCenter; + this.Styles.Normal.TextAlign = C1.Win.C1FlexGrid.TextAlignEnum.LeftTop; //SetupCellStyles(); @@ -456,7 +477,6 @@ namespace Volian.Controls.Library TableCellEditor.EditMode = TableCellEditor.Visible; // need to comment out for compile for only jsj - 07FEB2011 } - void _tableCellEditor_HeightChanged(object sender, EventArgs args) { if (_tableCellEditor._initializingEdit || !_tableCellEditor.Visible) return; @@ -522,7 +542,6 @@ namespace Volian.Controls.Library } void VlnFlexGrid_KeyDown(object sender, KeyEventArgs e) { - switch (e.KeyCode) { case Keys.Left: @@ -581,8 +600,6 @@ namespace Volian.Controls.Library e.Style.BackColor = solid; // check whether the cell contains RTF - // TODO: Can we do DisplayText() in here?? - //DisplayText(ItemInfo itemInfo, string text, bool colorLinks) string rtfText = this.GetDataDisplay(e.Row, e.Col).Replace(@"\~", @"\u160?"); GridItem gi = Parent as GridItem; if (gi != null) @@ -598,11 +615,35 @@ namespace Volian.Controls.Library // draw the RTF text if (e.Bounds.Width > 0 && e.Bounds.Height > 0) { - _rtf.Width = Cols[e.Col].Width; + _rtf.Width = e.Bounds.Width - 3; _rtf.Rtf = rtfText; + CellRange cr = GetMergedRange(e.Row, e.Col); + cr.UserData = _rtf.Height; + int hAdjust = 0; + int hDiff = e.Bounds.Height - _rtf.Height; + if (e.Style != null) + { + switch (e.Style.TextAlign) + { + case TextAlignEnum.CenterBottom: + case TextAlignEnum.GeneralBottom: + case TextAlignEnum.LeftBottom: + case TextAlignEnum.RightBottom: + hAdjust = hDiff; + break; + case TextAlignEnum.CenterCenter: + case TextAlignEnum.GeneralCenter: + case TextAlignEnum.LeftCenter: + case TextAlignEnum.RightCenter: + hAdjust = hDiff / 2; + break; + default: + break; + } + } _rtf.ForeColor = e.Style.ForeColor; _rtf.BackColor = e.Style.BackColor; - _rtf.Render(e.Graphics, new Rectangle(e.Bounds.X+1,e.Bounds.Y,e.Bounds.Width-3,e.Bounds.Height)); + _rtf.Render(e.Graphics, new Rectangle(e.Bounds.X+1,e.Bounds.Y + hAdjust,e.Bounds.Width-3,e.Bounds.Height)); //CellRange cr = GetCellRange(e.Row, e.Col); //Console.WriteLine("ownerDraw UserData [{0},{1}] = {2}", cr.r1, cr.c1, _rtf.ContentsRectangle.Height); //cr.UserData = _rtf.ContentsRectangle.Height; @@ -688,9 +729,7 @@ namespace Volian.Controls.Library this.BorderStyle = border; this.AdjustGridControlSize(); } - - - public void ChangeCellBorder(CellRange cr, BorderStyleEnum newBorder) + public void ChangeCellAlign(CellRange cr, TextAlignEnum newAlign) { for (int rw = cr.r1; rw <= cr.r2; rw++) for (int col = cr.c1; col <= cr.c2; col++) @@ -698,11 +737,38 @@ namespace Volian.Controls.Library CellRange tmp = this.GetCellRange(rw, col, rw, col); string StyleName = string.Format("R{0}C{1}Style", rw, col); CellStyle cs = this.Styles.Add(StyleName, tmp.Style); + cs.TextAlign = newAlign; + tmp.Style = cs; + } + } + public void ChangeCellBorder(CellRange cr, BorderStyleEnum newBorder) + { + for (int rw = cr.r1; rw <= cr.r2; rw++) + for (int col = cr.c1; col <= cr.c2; col++) + { + CellRange tmp = this.GetCellRange(rw, col, rw, col); + string StyleName = string.Format("R{0}C{1}Style", rw, col); + CellStyle cs = null; + if (Styles.Contains(StyleName)) + cs = Styles[StyleName]; + else + cs = this.Styles.Add(StyleName, tmp.Style); cs.Border.Style = newBorder; tmp.Style = cs; } } - + public void ListStyles() + { + for (int r = 0; r < Rows.Count; r++) + for (int c = 0; c < Cols.Count; c++) + { + CellRange cr = GetMergedRange(r, c); + if (cr.r1 == r && cr.c1 == c) + { + if (cr.Style != null) Console.WriteLine("{0}, {1}, {2}, {3}", r, c, cr.Style.Name, cr.Style.BackColor); + } + } + } public void VerticalCenterText() { StepRTB myStepRTB = new StepRTB(); @@ -2151,6 +2217,47 @@ namespace Volian.Controls.Library } #endregion //Clipboard + #region Selection + public bool SelectNextCell() + { + int r = this.Row; + int c = this.Col; + CellRange cr = GetMergedRange(r, c); + do + { + c = cr.c2 + 1; + if (c >= this.Cols.Count) + { + r = r + 1; + c = 0; + if (r >= this.Rows.Count) return false; + } + cr = GetMergedRange(r, c); + } while (r != cr.r1 || c != cr.c1); + Select(r, c); + return true; + } + public bool SelectPrevCell() + { + int r = this.Row; + int c = this.Col; + CellRange cr = GetMergedRange(r, c); + do + { + c = cr.c1 - 1; + if (c < 0) + { + r = r - 1; + c = this.Cols.Count-1; + if (r < 0) return false; + } + cr = GetMergedRange(r, c); + c = cr.c1; + } while (r != cr.r1); + Select(r, c); + return true; + } + #endregion #region SearchableText public string GetSearchableText() { @@ -2248,6 +2355,7 @@ namespace Volian.Controls.Library this.Clear(); this.MergedRanges.Clear(); this.ReadXml(ofd.FileName); + this.KeyActionTab = KeyActionEnum.MoveAcross; this.AdjustGridControlSize(); rtn = ofd.SafeFileName; return rtn; @@ -3084,6 +3192,25 @@ namespace Volian.Controls.Library { return GetMergedRange(r, c).r2; } + public Color StyleBackColor + { + get {return Styles.Normal.BackColor;} + set + { + Styles.Normal.BackColor = value; + Styles.Alternate.BackColor = value; + for (int c = 0; c < Cols.Count; c++) + for (int r = 0; r < Rows.Count; r++) + { + CellRange cr = GetMergedRange(r, c); + if (cr.Style != null && cr.Style.BackColor != value && cr.Style.Name != "Fixed") + { + cr.Style.BackColor = value; + //Console.WriteLine("{0}, {1}, {2}, {3}", r, c, cr.Style.Name, cr.Style.BackColor); + } + } + } + } /// /// Returns a list of cells or merged cells within the selection /// @@ -3642,13 +3769,10 @@ namespace Volian.Controls.Library get { return _cpbrdCellRange; } set { _cpbrdCellRange = value; } } - - public SelectedTableCells() { } } - #endregion // TableClipBoardFuncts Class public class VlnFlexGridCursorMovementEventArgs {