using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using Pub_Class; namespace APSM { public class ClsGridSum { public AxVSFlex7.AxVSFlexGrid ogrdMain=new AxVSFlex7.AxVSFlexGrid(); public AxVSFlex7.AxVSFlexGrid oGridsum=new AxVSFlex7.AxVSFlexGrid(); private string sTotalCols; private string sAllowEdit; public Cell OldCell = new Cell(); public bool Changelock; public bool Gdtlock; public bool EditStatus; public bool DisplayNoCol; public Int32 NoCol; public string KeyItem; public bool NotAllowADDRow; public bool NotAllowDELRow; public char chr = Convert.ToChar(","); //获得 合计列 public void BuildTotalCols(string[] Cols) { Int64 i; string tStr; tStr = ""; for (i = 0; i < Cols.Length; i++) { if (i == 0) { tStr = Cols[i]; } else { tStr = tStr + "," + Cols[i]; } } sTotalCols= tStr; } //获得 可编辑列 public void BuildAllowEditCols(string[] Cols) { Int64 i; string tStr; tStr = ""; for (i = 0; i < Cols.Length; i++) { if (i == 0) { tStr = Cols[i]; } else { tStr = tStr + "," + Cols[i]; } } sAllowEdit= tStr; } //设置网格属性 public void SetGridsum( ) { Int32 i; oGridsum.Enabled = false; oGridsum.Appearance = VSFlex7.AppearanceSettings.flexFlat; oGridsum.BorderStyle = VSFlex7.BorderStyleSettings.flexBorderNone; oGridsum.ScrollBars = VSFlex7.ScrollBarsSettings.flexScrollBarNone; oGridsum.Width = ogrdMain.Width; oGridsum.FixedRows = 0; oGridsum.Rows = 1; oGridsum.Cols = ogrdMain.Cols; oGridsum.LeftCol = ogrdMain.LeftCol; oGridsum.set_RowHeight(0, 300); oGridsum.Height = 30; oGridsum.set_Cell(VSFlex7.CellPropertySettings.flexcpText, 0, 0, 0, oGridsum.Cols - 1, ""); oGridsum.set_TextMatrix(0, 0, "合计"); oGridsum.set_ColAlignment(-1, VSFlex7.AlignmentSettings.flexAlignCenterCenter); for (i = 0; i < ogrdMain.Cols; i++) { oGridsum.set_ColHidden(i,ogrdMain.get_ColHidden(i)); oGridsum.set_ColWidth(i, ogrdMain.get_ColWidth(i)); oGridsum.set_ColAlignment(i, ogrdMain.get_ColAlignment(i)); oGridsum.set_ColFormat(i, ogrdMain.get_ColFormat(i)); } oGridsum.set_ColAlignment(0,VSFlex7.AlignmentSettings.flexAlignCenterTop); for (i = oGridsum.FixedRows; i < oGridsum.Rows - 1; i++) { oGridsum.set_RowHeight(i, oGridsum.Height / oGridsum.Rows); } oGridsum.Width = ogrdMain.Width ; RefreshNoCol(); } //合计函数 public void Total() { string[] Cols; Int32 i, j, ColsTotal; if(ClsPub.isStrNull( sTotalCols).ToString().Trim()=="" ) return; Cols = sTotalCols.Split(chr); ColsTotal = Cols.Length; for (j = 0; j < ColsTotal; j++) { oGridsum.set_TextMatrix(0, ClsPub.isInt(Cols[j]), ""); } try { double d = 0; for (j = 0; j < ColsTotal; j++) { d = 0; for (i = ogrdMain.FixedRows; i < ogrdMain.Rows; i++) { //if (ogrdMain.get_TextMatrix(i, 0) == "*") //{ if (ogrdMain.get_RowHidden(i) == false) { d = d + ClsPub.isDoule(ogrdMain.get_TextMatrix(i, ClsPub.isInt(Cols[j]))); //oGridsum.set_TextMatrix(0, ClsPub.isInt(Cols[j]), Convert.ToString(oGridsum.get_ValueMatrix(0, ClsPub.isInt(Cols[j])) + ogrdMain.get_ValueMatrix(i, ClsPub.isInt(Cols[j]))) ); } } //} oGridsum.set_TextMatrix(0, ClsPub.isInt(Cols[j]), d.ToString()); } } catch (Exception e) { string s = ""; s= e.Message; } } // public void LeaveCell() { if (Changelock) return; OldCell.Col = ogrdMain.Col; OldCell.Row = ogrdMain.Row; } //列是否允许编辑 public bool FindAllowEditCol(Int64 Col) { Int64 i; string[] s; if (sAllowEdit.Trim() == "") return false; s=sAllowEdit.Split(chr ); for(i=0;i<=s.Length-1;i++) { if(Col==ClsPub.isInt(s[i])) return true; } return false; } //增行 public void Sub_AddRow() { //if (EditStatus == true) //{ // return; //} if (ogrdMain.Row < ogrdMain.FixedRows || ogrdMain.Row > ogrdMain.Rows - 1) { return; } if (GetNullRows() < 1) { ogrdMain.AddItem("", ogrdMain.Row); if (ogrdMain.Row != ogrdMain.Rows - 1) { if (ogrdMain.get_TextMatrix(ogrdMain.Row + 1, 0) == "*") { ogrdMain.set_TextMatrix(ogrdMain.Row, 0, "*"); } else { ogrdMain.RemoveItem(ogrdMain.Rows - 1); } DisplayCurRow(); DisplayCurCol(); RefreshNoCol(); } } } //删除行 public void Sub_DelRow() { int Scqwghz; //原选中行 int Scqwglz; //原选中列 Scqwghz = ogrdMain.Row; Scqwglz = ogrdMain.Col; //if (ClsPub.isStrNull(ogrdMain.get_TextMatrix(Scqwghz, 0))!= "") //{ // if (ogrdMain.get_TextMatrix(ogrdMain.Row, 0) == "*") // { DisplayCurRow(); Changelock = true; ogrdMain.Select(ogrdMain.Row, 0); Changelock = false; ogrdMain.set_Cell(VSFlex7.CellPropertySettings.flexcpBackColor, ogrdMain.Row, 0, ogrdMain.Row, ogrdMain.Cols - 1, 123456); if (MessageBox.Show( "确定要删除当前记录?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { ogrdMain.set_Cell(VSFlex7.CellPropertySettings.flexcpBackColor, ogrdMain.Row, 0, ogrdMain.Row, ogrdMain.Cols - 1, 000000); Changelock = true; ogrdMain.Select(Scqwghz, Scqwglz); Changelock = false; return; } ogrdMain.RemoveItem(ogrdMain.Row); if (ogrdMain.Rows < 50 + ogrdMain.FixedRows + 1) { ogrdMain.AddItem(""); } Changelock = true; if (ClsPub.isStrNull(ogrdMain.get_TextMatrix(ogrdMain.Row, 0)) != "*" && ClsPub.isStrNull(ogrdMain.get_TextMatrix(ogrdMain.Row - 1, 0)) == "*") { ogrdMain.Select(ogrdMain.Row-1, Scqwglz); } else { ogrdMain.Select(ogrdMain.Row, Scqwglz); } Changelock = false; RefreshNoCol(); // } //} EditStatus = false; } //获得 NULL 行 public Int64 GetNullRows() { Int32 r, c; Int32 lngRows; lngRows = 0; for (r = ogrdMain.FixedRows; r < ogrdMain.Rows; r++) { if (ogrdMain.get_TextMatrix(r, 0) == "*") { if (DisplayNoCol== true) { for (c = NoCol + 1; c < ogrdMain.Cols; c++) { if (ogrdMain.get_TextMatrix(r, c) != "" || ogrdMain.get_TextMatrix(r, c) != null) { break; } } } else { for (c =1; c < ogrdMain.Cols; c++) { if (ogrdMain.get_TextMatrix(r, c) != "" || ogrdMain.get_TextMatrix(r, c) != null) { break; } } } if (c == ogrdMain.Cols) lngRows = lngRows + 1; } } return lngRows; } //显示当前行 public void DisplayCurRow() { Int64 Toprowte; if (CountNullRows() < 50) ogrdMain.AddItem(""); Toprowte = 0; } //计算用户可用行 public Int64 CountNullRows() { Int32 r; Int32 lngRows; lngRows = 0; for (r = ogrdMain.FixedRows; r < ogrdMain.Rows; r++) { if (ogrdMain.get_TextMatrix(r, 0) != "*") lngRows = lngRows + 1; } return lngRows; } //显示当前列 public void DisplayCurCol() { //Int64 Toprowte; //Toprowte = 0; //while (ogrdMain.CellTop+ogrdMain.get_RowHeight(ogrdMain.Row)+ogrdMain.RowHeightMin>ogrdMain.Size.Height && ogrdMain.TopRow!=Toprowte) //{ // Toprowte=ogrdMain.TopRow; // ogrdMain.TopRow=ogrdMain.TopRow+1; //} //Toprowte = 0; //while (ogrdMain.CellTop < ogrdMain.FixedRows * ogrdMain.get_RowHeight(0) && ogrdMain.TopRow != Toprowte) //{ // Toprowte = ogrdMain.TopRow; // if (ogrdMain.TopRow > 1) // { // ogrdMain.TopRow = ogrdMain.TopRow -1; // } //} } public void CheckRowData() { int r; if (ogrdMain.Row >= ogrdMain.FixedRows) { if (ClsPub.isStrNull(ogrdMain.get_TextMatrix(ogrdMain.Row, 0).ToString()) != "*") { for ( r = ogrdMain.FixedRows; r < ogrdMain.Rows; r++) { if (ClsPub.isStrNull(ogrdMain.get_TextMatrix(r, 0).ToString()) != "*") { if (NotAllowADDRow) { Changelock = true; ogrdMain.Select(r - 1, ogrdMain.Col); Changelock = false; return; } else { break; } } } // if (r <= ogrdMain.Rows - 1) { Changelock = true; ogrdMain.Select(r , ogrdMain.Col); Changelock = false; } else { Changelock = true; ogrdMain.Select(ogrdMain.Rows - 1, ogrdMain.Col); Changelock = false; } } DisplayCurRow(); } } //刷新行号 public void RefreshNoCol() { int i, m; //if (DisplayCurCol==false ) //{ // return; //} i = 0; m = 0; for (i = ogrdMain.FixedRows; i < ogrdMain.Rows; i++) { m = m + 1; ogrdMain.set_TextMatrix(i, NoCol, m.ToString().Trim()); } ogrdMain.set_ColAlignment(NoCol, VSFlex7.AlignmentSettings.flexAlignCenterCenter); } // } }