namespace Yw.WinFrmUI.Phart
{
public partial class PumpVariableSpeedInfoCtrl : DevExpress.XtraEditors.XtraUserControl
{
public PumpVariableSpeedInfoCtrl()
{
InitializeComponent();
this.gridView1.SetNormalEditView();
this.repColor.ColorChanged += RepColor_ColorChanged;
this.repColor.ColorAlignment = DevExpress.Utils.HorzAlignment.Center;
this.repColor.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
this.repColor.ButtonsStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
}
///
/// 设置曲线
///
public event Action SetEvent;
///
/// 设置曲线信息
///
public event Action SetInfoEvent;
///
/// 设置设计点
///
public event Action SetDesignPointEvent;
private List _all_binding_list = null;
public void SetBindingData(List vm_list, Yw.Geometry.Point2d design_pt = null)
{
_all_binding_list = new List();
if (vm_list != null && vm_list.Any())
{
for (int i = 0; i < vm_list.Count; i++)
{
var item = vm_list[i];
var vm = new PumpVariableSpeedInfoViewModel();
vm.Id = item.Id;
vm.Name = item.Name;
vm.Color = item.Color;
vm.IsBp = item.IsBp;
vm.RatedSpeed = item.RatedSpeed;
vm.CurrentSpeed = item.CurrentSpeed;
vm.CurrentHz = Math.Round(item.CurrentSpeed / item.RatedSpeed * 50, 2);
vm.Qh = new Geometry.CubicSpline2d(item.Qh);
vm.Qe = new Geometry.CubicSpline2d(item.Qe);
vm.Qp = new Geometry.CubicSpline2d(item.Qp);
vm.ExtendRatio = 100;
vm.Calc();
_all_binding_list.Add(vm);
}
}
this.txtDesignQ.EditValue = design_pt?.X;
this.txtDesignH.EditValue = design_pt?.Y;
this.pumpSerialParallelInfoViewModelBindingSource.DataSource = _all_binding_list;
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
this.gridView1.BestFitColumns();
}
public void SetDesignPoint(Yw.Geometry.Point2d design_pt = null)
{
this.txtDesignQ.EditValue = design_pt?.X;
this.txtDesignH.EditValue = design_pt?.Y;
}
#region Color
private List _color_array = new List()
{
Color.Red, Color.Blue, Color.Green,Color.DodgerBlue,
Color.Fuchsia, Color.MidnightBlue, Color.Maroon, Color.Aquamarine,
Color.Bisque,Color.BurlyWood
};
///
/// 获取随机颜色
///
///
private Color GetRandomColor(int count)
{
if (count < _color_array.Count)
{
return _color_array[count];
}
var _random = new Random();
int r = _random.Next(1, 256);
int g = _random.Next(1, 256);
int b = _random.Next(1, 256);
return Color.FromArgb(r, g, b);
}
#endregion
//颜色变换
private void RepColor_ColorChanged(object sender, EventArgs e)
{
if (this.gridView1.GetCurrentViewModel(_all_binding_list) is not PumpVariableSpeedInfoViewModel vm)
return;
vm.Color = (sender as DevExpress.XtraEditors.ColorEdit).Color;
this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color);
}
private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e)
{
//if (this.gridView1.FocusedColumn != this.colName)
//{
// var vm = this.gridView1.GetFocusedRow() as PumpVariableSpeedInfoViewModel;
// if (string.IsNullOrEmpty(vm.Name))
// {
// e.Cancel = true;
// }
//}
//if (this.gridView1.FocusedColumn == this.colCurrentHz)
//{
// var vm = this.gridView1.GetFocusedRow() as PumpVariableSpeedInfoViewModel;
// if (vm.CurrentHz < 10 || vm.CurrentHz > 50)
// {
// e.Cancel = true;
// }
//}
//else if (this.gridView1.FocusedColumn == this.colExtendRatio)
//{
// var vm = this.gridView1.GetFocusedRow() as PumpVariableSpeedInfoViewModel;
// if (vm.ExtendRatio<80|| vm.ExtendRatio>150)
// {
// e.Cancel = true;
// }
//}
}
//值变换
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (e.Column == this.colName)
{
var vm = this.gridView1.GetRow(e.RowHandle) as PumpVariableSpeedInfoViewModel;
this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color);
}
else
if (e.Column == this.colCurrentHz)
{
var vm = this.gridView1.GetRow(e.RowHandle) as PumpVariableSpeedInfoViewModel;
if (vm.CurrentHz < 10 || vm.CurrentHz > 50)
{
return;
}
vm.Calc();
this.SetEvent?.Invoke(vm.Id, vm.QhCalc, vm.QeCalc, vm.QpCalc);
}
else if (e.Column == this.colExtendRatio)
{
var vm = this.gridView1.GetRow(e.RowHandle) as PumpVariableSpeedInfoViewModel;
vm.Calc();
this.SetEvent?.Invoke(vm.Id, vm.QhCalc, vm.QeCalc, vm.QpCalc);
}
}
///
/// 设置查询信息
///
///
///
public void SetQueryInfo(string id, PumpGroupPt query_pt)
{
if (query_pt == null)
return;
if (_all_binding_list == null || !_all_binding_list.Any())
return;
var vm = _all_binding_list.Find(x => x.Id == id);
if (vm == null)
return;
vm.QueryQ = query_pt.Q > 0 ? $"{query_pt.Q:N1}" : string.Empty;
vm.QueryH = query_pt.H > 0 ? $"{query_pt.H:N1}" : string.Empty;
vm.QueryE = query_pt.E > 0 ? $"{query_pt.E:N1}" : string.Empty;
vm.QueryP = query_pt.P > 0 ? $"{query_pt.P:N1}" : string.Empty;
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
}
//设置设计点
private void btnSetDesignPoint_Click(object sender, EventArgs e)
{
if (!double.TryParse(this.txtDesignQ.Text, out double design_q))
return;
if (!double.TryParse(this.txtDesignH.Text, out double design_h))
return;
this.SetDesignPointEvent?.Invoke(design_q, design_h);
}
public List GetList()
{
if (_all_binding_list == null || !_all_binding_list.Any())
{
return default;
}
return _all_binding_list.Select(x => new PumpVariableSpeedInfoViewModel(x)).ToList();
}
}
}