duheng
2024-10-14 3b08b5c772ffc0c10644c1aaa9f7b2447582c858
Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0
已修改7个文件
已添加3个文件
1865 ■■■■ 文件已修改
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.cs 574 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.designer.cs 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.resx 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/02-variable-speed/PumpVariableSpeedInfoCtrl.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSerialParallelInfoCtrl.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSingleSerialParallelInfoCtrl.Designer.cs 546 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSingleSerialParallelInfoCtrl.cs 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSingleSerialParallelInfoCtrl.resx 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/01-property/XhsProjectSimulationPropertyCtrl.cs
@@ -233,6 +233,14 @@
                    {
                        var pumpInfo = hydroInfo.Pumps?.Find(x => x.Code == parter.Code);
                        var input = AssetsMatchingParasHelper.Create(hydroInfo, pumpInfo);
                        if (input.DbId != string.Empty)
                        {
                            var detailDlg = new DetailInfo4DsDlg();
                            detailDlg.SetBindindData(input);
                            detailDlg.ShowDialog();
                        }
                        var dlg = new PumpSingleMatchingDlg();
                        dlg.SetBindingData(input);
                        dlg.ReloadDataEvent += (rhs) =>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.cs
@@ -1,4 +1,9 @@
namespace HStation.WinFrmUI
using DevExpress.CodeParser;
using HStation.WinFrmUI.PhartRelation;
using System;
using Yw.WinFrmUI.Phart;
namespace HStation.WinFrmUI
{
    public partial class PumpFullInfoCtrl : DevExpress.XtraEditors.XtraUserControl
    {
@@ -13,10 +18,113 @@
            this.navBarControlPara.ClientSizeChanged += new System.EventHandler(this.NavBarControlPara_ClientSizeChanged);
        }
        private PumpMatchingViewModel _pump_mathing_vm = null;
        public void SetBindingData(PumpMatchingViewModel pumpMatchingViewModel)
        {
            _pump_mathing_vm = pumpMatchingViewModel;
            pumpPropViewCtrl1.SetBindingData(pumpMatchingViewModel.DbId);
            if (long.TryParse(_pump_mathing_vm.DbId,out long pump_mian_id))
            {
                Init(pump_mian_id);
            }
        }
        private async void Init(long pump_main_id)
        {
            var pump_main = await new BLL.AssetsPumpMain().GetByID(pump_main_id);
            if (pump_main == null)
            {
                return;
            }
            var phart_list = await new BLL.XhsPumpMainPhartMappingExtensions().GetByPumpMainID(pump_main_id);
            if (phart_list == null || !phart_list.Any())
            {
                return;
            }
            var phart = phart_list.OrderBy(x => x.Importance).First();
            var diagram = phart.Diagram;
            if (diagram == null)
            {
                return;
            }
            var graph_list = diagram.GraphList;
            if (graph_list == null || !graph_list.Any())
            {
                return;
            }
            var graph_qh = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQH);
            var graph_qe = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQE);
            var graph_qp = graph_list.Find(x => x.GraphType == HStation.PhartRelation.eGraphType.PumpQP);
            if (graph_qh == null)
            {
                return;
            }
            List<Yw.Geometry.Point2d> points_qh = null, points_qe = null, points_qp = null;
            points_qh = PhartPerformCurveHelper.GetFeatPointList(graph_qh.GraphType, graph_qh.GeometryInfo, 12, null);
            if (graph_qe != null)
                points_qe = PhartPerformCurveHelper.GetFeatPointList(graph_qe.GraphType, graph_qe.GeometryInfo, 12, null);
            if (graph_qp != null)
                points_qp = PhartPerformCurveHelper.GetFeatPointList(graph_qp.GraphType, graph_qp.GeometryInfo, 12, null);
            var cubic_spline_qh = new Yw.Geometry.CubicSpline2d(points_qh);
            var cubic_spline_qe = new Yw.Geometry.CubicSpline2d(points_qe);
            var cubic_spline_qp = new Yw.Geometry.CubicSpline2d(points_qp);
            var design_pt = new Yw.Geometry.Point2d();
            design_pt.X = Math.Round(cubic_spline_qh.MaxX / 2);
            design_pt.Y = Math.Round(cubic_spline_qh.GetPointY(design_pt.X), 1);
            var disp_paras = diagram.DispParas;
            var is_calc_disp_paras = string.IsNullOrWhiteSpace(disp_paras);
            this.pumpPerformChart1.SetBindingData(cubic_spline_qh, cubic_spline_qe, cubic_spline_qp, disp_paras, is_calc_disp_paras);
            this.pumpPerformInfoCtrl1.SetDesignPoint(design_pt);
            var vm_vs = new Yw.WinFrmUI.Phart.PumpVariableSpeedViewModel();
            vm_vs.Id = phart.ID.ToString();
            vm_vs.Name = $"{pump_main.RatedSpeed}";
            //vm.IsBp = pump_mian.;
            vm_vs.RatedSpeed = pump_main.RatedSpeed;
            vm_vs.CurrentSpeed = pump_main.RatedSpeed;
            vm_vs.CurrentHz = 50;
            vm_vs.Qh = cubic_spline_qh;
            vm_vs.Qe = cubic_spline_qe;
            vm_vs.Qp = cubic_spline_qp;
            var vm_vs_info = new Yw.WinFrmUI.Phart.PumpVariableSpeedInfoViewModel(vm_vs);
            vm_vs_info.Color = Color.Black;
            vm_vs_info.IsDefault = true;
            this.pumpVariableSpeedInfoCtrl1.SetBindingData(vm_vs_info, design_pt);
            this.pumpVariableSpeedChart1.Add(vm_vs_info, design_pt);
            var vm_sp = new Yw.WinFrmUI.Phart.PumpSerialParallelViewModel();
            vm_sp.Id = phart.ID.ToString();
            vm_sp.Name = $"{pump_main.RatedSpeed}";
            //vm.IsBp = pump_mian.;
            vm_sp.RatedSpeed = pump_main.RatedSpeed;
            vm_sp.CurrentSpeed = pump_main.RatedSpeed;
            vm_sp.CurrentHz = 50;
            vm_sp.Qh = cubic_spline_qh;
            vm_sp.Qe = cubic_spline_qe;
            vm_sp.Qp = cubic_spline_qp;
            var vm_sp_info = new Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel(vm_sp);
            vm_sp_info.Color = GetRandomColor(0);
            this.pumpSingleSerialParallelInfoCtrl1.SetBindingData(vm_sp_info, design_pt);
            this.pumpSerialParallelChart1.Add(vm_sp_info, design_pt);
        }
        private void OnFrmLoad(object sender, EventArgs e)
        {
@@ -51,7 +159,403 @@
            //else if (this._m3dDispCtrlType == Model.e3dDispCtrlType.CAD_51JM)
            //{
            //}
            InitChart();
        }
        private void SetChart(PumpMatchingViewModel vm)
        {
            if (vm == null)
            {
                return;
            }
        }
        private void InitChart()
        {
            #region æ›²çº¿
            this.pumpPerformInfoCtrl1.SetDesignPointEvent += (q, h) =>
            {
                this.pumpPerformChart1.CalcDesignPointByQ(q, h);
            };
            this.pumpPerformChart1.OnCalcQueryPoint += (gropu_pt) =>
            {
                var vm_list = new List<Yw.WinFrmUI.Phart.PumpPointItmeViewModel>();
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "流量",
                    Value = $"{gropu_pt.Q:N1}",
                    Unit = "m³/h"
                });
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "扬程",
                    Value = $"{gropu_pt.H:N1}",
                    Unit = "m"
                });
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "效率",
                    Value = $"{gropu_pt.E:N1}",
                    Unit = "%"
                });
                vm_list.Add(new Yw.WinFrmUI.Phart.PumpPointItmeViewModel()
                {
                    Group = "查询点",
                    Name = "功率",
                    Value = $"{gropu_pt.P:N1}",
                    Unit = "kW"
                });
                this.pumpPerformInfoCtrl1.SetBindingData(vm_list);
            };
            #endregion
            #region å˜é€Ÿæ›²çº¿
            this.pumpVariableSpeedInfoCtrl1.SetEvent += (id, qh, qe, qp) =>
            {
                this.pumpVariableSpeedChart1.Set(id, qh, qe, qp);
                ResetSectPointGrid();
            };
            this.pumpVariableSpeedInfoCtrl1.SetInfoEvent += (id, name, color) =>
            {
                this.pumpVariableSpeedChart1.SetInfo(id, name, color);
                ResetSectPointGrid();
            };
            this.pumpVariableSpeedChart1.AddBySpeedEvent += () =>
            {
                AddBySpeed();
                ResetSectPointGrid();
            };
            this.pumpVariableSpeedChart1.AddByHzEvent += () =>
            {
                AddByHz();
                ResetSectPointGrid();
            };
            this.pumpVariableSpeedChart1.AddByPointEvent += () =>
            {
                AddByPoint();
                ResetSectPointGrid();
            };
            this.pumpVariableSpeedInfoCtrl1.SetDesignPointEvent += (q, h) =>
            {
                this.pumpVariableSpeedChart1.SetDesignPt(new Yw.Geometry.Point2d(q, h));
                ResetSectPointGrid();
            };
            this.pumpVariableSpeedChart1.OnCalcQueryPoint += (id, pt) =>
            {
                this.pumpVariableSpeedInfoCtrl1.SetQueryInfo(id, pt);
            };
            void ResetSectPointGrid()
            {
                var vm_list = this.pumpVariableSpeedChart1.GetList();
                this.pumpVariableSpeedInfoCtrl1.SetSectPoint(vm_list);
            }
            void AddBySpeed()
            {
                var list = this.pumpVariableSpeedInfoCtrl1.GetList();
                if (list == null || list.Count < 1)
                {
                    return;
                }
                var design_pt = this.pumpVariableSpeedInfoCtrl1.GetDesignPoint();
                var index = list.Count;
                var vm_def = list.First();
                var dlg = new SetValueDlg();
                dlg.SetBindingData(vm_def.RatedSpeed);
                dlg.VerifyValueChanged += (speed) =>
                {
                    var hz = Math.Round(speed / vm_def.RatedSpeed * 50, 1);
                    if (hz > 50 || hz < 10)
                    {
                        return false;
                    }
                    var vm = new PumpVariableSpeedInfoViewModel(vm_def);
                    vm.Id = Guid.NewGuid().ToString();
                    vm.Name = this.pumpVariableSpeedChart1.LineNameShowHz ? hz.ToString() : speed.ToString();
                    vm.Color = GetRandomColor(index);
                    vm.CurrentHz = hz;
                    vm.CurrentSpeed = speed;
                    vm.Calc();
                    this.pumpVariableSpeedInfoCtrl1.Add(vm);
                    this.pumpVariableSpeedChart1.Add(vm, design_pt);
                    return true;
                };
                dlg.ShowDialog();
            }
            void AddByHz()
            {
                var list = this.pumpVariableSpeedInfoCtrl1.GetList();
                if (list == null || list.Count < 1)
                {
                    return;
                }
                var design_pt = this.pumpVariableSpeedInfoCtrl1.GetDesignPoint();
                var index = list.Count;
                var vm_def = list.First();
                var dlg = new SetValueDlg();
                dlg.VerifyValueChanged += (hz) =>
                {
                    if (hz > 50 || hz < 10)
                    {
                        return false;
                    }
                    var speed = Math.Round(hz / 50 * vm_def.RatedSpeed);
                    var vm = new PumpVariableSpeedInfoViewModel(vm_def);
                    vm.Id = Guid.NewGuid().ToString();
                    vm.Name = this.pumpVariableSpeedChart1.LineNameShowHz ? hz.ToString() : speed.ToString();
                    vm.Color = GetRandomColor(index);
                    vm.CurrentHz = hz;
                    vm.CurrentSpeed = speed;
                    vm.Calc();
                    this.pumpVariableSpeedInfoCtrl1.Add(vm);
                    this.pumpVariableSpeedChart1.Add(vm, design_pt);
                    return true;
                };
                dlg.ShowDialog();
            }
            void AddByPoint()
            {
                var list = this.pumpVariableSpeedInfoCtrl1.GetList();
                if (list == null || list.Count < 1)
                {
                    return;
                }
                var index = list.Count;
                var vm_def = list.First();
                var design_pt = this.pumpVariableSpeedInfoCtrl1.GetDesignPoint();
                var dlg = new SetPointDlg();
                dlg.SetBindingData();
                dlg.VerifyValueChanged += (x, y) =>
                {
                    var pt = new Yw.Geometry.Point2d(x, y);
                    var speed = PumpCalcHelper.GetSimuValue(vm_def.Qh, pt, vm_def.RatedSpeed);
                    var hz = Math.Round(speed / vm_def.RatedSpeed * 50, 1);
                    if (hz > 50 || hz < 20)
                    {
                        return false;
                    }
                    var vm = new PumpVariableSpeedInfoViewModel(vm_def);
                    vm.Id = Guid.NewGuid().ToString();
                    vm.Name = this.pumpVariableSpeedChart1.LineNameShowHz ? hz.ToString() : speed.ToString();
                    vm.Color = GetRandomColor(index);
                    vm.CurrentHz = hz;
                    vm.CurrentSpeed = speed;
                    vm.Calc();
                    this.pumpVariableSpeedInfoCtrl1.Add(vm);
                    this.pumpVariableSpeedChart1.Add(vm, design_pt);
                    return true;
                };
                dlg.ShowDialog();
            }
            #endregion
            #region ä¸²å¹¶è”曲线
            string _serial_parallel_id = "serial_parallel";
            this.pumpSingleSerialParallelInfoCtrl1.SetEvent += (id, design_pt, is_parallel, qh, qe, qp) =>
            {
                this.pumpSerialParallelChart1.Set(id, qh, qe, qp);
                var list = this.pumpSingleSerialParallelInfoCtrl1.GetList();
                SetSerialParallel(list, design_pt, is_parallel);
            };
            this.pumpSingleSerialParallelInfoCtrl1.SetInfoEvent += (id, name, color) =>
            {
                this.pumpSerialParallelChart1.SetInfo(id, name, color);
            };
            this.pumpSingleSerialParallelInfoCtrl1.SetDesignPointEvent += (q, h) =>
            {
                this.pumpSerialParallelChart1.SetDesignPt(new Yw.Geometry.Point2d(q, h));
            };
            this.pumpSingleSerialParallelInfoCtrl1.ResetEvent += (type, count) =>
            {
                if (count<1)
                {
                    return;
                }
                var is_parallel = type == 0;
                var list = this.pumpSingleSerialParallelInfoCtrl1.GetList();
                var first = list.First();
                var new_list = new List<Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel>();
                for (int i = 0; i <count; i++)
                {
                    var vm = new Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel(first);
                    vm.Id = Guid.NewGuid().ToString();
                    vm.Color = GetRandomColor(i);
                    vm.CurrentSpeed = vm.RatedSpeed;
                    vm.CurrentHz = 50;
                    vm.Calc();
                    new_list.Add(vm);
                }
                var design_pt = this.pumpSingleSerialParallelInfoCtrl1.GetDesignPoint();
                this.pumpSingleSerialParallelInfoCtrl1.SetBindingData(new_list,design_pt);
                this.pumpSerialParallelChart1.Add(new_list, design_pt);
                SetSerialParallel(new_list, design_pt, is_parallel);
            };
            this.pumpSerialParallelChart1.OnCalcQueryPoint += (id, pt) =>
            {
                this.pumpSingleSerialParallelInfoCtrl1.SetQueryInfo(id, pt);
            };
            string SetSerialParallel(List<Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel> list, Yw.Geometry.Point2d design_pt, bool is_parallel)
            {
                this.pumpSerialParallelChart1.Delete(_serial_parallel_id);
                if (list == null || !list.Any())
                {
                    return "无数据!";
                }
                if (list.Count<2)
                {
                    return "数据过少!";
                }
                var vm_serial_parallel = CalcSerialParallel(list, is_parallel);
                if (vm_serial_parallel == null)
                {
                    return "无法计算串并联曲线!";
                }
                var qh = vm_serial_parallel.Qh;
                var min_h = qh.GetPointY(qh.MinX);
                var max_h = qh.GetPointY(qh.MaxX);
                //if (design_pt != null)
                //{
                //    //if (design_pt.X > qh.MaxX || design_pt.X < qh.MinX)
                //    //{
                //    //    return "设计流量无效!";
                //    //}
                //    //if (design_pt.Y > max_h * 2 || design_pt.Y < min_h * 0.5)
                //    //{
                //    //    return "设计扬程无效!";
                //    //}
                //}
                //else
                //{
                //    var design_q = qh.MaxX / 2;
                //    var design_h = qh.GetPointY(design_q);
                //    design_q = Math.Round(design_q, 1);
                //    design_h = Math.Round(design_h, 1);
                //    design_pt = new Yw.Geometry.Point2d(design_q, design_h);
                //    this.pumpSingleSerialParallelInfoCtrl1.SetDesignPoint(design_pt);
                //}
                this.pumpSerialParallelChart1.Add(vm_serial_parallel, design_pt);
                return string.Empty;
            }
            Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel CalcSerialParallel(List<Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel> list, bool is_parallel)
            {
                if (list == null || !list.Any())
                {
                    return default;
                }
                var calc_bol = false;
                var line_name = "";
                List<Yw.Geometry.Point2d> calc_pt_qh_list;
                List<Yw.Geometry.Point2d> calc_pt_qe_list;
                List<Yw.Geometry.Point2d> calc_pt_qp_list;
                var helper = new Yw.WinFrmUI.Phart.PumpParallelConnectionHelper();
                list.ForEach(x => helper.Add(x.QhCalc, x.QpCalc));
                if (is_parallel)
                {
                    line_name = "并联曲线";
                    calc_bol = helper.CalculateParallel(out calc_pt_qh_list, out calc_pt_qe_list, out calc_pt_qp_list);
                }
                else
                {
                    line_name = "串联曲线";
                    calc_bol = helper.CalculateSeries(out calc_pt_qh_list, out calc_pt_qe_list, out calc_pt_qp_list);
                }
                if (!calc_bol)
                {
                    return default;
                }
                var vm_sp = new Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel();
                vm_sp.Id = _serial_parallel_id;
                vm_sp.Name = line_name;
                vm_sp.Qh = new Yw.Geometry.CubicSpline2d(calc_pt_qh_list);
                vm_sp.Qe = new Yw.Geometry.CubicSpline2d(calc_pt_qe_list);
                vm_sp.Qp = new Yw.Geometry.CubicSpline2d(calc_pt_qp_list);
                vm_sp.QhCalc = vm_sp.Qh;
                vm_sp.QeCalc = vm_sp.Qe;
                vm_sp.QpCalc = vm_sp.Qp;
                vm_sp.Color = Color.Black;
                vm_sp.IsBp = true;
                vm_sp.IsDefault = true;
                return vm_sp;
            }
            #endregion
        }
        #region Color
        private List<Color> _color_array = new List<Color>()
        {
            Color.Red, Color.Blue, Color.Green,Color.DodgerBlue,
            Color.Fuchsia, Color.MidnightBlue,  Color.Maroon, Color.Aquamarine,
            Color.Bisque,Color.BurlyWood
        };
        /// <summary>
        /// èŽ·å–éšæœºé¢œè‰²
        /// </summary>
        /// <returns></returns>
        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
        #region èµ°é©¬ç¯æç¤º
@@ -134,6 +638,8 @@
        }
        #endregion èµ°é©¬ç¯æç¤º
        public void CloseFrm()
        {
@@ -264,44 +770,44 @@
        private void CalcBarHeight()
        {
            if (!navBarGroupPoint.Expanded)
                return;
            //if (!navBarGroupPoint.Expanded)
            //    return;
            int GroupTitleHeight = 55;//头部高度
            //int GroupTitleHeight = 55;//头部高度
            var height = this.Size.Height - 18;//18 : TAB å¤´éƒ¨é«˜åº¦
            //var height = this.Size.Height - 18;//18 : TAB å¤´éƒ¨é«˜åº¦
            if (navBarGroupPara.Expanded)
            {
                var grp_height = CalcGroupParaHeight();
                //if (row_count == 7)
                //{
                //    grp_height = 280;
                //}
                this.navBarGroupControlXPumpParas.Height = grp_height;
                this.navBarGroupPara.Expanded = true;
                this.navBarGroupPara.GroupClientHeight = grp_height;
                height = height - GroupTitleHeight - grp_height - 3;
            }
            else
            {
                height = height - GroupTitleHeight;
            }
            //if (navBarGroupPara.Expanded)
            //{
            //    var grp_height = CalcGroupParaHeight();
            //    //if (row_count == 7)
            //    //{
            //    //    grp_height = 280;
            //    //}
            //    this.navBarGroupControlXPumpParas.Height = grp_height;
            //    this.navBarGroupPara.Expanded = true;
            //    this.navBarGroupPara.GroupClientHeight = grp_height;
            //    height = height - GroupTitleHeight - grp_height - 3;
            //}
            //else
            //{
            //    height = height - GroupTitleHeight;
            //}
            if (navBarGroupJieZhi.Expanded)
            {
                height = height - 150;
            }
            else
            {
                height = height - GroupTitleHeight;
            }
            //if (navBarGroupJieZhi.Expanded)
            //{
            //    height = height - 150;
            //}
            //else
            //{
            //    height = height - GroupTitleHeight;
            //}
            if (height > 100)
            {//294, 393
                height = height - GroupTitleHeight;
                navBarGroupPoint.GroupClientHeight = height;
            }
            //if (height > 100)
            //{//294, 393
            //    height = height - GroupTitleHeight;
            //    navBarGroupPoint.GroupClientHeight = height;
            //}
        }
        #endregion è®¡ç®—展示面板高度
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.designer.cs
@@ -33,9 +33,12 @@
            xtraTabCtrlMain = new DevExpress.XtraTab.XtraTabControl();
            imageCollection1 = new DevExpress.Utils.ImageCollection(components);
            _tabPage性能曲线图1 = new DevExpress.XtraTab.XtraTabPage();
            pumpPerformChart1 = new Yw.WinFrmUI.Phart.PumpPerformChart();
            _tabPage产品属性1 = new DevExpress.XtraTab.XtraTabPage();
            _tabPage多速度曲线 = new DevExpress.XtraTab.XtraTabPage();
            pumpVariableSpeedChart1 = new Yw.WinFrmUI.Phart.PumpVariableSpeedChart();
            _tabPage串并联曲线 = new DevExpress.XtraTab.XtraTabPage();
            pumpSerialParallelChart1 = new Yw.WinFrmUI.Phart.PumpSerialParallelChart();
            _tabPage默认实物图2d = new DevExpress.XtraTab.XtraTabPage();
            _tabPage系统实物图2d = new DevExpress.XtraTab.XtraTabPage();
            _tabPage默认尺寸图2d = new DevExpress.XtraTab.XtraTabPage();
@@ -53,21 +56,23 @@
            imageCollection2 = new DevExpress.Utils.ImageCollection(components);
            tabPage基本参数 = new DevExpress.XtraTab.XtraTabPage();
            navBarControlPara = new DevExpress.XtraNavBar.NavBarControl();
            navBarGroupPara = new DevExpress.XtraNavBar.NavBarGroup();
            navBarGroupControlXPumpParas = new DevExpress.XtraNavBar.NavBarGroupControlContainer();
            navBarGroupControlPointParas = new DevExpress.XtraNavBar.NavBarGroupControlContainer();
            navBarGroupPoint = new DevExpress.XtraNavBar.NavBarGroup();
            pumpPerformInfoCtrl1 = new Yw.WinFrmUI.Phart.PumpPerformInfoCtrl();
            tabPage产品属性2 = new DevExpress.XtraTab.XtraTabPage();
            pumpPropViewCtrl1 = new PumpPropViewCtrl();
            _tabPage产品材料 = new DevExpress.XtraTab.XtraTabPage();
            splitContainerControlMaterial = new SplitContainerControl();
            _tabPage多速度曲线参数 = new DevExpress.XtraTab.XtraTabPage();
            pumpVariableSpeedInfoCtrl1 = new Yw.WinFrmUI.Phart.PumpVariableSpeedInfoCtrl();
            _tabPage串并联曲线参数 = new DevExpress.XtraTab.XtraTabPage();
            navBarGroupControlContainer6 = new DevExpress.XtraNavBar.NavBarGroupControlContainer();
            navBarGroupJieZhi = new DevExpress.XtraNavBar.NavBarGroup();
            pumpSingleSerialParallelInfoCtrl1 = new Yw.WinFrmUI.Phart.PumpSingleSerialParallelInfoCtrl();
            ((ISupportInitialize)xtraTabCtrlMain).BeginInit();
            xtraTabCtrlMain.SuspendLayout();
            ((ISupportInitialize)imageCollection1).BeginInit();
            _tabPage性能曲线图1.SuspendLayout();
            _tabPage多速度曲线.SuspendLayout();
            _tabPage串并联曲线.SuspendLayout();
            ((ISupportInitialize)splitContainerControl1).BeginInit();
            ((ISupportInitialize)splitContainerControl1.Panel1).BeginInit();
            splitContainerControl1.Panel1.SuspendLayout();
@@ -86,6 +91,8 @@
            ((ISupportInitialize)splitContainerControlMaterial.Panel1).BeginInit();
            ((ISupportInitialize)splitContainerControlMaterial.Panel2).BeginInit();
            splitContainerControlMaterial.SuspendLayout();
            _tabPage多速度曲线参数.SuspendLayout();
            _tabPage串并联曲线参数.SuspendLayout();
            SuspendLayout();
            // 
            // xtraTabCtrlMain
@@ -107,7 +114,7 @@
            xtraTabCtrlMain.Padding = new Padding(0, 5, 0, 0);
            xtraTabCtrlMain.PaintStyleName = "Skin";
            xtraTabCtrlMain.SelectedTabPage = _tabPage性能曲线图1;
            xtraTabCtrlMain.Size = new Size(668, 729);
            xtraTabCtrlMain.Size = new Size(663, 729);
            xtraTabCtrlMain.TabIndex = 10;
            xtraTabCtrlMain.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] { _tabPage性能曲线图1, _tabPage产品属性1, _tabPage多速度曲线, _tabPage串并联曲线, _tabPage默认实物图2d, _tabPage系统实物图2d, _tabPage默认尺寸图2d, _tabPage默认安装图2d, _tabPage系统安装图2d, _tabPage默认安装图3d, _tabPage默认结构图2d, _tabPage默认结构图3d, _tabPage电气图, _tabPage三维模型, _tabPage视频文件, _tabPage系列附件 });
            xtraTabCtrlMain.SelectedPageChanged += xtraTabCtrlMain_SelectedPageChanged;
@@ -133,116 +140,150 @@
            // 
            // _tabPage性能曲线图1
            // 
            _tabPage性能曲线图1.Controls.Add(pumpPerformChart1);
            _tabPage性能曲线图1.ImageOptions.ImageIndex = 10;
            _tabPage性能曲线图1.Margin = new Padding(0);
            _tabPage性能曲线图1.Name = "_tabPage性能曲线图1";
            _tabPage性能曲线图1.Size = new Size(543, 727);
            _tabPage性能曲线图1.Size = new Size(498, 727);
            _tabPage性能曲线图1.Text = "性能曲线图";
            //
            // pumpPerformChart1
            //
            pumpPerformChart1.DefinePointVisible = false;
            pumpPerformChart1.Dock = DockStyle.Fill;
            pumpPerformChart1.LineVisible = false;
            pumpPerformChart1.Location = new Point(0, 0);
            pumpPerformChart1.Name = "pumpPerformChart1";
            pumpPerformChart1.Size = new Size(498, 727);
            pumpPerformChart1.TabIndex = 0;
            // 
            // _tabPage产品属性1
            // 
            _tabPage产品属性1.ImageOptions.ImageIndex = 9;
            _tabPage产品属性1.Name = "_tabPage产品属性1";
            _tabPage产品属性1.PageVisible = false;
            _tabPage产品属性1.Size = new Size(543, 727);
            _tabPage产品属性1.Size = new Size(498, 727);
            _tabPage产品属性1.Text = "产品属性";
            // 
            // _tabPage多速度曲线
            // 
            _tabPage多速度曲线.Controls.Add(pumpVariableSpeedChart1);
            _tabPage多速度曲线.ImageOptions.ImageIndex = 7;
            _tabPage多速度曲线.Name = "_tabPage多速度曲线";
            _tabPage多速度曲线.Size = new Size(543, 727);
            _tabPage多速度曲线.Size = new Size(498, 727);
            _tabPage多速度曲线.Text = "多速度曲线";
            //
            // pumpVariableSpeedChart1
            //
            pumpVariableSpeedChart1.Dock = DockStyle.Fill;
            pumpVariableSpeedChart1.LineNameShowHz = false;
            pumpVariableSpeedChart1.LineNameVisible = true;
            pumpVariableSpeedChart1.LineVisible = false;
            pumpVariableSpeedChart1.Location = new Point(0, 0);
            pumpVariableSpeedChart1.Name = "pumpVariableSpeedChart1";
            pumpVariableSpeedChart1.Size = new Size(498, 727);
            pumpVariableSpeedChart1.TabIndex = 0;
            // 
            // _tabPage串并联曲线
            // 
            _tabPage串并联曲线.Controls.Add(pumpSerialParallelChart1);
            _tabPage串并联曲线.ImageOptions.ImageIndex = 6;
            _tabPage串并联曲线.Name = "_tabPage串并联曲线";
            _tabPage串并联曲线.Size = new Size(543, 727);
            _tabPage串并联曲线.Size = new Size(498, 727);
            _tabPage串并联曲线.Text = "串并联曲线";
            //
            // pumpSerialParallelChart1
            //
            pumpSerialParallelChart1.Dock = DockStyle.Fill;
            pumpSerialParallelChart1.LineNameVisible = true;
            pumpSerialParallelChart1.LineVisible = false;
            pumpSerialParallelChart1.Location = new Point(0, 0);
            pumpSerialParallelChart1.Name = "pumpSerialParallelChart1";
            pumpSerialParallelChart1.Size = new Size(498, 727);
            pumpSerialParallelChart1.TabIndex = 0;
            // 
            // _tabPage默认实物图2d
            // 
            _tabPage默认实物图2d.ImageOptions.ImageIndex = 5;
            _tabPage默认实物图2d.Name = "_tabPage默认实物图2d";
            _tabPage默认实物图2d.Size = new Size(543, 727);
            _tabPage默认实物图2d.Size = new Size(498, 727);
            _tabPage默认实物图2d.Text = "实物图";
            // 
            // _tabPage系统实物图2d
            // 
            _tabPage系统实物图2d.ImageOptions.ImageIndex = 5;
            _tabPage系统实物图2d.Name = "_tabPage系统实物图2d";
            _tabPage系统实物图2d.Size = new Size(543, 727);
            _tabPage系统实物图2d.Size = new Size(498, 727);
            _tabPage系统实物图2d.Text = "实物图(系统)";
            // 
            // _tabPage默认尺寸图2d
            // 
            _tabPage默认尺寸图2d.ImageOptions.ImageIndex = 4;
            _tabPage默认尺寸图2d.Name = "_tabPage默认尺寸图2d";
            _tabPage默认尺寸图2d.Size = new Size(543, 727);
            _tabPage默认尺寸图2d.Size = new Size(498, 727);
            _tabPage默认尺寸图2d.Text = "产品尺寸图";
            // 
            // _tabPage默认安装图2d
            // 
            _tabPage默认安装图2d.ImageOptions.ImageIndex = 3;
            _tabPage默认安装图2d.Name = "_tabPage默认安装图2d";
            _tabPage默认安装图2d.Size = new Size(543, 727);
            _tabPage默认安装图2d.Size = new Size(498, 727);
            _tabPage默认安装图2d.Text = "安装图";
            // 
            // _tabPage系统安装图2d
            // 
            _tabPage系统安装图2d.ImageOptions.ImageIndex = 3;
            _tabPage系统安装图2d.Name = "_tabPage系统安装图2d";
            _tabPage系统安装图2d.Size = new Size(543, 727);
            _tabPage系统安装图2d.Size = new Size(498, 727);
            _tabPage系统安装图2d.Text = "系统安装图";
            // 
            // _tabPage默认安装图3d
            // 
            _tabPage默认安装图3d.ImageOptions.ImageIndex = 3;
            _tabPage默认安装图3d.Name = "_tabPage默认安装图3d";
            _tabPage默认安装图3d.Size = new Size(543, 727);
            _tabPage默认安装图3d.Size = new Size(498, 727);
            _tabPage默认安装图3d.Text = "安装图(三维)";
            // 
            // _tabPage默认结构图2d
            // 
            _tabPage默认结构图2d.ImageOptions.ImageIndex = 2;
            _tabPage默认结构图2d.Name = "_tabPage默认结构图2d";
            _tabPage默认结构图2d.Size = new Size(543, 727);
            _tabPage默认结构图2d.Size = new Size(498, 727);
            _tabPage默认结构图2d.Text = "结构图";
            // 
            // _tabPage默认结构图3d
            // 
            _tabPage默认结构图3d.ImageOptions.ImageIndex = 11;
            _tabPage默认结构图3d.Name = "_tabPage默认结构图3d";
            _tabPage默认结构图3d.Size = new Size(543, 727);
            _tabPage默认结构图3d.Size = new Size(498, 727);
            _tabPage默认结构图3d.Text = "结构图";
            // 
            // _tabPage电气图
            // 
            _tabPage电气图.ImageOptions.ImageIndex = 13;
            _tabPage电气图.Name = "_tabPage电气图";
            _tabPage电气图.Size = new Size(543, 727);
            _tabPage电气图.Size = new Size(498, 727);
            _tabPage电气图.Text = "电气图";
            // 
            // _tabPage三维模型
            // 
            _tabPage三维模型.ImageOptions.ImageIndex = 0;
            _tabPage三维模型.Name = "_tabPage三维模型";
            _tabPage三维模型.Size = new Size(543, 727);
            _tabPage三维模型.Size = new Size(498, 727);
            _tabPage三维模型.Text = "三维模型";
            // 
            // _tabPage视频文件
            // 
            _tabPage视频文件.ImageOptions.ImageIndex = 12;
            _tabPage视频文件.Name = "_tabPage视频文件";
            _tabPage视频文件.Size = new Size(543, 727);
            _tabPage视频文件.Size = new Size(498, 727);
            _tabPage视频文件.Text = "视频文件";
            // 
            // _tabPage系列附件
            // 
            _tabPage系列附件.ImageOptions.ImageIndex = 1;
            _tabPage系列附件.Name = "_tabPage系列附件";
            _tabPage系列附件.Size = new Size(543, 727);
            _tabPage系列附件.Size = new Size(498, 727);
            _tabPage系列附件.Text = "附件文件";
            // 
            // splitContainerControl1
@@ -297,77 +338,47 @@
            tabPage基本参数.Controls.Add(navBarControlPara);
            tabPage基本参数.ImageOptions.ImageIndex = 0;
            tabPage基本参数.Name = "tabPage基本参数";
            tabPage基本参数.Size = new Size(389, 693);
            tabPage基本参数.Size = new Size(389, 689);
            tabPage基本参数.Text = "基本参数";
            // 
            // navBarControlPara
            // 
            navBarControlPara.ActiveGroup = navBarGroupPara;
            navBarControlPara.Appearance.GroupHeader.Font = new Font("Tahoma", 8.25F, FontStyle.Bold, GraphicsUnit.Point);
            navBarControlPara.Appearance.GroupHeader.Options.UseFont = true;
            navBarControlPara.Controls.Add(navBarGroupControlXPumpParas);
            navBarControlPara.Controls.Add(navBarGroupControlPointParas);
            navBarControlPara.Controls.Add(pumpPerformInfoCtrl1);
            navBarControlPara.Dock = DockStyle.Fill;
            navBarControlPara.Groups.AddRange(new DevExpress.XtraNavBar.NavBarGroup[] { navBarGroupPara, navBarGroupPoint });
            navBarControlPara.Location = new Point(0, 0);
            navBarControlPara.Name = "navBarControlPara";
            navBarControlPara.OptionsNavPane.ExpandedWidth = 389;
            navBarControlPara.Size = new Size(389, 693);
            navBarControlPara.Size = new Size(389, 689);
            navBarControlPara.SkinExplorerBarViewScrollStyle = DevExpress.XtraNavBar.SkinExplorerBarViewScrollStyle.ScrollBar;
            navBarControlPara.StoreDefaultPaintStyleName = true;
            navBarControlPara.TabIndex = 7;
            navBarControlPara.Text = "navBarControl1";
            // 
            // navBarGroupPara
            // pumpPerformInfoCtrl1
            // 
            navBarGroupPara.Appearance.Font = new Font("Tahoma", 14F, FontStyle.Regular, GraphicsUnit.Point);
            navBarGroupPara.Appearance.Options.UseFont = true;
            navBarGroupPara.Caption = "选型参数";
            navBarGroupPara.ControlContainer = navBarGroupControlXPumpParas;
            navBarGroupPara.Expanded = true;
            navBarGroupPara.GroupClientHeight = 336;
            navBarGroupPara.GroupStyle = DevExpress.XtraNavBar.NavBarGroupStyle.ControlContainer;
            navBarGroupPara.ImageOptions.LargeImage = (Image)resources.GetObject("navBarGroupPara.ImageOptions.LargeImage");
            navBarGroupPara.Name = "navBarGroupPara";
            //
            // navBarGroupControlXPumpParas
            //
            navBarGroupControlXPumpParas.Name = "navBarGroupControlXPumpParas";
            navBarGroupControlXPumpParas.Size = new Size(389, 336);
            navBarGroupControlXPumpParas.TabIndex = 0;
            //
            // navBarGroupControlPointParas
            //
            navBarGroupControlPointParas.Name = "navBarGroupControlPointParas";
            navBarGroupControlPointParas.Size = new Size(389, 248);
            navBarGroupControlPointParas.TabIndex = 2;
            //
            // navBarGroupPoint
            //
            navBarGroupPoint.Appearance.Font = new Font("Tahoma", 14F, FontStyle.Regular, GraphicsUnit.Point);
            navBarGroupPoint.Appearance.Options.UseFont = true;
            navBarGroupPoint.Caption = "位置参数";
            navBarGroupPoint.ControlContainer = navBarGroupControlPointParas;
            navBarGroupPoint.Expanded = true;
            navBarGroupPoint.GroupClientHeight = 248;
            navBarGroupPoint.GroupStyle = DevExpress.XtraNavBar.NavBarGroupStyle.ControlContainer;
            navBarGroupPoint.ImageOptions.LargeImage = (Image)resources.GetObject("navBarGroupPoint.ImageOptions.LargeImage");
            navBarGroupPoint.Name = "navBarGroupPoint";
            pumpPerformInfoCtrl1.Dock = DockStyle.Fill;
            pumpPerformInfoCtrl1.Location = new Point(0, 0);
            pumpPerformInfoCtrl1.Name = "pumpPerformInfoCtrl1";
            pumpPerformInfoCtrl1.Size = new Size(389, 689);
            pumpPerformInfoCtrl1.TabIndex = 0;
            // 
            // tabPage产品属性2
            // 
            tabPage产品属性2.Controls.Add(pumpPropViewCtrl1);
            tabPage产品属性2.ImageOptions.ImageIndex = 1;
            tabPage产品属性2.Name = "tabPage产品属性2";
            tabPage产品属性2.Size = new Size(389, 693);
            tabPage产品属性2.Size = new Size(389, 689);
            tabPage产品属性2.Text = "产品属性";
            // 
            // pumpPropViewCtrl1
            // 
            pumpPropViewCtrl1.Dock = DockStyle.Fill;
            pumpPropViewCtrl1.Location = new Point(0, 0);
            pumpPropViewCtrl1.Margin = new Padding(4, 5, 4, 5);
            pumpPropViewCtrl1.Name = "pumpPropViewCtrl1";
            pumpPropViewCtrl1.Size = new Size(389, 693);
            pumpPropViewCtrl1.Size = new Size(389, 689);
            pumpPropViewCtrl1.TabIndex = 0;
            // 
            // _tabPage产品材料
@@ -375,7 +386,7 @@
            _tabPage产品材料.Controls.Add(splitContainerControlMaterial);
            _tabPage产品材料.ImageOptions.ImageIndex = 2;
            _tabPage产品材料.Name = "_tabPage产品材料";
            _tabPage产品材料.Size = new Size(389, 693);
            _tabPage产品材料.Size = new Size(389, 689);
            _tabPage产品材料.Text = "产品材料";
            // 
            // splitContainerControlMaterial
@@ -397,23 +408,33 @@
            splitContainerControlMaterial.Panel2.ShowCaption = true;
            splitContainerControlMaterial.Panel2.Text = "Panel2";
            splitContainerControlMaterial.ShowCaption = true;
            splitContainerControlMaterial.Size = new Size(389, 693);
            splitContainerControlMaterial.Size = new Size(389, 689);
            splitContainerControlMaterial.SplitterPosition = 500;
            splitContainerControlMaterial.TabIndex = 0;
            splitContainerControlMaterial.Text = "splitContainerControl2";
            // 
            // _tabPage多速度曲线参数
            // 
            _tabPage多速度曲线参数.Controls.Add(pumpVariableSpeedInfoCtrl1);
            _tabPage多速度曲线参数.ImageOptions.ImageIndex = 3;
            _tabPage多速度曲线参数.Name = "_tabPage多速度曲线参数";
            _tabPage多速度曲线参数.Size = new Size(389, 693);
            _tabPage多速度曲线参数.Text = "变频参数";
            _tabPage多速度曲线参数.Size = new Size(389, 689);
            _tabPage多速度曲线参数.Text = "变速参数";
            //
            // pumpVariableSpeedInfoCtrl1
            //
            pumpVariableSpeedInfoCtrl1.Dock = DockStyle.Fill;
            pumpVariableSpeedInfoCtrl1.Location = new Point(0, 0);
            pumpVariableSpeedInfoCtrl1.Name = "pumpVariableSpeedInfoCtrl1";
            pumpVariableSpeedInfoCtrl1.Size = new Size(389, 689);
            pumpVariableSpeedInfoCtrl1.TabIndex = 0;
            // 
            // _tabPage串并联曲线参数
            // 
            _tabPage串并联曲线参数.Controls.Add(pumpSingleSerialParallelInfoCtrl1);
            _tabPage串并联曲线参数.ImageOptions.ImageIndex = 4;
            _tabPage串并联曲线参数.Name = "_tabPage串并联曲线参数";
            _tabPage串并联曲线参数.Size = new Size(389, 693);
            _tabPage串并联曲线参数.Size = new Size(389, 689);
            _tabPage串并联曲线参数.Text = "参数设置";
            // 
            // navBarGroupControlContainer6
@@ -433,6 +454,14 @@
            navBarGroupJieZhi.ImageOptions.LargeImage = (Image)resources.GetObject("navBarGroupJieZhi.ImageOptions.LargeImage");
            navBarGroupJieZhi.Name = "navBarGroupJieZhi";
            // 
            // pumpSingleSerialParallelInfoCtrl1
            //
            pumpSingleSerialParallelInfoCtrl1.Dock = DockStyle.Fill;
            pumpSingleSerialParallelInfoCtrl1.Location = new Point(0, 0);
            pumpSingleSerialParallelInfoCtrl1.Name = "pumpSingleSerialParallelInfoCtrl1";
            pumpSingleSerialParallelInfoCtrl1.Size = new Size(389, 689);
            pumpSingleSerialParallelInfoCtrl1.TabIndex = 0;
            //
            // PumpFullInfoCtrl
            // 
            AutoScaleMode = AutoScaleMode.None;
@@ -443,6 +472,9 @@
            ((ISupportInitialize)xtraTabCtrlMain).EndInit();
            xtraTabCtrlMain.ResumeLayout(false);
            ((ISupportInitialize)imageCollection1).EndInit();
            _tabPage性能曲线图1.ResumeLayout(false);
            _tabPage多速度曲线.ResumeLayout(false);
            _tabPage串并联曲线.ResumeLayout(false);
            ((ISupportInitialize)splitContainerControl1.Panel1).EndInit();
            splitContainerControl1.Panel1.ResumeLayout(false);
            ((ISupportInitialize)splitContainerControl1.Panel2).EndInit();
@@ -461,6 +493,8 @@
            ((ISupportInitialize)splitContainerControlMaterial.Panel2).EndInit();
            ((ISupportInitialize)splitContainerControlMaterial).EndInit();
            splitContainerControlMaterial.ResumeLayout(false);
            _tabPage多速度曲线参数.ResumeLayout(false);
            _tabPage串并联曲线参数.ResumeLayout(false);
            ResumeLayout(false);
        }
@@ -488,11 +522,6 @@
        private DevExpress.XtraTab.XtraTabPage tabPage基本参数;
        private DevExpress.XtraTab.XtraTabPage tabPage产品属性2;
        private DevExpress.XtraNavBar.NavBarControl navBarControlPara;
        private DevExpress.XtraNavBar.NavBarGroup navBarGroupPara;
        private DevExpress.XtraNavBar.NavBarGroupControlContainer navBarGroupControlXPumpParas;
        private DevExpress.XtraNavBar.NavBarGroupControlContainer navBarGroupControlPointParas;
        private DevExpress.XtraNavBar.NavBarGroup navBarGroupPoint;
        private DevExpress.XtraTab.XtraTabPage _tabPage系统安装图2d;
        private DevExpress.XtraTab.XtraTabPage _tabPage产品材料;
        private DevExpress.Utils.ImageCollection imageCollection2;
@@ -506,5 +535,11 @@
        private DevExpress.XtraNavBar.NavBarGroupControlContainer navBarGroupControlContainer6;
        private DevExpress.XtraNavBar.NavBarGroup navBarGroupJieZhi;
        private PumpPropViewCtrl pumpPropViewCtrl1;
        private Yw.WinFrmUI.Phart.PumpPerformChart pumpPerformChart1;
        private Yw.WinFrmUI.Phart.PumpPerformInfoCtrl pumpPerformInfoCtrl1;
        private Yw.WinFrmUI.Phart.PumpVariableSpeedChart pumpVariableSpeedChart1;
        private Yw.WinFrmUI.Phart.PumpVariableSpeedInfoCtrl pumpVariableSpeedInfoCtrl1;
        private Yw.WinFrmUI.Phart.PumpSerialParallelChart pumpSerialParallelChart1;
        private Yw.WinFrmUI.Phart.PumpSingleSerialParallelInfoCtrl pumpSingleSerialParallelInfoCtrl1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-pump/PumpFullInfoCtrl.resx
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Microsoft ResX Schema
    Version 2.0
@@ -48,7 +48,7 @@
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
@@ -130,7 +130,7 @@
        cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P//
        /xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAACMAAAAjAAAACQUAAAAP
        BQAAAEw5AAACBgUAAIlQTkcNChoKAAAADUlIRFIAAAAjAAAAIwgGAAAAHtmzWQAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAASoSURBVFhH7VddaFxFFL5pFW2b5P7ttga2WCgWfKmG4oMo
        YQUAAAAJcEhZcwAADr0AAA69AUf7kK0AAASoSURBVFhH7VddaFxFFL5pFW2b5P7ttga2WCgWfKmG4oMo
        YrVgnxSqfVKktYhFfBGxb3YfivpQm2TdO/dmm4IVWiQRW/9A7EtFQWtpTZaG7N65d7s2mqpI/anYH7VZ
        vzM5u+7e/UlCl4SCHwx358yZmW/OnHPmrPY/2gm9v7jGcuWwJeSw3p9bw+LFgSWCouUGJWqmCEIWLw5A
        4kqZDKwzbQv5lCX8O7Xjx29ilQVAsrQEBLaCwKUyGdMNfkS/iO/vsNgvppCvEjErJbt5VvvRk5laDj85
@@ -151,7 +151,7 @@
        P9b3bQ9ku7DRKBP7mYpxW+Tv6UzJuJrEgF6ayOj9o4buyl7MmYJsbD5XPS/EUrkNiIwjCEuq8Mm/JH4/
        rZHDl//coaREm8Zj2TIVtA1UMKmqXxXw9EDKfxQRbqYnU6y60Ch1wDqfV5Ox3eAlHlx4UL7ANZ2cIRN+
        smrv2AoeWjx0D42rf5w3ODTtX+WXXW7fd+AQAAAAAElFTkSuQmCCQwUAAIlQTkcNChoKAAAADUlIRFIA
        AAAjAAAAIwgGAAAAHtmzWQAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAATlSURB
        AAAjAAAAIwgGAAAAHtmzWQAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADr0AAA69AUf7kK0AAATlSURB
        VFhH7Vfda1xFFJ9+KjZ270fSWCxERUSrL76oD6KggiBonyqE+uAfoCilhVLQLVpJIMaQ7Ny52fULDKgE
        FbSIWtQWfEhRsaVuTe7M3aStpFgpgtqGNmm6/mb23Ll3NambzQc++IOBvec3Z86ZM+ecmWX/Y6XQxs+2
        uGHc6Qo54IbqTXdwfLcXVu4heuXgcdXtCvWrJ1T178MV0VBuYOxmmrqMGK6u8QL5Tp0DgZx1AzmVlcHR
@@ -174,7 +174,7 @@
        oDkh70YVZf9BznhhdKOZs2So3byfZoxoh37X4UeZKnyfxDiHcSnh4dR0Q521Wfgiessau9rg8v32nmMb
        SG35gAjdh6gMISp1f+iRG+fxtv3M52obTV1BIE9yXafc1kLltg36kty+iEf1fx+M/QWYOCDvyk0/qwAA
        AABJRU5ErkJggtkBAACJUE5HDQoaCgAAAA1JSERSAAAAIwAAACMIBgAAAB7Zs1kAAAAEZ0FNQQAAsY8L
        /GEFAAAACXBIWXMAAA6/AAAOvwE4BVMkAAABe0lEQVRYR+2WMUvDQBTHg6CTtsldqyIKgosfxkEEF3Fy
        /GEFAAAACXBIWXMAAA69AAAOvQFH+5CtAAABe0lEQVRYR+2WMUvDQBTHg6CTtsldqyIKgosfxkEEF3Fy
        dHQQN1cXh7a5k2j9Aq7uIgji4KZQe9dSHOwiKjiIiBpf9AUaLgchRhvlfvCW93+v+dEe11iESz8vlU8Z
        h8snh8nHfpQqA02rD1AuNoxMHEZGx/+Vgb0pm4lVUpOLlnc+iO3EZCZT3OlMh/v4GWsYJSYzGeKKlXD/
        s5i4xygxmcnYvD0X7n+VOMEoMZmeGTgvy7B7Z/PWqeO1i9hOTKYy38XI6DAyOv6+TGH7khDeOiZMvsBb
@@ -182,7 +182,7 @@
        lnrngm9yfL9bxlghlUy5cjEDc89w5b8HD6BMzmOkAD/RDcy+wX/VK+HNLWzHkvoAk4ookF0xOexdlbAV
        z4E/ROvXE6N77TFr0x/AbiypZX4CI6PDyOgwMjq0MkHw2wUX6KEik4fKkYz0PwA0ITdAs8f/EgAAAABJ
        RU5ErkJggk4GAACJUE5HDQoaCgAAAA1JSERSAAAAIwAAACMIBgAAAB7Zs1kAAAAEZ0FNQQAAsY8L/GEF
        AAAACXBIWXMAAA6/AAAOvwE4BVMkAAAF8ElEQVRYR+1Xa2wUVRQeFFHpY+exS0EhxaRixKiYYMQfxGB8
        AAAACXBIWXMAAA69AAAOvQFH+5CtAAAF8ElEQVRYR+1Xa2wUVRQeFFHpY+exS0EhxaRixKiYYMQfxGB8
        xAcBTXwlGg0qJvoD/UNMEy3RRGIqynZe3dIIGojahChRgyRiY0QhprGIZbtzZ5ZKy6tCsVBKKZSu37lz
        dunabQvyMDF+yc3OPefcM98599xzZ5X/cTGgmsHNmuXV67bYQIOeY6v8ClZfWuiu+Ea3/U7dEV/IYQs8
        +w2svrTAy7tU03uWp0q0dtdizfH/4OnFw6SV6TLN9pdFbH8efqcZtliKbJzW6zqmsgnIeTeSTLXFfLIp
@@ -209,7 +209,7 @@
        GFsu+P8mCWydYbfSn7hjIHAEL3pTaWwcnyWjJQ5HQBbXA32yigNqjXdroYZ5QVH2MbbO8l4Cif7wmIrD
        eKZG1g2iPRhPDM3cJQF/ra3CGAgz5S/X49tKWf3vILa6ZXLpqnadp/8FKMpf0O60mqXbDwsAAAAASUVO
        RK5CYILYAgAAiVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABGdBTUEAALGPC/xhBQAA
        AAlwSFlzAAAOvwAADr8BOAVTJAAAAnpJREFUWEftVz1oFEEUXguLQHB3ds+LP9doY6GFYGWbRsEmkMZO
        AAlwSFlzAAAOvQAADr0BR/uQrQAAAnpJREFUWEftVz1oFEEUXguLQHB3ds+LP9doY6GFYGWbRsEmkMZO
        sBAtbUUL0cIi4k9mJrkg6SzUdFY2aYSg0SJFSHZmNib+IFgYRVQUxfPN3Ju7M9x4F252TyEffNztN/tm
        vp33dmYn2AjCs0Mxkx+D6vPtKHlFfEvuiLlchDHGUHIjouJCzFUtoukllLyiNLm2W/cP/IGSG2Dmor6Z
        0PQqSl6RjC/vQTM1lNzoqxnIYSVi4kTC0hFNMHO3frO4bzWfjKk8bc206iEVh4OIKRy8z9QvTXg7HSZU
@@ -221,7 +221,7 @@
        uASv8Wynw1/PafKJ/8dMyF8SfWYp8eyIJhxduDHDxR2r+SSk+Zg106rHE6/2wkFfTdvGvpKpdV2cx+HP
        YyjGJ4ZcCt0I+nxD80xr4A9tQp7HZDWxVcAu/FNm4LvjDNz4PWSrIyh5BamuhHrhJDSbRQkRBL8BZJVH
        ypml/dsAAAAASUVORK5CYIJPAwAAiVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABGdB
        TUEAALGPC/xhBQAAAAlwSFlzAAAOvwAADr8BOAVTJAAAAvFJREFUWEftlk1oE0EUx1eLeLA2O7tpBVHr
        TUEAALGPC/xhBQAAAAlwSFlzAAAOvQAADr0BR/uQrQAAAvFJREFUWEftlk1oE0EUx1eLeLA2O7tpBVHr
        R0VEEfTUkwelCoogeBA8eBK9iidvOQuijdmZbSIWRCw1FEFQRAQrIqjgzZTNzmyjBy/1ol5UMHV9k7zZ
        ZG3cbJL1IvnBO+Q/897773xsVuvTJyl0qzJKbO+YScsnkwqd8hOEeXuxRTxM5uwyGF82mPD/RRDLua5l
        /NXYLhowUmpVJLGgorqBeSPYLppwIi+QgtgjV6uX0Gl5H2F8vl4XVj3LN2G7aJQRSBZaJhNvOWMAZ/AC
@@ -235,7 +235,7 @@
        vkApEXozw/hLlBKh2cywJcZQjkYlwJl5hVLPyHcSvCpmVO20vbATh6KB7fmMZt7I3+vg41n+NcBL0Oky
        KrAqP5QRebVH4h7gVE5ckglQZF7+hkLnGoUSCCo+wSdEqtYsDibjZ9QXmgRWaQ4KyafrOkwmvsJ30TUs
        2afP/4Sm/QYhIWlpSUIV4AAAAABJRU5ErkJggrMDAACJUE5HDQoaCgAAAA1JSERSAAAAIwAAACMIBgAA
        AB7Zs1kAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA6/AAAOvwE4BVMkAAADVUlEQVRYR+2XTWgTQRTH
        AB7Zs1kAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA69AAAOvQFH+5CtAAADVUlEQVRYR+2XTWgTQRTH
        oxWRCtmd2dov0WL1VhA/EVG8VkGxVVQEBQ89CMWLKAgeigdBWi202ZlEW1AEQeOhoKA3D+LNHnoomMxs
        0qYH60ERq7ZatPHt5s2mTdI2u0msB3/wWHjvzXt/dj52NvBX6Rpda3DZSbh8S7kcIUxeqTbH6jH69zBY
        rI1w8QFEpOcbCPtKePwqplUe3Ywfotz6kStEGYicqeHWbkwvjaApt1FmndDN2PlCRpiIuY1haur7xIbN
@@ -251,7 +251,7 @@
        3XnQ0II1043u8gM/V5N2E5iq74RbR9DtYm9xiH9UYsg92YKh8uOcJ0z8dJrZTyYfgcBrMCWXDSYegN9+
        zRkhTJ7BYZUDGp2CA21CNc01EDdtcNEPvxurcUhlCQ5MUFicQ3A4vbebg804Uwg/X5o5tgPTKkQg8AcR
        vKlxXPS5CQAAAABJRU5ErkJggvsEAACJUE5HDQoaCgAAAA1JSERSAAAAIwAAACMIBgAAAB7Zs1kAAAAE
        Z0FNQQAAsY8L/GEFAAAACXBIWXMAAA6/AAAOvwE4BVMkAAAEnUlEQVRYR71XW4gbVRgerBZbbSZnZosX
        Z0FNQQAAsY8L/GEFAAAACXBIWXMAAA69AAAOvQFH+5CtAAAEnUlEQVRYR71XW4gbVRgerBZbbSZnZosX
        WiqiUItFWlAQC4JS8KUgq1V8EfTBRbw8qKAPhRSpvi2lmTkzSVusiGANFe1LhUpd9E2tLtiYzZwzMbhd
        d11XWhENamzX75z5ZzJpk93Z6wc/u/lv55v/3P5jLBWMi3ctT85aXJ5jXO43S3InmVYfCZm0cPkv9JOM
        ByeYW99FriuPnmSuEObJwCoFgxSycugmEwwzTxRRmS9VddKEIhHHTS+4nUKXH2kypid2kNqwj85ssD35
@@ -272,7 +272,7 @@
        Q1cSNOv4om8wz6/2e6JuKYxcz8r1XfA9jPhGvH2VILaFnfoGuS4M6t2EhPuv/jISLmdg/woDfqEE1atB
        n3oEdkR1B6xYf4BSLx4YcDMaLwcDpp+n84uqCpff6YW7TE+cDrAQ0fM8hivjDAji0NJvrTYGxfThXYV+
        FhWYVFXAFv4Azfp9FJkBhvE/nULYPJSZHqUAAAAASUVORK5CYILnBgAAiVBORw0KGgoAAAANSUhEUgAA
        ACMAAAAjCAYAAAAe2bNZAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvwAADr8BOAVTJAAABolJREFU
        ACMAAAAjCAYAAAAe2bNZAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvQAADr0BR/uQrQAABolJREFU
        WEe9V2tsVEUUvoggSNu9d++WiqmSGMSowR+oCfhH1IgaTTAKCRGfSASC/iCa+MBQE4mWmAp179zdCkmF
        HyjlF2IkRJ7yiI8Gamm6vTN3WSgWAhQkoOVRSv3O3LO3vexiAAtfMtmd75yZc2bOmTlzjWuBncxNirv+
        zriQC5m6cShb1h63XD9pCSktV52Ou6pXNyEvWE7bZ6x2Y2Cl1LrQgaAdRmvQ/4W8aKf9Fca03sGsfv1Q
@@ -302,7 +302,7 @@
        Qd5NIpzIShoHno7+D/Q8RbKOH131P746cX2/rB0KWg8M/IwPuGr8bkP/bD+ZbsiBDh5qJJKtYw0UVO4O
        DLC694P4Rg2DQymRByDfhHfu51ZaTeQh1xfIhVUwfA6Gj6DoNVpO2wfF7o+rh2H8C/tPpAJKeuZcAAAA
        AElFTkSuQmCCLgIAAIlQTkcNChoKAAAADUlIRFIAAAAjAAAAIwgGAAAAHtmzWQAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADr8AAA6/ATgFUyQAAAHQSURBVFhH7ZY9SMNAFMc7KSqY5hIRxUGhuGvxa3RxFsRF
        YQUAAAAJcEhZcwAADr0AAA69AUf7kK0AAAHQSURBVFhH7ZY9SMNAFMc7KSqY5hIRxUGhuGvxa3RxFsRF
        cBKc3UQQujgoIsU2d610ExcXQXBzdhMUkTa9S7XW70UQFF2KvtZnaZuobWnSwfzgT8i9d/d/gdy787i4
        2EXPRqZFofoQoXyiQxM+HHaezvXTNpnxNGHioyDK5zDsLIQaOyWFfCmrxq78mFJ/JKpPyky8m4xp2ftf
        4xWLn6G1GRJJDcuUP1pPrL/Aax+tK8fLxKppISaepeBlL6Y4i8KMEBTwAF/zBs+4yvgAhlxcagK26Shh
@@ -311,7 +311,7 @@
        RBMUOuyRzIx5HHYeEr0Yga76WrJjKN/FsD1IoXQf3PaWwGytWLn7S76AckX4NjxLcqtR7pqL1mZ+7MD2
        3YF/6cDh+CCJiANoWMfFAtMnq8Wgr+jluVWJ6otoXTleZsyAeeFUzkvjKQw7j8oMvxwxDuFHvpc1vtK1
        dduKIReXBuHxfAKJMLsWKlnJHAAAAABJRU5ErkJggqgCAACJUE5HDQoaCgAAAA1JSERSAAAAIwAAACMI
        BgAAAB7Zs1kAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA6/AAAOvwE4BVMkAAACSklEQVRYR+2VzWsT
        BgAAAB7Zs1kAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA69AAAOvQFH+5CtAAACSklEQVRYR+2VzWsT
        QRTAVwTxq25ndmMoFBQU/DwouXjw4N3ebE8VES/e+n9IERV2ZptUyFHISTzXg3oTwSiYpDObLhY1BcH6
        VQSrxLfJo/uR2eyullBwf/BI8t6bmV9mH4mWkwS1nDnK5INgYGn09AS47AYDS6Mnl4njv5UZZ43LBS5n
        8OMgfyNjLjQm8G1qKF+Zwf1/US6uYDpMVhmTiynCRYdaYhpTiRhWeza4P+Fyw+TtKSz7ZJExbPcSYfIL
@@ -322,8 +322,8 @@
        Xk32FiHGreYYfOvPwb5ggOwTrdbdg+3JxMlM3l7dR9hyXwgO1KvrysEz7jfHlDfE5DOt6u7FtnTEyXh4
        P0pwIw8P320XMaUEH9nWDBFbPD6SVcRjmEwW6D1x2htgGPpHWq22G9PZ2C4ZD8qWT2nd7i78mJ3tlPln
        cpk4cpk4dryMyZ3SKAIVfFQyowpU8MllMFDBZ0fJ5ITQtD9ezk3xfUWR9wAAAABJRU5ErkJggnEEAACJ
        UE5HDQoaCgAAAA1JSERSAAAAIwAAACMIBgAAAB7Zs1kAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA6/
        AAAOvwE4BVMkAAAEE0lEQVRYR+1XXYhUZRg+/WDS1uz5mZ3N6KYgqhUFf0CUoJvoIhIlqC6K6qYkwSK6
        UE5HDQoaCgAAAA1JSERSAAAAIwAAACMIBgAAAB7Zs1kAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA69
        AAAOvQFH+5CtAAAEE0lEQVRYR+1XXYhUZRg+/WDS1uz5mZ3N6KYgqhUFf0CUoJvoIhIlqC6K6qYkwSK6
        sW62C/HCH3R3z/fN6BqGIizTRfTjTQSSZN5U9jM253znzI4aGYtgYLr+pePzfuedWWa+OTvssCMEPvCy
        +73f+/Oc9/3+xrqDbuCNBk+6I2qoFzI0XFrAaWaHK+M3HKHOuTKq9UoQfxric8r2yI5Fy7WxjP6F8ReO
        jD/vhbhC/aaJifBFTm3CE8F6MsoI9RyreoakQtEnPDTRLZncWHkJqvkB5DPbV6+yelbMOxlvrPywI4Lj
@@ -342,7 +342,7 @@
        /6WPTTqTme9fB25hchU9T6jNrGrgtpOZDf8vMq6sPEtGtlTHrGJNH3C9AA7U13UeP/yIVSbwozyDlf8j
        Gd4OeWhEDXDqFAxXF6Iy7+Do3kdl7In4lc19s7yV7mAGlnULxav3YjbLby4AAAAASUVORK5CYIK2AwAA
        iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
        vwAADr8BOAVTJAAAA1hJREFUWEfdmE9IFHEUx6cCMTadf+6ugWB4CToUQXTISxgIdbEIIgjq0ik72CUK
        vQAADr0BR/uQrQAAA1hJREFUWEfdmE9IFHEUx6cCMTadf+6ugWB4CToUQXTISxgIdbEIIgjq0ik72CUK
        oq1bHWrddn4zSpkgWLgEUUQFEdYlOkSEre3O/GZ30cLI0shMKkv7/mZ/m5q6uOPOCn3h4c57vz8f3u/N
        mxmFhaTqdoNMzHNemUqsY2I4I/Ht5qu2M1MuE6tX1q0JRafTnhuxfuHvsBRNNnOErCQjvUUmdIwNAnVU
        0a39op5s8MoUkm5Uo7QZWbKzYLSbowgCMvLBcbalG7mrJAq09gWx7z1kaUrWzD2CqlmHsnT2WT6mpPJd
@@ -357,8 +357,8 @@
        eKEZGEJfsh+oBVe3ZTEka7QVHD9BZZ5xshOxNvFYyYU+9Qx35hehqu3NehTQDzgGazt7y3m8ZMIHXFO2
        VOwexwGqSNZBnwRIarMQmnb9GbJUsRrF14VzKth/SAjFy3gIQd2OIkPOv0UQHIP1e2hpdG7nsxonEq80
        zO0cY0ZqNLENg26imDKYMOyhDcGe42ha+NaQIPwBvnLRA85dlrkAAAAASUVORK5CYILrAwAAiVBORw0K
        GgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvwAADr8B
        OAVTJAAAA41JREFUWEftlstrE0Ecx1dbEWzT7Mw0iVQRpahV0YOgoh58gHgTD6KgoiiKeBHx4rFaUFsf
        GgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvQAADr0B
        R/uQrQAAA41JREFUWEftlstrE0Ecx1dbEWzT7Mw0iVQRpahV0YOgoh58gHgTD6KgoiiKeBHx4rFaUFsf
        tGn2kTSFFvViwBc+8ElRUXwUPGibZGa3pSJUVFDwD4jfWaa1qX1kDT2ZDww7v99vZve7v/ntzGolSpT4
        bwgn3QgxeZqYIjNps8VhNW1qoHZ2DjGzDcocnyifSSxxGu0QRO2Uc0ibWKaiHqz9W4C1D9Ro9bnpyuWP
        scQEbGdhuMWNKHOYyIXBCmToKzP53mBcrKSmk6S2u0XGqMUPEsu5RS2nDZl+HIj1Mm+SH/LEJLpn4K0b
@@ -388,7 +388,7 @@
        cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P//
        /xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAABgAAAAYAAAACQUAAAAP
        BQAAAHYRAAACUQMAAIlQTkcNChoKAAAADUlIRFIAAAAYAAAAGAgGAAAA4Hc9+AAAAARnQU1BAACxjwv8
        YQUAAAAJcEhZcwAADsAAAA7AAWrWiQkAAAAHdElNRQflCAUIAxZcGSxIAAAAB3RFWHRBdXRob3IAqa7M
        YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAAAHdElNRQflCAUIAxZcGSxIAAAAB3RFWHRBdXRob3IAqa7M
        SAAAAAx0RVh0RGVzY3JpcHRpb24AEwkhIwAAAAp0RVh0Q29weXJpZ2h0AKwPzDoAAAAJdEVYdFNvZnR3
        YXJlAF1w/zoAAAAHdEVYdFNvdXJjZQD1/4PrAAAACHRFWHRDb21tZW50APbMlr8AAAAGdEVYdFRpdGxl
        AKju0icAAAJRSURBVEhL3ZbPa9NgGMfTbk0jdDUpu9mhh83b1pO2nhQR27WwXx16dN4UWzecJz2qE6S3
@@ -402,7 +402,7 @@
        9DmhchFGE+KX2cY9eYl1THYD4P4lka1RjzC8icw01e1Q72A6BqPInyL8vo6eKto3iWs/ACmamRrW9MY2
        ByiF2enIUDpGNTdE2gM0VkSfdBCAhMd0mQP+051sh3S21QGw+6JPwmdLFvUd6AMeipy/js+WBQewtedb
        0i+miWUm3rmsyAAAAABJRU5ErkJggjYDAACJUE5HDQoaCgAAAA1JSERSAAAAGAAAABgIBgAAAOB3PfgA
        AAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7AAAAOwAFq1okJAAAAB3RJTUUH5QgFCAUpvCWm8wAAAAd0
        AAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA6+AAAOvgHqQrHAAAAAB3RJTUUH5QgFCAUpvCWm8wAAAAd0
        RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2NyaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6
        AAAACXRFWHRTb2Z0d2FyZQBdcP86AAAAB3RFWHRTb3VyY2UA9f+D6wAAAAh0RVh0Q29tbWVudAD2zJa/
        AAAABnRFWHRUaXRsZQCo7tInAAACNklEQVRIS2P4//8/HDNw8vJzxXTUCU29/RCI/wlNu/2faAzUwx3b
@@ -416,7 +416,7 @@
        3gapAerbCawyQ4AWvAZi3FUmqMIGuQCIQS75BXTlEaBrXZDVIGPumDZnoAWHgWp/Q/X854rrbEZWg6IB
        6H0BLmDTA9QEAbpqF09cuzlQjAVZDTIGyXHHtpkLTbu5D9xsAcYRIycfUrPlPwMAF2ID8e3mEC0AAAAA
        SUVORK5CYIKyBAAAiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xh
        BQAAAAlwSFlzAAAOwAAADsABataJCQAAAAd0SU1FB+UIBQgHKY4TxHEAAAAHdEVYdEF1dGhvcgCprsxI
        BQAAAAlwSFlzAAAOvgAADr4B6kKxwAAAAAd0SU1FB+UIBQgHKY4TxHEAAAAHdEVYdEF1dGhvcgCprsxI
        AAAADHRFWHREZXNjcmlwdGlvbgATCSEjAAAACnRFWHRDb3B5cmlnaHQArA/MOgAAAAl0RVh0U29mdHdh
        cmUAXXD/OgAAAAd0RVh0U291cmNlAPX/g+sAAAAIdEVYdENvbW1lbnQA9syWvwAAAAZ0RVh0VGl0bGUA
        qO7SJwAAA7JJREFUSEu1lWtIU2EYx9XNnW1uOzvrYrgooW3qh+jGnBFFUVHOUtIuH5yWH0IidUYQToXI
@@ -436,7 +436,7 @@
        5J6Ad2iOz0bZOuz98UmzYfCYXRN+Dc0E6i7SjNOFI7dOI3APSSqIA2t6S+O8sEtmzNJAPwPvxT59Y+A2
        S0vomwJ3tNVdtfz+rgWxmXEZOYnqPOccpb0K/63iUdgK50jnjPcilaUlFDlFU/q/iv490YTfk7A7mb9U
        KgkAAAAASUVORK5CYILFAwAAiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEA
        ALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAAAd0SU1FB+UMAgYxFD2uqmYAAANUSURBVEhL3ZVd
        ALGPC/xhBQAAAAlwSFlzAAAOvgAADr4B6kKxwAAAAAd0SU1FB+UMAgYxFD2uqmYAAANUSURBVEhL3ZVd
        aBNBEIDPatWGNHe3m5JUai2CqKCiiAiCiK+CQu2bPqggPojog8UqVIuICBWsl9xf0rQBadQIIvgDSrU+
        FFFpkYKx6f01aeyfINaq4A/COntZoa2tMeBTv7ebmZuZnZmd5eY/fCztxaq1W1SsJqQYYaxYV3nFOs0r
        9i5RM5Zxes8iZprnXKrUJ70o53QyXT4TJKXWIi1zSVStYVFzvkKAEaRajqBaOaRY33DbKIHve0v1bFBQ
@@ -452,7 +452,7 @@
        gRt7VtSdt6I+OAn6ZnSlP8h+KQ54VBQoz0dBM45Axlfzc+/UQYBeuAffYWt+Af1zFB6qZL8UB2R9GHb6
        e0E2WugC8yc+0i27kz5EAgQB/Us+bK+rnrrUiiFwbcwjyDZkbzXxqnUUHp6oV3rtLkIhZG+DV26LazjP
        4bhfNRunpcLrCnEAAAAASUVORK5CYIJkAgAAiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34
        AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwAAADsABataJCQAAAAd0SU1FB+MMDwEOHT3QFbsAAAAH
        AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOvgAADr4B6kKxwAAAAAd0SU1FB+MMDwEOHT3QFbsAAAAH
        dEVYdEF1dGhvcgCprsxIAAAADHRFWHREZXNjcmlwdGlvbgATCSEjAAAACnRFWHRDb3B5cmlnaHQArA/M
        OgAAAAl0RVh0U29mdHdhcmUAXXD/OgAAAAd0RVh0U291cmNlAPX/g+sAAAAIdEVYdENvbW1lbnQA9syW
        vwAAAAZ0RVh0VGl0bGUAqO7SJwAAAWRJREFUSEu1lb1OwzAUhQNESpAa0eQJuhRmKkQklkpILIl4AV6A
@@ -465,70 +465,6 @@
</value>
  </data>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="navBarGroupPara.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAAB8AAAAfCAYAAAAfrhY5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
        JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADCklEQVRYR+2W70tTURjH/bfqRa960/+Q
        xYiUSJMiiDTQltMLWVOnW/5gluJENyoTzVZtkksrI0Vx+OtVWhn+wDQJRvTtfs+9zzzIGl5d601feLju
        7Hg+3+d5zjm7BUdVoDaB8vIIiotb1dPnG0Mg8A7PjEXYU3IvQj3uQbQPz6F3ZgNDX4EnK8Cjj0B4Cega
        24C/N4k6dzS3JhrdcYSic1jYhYpFADO/gPc/956vvlsm2se24fHGUVE9eHQTzDgxaaZoa92Eze5YUMIY
        rALhNBH9ZBqYSOHmnZGjGSA4NLpsYy0RTgCD4NC8FWKCBhKblgHCrxQ2H85AW8+0ykgX4ew1YfyOPedn
        PWjg+RrQEl/F5fPtzuEd4SQeJ7cwYfbYXE+Vmv2WjAkhnJDYt72QzzTAOTeMp86zb7n/QS3E3nKDCVTA
        BBA+nrJAesgYv/cPzjuDM2sG4VyEQPaRwTEdSnOZQozwWBLOCtjLZxfB3bEVVXJCumatYH/1nU0Iq5Ip
        xADn8kJyDGemApdySzV0MPeEHvsNEH7g0kvZ2Wf+s/Q6U9aE8QToIQY4J7psld1R3/0tEwrIBZixDt8P
        Ng9CWvybY5J93/iCs55TA0YSnW+20htM73c2uEgy99RbR80RnGrunFb9Zpl5tLKVfb8BjsWW1tQl46jk
        osbGF2gaWEmXXy6SP/Vc15cfKVTXWddrTVnIOZwyjOG0AR49giV0A3xKBdZNsK91BJWnHexyCj1nsB6M
        YapjCpFIBBUVHvU73tA3pwxwD9AEwXoQzni7ug1vII5bZ4MOwX0uYLTQ3F2nMBmuhdvtRvBeEOHWh6p0
        /JXidclbi+XXr1b2t3soqYwSemjwTtMxvL56EvUl5+B1eXGpqEQtylcm7loJ/TXq7rX+NNRRjzOBw2Uu
        dFXeRnPpg/RCYoBPAgQmwXF76sGUDdzmi4GvUPbU3OogYJbcnp476eDNhuP/wX8PTO2+/EdgquZ6ET57
        T+QfTBmGgfKLLnSX5hksqrpQpWD+6v78gkW8jQjNH7ig4DcMNAAPcC3SKQAAAABJRU5ErkJggg==
</value>
  </data>
  <data name="navBarGroupPoint.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABV0RVh0VGl0
        bGUAUGFsZXR0ZTtDb2xvcnM7PtdOcAAACSxJREFUWEe1l/lXVOcZx02aZjWrWbr8E22z9LQ9TWuO/SE9
        aVpTV5BFVgWRHYVhkUUR0aooRhFRwi6IwiAioFVQthl2hmVWtmGGmQFkBlQU+fZ53mHGkJpzcnqaOecz
        z3vve+/7/bzvvXeWVfR6jnie+AnxAvHTHxnO4DzOFa/niyua10lv9Mmu3hyA4AYzKGoVt8W+/uXtfjv1
        A5BSldY7tu3wtrRe8R2e7q+s7RssvHR3HeXyhIXEC5V1CqN5eg7f91r6X6C3Z2GyzOFyTa+Rcnk1hMCL
        FbUK0bm4uPSDeLzM4uKT5bajOtrfxxLlLKH8Wi8o9yWCL8Wql8preoUAH5TW2o1DrT04JOtFuqwP6e39
        xAAOdw6K/jKZHy7J/VHOdPjjSucOXO7agUri8eMnUHbGQN21l9gDbXckdN3h0PWEESF4RP0sUFrVzQIv
        OwReLrvaIzr4gIMtPZAapldQOTGNY8pxMYPSVh90G4//F7XqnaJfRaH3p3Jx35KDeXMO5szZxBnMaENI
        cAlPniyhRNrJAq84BUqqupwCKU1duDBsxHkiR7eM1oD0gRExQEmLBxpHY9A4Ek04ajSqVT5iBVQdwbBN
        HIJVfwA2fQqs40nEPsyoA0Q/CxReaV8h8EpRRbvoWHi0iITGDpxS6XFKqUcmzTpzaAwnif09WiGY3+yC
        eppNvTYYNwhRNcGoHPQQ/er2AMyOxWN2NA6zJDg7upfqHkxpfEQ/3zd5l2Qs8CrBT8KqV/PL5ULg4cJj
        xDTIcbBXi0N9WqT36aitQUq3GvEdSjwiwbymzagc8ET1kC+uKf2o+qCi3xPlClcxAZXcB1O6IEzrgu1o
        AjGl9oV50A0PqZ/vo9zSNhZ4zSlwoVQmzB48fIzIm62Ikw9BQsTIBhHTNojotgFEtw5gYWERuXf+iUu9
        m1HWu2kFpb0baQKLUMvdYVF5waL0pFAPWCjYPOgK84CLmCCvwrniZhZY7RB4LTO3UZjN33+EkLoWRLX0
        I7JFgchmBSKamD4BC+Y0fomL3V+hhOniuh4XuRLcr5JtpXA3mCjUNLAVk/2bYerfRGzEfernVcrIub1C
        YHXaqXphP0cCDA/EB3+3Mrb5BWf7WdjmHznb89+uD54ek5JxnQVedwqknqwTwTPWB5AUtEFSKIOkiGmH
        pLgDsUxJJ6xzC0ipWYsDxP7ra5Fa+xlS66jWr0XazT+LfkVZMPpLgwSDpYFQlgZAeXEn1KX+sMzcxz3b
        QyQdu8YCbzgEXk/JqIWNTjaa5xCd34bidpOTIrkJhcS+Sp24RMk1n6JCHeykUr0bV1RBONq2VkxCURIA
        W3cWbF2nYev8GraOTNjaT8Bc5UcC85iefYiEI9Us8CbBX0yr3kg+WoNZ2wImTHOI+KYVJ26N48S/9ci4
        OU6M4fiNMcReVovlTaz+A3LphrtAnO/dYKdnAw63fAorXR5FkQ/uNdBz3xCPmduxmLkVjembe2G67AnT
        1Dws9x4gLr1qhcCb+8hoxvoQ45M2hOe24HDdKNJrieujOESk1Ywgpkwtljih+nc40/UlTnd+sYK0pt/b
        L0GeO6ZvRGKqPhyWulBYanfDUhOEyTK6IS3zMNEqSNIqWeAtp0A8GbHZmNGK0POtiL+iQWKlBklSHfZV
        aBBXrkLURSWm2P7qJzjS+icck32GDNk6UQ+3/BEH7v5WjNGfuxlmqRfhC4vUD+bK7Zi85AJD8VcwkgBL
        RKdWsMDbDoG3JGlSmOkGGTHMIii7FVElSkQSEcXMEMKLhhBG8ACSqx9i/91PkMLc+RgpjR8jWfCR6O87
        tx7Gi5thLNkAI4Uaiv8BQ9HfYSj8GyboHmOiUq6wwDsOgbfZaJKuz7B+FgFnWyhsEGGFdkIL7ITkD8JA
        J++V/gqJDR8iiUhs+A32Mbd/LeDBFdlfUCCFFlJoAYUW0Hb+XzGR9zn0JhvGTVZEJJc7BPg3wap3olIu
        w0A/FLTj9wR2U5vTmNt6rjSAdmxG3Kw8mID229v2qqZ+Pd1LAt4/aV2uFE6MGqwISyxjgTUOgTURSeXi
        IA2FB6fWYvfBOgSlMvUIOniDqh0eXO59Fu3e2ejwPodOoss7B13b7ahGZyAL90J7GEG1g2pn6HbCE12E
        cmQawxOzCIkvZYF3nQJhiZcwapyFmgYIPHAdOdVa5FRpcY7IlmpxVqpB6NE2MQPZ9ixMf92CqVPNsGQ2
        wXKyCeaMJoz4lWGMZisL8cRUfiYseSdhyT0J84UMmM9nYDjChzKsYoWDYktY4D2HwLtsxGZs6J9cg7S8
        fhzMUyD1mz7sv9CHlPO92HW4BaMUIPfIwmRCHYxx12GMrYGBmJDUQOdVIgJkQW4w/isOxiMSGNIlmEiL
        gf5gDHRh2+kmt4pV2hVTvELgvd2xF4XZ0PA0fBOrkZDdjYSzXYjP6kLs6U5ITndgZ1qTuH5ytywYoqqh
        j6oiqjEeeRXj4VXQehaLflmAC/T7o6BPjsJ4UiTGE8MxlhAGTZA7TdJKGVPYGV3EAu8TLwoBNuLrO6Cb
        gldCNUKOtSE8Q4aIDDlCjrfR7Jvhu/8ORmiVZK5nMLKjHGOBFRgNqqT2ZWi9y6DZViRWUbbDBSN7/DEa
        HYCRmEAMR/lDG+oFdYArdPSUcYZ/VAELfOAQeD+AjHj5B7QWeEqqsOPAXfgRHOqdcgdeyQ3wSrotHlP5
        lixoPYqgdSfciqB2LYTapQCqrQUioM1nE83WDZrAbSJUvdMFKv+tUPptof57UGgs8I3MZ4GfOQQ+2LGn
        QJj1U+e26Cp4JzdSIJHYgO37bsOT8Ei4JQLkm7Kg3kahFKxyKYRyaz6UWwqIQhHQ5rWRQl0p1AVKDvbd
        AqXPZgzSfh1d5j6NGT4ReSsF/KLyRXif2kxYRJCde08rnayl2qsyL++3b4s6PrMM95tEmx9p/sywt6lS
        W0P00PleobkrBNZ4h+XOVNHfLxZQCAmTaHNYHw3Ig3KbTxZtpb1tx2RHyZjRLapJ1GdRQX/PPIJzZijX
        +Tmw+vONEjf3XefM7kHn4SbIsbMrB9t2nXPiGvgssuES8MPZujNr9i/r97hTrvMXEVvw7zM2+jnxi2/x
        y/8zPCY//xzOueK/Ib+xCe/ga8L/2X5MOIO/BSl31XP/AcNQlntqrRe0AAAAAElFTkSuQmCC
</value>
  </data>
  <data name="navBarGroupJieZhi.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABh0RVh0VGl0
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/02-variable-speed/PumpVariableSpeedInfoCtrl.cs
@@ -32,6 +32,23 @@
        private List<PumpVariableSpeedInfoViewModel> _all_binding_list = null;
        public void SetBindingData(PumpVariableSpeedInfoViewModel item, Yw.Geometry.Point2d design_pt = null)
        {
            _all_binding_list = new List<PumpVariableSpeedInfoViewModel>();
            if (item != null)
            {
                _all_binding_list.Add(item);
            }
            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 SetBindingData(List<PumpVariableSpeedInfoViewModel> vm_list, Yw.Geometry.Point2d design_pt = null)
        {
            _all_binding_list = new List<PumpVariableSpeedInfoViewModel>();
@@ -122,7 +139,24 @@
            }
            return _all_binding_list.Select(x => new PumpVariableSpeedInfoViewModel(x)).ToList();
        }
        /// <summary>
        /// èŽ·å–
        /// </summary>
        public  Yw.Geometry.Point2d GetDesignPoint()
        {
            if (!double.TryParse(this.txtDesignQ.Text,out double x))
            {
                return default;
            }
            if (!double.TryParse(this.txtDesignH.Text, out double y))
            {
                return default;
            }
            return new Geometry.Point2d(x,y);
        }
        #region Color
        private List<Color> _color_array = new List<Color>()
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSerialParallelInfoCtrl.cs
@@ -69,6 +69,25 @@
            this.txtDesignH.EditValue = design_pt?.Y;
        }
        /// <summary>
        /// èŽ·å–
        /// </summary>
        public Yw.Geometry.Point2d GetDesignPoint()
        {
            if (!double.TryParse(this.txtDesignQ.Text, out double x))
            {
                return default;
            }
            if (!double.TryParse(this.txtDesignH.Text, out double y))
            {
                return default;
            }
            return new Geometry.Point2d(x, y);
        }
        #region Color
        private List<Color> _color_array = new List<Color>()
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSingleSerialParallelInfoCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,546 @@
namespace Yw.WinFrmUI.Phart
{
    partial class PumpSingleSerialParallelInfoCtrl
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Component Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PumpSingleSerialParallelInfoCtrl));
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            gridControl1 = new DevExpress.XtraGrid.GridControl();
            pumpSerialParallelInfoViewModelBindingSource = new BindingSource(components);
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colQueryQ = new DevExpress.XtraGrid.Columns.GridColumn();
            colQueryH = new DevExpress.XtraGrid.Columns.GridColumn();
            colQueryE = new DevExpress.XtraGrid.Columns.GridColumn();
            colQueryP = new DevExpress.XtraGrid.Columns.GridColumn();
            colExtendRatio = new DevExpress.XtraGrid.Columns.GridColumn();
            colQhCalc = new DevExpress.XtraGrid.Columns.GridColumn();
            colQeCalc = new DevExpress.XtraGrid.Columns.GridColumn();
            colQpCalc = new DevExpress.XtraGrid.Columns.GridColumn();
            colId = new DevExpress.XtraGrid.Columns.GridColumn();
            colName = new DevExpress.XtraGrid.Columns.GridColumn();
            colColor = new DevExpress.XtraGrid.Columns.GridColumn();
            repColor = new DevExpress.XtraEditors.Repository.RepositoryItemColorEdit();
            colIsBp = new DevExpress.XtraGrid.Columns.GridColumn();
            colRatedSpeed = new DevExpress.XtraGrid.Columns.GridColumn();
            colCurrentSpeed = new DevExpress.XtraGrid.Columns.GridColumn();
            colCurrentHz = new DevExpress.XtraGrid.Columns.GridColumn();
            colQh = new DevExpress.XtraGrid.Columns.GridColumn();
            colQe = new DevExpress.XtraGrid.Columns.GridColumn();
            colQp = new DevExpress.XtraGrid.Columns.GridColumn();
            txtDesignQ = new DevExpress.XtraEditors.TextEdit();
            txtDesignH = new DevExpress.XtraEditors.TextEdit();
            btnSetDesignPoint = new DevExpress.XtraEditors.SimpleButton();
            cmdCalcType = new DevExpress.XtraEditors.ComboBoxEdit();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            simpleLabelItem1 = new DevExpress.XtraLayout.SimpleLabelItem();
            simpleLabelItem2 = new DevExpress.XtraLayout.SimpleLabelItem();
            layoutControlGroup3 = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
            spinCount = new DevExpress.XtraEditors.SpinEdit();
            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
            ((System.ComponentModel.ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)gridControl1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)pumpSerialParallelInfoViewModelBindingSource).BeginInit();
            ((System.ComponentModel.ISupportInitialize)gridView1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)repColor).BeginInit();
            ((System.ComponentModel.ISupportInitialize)txtDesignQ.Properties).BeginInit();
            ((System.ComponentModel.ISupportInitialize)txtDesignH.Properties).BeginInit();
            ((System.ComponentModel.ISupportInitialize)cmdCalcType.Properties).BeginInit();
            ((System.ComponentModel.ISupportInitialize)Root).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlGroup2).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).BeginInit();
            ((System.ComponentModel.ISupportInitialize)simpleLabelItem1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)simpleLabelItem2).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlGroup3).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).BeginInit();
            ((System.ComponentModel.ISupportInitialize)spinCount.Properties).BeginInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(gridControl1);
            layoutControl1.Controls.Add(txtDesignQ);
            layoutControl1.Controls.Add(txtDesignH);
            layoutControl1.Controls.Add(btnSetDesignPoint);
            layoutControl1.Controls.Add(cmdCalcType);
            layoutControl1.Controls.Add(spinCount);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(1126, 544, 975, 600);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(560, 891);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // gridControl1
            //
            gridControl1.DataSource = pumpSerialParallelInfoViewModelBindingSource;
            gridControl1.Location = new Point(0, 214);
            gridControl1.MainView = gridView1;
            gridControl1.Name = "gridControl1";
            gridControl1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { repColor });
            gridControl1.Size = new Size(560, 677);
            gridControl1.TabIndex = 6;
            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
            //
            // pumpSerialParallelInfoViewModelBindingSource
            //
            pumpSerialParallelInfoViewModelBindingSource.DataSource = typeof(PumpSerialParallelInfoViewModel);
            //
            // gridView1
            //
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colQueryQ, colQueryH, colQueryE, colQueryP, colExtendRatio, colQhCalc, colQeCalc, colQpCalc, colId, colName, colColor, colIsBp, colRatedSpeed, colCurrentSpeed, colCurrentHz, colQh, colQe, colQp });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.CellValueChanged += gridView1_CellValueChanged;
            //
            // colQueryQ
            //
            colQueryQ.Caption = "流量(m³/h)";
            colQueryQ.FieldName = "QueryQ";
            colQueryQ.MinWidth = 30;
            colQueryQ.Name = "colQueryQ";
            colQueryQ.OptionsColumn.ReadOnly = true;
            colQueryQ.Visible = true;
            colQueryQ.VisibleIndex = 4;
            colQueryQ.Width = 112;
            //
            // colQueryH
            //
            colQueryH.Caption = "扬程(m)";
            colQueryH.FieldName = "QueryH";
            colQueryH.MinWidth = 30;
            colQueryH.Name = "colQueryH";
            colQueryH.OptionsColumn.ReadOnly = true;
            colQueryH.Visible = true;
            colQueryH.VisibleIndex = 5;
            colQueryH.Width = 112;
            //
            // colQueryE
            //
            colQueryE.Caption = "效率(%)";
            colQueryE.FieldName = "QueryE";
            colQueryE.MinWidth = 30;
            colQueryE.Name = "colQueryE";
            colQueryE.OptionsColumn.ReadOnly = true;
            colQueryE.Visible = true;
            colQueryE.VisibleIndex = 6;
            colQueryE.Width = 112;
            //
            // colQueryP
            //
            colQueryP.Caption = "功率(kW)";
            colQueryP.FieldName = "QueryP";
            colQueryP.MinWidth = 30;
            colQueryP.Name = "colQueryP";
            colQueryP.OptionsColumn.ReadOnly = true;
            colQueryP.Visible = true;
            colQueryP.VisibleIndex = 7;
            colQueryP.Width = 112;
            //
            // colExtendRatio
            //
            colExtendRatio.Caption = "延长(%)";
            colExtendRatio.FieldName = "ExtendRatio";
            colExtendRatio.MinWidth = 30;
            colExtendRatio.Name = "colExtendRatio";
            colExtendRatio.Visible = true;
            colExtendRatio.VisibleIndex = 3;
            colExtendRatio.Width = 112;
            //
            // colQhCalc
            //
            colQhCalc.FieldName = "QhCalc";
            colQhCalc.MinWidth = 30;
            colQhCalc.Name = "colQhCalc";
            colQhCalc.Width = 112;
            //
            // colQeCalc
            //
            colQeCalc.FieldName = "QeCalc";
            colQeCalc.MinWidth = 30;
            colQeCalc.Name = "colQeCalc";
            colQeCalc.Width = 112;
            //
            // colQpCalc
            //
            colQpCalc.FieldName = "QpCalc";
            colQpCalc.MinWidth = 30;
            colQpCalc.Name = "colQpCalc";
            colQpCalc.Width = 112;
            //
            // colId
            //
            colId.FieldName = "Id";
            colId.MinWidth = 30;
            colId.Name = "colId";
            colId.Width = 112;
            //
            // colName
            //
            colName.Caption = "名称";
            colName.FieldName = "Name";
            colName.MinWidth = 30;
            colName.Name = "colName";
            colName.Visible = true;
            colName.VisibleIndex = 0;
            colName.Width = 112;
            //
            // colColor
            //
            colColor.Caption = "颜色";
            colColor.ColumnEdit = repColor;
            colColor.FieldName = "Color";
            colColor.MinWidth = 30;
            colColor.Name = "colColor";
            colColor.Visible = true;
            colColor.VisibleIndex = 1;
            colColor.Width = 112;
            //
            // repColor
            //
            repColor.AutoHeight = false;
            repColor.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
            repColor.Name = "repColor";
            repColor.NullColor = Color.Empty;
            //
            // colIsBp
            //
            colIsBp.Caption = "变频";
            colIsBp.FieldName = "IsBp";
            colIsBp.MinWidth = 30;
            colIsBp.Name = "colIsBp";
            colIsBp.OptionsColumn.ReadOnly = true;
            colIsBp.Width = 112;
            //
            // colRatedSpeed
            //
            colRatedSpeed.FieldName = "RatedSpeed";
            colRatedSpeed.MinWidth = 30;
            colRatedSpeed.Name = "colRatedSpeed";
            colRatedSpeed.Width = 112;
            //
            // colCurrentSpeed
            //
            colCurrentSpeed.FieldName = "CurrentSpeed";
            colCurrentSpeed.MinWidth = 30;
            colCurrentSpeed.Name = "colCurrentSpeed";
            colCurrentSpeed.Width = 112;
            //
            // colCurrentHz
            //
            colCurrentHz.Caption = "频率(hz)";
            colCurrentHz.FieldName = "CurrentHz";
            colCurrentHz.MinWidth = 30;
            colCurrentHz.Name = "colCurrentHz";
            colCurrentHz.Visible = true;
            colCurrentHz.VisibleIndex = 2;
            colCurrentHz.Width = 112;
            //
            // colQh
            //
            colQh.FieldName = "Qh";
            colQh.MinWidth = 30;
            colQh.Name = "colQh";
            colQh.Width = 112;
            //
            // colQe
            //
            colQe.FieldName = "Qe";
            colQe.MinWidth = 30;
            colQe.Name = "colQe";
            colQe.Width = 112;
            //
            // colQp
            //
            colQp.FieldName = "Qp";
            colQp.MinWidth = 30;
            colQp.Name = "colQp";
            colQp.Width = 112;
            //
            // txtDesignQ
            //
            txtDesignQ.Location = new Point(68, 135);
            txtDesignQ.Name = "txtDesignQ";
            txtDesignQ.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
            txtDesignQ.Size = new Size(83, 28);
            txtDesignQ.StyleController = layoutControl1;
            txtDesignQ.TabIndex = 3;
            //
            // txtDesignH
            //
            txtDesignH.Location = new Point(299, 135);
            txtDesignH.Name = "txtDesignH";
            txtDesignH.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
            txtDesignH.Size = new Size(75, 28);
            txtDesignH.StyleController = layoutControl1;
            txtDesignH.TabIndex = 4;
            //
            // btnSetDesignPoint
            //
            btnSetDesignPoint.Appearance.BackColor = Color.White;
            btnSetDesignPoint.Appearance.Options.UseBackColor = true;
            btnSetDesignPoint.Appearance.Options.UseTextOptions = true;
            btnSetDesignPoint.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            btnSetDesignPoint.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("btnSetDesignPoint.ImageOptions.SvgImage");
            btnSetDesignPoint.ImageOptions.SvgImageSize = new Size(20, 20);
            btnSetDesignPoint.Location = new Point(424, 135);
            btnSetDesignPoint.Name = "btnSetDesignPoint";
            btnSetDesignPoint.Size = new Size(122, 32);
            btnSetDesignPoint.StyleController = layoutControl1;
            btnSetDesignPoint.TabIndex = 5;
            btnSetDesignPoint.Text = "设置";
            btnSetDesignPoint.Click += btnSetDesignPoint_Click;
            //
            // cmdCalcType
            //
            cmdCalcType.Location = new Point(68, 46);
            cmdCalcType.Name = "cmdCalcType";
            cmdCalcType.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
            cmdCalcType.Properties.Items.AddRange(new object[] { "并联", "串联" });
            cmdCalcType.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
            cmdCalcType.Size = new Size(210, 28);
            cmdCalcType.StyleController = layoutControl1;
            cmdCalcType.TabIndex = 0;
            cmdCalcType.SelectedIndexChanged += cmdCalcType_SelectedIndexChanged;
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlGroup1, layoutControlGroup2, layoutControlGroup3 });
            Root.Name = "Root";
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(560, 891);
            Root.TextVisible = false;
            //
            // layoutControlGroup1
            //
            layoutControlGroup1.GroupStyle = DevExpress.Utils.GroupStyle.Title;
            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1 });
            layoutControlGroup1.Location = new Point(0, 181);
            layoutControlGroup1.Name = "layoutControlGroup1";
            layoutControlGroup1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            layoutControlGroup1.Size = new Size(560, 710);
            layoutControlGroup1.Spacing = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            layoutControlGroup1.Text = "曲线列表";
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = gridControl1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            layoutControlItem1.Size = new Size(560, 677);
            layoutControlItem1.Text = "曲线列表";
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // layoutControlGroup2
            //
            layoutControlGroup2.GroupStyle = DevExpress.Utils.GroupStyle.Title;
            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem2, layoutControlItem4, layoutControlItem3, simpleLabelItem1, simpleLabelItem2 });
            layoutControlGroup2.Location = new Point(0, 88);
            layoutControlGroup2.Name = "layoutControlGroup2";
            layoutControlGroup2.Size = new Size(560, 93);
            layoutControlGroup2.Text = "设计点";
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = txtDesignQ;
            layoutControlItem2.Location = new Point(0, 0);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(141, 36);
            layoutControlItem2.Text = "流量:";
            layoutControlItem2.TextSize = new Size(42, 22);
            //
            // layoutControlItem4
            //
            layoutControlItem4.Control = btnSetDesignPoint;
            layoutControlItem4.Location = new Point(410, 0);
            layoutControlItem4.MinSize = new Size(126, 36);
            layoutControlItem4.Name = "layoutControlItem4";
            layoutControlItem4.Size = new Size(126, 36);
            layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem4.TextSize = new Size(0, 0);
            layoutControlItem4.TextVisible = false;
            //
            // layoutControlItem3
            //
            layoutControlItem3.Control = txtDesignH;
            layoutControlItem3.Location = new Point(231, 0);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.Size = new Size(133, 36);
            layoutControlItem3.Text = "扬程:";
            layoutControlItem3.TextSize = new Size(42, 22);
            //
            // simpleLabelItem1
            //
            simpleLabelItem1.AllowHotTrack = false;
            simpleLabelItem1.Location = new Point(141, 0);
            simpleLabelItem1.Name = "simpleLabelItem1";
            simpleLabelItem1.Size = new Size(90, 36);
            simpleLabelItem1.Text = "m³/h";
            simpleLabelItem1.TextSize = new Size(42, 22);
            //
            // simpleLabelItem2
            //
            simpleLabelItem2.AllowHotTrack = false;
            simpleLabelItem2.Location = new Point(364, 0);
            simpleLabelItem2.Name = "simpleLabelItem2";
            simpleLabelItem2.Size = new Size(46, 36);
            simpleLabelItem2.Text = "m";
            simpleLabelItem2.TextSize = new Size(42, 22);
            //
            // layoutControlGroup3
            //
            layoutControlGroup3.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem5, layoutControlItem6 });
            layoutControlGroup3.Location = new Point(0, 0);
            layoutControlGroup3.Name = "layoutControlGroup3";
            layoutControlGroup3.Size = new Size(560, 88);
            layoutControlGroup3.Text = "链接";
            //
            // layoutControlItem5
            //
            layoutControlItem5.Control = cmdCalcType;
            layoutControlItem5.Location = new Point(0, 0);
            layoutControlItem5.Name = "layoutControlItem5";
            layoutControlItem5.Size = new Size(268, 32);
            layoutControlItem5.Text = "方式:";
            layoutControlItem5.TextSize = new Size(42, 22);
            //
            // spinCount
            //
            spinCount.EditValue = new decimal(new int[] { 0, 0, 0, 0 });
            spinCount.Location = new Point(336, 46);
            spinCount.Name = "spinCount";
            spinCount.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
            spinCount.Size = new Size(210, 28);
            spinCount.StyleController = layoutControl1;
            spinCount.TabIndex = 2;
            spinCount.ValueChanged += spinCount_ValueChanged;
            //
            // layoutControlItem6
            //
            layoutControlItem6.Control = spinCount;
            layoutControlItem6.Location = new Point(268, 0);
            layoutControlItem6.Name = "layoutControlItem6";
            layoutControlItem6.Size = new Size(268, 32);
            layoutControlItem6.Text = "台数:";
            layoutControlItem6.TextSize = new Size(42, 22);
            //
            // PumpSingleSerialParallelInfoCtrl
            //
            AutoScaleDimensions = new SizeF(10F, 22F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "PumpSingleSerialParallelInfoCtrl";
            Size = new Size(560, 891);
            ((System.ComponentModel.ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)gridControl1).EndInit();
            ((System.ComponentModel.ISupportInitialize)pumpSerialParallelInfoViewModelBindingSource).EndInit();
            ((System.ComponentModel.ISupportInitialize)gridView1).EndInit();
            ((System.ComponentModel.ISupportInitialize)repColor).EndInit();
            ((System.ComponentModel.ISupportInitialize)txtDesignQ.Properties).EndInit();
            ((System.ComponentModel.ISupportInitialize)txtDesignH.Properties).EndInit();
            ((System.ComponentModel.ISupportInitialize)cmdCalcType.Properties).EndInit();
            ((System.ComponentModel.ISupportInitialize)Root).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlGroup1).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem1).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlGroup2).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem2).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem4).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem3).EndInit();
            ((System.ComponentModel.ISupportInitialize)simpleLabelItem1).EndInit();
            ((System.ComponentModel.ISupportInitialize)simpleLabelItem2).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlGroup3).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem5).EndInit();
            ((System.ComponentModel.ISupportInitialize)spinCount.Properties).EndInit();
            ((System.ComponentModel.ISupportInitialize)layoutControlItem6).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraGrid.GridControl gridControl1;
        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraEditors.Repository.RepositoryItemColorEdit repColor;
        private BindingSource pumpSerialParallelInfoViewModelBindingSource;
        private DevExpress.XtraGrid.Columns.GridColumn colQueryQ;
        private DevExpress.XtraGrid.Columns.GridColumn colQueryH;
        private DevExpress.XtraGrid.Columns.GridColumn colQueryE;
        private DevExpress.XtraGrid.Columns.GridColumn colQueryP;
        private DevExpress.XtraGrid.Columns.GridColumn colExtendRatio;
        private DevExpress.XtraGrid.Columns.GridColumn colQhCalc;
        private DevExpress.XtraGrid.Columns.GridColumn colQeCalc;
        private DevExpress.XtraGrid.Columns.GridColumn colQpCalc;
        private DevExpress.XtraGrid.Columns.GridColumn colId;
        private DevExpress.XtraGrid.Columns.GridColumn colName;
        private DevExpress.XtraGrid.Columns.GridColumn colColor;
        private DevExpress.XtraGrid.Columns.GridColumn colIsBp;
        private DevExpress.XtraGrid.Columns.GridColumn colRatedSpeed;
        private DevExpress.XtraGrid.Columns.GridColumn colCurrentSpeed;
        private DevExpress.XtraGrid.Columns.GridColumn colCurrentHz;
        private DevExpress.XtraGrid.Columns.GridColumn colQh;
        private DevExpress.XtraGrid.Columns.GridColumn colQe;
        private DevExpress.XtraGrid.Columns.GridColumn colQp;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
        private DevExpress.XtraEditors.TextEdit txtDesignQ;
        private DevExpress.XtraEditors.TextEdit txtDesignH;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
        private DevExpress.XtraLayout.SimpleLabelItem simpleLabelItem1;
        private DevExpress.XtraLayout.SimpleLabelItem simpleLabelItem2;
        private DevExpress.XtraEditors.SimpleButton btnSetDesignPoint;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup3;
        private DevExpress.XtraEditors.ComboBoxEdit cmdCalcType;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
        private DevExpress.XtraEditors.SpinEdit spinCount;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
    }
}
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSingleSerialParallelInfoCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,243 @@
namespace Yw.WinFrmUI.Phart
{
    public partial class PumpSingleSerialParallelInfoCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public PumpSingleSerialParallelInfoCtrl()
        {
            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;
            this.cmdCalcType.SelectedIndex = 0;
            this.spinCount.Properties.MinValue = 1;
            this.spinCount.Properties.MaxValue = 10;
        }
        /// <summary>
        /// è®¾ç½®æ›²çº¿
        /// </summary>
        public event Action<string, Yw.Geometry.Point2d, bool, Yw.Geometry.CubicSpline2d, Yw.Geometry.CubicSpline2d, Yw.Geometry.CubicSpline2d> SetEvent;
        /// <summary>
        /// è®¾ç½®æ›²çº¿ä¿¡æ¯
        /// </summary>
        public event Action<string, string, Color> SetInfoEvent;
        /// <summary>
        /// è®¾ç½®è®¾è®¡ç‚¹
        /// </summary>
        public event Action<double, double> SetDesignPointEvent;
        /// <summary>
        /// é‡ç½®æ›²çº¿
        /// </summary>
        public event Action<int, int> ResetEvent;
        private List<PumpSerialParallelInfoViewModel> _all_binding_list = null;
        public void SetBindingData(PumpSerialParallelInfoViewModel vm, Yw.Geometry.Point2d design_pt = null)
        {
            _all_binding_list = new List<PumpSerialParallelInfoViewModel>();
            if (vm != null)
            {
                _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 SetBindingData(List<PumpSerialParallelInfoViewModel> vm_list, Yw.Geometry.Point2d design_pt = null)
        {
            _all_binding_list = new List<PumpSerialParallelInfoViewModel>();
            if (vm_list != null && vm_list.Any())
            {
                for (int i = 0; i < vm_list.Count; i++)
                {
                    var item = vm_list[i];
                    var vm = new PumpSerialParallelInfoViewModel();
                    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;
        }
        /// <summary>
        /// èŽ·å–
        /// </summary>
        public Yw.Geometry.Point2d GetDesignPoint()
        {
            if (!double.TryParse(this.txtDesignQ.Text, out double x))
            {
                return default;
            }
            if (!double.TryParse(this.txtDesignH.Text, out double y))
            {
                return default;
            }
            return new Geometry.Point2d(x, y);
        }
        #region Color
        private List<Color> _color_array = new List<Color>()
        {
            Color.Red, Color.Blue, Color.Green,Color.DodgerBlue,
            Color.Fuchsia, Color.MidnightBlue,  Color.Maroon, Color.Aquamarine,
            Color.Bisque,Color.BurlyWood
        };
        /// <summary>
        /// èŽ·å–éšæœºé¢œè‰²
        /// </summary>
        /// <returns></returns>
        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 PumpSerialParallelInfoViewModel vm)
                return;
            vm.Color = (sender as DevExpress.XtraEditors.ColorEdit).Color;
            this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color);
        }
        //值变换
        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 PumpSerialParallelInfoViewModel;
                this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color);
            }
            else
            if (e.Column == this.colCurrentHz)
            {
                var vm = this.gridView1.GetRow(e.RowHandle) as PumpSerialParallelInfoViewModel;
                if (vm.CurrentHz < 10 || vm.CurrentHz > 50)
                {
                    return;
                }
                vm.Calc();
                var bol = this.cmdCalcType.SelectedIndex == 0;
                var pt = GetDesignPoint();
                this.SetEvent?.Invoke(vm.Id, pt, bol, vm.QhCalc, vm.QeCalc, vm.QpCalc);
            }
            else if (e.Column == this.colExtendRatio)
            {
                var vm = this.gridView1.GetRow(e.RowHandle) as PumpSerialParallelInfoViewModel;
                var bol = this.cmdCalcType.SelectedIndex == 0;
                var pt = GetDesignPoint();
                this.SetEvent?.Invoke(vm.Id, pt, bol, vm.QhCalc, vm.QeCalc, vm.QpCalc);
            }
        }
        /// <summary>
        /// è®¾ç½®æŸ¥è¯¢ä¿¡æ¯
        /// </summary>
        /// <param name="id"></param>
        /// <param name="query_pt"></param>
        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<PumpSerialParallelInfoViewModel> GetList()
        {
            if (_all_binding_list == null || !_all_binding_list.Any())
            {
                return default;
            }
            return _all_binding_list.Select(x => new PumpSerialParallelInfoViewModel(x)).ToList();
        }
        //方式
        private void cmdCalcType_SelectedIndexChanged(object sender, EventArgs e)
        {
            var index = this.cmdCalcType.SelectedIndex;
            var count = (int)this.spinCount.Value;
            this.ResetEvent?.Invoke(index, count);
        }
        //台数
        private void spinCount_ValueChanged(object sender, EventArgs e)
        {
            var index = this.cmdCalcType.SelectedIndex;
            var count = Convert.ToInt32(this.spinCount.EditValue);
            this.ResetEvent?.Invoke(index, count);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Phart.Core/01-perform/01-pump-chart/01-chart/03-serial-parallel/PumpSingleSerialParallelInfoCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="pumpSerialParallelInfoViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="btnSetDesignPoint.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAB0DAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkVkaXQiPg0KICAgIDxwYXRoIGQ9Ik0yNy42LDguMmwt
        My44LTMuOGMtMC41LTAuNS0xLjQtMC41LTEuOSwwbC0yLjUsMi41bDUuOCw1LjhsMi41LTIuNUMyOC4x
        LDkuNiwyOC4xLDguOCwyNy42LDguMnoiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50
        cz0iNCwyOCA5LjgsMjggNCwyMi4yICAiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxyZWN0IHg9IjUuOCIg
        eT0iMTMuNCIgd2lkdGg9IjE3LjYiIGhlaWdodD0iOC4yIiBjbGFzcz0iQmx1ZSIgdHJhbnNmb3JtPSJt
        YXRyaXgoMC43MDcsIC0wLjcwNzIsIDAuNzA3MiwgMC43MDcsIC04LjA3MjEsIDE1LjQwNDgpIiAvPg0K
        ICA8L2c+DQo8L3N2Zz4L
</value>
  </data>
</root>
WinFrmUI/Yw.WinFrmUI.Phart.Core/Yw.WinFrmUI.Phart.Core.csproj
@@ -87,6 +87,9 @@
    <Compile Update="01-perform\01-pump-chart\01-chart\03-serial-parallel\PumpSerialParallelChart.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="01-perform\01-pump-chart\01-chart\03-serial-parallel\PumpSingleSerialParallelInfoCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="01-perform\02-valve-chart\01-chart\ValvePerform2dChart.cs">
      <SubType>UserControl</SubType>
    </Compile>