using System; using System.Collections.Generic; using System.Linq; using System.Text; using Infragistics.Win.UltraWinGrid; using System.Drawing; using System.Collections; using Infragistics.Win.UltraWinEditors; using System.Data; using Core.Mes.Client.Comm.Server; using CoreFS.CA06; using Infragistics.Win.UltraWinMaskedEdit; using Infragistics.Win; using System.Text.RegularExpressions; using System.Speech.Synthesis; namespace Core.StlMes.Client.PipeLeaveFactory.Tool { public static class BaseHelper { /// /// UltraGrid可读 /// /// UltraGrid /// 可编辑列 public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys) { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } } } /// /// UltraGrid可读 /// /// UltraGrid /// 可编辑列 public static void setOtherColumnReadOnlyN(UltraGrid ugr, string[] keys) { keys.ToArray(); foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } } foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[1].Columns) { if (!keys.Contains(ugc.Key)) { ugc.CellActivation = Activation.ActivateOnly; } } } /// /// UltraGrid激活某行 /// /// UltraGrid /// 列名 /// 对应的值 public static void UltraGridLocation(UltraGrid ug, String[] keys, String[] values) { if (ug.Rows.Count == 0) { return; } if (keys.Length == 0 || values.Length == 0 || values.Length != keys.Length) { return; } foreach (UltraGridRow ugr in ug.Rows) { Boolean flag = true; for (int i = 0; i < keys.Length; i++) { if (!ugr.Cells[keys[i]].Value.ToString().Equals(values[i])) { flag = false; } } if (flag == true) { ugr.Activate(); return; } } } /// /// 设置列字段显示位置在右 /// /// UltraGrid /// 要设置的列 public static void InitCellPosition(UltraGrid ug, string[] columnsKeys) { columnsKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (columnsKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } } /// /// 设置列字段显示位置在右 /// /// UltraGrid /// 要设置的列 public static void InitCellPosition(UltraGrid ug, string[] columnsKeys, string[] columnsChildKeys) { columnsKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (columnsKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } if (columnsChildKeys.Length > 0) { columnsChildKeys.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[1].Columns) { if (columnsChildKeys.Contains(ugc.Key.ToString())) { ugc.CellAppearance.TextHAlign = Infragistics.Win.HAlign.Right; } } } } /// /// 列求和 /// /// UltraGrid /// 列数组 public static void GridColumnSum(UltraGrid ug, string[] columnKeys, string[] descritions) { if (columnKeys.Length == 0 || descritions.Length != columnKeys.Length) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0}"+ descritions[i]; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } /// /// 列求和重量 /// /// UltraGrid /// 列数组(重量) public static void GridColumnSum(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0 ) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0:N3}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } /// /// 列求和支数 /// /// UltraGrid /// 列数组(支) public static void GridColumnCount(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0:N0}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } /// /// 列求和长度 /// /// UltraGrid /// 列数组(长度) public static void GridColumnCountLen(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0) { return; } for (int i = 0; i < columnKeys.Length; i++) { SummarySettings summary = ug.DisplayLayout.Bands[0].Summaries.Add(SummaryType.Sum, ug.DisplayLayout.Bands[0].Columns[columnKeys[i]], SummaryPosition.UseSummaryPositionColumn); summary.DisplayFormat = "{0:N3}"; summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right; } } /// /// 设置UltraGrid行颜色 /// /// UltraGrid /// 列 /// 值 /// 颜色 public static void SetUltraGridRowColor(UltraGrid ug, string[] columnKeys, string[] values, Color color) { if (ug.Rows.Count == 0 || columnKeys.Length == 0 || values.Length == 0 || color == null || values.Length != columnKeys.Length) { return; } foreach (UltraGridRow ugr in ug.Rows) { Boolean flag = true; for (int i = 0; i < columnKeys.Length; i++) { if (!ugr.Cells[columnKeys[i]].Value.ToString().Equals(values[i])) { flag = false; } } if (flag) { ugr.Appearance.BackColor = color; } } } /// /// 合并单元格 /// /// /// public static void MergedCell(UltraGrid ug, string[] columnKeys) { if (columnKeys.Length == 0) { return; } ug.DisplayLayout.Override.MergedCellStyle = MergedCellStyle.Never; for (int i = 0; i < columnKeys.Length; i++) { ug.DisplayLayout.Bands[0].Columns[columnKeys[i]].MergedCellStyle = MergedCellStyle.Always; } } /// /// 销售组织权限 /// /// 数据权限 /// /// 字符串数组 public static string[] InitPermissions(string[] validDataPurviewIds, OpeBase ob) { string[] arr = null; DataTable dt = ServerHelper.GetData("com.steering.pss.ydm.base.WarehousePermissions.getSalgPermissions", new object[] { validDataPurviewIds }, ob); if (dt != null && dt.Rows.Count > 0) { arr = new string[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { arr[i] = dt.Rows[i][0].ToString(); } } return arr; } /// /// 初始年份 /// /// public static void InitYear(UltraComboEditor uce) { DataTable dtYear = new DataTable(); dtYear.Columns.Add("YEAR"); for (int i = 2000; i < 2200; i++) { DataRow dr = dtYear.NewRow(); dr["YEAR"] = i.ToString(); dtYear.Rows.Add(dr); } uce.DataSource = dtYear; uce.DisplayMember = "YEAR"; uce.ValueMember = "YEAR"; } /// /// 初始月份 /// /// public static void InitMonth(UltraComboEditor uce) { DataTable dtMonth = new DataTable(); dtMonth.Columns.Add("MONTH"); for (int i = 1; i < 13; i++) { DataRow dr = dtMonth.NewRow(); dr["MONTH"] = string.Format("{0:00}", i); dtMonth.Rows.Add(dr); } uce.DataSource = dtMonth; uce.DisplayMember = "MONTH"; uce.ValueMember = "MONTH"; } /// /// 订货单位(销售组织权限) /// /// /// public static void InitOrderUnit(UltraComboEditor uce, string[] jurisdictions, OpeBase ob) { if (jurisdictions.Length == 0) { uce.DataSource = null; return; } DataTable dt = ServerHelper.GetData("com.steering.pss.ydm.base.WarehousePermissions.getOrderUnitBySalg", new object[] { jurisdictions }, ob); uce.DataSource = dt; uce.DisplayMember = "CUSTOMER_NM"; uce.ValueMember = "CUSTOMER_NO"; } /// /// 收货单位(销售组织权限) /// /// /// public static void InitReceivingUnit(UltraComboEditor uce, string[] jurisdictions, OpeBase ob) { if (jurisdictions.Length == 0) { uce.DataSource = null; return; } DataTable dt = ServerHelper.GetData("com.steering.pss.ydm.base.WarehousePermissions.getReceivingUnitBySalg", new object[] { jurisdictions }, ob); uce.DataSource = dt; uce.DisplayMember = "CUSTOMER_NM"; uce.ValueMember = "CUSTOMER_NO"; } /// /// 设置ULTRAGIRD列的颜色 /// /// ultragrid /// 列Key /// 颜色 public static void setUltraGridColumnColor(UltraGrid ug, string[] arr, Color color) { if (arr == null || arr.Length == 0 || ug == null) { return; } arr.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (arr.Contains(ugc.Key.ToString())) { ugc.CellAppearance.BackColor = color; } } } /// /// 设置列显示位数重量 /// /// /// public static void setUltraGridColumnMaxInput(UltraGrid ug, string[] arr) { if (ug == null || arr == null || arr.Length == 0) { return; } arr.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (arr.Contains(ugc.Key.ToString())) { ugc.MaskDisplayMode = MaskMode.IncludeLiterals; ugc.MaskInput = "{LOC}n,nnn,nnn.nnn"; } } } /// /// 设置列显示位数长度 /// /// /// public static void setUltraGridColumnMaxInputLen(UltraGrid ug, string[] arr) { if (ug == null || arr == null || arr.Length == 0) { return; } arr.ToArray(); foreach (UltraGridColumn ugc in ug.DisplayLayout.Bands[0].Columns) { if (arr.Contains(ugc.Key.ToString())) { ugc.MaskDisplayMode = MaskMode.IncludeLiterals; ugc.MaskInput = "{LOC}n,nnn,nnn.nnn"; } } } /// /// 过滤 /// /// ultraGrid /// true 显示,false 隐藏 public static void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter) { try { if (bAllowFilter) { if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow) myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow; for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++) { if (myGrid1.DisplayLayout.Bands[i].CardView) continue; for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++) { try { if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden && myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly) myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True; } catch { } } } } else { if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons) myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons; for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++) { if (myGrid1.DisplayLayout.Bands[i].CardView) continue; try { myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters(); } catch { } for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++) { try { myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; } catch { } } } } } catch { } } /// /// 获取指定的料位号信息 /// /// 快速索引码,参数数组 /// 界面OB对象 /// public static DataTable getLocationInfo(ArrayList sortCode, OpeBase ob) { return ServerHelper.GetData("com.steering.pss.ydm.pipemanage.PipeManageClassInfo.queryLocation", new object[] { sortCode }, ob); } /// /// 绑定指定的目标仓库号 /// /// 快速索引码,参数数组 /// 需填充的控件 /// 界面OB对象 public static void BindLocationInfo(ArrayList sortCode, UltraComboEditor cmb, OpeBase ob) { DataTable table = getLocationInfo(sortCode, ob); cmb.DataSource = table; cmb.ValueMember = "LOCATION_NO"; cmb.DisplayMember = "LOCATION_NAME"; SetComboItemHeight(cmb); } /// /// 设置UltraComboEditor中的中文和非中文统一高度。 /// /// public static void SetComboItemHeight(UltraComboEditor cmb) { cmb.Update(); foreach (ValueListItem item in cmb.Items) { if (Regex.IsMatch(item.DisplayText, @"[\u4e00-\u9fa5]+")) { item.Appearance.FontData.SizeInPoints = 9.0F; } else { item.Appearance.FontData.SizeInPoints = 10.5F; } } } public static void Speak(this string msg) { SpeechSynthesizer voice = new SpeechSynthesizer { Rate = 1, Volume = 100 }; voice.SpeakCompleted += (sender, args) => voice.Dispose(); //设置语速,[-10,10] //设置音量,[0,100] voice.SpeakAsync(msg); } } }