using System;
using System.Windows.Forms;
using System.Drawing;

using ljs;
using JXC_MIS.MyClass;
using JXC_MIS.DataTier;
namespace JXC_MIS.MyClass
{
	/// <summary>
	/// ClsReceiptMethod 单据界面过程方法。
	/// </summary>
	public class ClsReceiptMethod
	{

		ClsAccess AdoAccess=new ClsAccess();
		ClsDataBaseAccess AdoDB=new ClsDataBaseAccess();
		ClsCellAttrib newCellAttrib=new ClsCellAttrib();

		public ClsReceiptMethod()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
		/// <summary>
		/// 功能： 设置列宽 '设置标题 解析(analyse)
		/// </summary>
		
		public bool SetInterface(MyGrid p_Grid,string p_Format,string p_Width,bool p_GridStyle,bool p_BorderStyle)        
		{
			ClsCellAttrib newCellAttrib=new ClsCellAttrib();
			string [] ArrSplit = null; //     临时数组变量
//			string [] ArrSplit1 = null; //     临时数组变量
//			string DefaultValue=null;
			int cs ;
			int rs;
			if (p_Format==null || p_Format=="")
			{
				p_Grid.Visible =false;
				return false;
			}
			else
			{
				p_Grid.Visible =true;
			}

			p_Grid.GridStyle=p_GridStyle;
			p_Grid.BorderStyle=p_BorderStyle;
	
			//'设置行数，列数
			ArrSplit = p_Width.Split(',');
			cs=ArrSplit.Length;				//总列数
			//		    string[] sArray1=s.Split(new char[3]{'c','d','e'});使用多个字符进行分割
			ArrSplit = p_Format.Split('$');
			rs=ArrSplit.Length;				 //总行数
			p_Grid.Rows =rs    ;			//设置行数
			p_Grid.Cols = cs ;    //      '设置列数 总列数/总行数取整 正好是列数
			//'设置列宽
			p_Grid.SetCellWidth =p_Width; 
			p_Grid.RowHeightMin =20;//22;
			p_Grid.ShowGrid() ;
//			p_Grid.GridSize() ;
			try
				{
			//'设置标题
			ArrSplit = p_Format.Split('|'); 
			int i=0;
//			int j=0;
			string ReadText="";
//			string ReadText1;
//			string ReadTag="";
			for (int r=0;r<rs;r++)
			{
				for (int c=0;c<cs;c++)
				{
					ReadText=ArrSplit[i];
					newCellAttrib.FormatString =ReadText;
					//分析 [0对齐方式(^,<,>,$);1默认值; 2是否编辑(T,F);3参照类型(0,1,2,3,4,5);4参照数据源(连接数据表SQL语句);5是否保存;6是否代码转换{表名，代码字段，名称字段};7是否可以为空(T,F)]
					p_Grid.GridCell(r,c).Tag =ReadText;
					if (c%2!=0)   //可读写列
					{
						p_Grid.GridCell(r,c).ForeColor =Color.MidnightBlue   ;
					}

					if (newCellAttrib.Caption!=null)//解析 1默认值 标题
					{
						p_Grid.CellText(r,c,newCellAttrib.Caption);

					}
                   
					//字符串的缺省对齐方式。单元格的内容左、居中对齐。
					//if (String.Compare(ReadText.Substring(0, 1), "^") > 0)
					//	ReadText=ReadText.Substring(1,ReadText.Length-1);
					if (newCellAttrib.TextAlign=="^") //单元格的内容居中、居中对齐。
					{
						p_Grid.GridCell(r,c).TextAlign=System.Windows.Forms.HorizontalAlignment.Center ;  
					}
					if (newCellAttrib.TextAlign  =="<")//单元格的内容左、居中对齐。
					{
						p_Grid.GridCell(r,c).TextAlign=System.Windows.Forms.HorizontalAlignment.Left ;  
					}			
					if (newCellAttrib.TextAlign  ==">")//数值的缺省对齐方式。单元格的内容右、居中对齐。
					{
						p_Grid.GridCell(r,c).TextAlign=System.Windows.Forms.HorizontalAlignment.Right;  
					}	

					if (newCellAttrib.TextDefault!=null)//解析 1默认值
					{
					p_Grid.CellText(r,c,newCellAttrib.TextDefault);
					}
					 if (newCellAttrib.ReadOnly==true)//解析 2是否编辑(T,F)
					{
					p_Grid.GridCell(r,c).ReadOnly =true;
					p_Grid.GridCell(r,c).ForeColor=Color.RoyalBlue;
					 }
					i++;
				}

		    }
				return true;
			}
			catch
			{
				return false;
			}

		}


         /// <summary>
		/// p_ArrCell 二维数组2列，第一列是保存的数据值，第二列是控制字符命令
		/// </summary>
         /// <param name="p_MasterTableName"></param>
         /// <param name="p_MasterFeildName"></param>
         /// <param name="p_ArrCell"></param>
         /// <returns></returns>
		public string GetInsertSQL(string p_MasterTableName,string p_MasterFeildName,string [,] p_ArrCell) 
		{
			string [] TempArrCell=null;
			int b=p_ArrCell.GetUpperBound(0)+1;
			int n=0;			   //数组计数器
			string sCurColComman;  //当前列控制字符
			string[] tempArr=null; //临时树组
			string s1;//解析 4是否代码转换{表名，代码字段，名称字段}
			tempArr=p_MasterFeildName.Split(',');
			TempArrCell=new string[tempArr.Length];

			//主表数据保存
			for (int i=0;i<b;i++)
			{
				if (p_ArrCell[i,0]==null) p_ArrCell[i,0]="";
				if (p_ArrCell[i,1]==null) p_ArrCell[i,1]="";
					sCurColComman=p_ArrCell[i,1].ToString();//列控制字符命令
					newCellAttrib.FormatString =sCurColComman;   //解析列控制字符
					if (newCellAttrib.NotSave==false)   //是否保存
					{
						TempArrCell[n]=p_ArrCell[i,0].ToString();
                        s1=newCellAttrib.CodeToName;
						if (s1!="否"  && s1!=""  && s1!=null)//解析 4是否代码转换{表名，代码字段，名称字段}	
						{
							TempArrCell[n]=GetDataValue(newCellAttrib.DataCodeToName.Table,newCellAttrib.DataCodeToName.CodeField,newCellAttrib.DataCodeToName.NameField,TempArrCell[n]);
						}
						n++;
				   }
			}
			return GetInsertSQL(p_MasterTableName,p_MasterFeildName,TempArrCell);
		}

		/// <summary>
		/// 单据数据保存 转换成合法的SQL语句 INSERT INTO  () VALUES ()
		/// </summary>
		public string GetInsertSQL(string p_MasterTableName,string p_MasterFeildName,string [] p_ArrCell) 
		{
			string sType;//数据类型
			string sFields;
			string sFieldValue;
			string[] tempArr=p_MasterFeildName.Split(',');
			int j=tempArr.Length ;
			string sSQL="INSERT INTO "+p_MasterTableName +" (";
			string sValue=" VALUES (";
			string strErrInfo="";
			//转换成合法的SQL语句
			//INSERT INTO I_Lib     () VALUES ()

			try
			{
				if (j<=0 || tempArr[0]=="")
				{
					MessageBox.Show("没有设置数据源！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
					return sSQL="";
				}

				for (int i=0;i<j;i++)
				{
					sFields=tempArr[i].Trim();
					sType=sFields.Substring(0,2).ToLower().Trim();//判断数据类型
					if (p_ArrCell[i]==null) p_ArrCell[i]="";
					sFieldValue=p_ArrCell[i].Trim();
					if (sFieldValue=="")//3是否保存(True不保存)
					{}
					else
					{
						sSQL=sSQL+sFields+",";//数据字段连接

						if (sType=="fi" || sType=="fl" || sType=="fn" )  // 判断数据类型|| sType=="fstr"
						{
								if (sFieldValue=="") {sFieldValue="NULL";}
								sValue=sValue+sFieldValue+",";
						}
						else
						{
								sValue=sValue+"'"+sFieldValue+"',";
						}
					}
				}
				sSQL=sSQL.Substring(0,sSQL.Length -1)+")";
				sValue=sValue.Substring(0,sValue.Length -1)+")";
				sSQL=sSQL+sValue;
//				return  sSQL;
			}
			catch(System.Exception ex)
			{
				strErrInfo="错误提示：" + "\n" + ex.Message+ "\n"+sSQL;

			}	
			finally
			{
				if (strErrInfo!="")
					System.Windows.Forms.MessageBox.Show(strErrInfo,"提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning);

			}
				return  sSQL;
		}

		/// <summary>
		/// 得到代码名称转换的
		/// </summary>
		/// <param name="Table">数据表</param>
		/// <param name="CodeField">代码字段</param>
		/// <param name="NameField">名称字段</param>
		/// <param name="sFieldValue">值</param>
		/// <returns></returns>
		public virtual string  GetDataValue(string Table,string CodeField,string NameField,string sFieldValue) 
		{        
			string sTemp="";
			string sSql="Select Top 1 "+ CodeField +" From "+Table +" Where "+NameField+"='"+sFieldValue+"'";
			System.Data.DataSet dst = new System.Data.DataSet();
			dst= AdoDB.GetDataSet(sSql);
			if (dst.Tables[0].Rows.Count>0)
			{
				System.Data.DataRow dr = dst.Tables[0].Rows[0];
				if (dr!=null)
				{
					sTemp=dr[0].ToString();
				}
			}
			return sTemp;
		}
		/// <summary>
		/// 单据完整性验证  
		/// </summary>
		/// <param name="sCaption"></param>
		/// <param name="sText"></param>
		/// <param name="sCheckType"></param>
		/// <returns>True 验证成功 false 验证失败</returns>
		public virtual bool ReceiptCheck(string sCaption,string sText,string sCheckType) 
		{
			bool ReturnValue=true;
			//string[,] p_Arrary
			//p_Arrary[i,0] 标题
			//p_Arrary[i,1] 内容
			//p_Arrary[i,2] 格式信息
//					sCaption =p_Arrary[i,0].ToString();
//					sText =p_Arrary[i,1].ToString();
//					newCellAttrib.FormatString =p_Arrary[i,2].ToString();
//					sCheckType=newCellAttrib.CheckType ; 

////（0或空=可以为空，1=不为空，12=日期验证并且不为空，13=数值验证并且不为空，02=日期验证且可以为空，03=数值验证且可以为空)
					switch (sCheckType)
					{
						case "":
							ReturnValue= true;
							break;
						case "0":
							ReturnValue= true;
							break;
						case "1":  
							if (sText=="")
							{
								MessageBox.Show("["+sCaption+"]不能为空！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
							    ReturnValue= false;
							}
							break;
						case "02":
							if (sText!="" && IsDate(sText)==false)
							{
							MessageBox.Show("["+sCaption+"]不是日期格式！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
								ReturnValue= false;
							}

							break;
						case "03":
							if (sText!="" && IsNum(sText)==false  )
							{
								MessageBox.Show("["+sCaption+"]不是数值格式！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
								ReturnValue= false;
							}

							break;
						case "12":
							if (sText=="")
							{
								MessageBox.Show("["+sCaption+"]不能为空！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
								ReturnValue= false;
							}
							if (IsDate(sText)==false)
							{
								MessageBox.Show("["+sCaption+"]不是日期格式！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
								ReturnValue= false;
							}

							break;
						case "13":
							if (sText=="")
							{
								MessageBox.Show("["+sCaption+"]不能为空！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
								ReturnValue= false;
							}
							if (IsNum(sText)==false)
							{
								MessageBox.Show("["+sCaption+"]不是数值格式！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information ) ;
								ReturnValue= false;
							}
							break;
						default:
							ReturnValue= true;
							break;
					}
			return ReturnValue;

		}

		/// <summary>
		/// 是否为数字
		/// </summary>
		/// <param name="p_NumberVal">传入的值</param>
		/// <returns></returns>
		public static bool IsNum(string p_NumberVal)
		{
			double d=0;
			try
			{
				d = double.Parse(p_NumberVal);
			}
			catch
			{
				return false;
			}

			return true;			
		}
		/// <summary>
		/// 是否为日期
		/// </summary>
		/// <param name="p_DateVal">传入的值</param>
		/// <returns></returns>
		public static bool IsDate(string p_DateVal)
		{
			DateTime d; 
			try
			{
				d = DateTime.Parse(p_DateVal);
			}
			catch
			{
				return false;
			}

			return true;			
		}


		/// <summary>
		/// 得到单据编号  统一规则： 首字符 +年 +月份+四位0001顺序号
		/// </summary>
		public string GetReceiptNo(string TableName,string KeyFieldName,string firstChar)
		{
			string sYear=DateTime.Now.Year.ToString(); 
			string sMonth=DateTime.Now.Month.ToString(); 
			if (sMonth.Length==1) {sMonth="0"+sMonth;}
			string sTemp=firstChar+sYear+sMonth+"0001";
			int c=firstChar.Length;
			int RecordNO;
			int Len=c+6;
			string sSql="SELECT "+KeyFieldName+" FROM "+TableName+" where Left("+KeyFieldName+","+Len.ToString()+")='"+firstChar+sYear+sMonth+"' Order By " +KeyFieldName +" DESC";

			System.Data.DataSet dst = new System.Data.DataSet();
			dst= AdoDB.GetDataSet(sSql);
			if (dst.Tables[0].Rows.Count>0)
			{
				System.Data.DataRow dr = dst.Tables[0].Rows[0];
				if (dr!=null)
				{
					sTemp=dr[KeyFieldName].ToString();
					RecordNO=int.Parse(sTemp.Trim().Substring(c,sTemp.Length -c))+1 ;
					sTemp=firstChar+RecordNO.ToString();	
				}
			}
			return sTemp;
			
		}
		/// <summary>
		/// 得到记录编号  统一规则： 首字符 +四位0001顺序号
		/// </summary>
		public string GetRecordNo(string TableName,string KeyFieldName,string firstChar)
		{
			string sTemp=firstChar+"0001";
			int c=firstChar.Length;
			int RecordNO;
			int Len=c+4;
			string sSql="SELECT "+KeyFieldName+" FROM "+TableName+" Order By " +KeyFieldName +" DESC";

			System.Data.DataSet dst = new System.Data.DataSet();
			dst= AdoDB.GetDataSet(sSql);
			if (dst.Tables[0].Rows.Count>0)
			{
				System.Data.DataRow dr = dst.Tables[0].Rows[0];
				if (dr!=null)
				{
					sTemp=dr[KeyFieldName].ToString();
					RecordNO=int.Parse(sTemp.Trim().Substring(c,sTemp.Length -c))+10001 ;
                    string n=RecordNO.ToString().Substring(1,RecordNO.ToString().Length -1);
					sTemp=firstChar+n.ToString();	
				}
			}  
			return sTemp;
			
		}
		/// <summary>
		/// MyGrid数据转换成数组数据
		/// </summary>
		public string[,] GetGridToArray(ljs.MyFlexGrid p_Grid)
		{
			int rs=p_Grid.Cols ;
			int cs=p_Grid.Rows ;
			if (rs>0)
			{
				string [,] sArray=new string[rs,cs];
				for (int r=0;r<rs;r++)
				{
					for (int c=0;c<cs;c++)
					{
						sArray[r,c]=p_Grid.GetCellText(r,c).ToString();
					}
				}
				
				return sArray;
			}
			else
			{
				return null;
			}

		}
		/// <summary>
		/// 返回指定列的控制命令或列的标题。
		/// </summary>
		/// <param name="c"></param>
		/// <returns></returns>
		public string GetCurColCommand(string p_DetailColCommand,int c) 
		{
			string [] sArr=null ;
			sArr=p_DetailColCommand.Split('|') ;
		{ return sArr[c];}

		}
		/// <summary>
		/// 得到列求和字符串  如"12|14|16|17"
		/// </summary>
		/// <param name="p_DetailColCommand"></param>
		/// <returns>明细列控制字符串</returns>
		public string GetDetailColSumNo(string p_DetailColCommand)
		{   
			string sColSumNo="";
			string[] sArrTemp=p_DetailColCommand.Split('|') ;
			int j=sArrTemp.Length ;
			for (int i=0;i<j;i++)
			{
			  newCellAttrib.FormatString =sArrTemp[i];   //解析列控制字符
              if (newCellAttrib.ColSum==true)   sColSumNo=sColSumNo+i.ToString()+"|";
			}
			if (sColSumNo!="") sColSumNo=sColSumNo.Substring(0,sColSumNo.Length-1);
			return sColSumNo;
		}
		/// <summary>
		/// 计算指定网格列的合计
		/// </summary>
		public void GetGridColSum(MyFlexGrid p_Grid, string p_ColsNo,string p_Format)
		{
			if (p_ColsNo==null || p_ColsNo=="") {return;}
			int rs=p_Grid.Rows ;
			string[] StrColCount =null;
			string sFormat=p_Format;
			double sum=0 ;
			StrColCount =p_ColsNo.Split('|');
			//'计算合计
			//'计算指定列的合计
			int ColCounts=StrColCount.Length ;
			try
			{
				if (rs>0)
				{
					for (int c=0;c<ColCounts;c++)
					{
						sum=0;
						for (int r=1;r<rs-1;r++)
						{
							if (p_Grid.GetCellText(r,int.Parse(StrColCount[c]))!=null && p_Grid.GetCellText(r,int.Parse(StrColCount[c]))!="") 
							{
								sum = sum + double.Parse(p_Grid.GetCellText(r,int.Parse(StrColCount[c])));
							}
						}
						if (sFormat==null || sFormat=="")
						{
							p_Grid.SetCellText(rs-1,int.Parse(StrColCount[c]), sum.ToString()) ;
						}
						else
						{
							p_Grid.SetCellText(rs-1,int.Parse(StrColCount[c]), sum.ToString(sFormat)) ;
						}
					}
				p_Grid.SetCellText(rs-1,2,"合  计:") ;
				}
				else
				{
					return ;
				}	
			}
			catch
			{
			}
		}

		//'-----------------自动计算当前列和其他列之间的计算表达式-----------------------------
		//---------首先解析同时要计算多少个表达式  如： 14=13*14,15=13*16-------------------
		public void AutoCompute(object p_Object,string p_ColExpressValue,string p_Format )
		{
			if (p_ColExpressValue==null || p_ColExpressValue=="") {return;}
			string [] ArrSplit = null;     // 临时数组变量   
			ArrSplit=p_ColExpressValue.Split(',');
			int n=ArrSplit.Length;
			for (int i=0;i<n;i++)
			{
			   DoCompute(p_Object,ArrSplit[i],p_Format );
			}
		}
		//'-----------------自动计算当前列和其他列之间的计算表达式-----------------------------
		public void DoCompute(object p_Object,string p_ColExpressValue,string p_Format )
		{

			if (p_ColExpressValue==null || p_ColExpressValue=="") {return;}

			string [] ArrSplit = null;     // 临时数组变量    c25=c23*c24*(1-c25*0.01)
			string sColResult;             //结果列 和 系数或常数
			string sColExpress;
			string sFormat=p_Format;
			if (sFormat==null || sFormat==""){sFormat="######0.00";}

//			string sResult="";
			int n=0;                       //运算符号个数
			ArrSplit=p_ColExpressValue.Split('=');
			sColResult=ArrSplit[0].ToLower().Replace("c","").Trim();			

			sColExpress=ArrSplit[1];        //运算表达式
			int j=sColExpress.Length;       //字符长度
			string[] sMark= new string[j];  //运算符号
			string[] sCol=new string [j];
			string sChar="";
				//第一步 分离列和运算符号   c25=c23*c24*(1-c25*0.01)   c23|c24||c22|c25|0.01|
				for (int i=0;i<j;i++)
				{
					if (sColExpress.Substring(i,1)=="*" || sColExpress.Substring(i,1)=="/" || sColExpress.Substring(i,1)=="+" || sColExpress.Substring(i,1)=="-" || sColExpress.Substring(i,1)=="(" || sColExpress.Substring(i,1)==")" || sColExpress.Substring(i,1)=="&" )
					{       
						sMark[n]=sColExpress.Substring(i,1);
						sCol[n]=sChar;
						sChar="";
						n++;
					}
					else
					{
						sChar=sChar+sColExpress.Substring(i,1);
						if (i==j-1)  sCol[n]=sChar;
					}

				}
					sChar="";
			if (p_Object.GetType()== typeof(MyFlexGrid))
			{
				MyFlexGrid control = (MyFlexGrid) p_Object ;
				DoComputeCol(control,sColResult,sCol,sMark,n,sFormat);

			}
			else 
			{
				TextBox[] control = (TextBox[]) p_Object ; 
				DoComputeCell(control,sColResult,sCol,sMark,n,sFormat);
			}


		}	
		public void DoComputeCol(MyFlexGrid p_Grid,string sColResult,string[] sCol,string[] sMark,int n,string p_Format )
		{
			string sChar="";
			string sResult="";
			ClsExpressDeal newExpressDeal= new ClsExpressDeal();
			for (int i=0;i<n+1;i++)
			{
				if (sCol[i]!=null)
				{
					if (sCol[i].ToLower().IndexOf("c")!=-1)//把表达式中的c替换成空格
					{
						sCol[i]=p_Grid.GetCellText(p_Grid.Row,int.Parse(sCol[i].ToLower().Replace("c","").Trim()));
					}
					sChar=sChar+sCol[i].ToString()+sMark[i];
				}
			}

			try
			{
				if (sChar.IndexOf("&")!=-1)
				{       
					sResult=newExpressDeal.CharAddChar(sChar);
				}
				else
				{
					sResult=newExpressDeal.SpiltExpression(sChar);
				}

				p_Grid.SetCellText(p_Grid.Row,int.Parse(sColResult),sResult.ToString());
			}
			catch
			{
			
			}

		}
		public void DoComputeCell(TextBox [] p_ArrCell,string sColResult,string[] sCol,string[] sMark,int n,string p_Format )
		{
			string sChar="";
			string sResult="";
			ClsExpressDeal newExpressDeal= new ClsExpressDeal();
			for (int i=0;i<n+1;i++)
			{
				if (sCol[i]!=null)
				{
					if (sCol[i].ToLower().IndexOf("c")!=-1)//把表达式中的c替换成空格
					{
						sCol[i]=p_ArrCell[int.Parse(sCol[i].ToLower().Replace("c","").Trim())].Text ;
					}
					sChar=sChar+sCol[i].ToString()+sMark[i];
				}
			}

			try
			{
				if (sChar.IndexOf("&")!=-1)
				{       
					sResult=newExpressDeal.CharAddChar(sChar);
				}
				else
				{
					sResult=newExpressDeal.SpiltExpression(sChar);
				}

				p_ArrCell[int.Parse(sColResult)].Text =sResult.ToString();
			}
			catch
			{
			
			}

		}


		/// <summary>
		/// 小写金额转换到大写金额
		/// </summary>
		public string SmallToBig(string p_Money)
				{
					string sResult="";
					string sSql="SELECT dbo.ChangeBigSmall("+p_Money+")";

					System.Data.DataSet dst = new System.Data.DataSet();
					dst= AdoDB.GetDataSet(sSql);
					if (dst.Tables[0].Rows.Count>0)
					{
						System.Data.DataRow dr = dst.Tables[0].Rows[0];
						if (dr!=null)
						{
							sResult=dr[0].ToString();
						}
					}  
					return sResult;
				}


		/// <summary>
		/// 在ComboBox控件中搜索字符串(任意摸湖)
		/// </summary>
		/// <param name="CboReceiptNo"></param>
		public void ComboListSearch(ComboBox CboReceiptNo)
		{
			int l =CboReceiptNo.Items.Count  - 1 ;
			string Search;
			int SearchLen ;
			if (CboReceiptNo.Text != "") 
			{
				Search = CboReceiptNo.Text.ToLower();
			}
			else
			{
				return;
			}
			SearchLen = Search.Length ;
			for (int i=0;i<l;i++)
			{
				//	任意摸湖
				if (CboReceiptNo.Items[i].ToString().CompareTo(Search)>=1)
				{
					CboReceiptNo.SelectedIndex = i;
					break;
				}
			}
		}
		/// <summary>
		/// 工具条外观样式  p_Type=true 带文字显示   p_Type=false不带文字显示 只有图标
		/// </summary>
		/// <param name="p_Type"></param>
		public void ToolBarType(System.Windows.Forms.ToolBar p_Toolbar ,bool p_Type)
		{
			int j=p_Toolbar.Buttons.Count ;
			if (p_Type==true)
			{
				for (int i=0;i<j;i++)
				{
					p_Toolbar.Buttons[i].Text=p_Toolbar.Buttons[i].Tag.ToString();  
				}
			}
			else
			{
				for (int i=0;i<j;i++)
				{
					p_Toolbar.Buttons[i].Text="";  
				}

			}
		}


		protected virtual void FindReceipt(string p_Item,string p_ReceiptNO)
		{
//			if (p_Item=="") {return ;}
//			if (p_ReceiptNO=="") {return ;}
//			Form f=new Form();
//			string strFormName ="";  //JXC_MIS.UserTier.ToolForm.frmReceiptSetup
//			System.Data.DataSet dst = new System.Data.DataSet();
//			ClsDataBaseAccess AdoDB=new ClsDataBaseAccess();
//			dst =AdoDB.GetDataSet("SELECT fcLoadFormName FROM S_MenuItem  Where fcMenuCaption='"+p_Item+"'");
//			int rs=dst.Tables[0].Rows.Count ;
//			System.Data.DataRow dr =null;
//			if (rs>0)
//			{
//				dr = dst.Tables[0].Rows[0];
//				strFormName =dr[0].ToString();
//			}
//			if (strFormName=="")
//			{
//				MessageBox.Show("没有找到可运行的窗体！", "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
//				return;
//			}
//			f=(Form)InitData.LoadForm(strFormName);
////			f.MdiParent = this;
//			f.Text= p_Item;
//			f.Show();
////			f.InitReceiptData(p_ReceiptNO);



		}











		/// <summary>
		/// 计算指定数组列的合计
		/// </summary>
//		public string[]  GetArrColSum(string [,] p_ArrGrid, string p_ColsNo)
//		{
//			int rs=p_ArrGrid.GetUpperBound(0)+1;
//			int cs=p_ArrGrid.GetUpperBound(1)+1;
//			string[] StrColCount =null;
//			double sum ;
//			StrColCount =p_ColsNo.Split('|');
//
//			//'计算合计
//			//'计算指定列的合计
//			int ColCounts=StrColCount.Length ;
//			for (int i = 0; i<ColCounts;i++)
//			{
//				sum = 0 ;
//				for (int j = 0;j< rs;j++)
//				{
//					sum = sum + double.Parse(p_ArrGrid[j, int.Parse(StrColCount[i])]);
//				}
//					p_ArrGrid[rs-1, int.Parse(StrColCount[i])] = sum.ToString() ;
//			}
//
//
//		}














//		//设置列宽 '设置标题
//		public void SetInterface1(MyGrid p_Grid,string p_Format,string p_Width,bool p_GridStyle,bool p_BorderStyle)        
//		{
//			string [] ArrSplit = null; //     临时数组变量
//			string [] ArrSplit1 = null; //     临时数组变量
//			string DefaultValue=null;
//			int cs ;
//			int rs;
//			if (p_Format==null || p_Format=="")
//			{
//				p_Grid.Visible =false;
//				return;
//			}
//
//			p_Grid.GridStyle=p_GridStyle;
//			p_Grid.BorderStyle=p_BorderStyle;
//	
//			//'设置行数，列数
//			ArrSplit = p_Width.Split(',');
//			cs=ArrSplit.Length;				//总列数
//			//		    string[] sArray1=s.Split(new char[3]{'c','d','e'});使用多个字符进行分割
//			ArrSplit = p_Format.Split('$');
//			rs=ArrSplit.Length;				 //总行数
//			p_Grid.Rows =rs    ;			//设置行数
//			p_Grid.Cols = cs ;    //      '设置列数 总列数/总行数取整 正好是列数
//			//'设置列宽
//			p_Grid.SetCellWidth =p_Width; 
//			p_Grid.RowHeightMin =22;
//			p_Grid.ShowGrid() ;
//			p_Grid.GridSize() ;
//			try
//				{
//			//'设置标题
//			ArrSplit = p_Format.Split('|'); 
//			int i=0;
//			int j=0;
//			string ReadText;
//			string ReadText1;
//			string ReadTag="";
//			for (int r=0;r<rs;r++)
//			{
//
//					for (int c=0;c<cs;c++)
//					{
//						ReadText=ArrSplit[i];
//						//分析 [0对齐方式(^,<,>,$);1默认值; 2是否编辑(T,F);3参照类型(0,1,2,3,4,5);4参照数据源(连接数据表SQL语句);5是否保存;6是否代码转换{表名，代码字段，名称字段};7是否可以为空(T,F)]
//						p_Grid.GridCell(r,c).Tag =null;
//
//						ArrSplit1=ReadText.Split(';'); 
//						j=ArrSplit1.Length ;
//						if (j==1 && ArrSplit1[0].Trim()!="")//解析 
//						{
//							ReadText1=ArrSplit1[0];
//
//							//'换行标志$
//							if (ReadText1.Trim()=="$" || ReadText1.Trim()=="" ||  ReadText1.Trim()=="^"|| ReadText1.Trim()=="<"|| ReadText1.Trim()==">")
//							{
//								//不复任何值
//							}
//							else
//							{
//								p_Grid.CellText(r,c,ArrSplit1[0]);
//							}
//
//
//						}
//						if (j>0 && ArrSplit1[0].Trim()!="")//解析 0对齐方式(^,<,>,$)
//						{
//							p_Grid.GridCell(r,c).Tag ="";
//							ReadText1=ArrSplit1[0];
//
//							//'换行标志$
//							if (ReadText1.Trim()=="$" || ReadText1.Trim()=="")
//							{
//								//不复任何值
//							}
//							else
//							{
//								//字符串的缺省对齐方式。单元格的内容左、居中对齐。
//								//if (String.Compare(ReadText.Substring(0, 1), "^") > 0)
//								//	ReadText=ReadText.Substring(1,ReadText.Length-1);
//								if (ReadText1.Trim() =="^") //单元格的内容居中、居中对齐。
//								{
//									p_Grid.GridCell(r,c).TextAlign=System.Windows.Forms.HorizontalAlignment.Center ;  
//								}
//								if (ReadText1.Trim() =="<")//单元格的内容左、居中对齐。
//								{
//									p_Grid.GridCell(r,c).TextAlign=System.Windows.Forms.HorizontalAlignment.Left ;  
//								}			
//								if (ReadText1.Trim() ==">")//数值的缺省对齐方式。单元格的内容右、居中对齐。
//								{
//									p_Grid.GridCell(r,c).TextAlign=System.Windows.Forms.HorizontalAlignment.Right;  
//								}	
//										
//							}
//						}
//						if (j>1 && ArrSplit1[1].Trim()!="")//解析 1默认值
//						{
//							ReadText1=ArrSplit1[1];
//							DefaultValue=ReadText1; //保存默认缺省值
//							if (ReadText1.Trim()!="")
//							{
//								p_Grid.CellText(r,c,ReadText1);
//							}
//                        
//						}
//						if (j>2 && ArrSplit1[2].Trim()!="")//解析 2是否编辑(T,F)
//						{
//							ReadText1=ArrSplit1[2];
//							if (ReadText1=="T")
//							{
//								p_Grid.GridCell(r,c).ReadOnly =true;
//							}
//						}
//						if (j>3 && ArrSplit1[3].Trim()!="")//解析 3参照类型(0,1,2,3,4,5)
//						{
//							ReadText1=ArrSplit1[3];
//							ReadTag=DefaultValue+";"+ReadText1.Trim();
//							p_Grid.GridCell(r,c).Tag =ReadTag;
//
//						}
//						if (j>4 && ArrSplit1[4].Trim()!="")//解析 3参照数据源(0,1,2,3,4,5)
//						{
//							ReadText1=ArrSplit1[4];
//							ReadTag=ReadTag+";"+ReadText1.Trim();
//							p_Grid.GridCell(r,c).Tag =ReadTag;
//						
//						}
//						if (j>5 && ArrSplit1[5].Trim()!="")//解析 4是否保存(True,False)
//						{
//							ReadText1=ArrSplit1[5];
//							ReadTag=ReadTag+";"+ReadText1.Trim();
//							p_Grid.GridCell(r,c).Tag =ReadTag;					}
//						if (j>6 && ArrSplit1[6].Trim()!="")//解析 5是否代码转换{表名，代码字段，名称字段}
//						{
//							ReadText1=ArrSplit1[6];
//							ReadTag=ReadTag+";"+ReadText1.Trim();
//							p_Grid.GridCell(r,c).Tag =ReadTag;
//						}
//						if (j>7 && ArrSplit1[7].Trim()!="")//解析 7数据保存时数据验证（0或空=可以为空，1=不为空，2=日期验证，3=数值验证)
//						{
//							ReadText1=ArrSplit1[7];
//							ReadTag=ReadTag+";"+ReadText1.Trim();
//							p_Grid.GridCell(r,c).Tag =ReadTag;
//						}
//
//						i++;
//					}
//				
//			}
//		}
//				catch
//				{
////				return;
//				}
//
//		}
////
//		/// <summary>
//		/// 功能： 在报表窗体中前、后、首、末单击事件  (通用)
//		/// </summary>
//		public void ReceiptPageMove(object p_Form,System.Windows.Forms.ComboBox CboNo)
//		{
//			try
//			{
//			
//				//没有数据记录
//				if (CboNo.SelectedIndex <= 0 )
//				{
//					p_Form.t_First.Enabled =false;
//					p_Form.t_Up.Enabled =false;
//					p_Form.t_Down.Enabled =false;
//					p_Form.t_Last.Enabled =false;
//					return;
//				}
//				//判断记录首尾位置,控制是否按钮可用
//				if (CboNo.SelectedIndex > 0 && CboNo.SelectedIndex < CboNo.Items.Count -1 )
//				{
//					p_Form.t_First.Enabled =true;
//					p_Form.t_Up.Enabled =true;
//					p_Form.t_Down.Enabled =true;
//					p_Form.t_Last.Enabled =true;
//					return;
//				}
//				if (CboNo.SelectedIndex == 0 )
//				{
//					p_Form.t_First.Enabled =false;
//					p_Form.t_Up.Enabled =false;
//					p_Form.t_Down.Enabled =true;
//					p_Form.t_Last.Enabled =true;
//					return;
//				}
//				if (CboNo.SelectedIndex == CboNo.Items.Count -1 )
//				{
//					p_Form.t_First.Enabled =true;
//					p_Form.t_Up.Enabled =true;
//					p_Form.t_Down.Enabled =false;
//					p_Form.t_Last.Enabled =false;
//					return;
//				}
//
//				if (CboNo.Items.Count <= 0 )
//				{
//					p_Form.t_First.Enabled =false;
//					p_Form.t_Up.Enabled =false;
//					p_Form.t_Down.Enabled =true;
//					p_Form.t_Last.Enabled =false;
//					return;
//				}
//
//			}
//			catch
//			{
//			
//			}
//
//		}











	}
}
