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);
}
}
}