From b59d9e9a62dd2cea04be784880cf454364003e1e Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期六, 30 十一月 2024 13:43:26 +0800
Subject: [PATCH] 增加计算局部损失和沿程损失

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.resx                        |    3 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.resx        |   92 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.resx                    |   46 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.resx                    |   94 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs                        |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.Designer.cs                 |  274 ++++------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.Designer.cs |   34 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.Designer.cs   |  278 +++++------
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs                      |   27 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.Designer.cs             |  132 +++--
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs          |    8 
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.cs            |  108 +--
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.Designer.cs             |  121 ++--
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.Designer.cs               |   50 +
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.resx                      |   94 +++
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.cs                          |  113 +--
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.resx          |    3 
 17 files changed, 895 insertions(+), 590 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.Designer.cs
index 963919c..583259e 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.Designer.cs
@@ -42,17 +42,18 @@
             colCode = new DevExpress.XtraGrid.Columns.GridColumn();
             colName = new DevExpress.XtraGrid.Columns.GridColumn();
             colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
-            colHasDb = new DevExpress.XtraGrid.Columns.GridColumn();
             colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
             colCaliber = new DevExpress.XtraGrid.Columns.GridColumn();
             colBendingAngle = new DevExpress.XtraGrid.Columns.GridColumn();
             colElbowType = new DevExpress.XtraGrid.Columns.GridColumn();
-            colMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             colElev = new DevExpress.XtraGrid.Columns.GridColumn();
-            colCalcuPress = new DevExpress.XtraGrid.Columns.GridColumn();
-            colCalcuHead = new DevExpress.XtraGrid.Columns.GridColumn();
+            colMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
+            colHasDb = new DevExpress.XtraGrid.Columns.GridColumn();
             colFlags = new DevExpress.XtraGrid.Columns.GridColumn();
             colDescription = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuPress = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuHead = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuDemand = new DevExpress.XtraGrid.Columns.GridColumn();
             colSet = new DevExpress.XtraGrid.Columns.GridColumn();
             repositoryItemButtonEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
@@ -74,7 +75,7 @@
             layoutControlItem10 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem11 = new DevExpress.XtraLayout.LayoutControlItem();
-            colCalcuDemand = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             ((ISupportInitialize)gridControl1).BeginInit();
             ((ISupportInitialize)hydroElbowViewModelBindingSource).BeginInit();
             ((ISupportInitialize)gridView1).BeginInit();
@@ -117,7 +118,7 @@
             // 
             // gridView1
             // 
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colCode, colName, colModelType, colMaterial, colCaliber, colBendingAngle, colElbowType, colElev, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuPress, colCalcuHead, colCalcuDemand, colSet });
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colCode, colName, colModelType, colMaterial, colCaliber, colBendingAngle, colElbowType, colElev, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuPress, colCalcuHead, colCalcuDemand, colCalcuMinorLoss, colSet });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.RowCellClick += gridView1_RowCellClick;
@@ -163,16 +164,6 @@
             colModelType.VisibleIndex = 3;
             colModelType.Width = 127;
             // 
-            // colHasDb
-            // 
-            colHasDb.FieldName = "HasDb";
-            colHasDb.MaxWidth = 40;
-            colHasDb.MinWidth = 40;
-            colHasDb.Name = "colHasDb";
-            colHasDb.Visible = true;
-            colHasDb.VisibleIndex = 10;
-            colHasDb.Width = 40;
-            // 
             // colMaterial
             // 
             colMaterial.FieldName = "Material";
@@ -213,6 +204,16 @@
             colElbowType.VisibleIndex = 7;
             colElbowType.Width = 100;
             // 
+            // colElev
+            // 
+            colElev.FieldName = "Elev";
+            colElev.MaxWidth = 80;
+            colElev.MinWidth = 80;
+            colElev.Name = "colElev";
+            colElev.Visible = true;
+            colElev.VisibleIndex = 8;
+            colElev.Width = 80;
+            // 
             // colMinorLoss
             // 
             colMinorLoss.FieldName = "MinorLoss";
@@ -223,15 +224,34 @@
             colMinorLoss.VisibleIndex = 9;
             colMinorLoss.Width = 100;
             // 
-            // colElev
+            // colHasDb
             // 
-            colElev.FieldName = "Elev";
-            colElev.MaxWidth = 80;
-            colElev.MinWidth = 80;
-            colElev.Name = "colElev";
-            colElev.Visible = true;
-            colElev.VisibleIndex = 8;
-            colElev.Width = 80;
+            colHasDb.FieldName = "HasDb";
+            colHasDb.MaxWidth = 40;
+            colHasDb.MinWidth = 40;
+            colHasDb.Name = "colHasDb";
+            colHasDb.Visible = true;
+            colHasDb.VisibleIndex = 10;
+            colHasDb.Width = 40;
+            // 
+            // colFlags
+            // 
+            colFlags.FieldName = "Flags";
+            colFlags.MaxWidth = 200;
+            colFlags.MinWidth = 100;
+            colFlags.Name = "colFlags";
+            colFlags.Visible = true;
+            colFlags.VisibleIndex = 11;
+            colFlags.Width = 127;
+            // 
+            // colDescription
+            // 
+            colDescription.FieldName = "Description";
+            colDescription.MinWidth = 100;
+            colDescription.Name = "colDescription";
+            colDescription.Visible = true;
+            colDescription.VisibleIndex = 12;
+            colDescription.Width = 392;
             // 
             // colCalcuPress
             // 
@@ -259,24 +279,18 @@
             colCalcuHead.VisibleIndex = 14;
             colCalcuHead.Width = 100;
             // 
-            // colFlags
+            // colCalcuDemand
             // 
-            colFlags.FieldName = "Flags";
-            colFlags.MaxWidth = 200;
-            colFlags.MinWidth = 100;
-            colFlags.Name = "colFlags";
-            colFlags.Visible = true;
-            colFlags.VisibleIndex = 11;
-            colFlags.Width = 127;
-            // 
-            // colDescription
-            // 
-            colDescription.FieldName = "Description";
-            colDescription.MinWidth = 100;
-            colDescription.Name = "colDescription";
-            colDescription.Visible = true;
-            colDescription.VisibleIndex = 12;
-            colDescription.Width = 392;
+            colCalcuDemand.FieldName = "CalcuDemand";
+            colCalcuDemand.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuDemand.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuDemand.ImageOptions.SvgImage");
+            colCalcuDemand.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuDemand.MaxWidth = 110;
+            colCalcuDemand.MinWidth = 110;
+            colCalcuDemand.Name = "colCalcuDemand";
+            colCalcuDemand.Visible = true;
+            colCalcuDemand.VisibleIndex = 15;
+            colCalcuDemand.Width = 110;
             // 
             // colSet
             // 
@@ -287,7 +301,7 @@
             colSet.MinWidth = 60;
             colSet.Name = "colSet";
             colSet.Visible = true;
-            colSet.VisibleIndex = 16;
+            colSet.VisibleIndex = 17;
             colSet.Width = 60;
             // 
             // repositoryItemButtonEdit1
@@ -515,18 +529,18 @@
             layoutControlItem11.TextSize = new Size(0, 0);
             layoutControlItem11.TextVisible = false;
             // 
-            // colCalcuDemand
+            // colCalcuMinorLoss
             // 
-            colCalcuDemand.FieldName = "CalcuDemand";
-            colCalcuDemand.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
-            colCalcuDemand.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuDemand.ImageOptions.SvgImage");
-            colCalcuDemand.ImageOptions.SvgImageSize = new Size(16, 16);
-            colCalcuDemand.MaxWidth = 110;
-            colCalcuDemand.MinWidth = 110;
-            colCalcuDemand.Name = "colCalcuDemand";
-            colCalcuDemand.Visible = true;
-            colCalcuDemand.VisibleIndex = 15;
-            colCalcuDemand.Width = 110;
+            colCalcuMinorLoss.FieldName = "CalcuMinorLoss";
+            colCalcuMinorLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuMinorLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuMinorLoss.ImageOptions.SvgImage");
+            colCalcuMinorLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuMinorLoss.MaxWidth = 100;
+            colCalcuMinorLoss.MinWidth = 100;
+            colCalcuMinorLoss.Name = "colCalcuMinorLoss";
+            colCalcuMinorLoss.Visible = true;
+            colCalcuMinorLoss.VisibleIndex = 16;
+            colCalcuMinorLoss.Width = 100;
             // 
             // HydroElbowListCtrl
             // 
@@ -603,5 +617,6 @@
         private GeneralSearchAndSetCtrl generalSearchAndSetCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
         private DevExpress.XtraGrid.Columns.GridColumn colCalcuDemand;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuMinorLoss;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs
index e098196..a51f066 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.cs
@@ -314,11 +314,12 @@
             this.colElbowType.Visible = false;
             this.colElev.Visible = false;
             this.colMinorLoss.Visible = false;
-            this.colCalcuPress.Visible = false;
-            this.colCalcuHead.Visible = false;
             this.colHasDb.Visible = false;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuPress.Visible = false;
+            this.colCalcuHead.Visible = false;
+            this.colCalcuMinorLoss.Visible = false;
             this.colSet.Visible = false;
         }
 
@@ -338,11 +339,12 @@
             this.colElbowType.Visible = true;
             this.colElev.Visible = true;
             this.colMinorLoss.Visible = true;
-            this.colCalcuPress.Visible = false;
-            this.colCalcuHead.Visible = false;
             this.colHasDb.Visible = true;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuPress.Visible = false;
+            this.colCalcuHead.Visible = false;
+            this.colCalcuMinorLoss.Visible = false;
             this.colSet.Visible = true;
         }
 
@@ -362,11 +364,12 @@
             this.colElbowType.Visible = true;
             this.colElev.Visible = true;
             this.colMinorLoss.Visible = true;
-            this.colCalcuPress.Visible = true;
-            this.colCalcuHead.Visible = true;
             this.colHasDb.Visible = true;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuPress.Visible = true;
+            this.colCalcuHead.Visible = true;
+            this.colCalcuMinorLoss.Visible = true;
             this.colSet.Visible = true;
         }
 
@@ -386,11 +389,12 @@
             this.colElbowType.Visible = true;
             this.colElev.Visible = true;
             this.colMinorLoss.Visible = true;
-            this.colCalcuPress.Visible = false;
-            this.colCalcuHead.Visible = false;
             this.colHasDb.Visible = true;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuPress.Visible = false;
+            this.colCalcuHead.Visible = false;
+            this.colCalcuMinorLoss.Visible = false;
             this.colSet.Visible = true;
         }
 
@@ -410,12 +414,13 @@
             this.colElbowType.Visible = true;
             this.colElev.Visible = true;
             this.colMinorLoss.Visible = true;
-            this.colCalcuPress.Visible = true;
-            this.colCalcuHead.Visible = true;
-            this.colCalcuDemand.Visible = true;
             this.colHasDb.Visible = true;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuPress.Visible = true;
+            this.colCalcuHead.Visible = true;
+            this.colCalcuDemand.Visible = true;
+            this.colCalcuMinorLoss.Visible = true;
             this.colSet.Visible = false;
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.resx
index ca97fdc..3eeea40 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/06-elbow/HydroElbowListCtrl.resx
@@ -259,4 +259,50 @@
         Pg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
+  <data name="colCalcuMinorLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.Designer.cs
index 5fbae5c..9c98ce1 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.Designer.cs
@@ -30,11 +30,11 @@
         {
             components = new Container();
             ComponentResourceManager resources = new ComponentResourceManager(typeof(HydroPipeListCtrl));
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions2 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
             gridControl1 = new DevExpress.XtraGrid.GridControl();
             hydroPipeViewModelBindingSource = new BindingSource(components);
             gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
@@ -67,6 +67,8 @@
             layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+            colCalcuMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuFrictionLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             ((ISupportInitialize)gridControl1).BeginInit();
             ((ISupportInitialize)hydroPipeViewModelBindingSource).BeginInit();
             ((ISupportInitialize)gridView1).BeginInit();
@@ -102,7 +104,7 @@
             // 
             // gridView1
             // 
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colName, colCode, colModelType, colMaterial, colDiameter, colLength, colRoughness, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuFlow, colCalcuVelocity, colCalcuHeadLoss, colSet });
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colName, colCode, colModelType, colMaterial, colDiameter, colLength, colRoughness, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuFlow, colCalcuVelocity, colCalcuHeadLoss, colCalcuMinorLoss, colCalcuFrictionLoss, colSet });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.RowCellClick += gridView1_RowCellClick;
@@ -275,15 +277,15 @@
             colSet.MinWidth = 60;
             colSet.Name = "colSet";
             colSet.Visible = true;
-            colSet.VisibleIndex = 15;
+            colSet.VisibleIndex = 17;
             colSet.Width = 60;
             // 
             // repositoryItemButtonEdit1
             // 
             repositoryItemButtonEdit1.AutoHeight = false;
-            editorButtonImageOptions1.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions1.SvgImage");
-            editorButtonImageOptions1.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions2.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions2.SvgImage");
+            editorButtonImageOptions2.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit1.Name = "repositoryItemButtonEdit1";
             repositoryItemButtonEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
@@ -415,6 +417,32 @@
             layoutControlItem9.TextSize = new Size(0, 0);
             layoutControlItem9.TextVisible = false;
             // 
+            // colCalcuMinorLoss
+            // 
+            colCalcuMinorLoss.FieldName = "CalcuMinorLoss";
+            colCalcuMinorLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuMinorLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuMinorLoss.ImageOptions.SvgImage");
+            colCalcuMinorLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuMinorLoss.MaxWidth = 100;
+            colCalcuMinorLoss.MinWidth = 100;
+            colCalcuMinorLoss.Name = "colCalcuMinorLoss";
+            colCalcuMinorLoss.Visible = true;
+            colCalcuMinorLoss.VisibleIndex = 15;
+            colCalcuMinorLoss.Width = 100;
+            // 
+            // colCalcuFrictionLoss
+            // 
+            colCalcuFrictionLoss.FieldName = "CalcuFrictionLoss";
+            colCalcuFrictionLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuFrictionLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuFrictionLoss.ImageOptions.SvgImage");
+            colCalcuFrictionLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuFrictionLoss.MaxWidth = 100;
+            colCalcuFrictionLoss.MinWidth = 100;
+            colCalcuFrictionLoss.Name = "colCalcuFrictionLoss";
+            colCalcuFrictionLoss.Visible = true;
+            colCalcuFrictionLoss.VisibleIndex = 16;
+            colCalcuFrictionLoss.Width = 100;
+            // 
             // HydroPipeListCtrl
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
@@ -475,5 +503,7 @@
         private DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit repositoryItemButtonEdit1;
         private GeneralSearchAndSetCtrl generalSearchAndSetCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuMinorLoss;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuFrictionLoss;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs
index 8940c97..87bd920 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.cs
@@ -350,12 +350,14 @@
             this.colLength.Visible = true;
             this.colRoughness.Visible = true;
             this.colMinorLoss.Visible = true;
-            this.colCalcuFlow.Visible = true;
-            this.colCalcuVelocity.Visible = true;
-            this.colCalcuHeadLoss.Visible = true;
             this.colHasDb.Visible = true;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuFlow.Visible = true;
+            this.colCalcuVelocity.Visible = true;
+            this.colCalcuHeadLoss.Visible = true;
+            this.colCalcuMinorLoss.Visible = true;
+            this.colCalcuFrictionLoss.Visible = true;
             this.colSet.Visible = true;
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.resx
index e8d9296..fd711df 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/HydroPipeListCtrl.resx
@@ -259,7 +259,99 @@
         Pg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="editorButtonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="colCalcuMinorLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="colCalcuFrictionLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="editorButtonImageOptions2.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.Designer.cs
index 9609930..3546c5b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.Designer.cs
@@ -28,24 +28,21 @@
         /// </summary>
         private void InitializeComponent()
         {
-            components = new Container();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             txtMaterial = new DevExpress.XtraEditors.TextEdit();
             txtMinorLoss = new DevExpress.XtraEditors.TextEdit();
             txtRoughness = new DevExpress.XtraEditors.TextEdit();
             txtLength = new DevExpress.XtraEditors.TextEdit();
             txtDiameter = new DevExpress.XtraEditors.TextEdit();
-            imgCmbLinkStatus = new DevExpress.XtraEditors.ImageComboBoxEdit();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem10 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
-            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
-            generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtMaterial.Properties).BeginInit();
@@ -53,16 +50,14 @@
             ((ISupportInitialize)txtRoughness.Properties).BeginInit();
             ((ISupportInitialize)txtLength.Properties).BeginInit();
             ((ISupportInitialize)txtDiameter.Properties).BeginInit();
-            ((ISupportInitialize)imgCmbLinkStatus.Properties).BeginInit();
             ((ISupportInitialize)Root).BeginInit();
-            ((ISupportInitialize)layoutControlItem10).BeginInit();
             ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)layoutControlItem5).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
             ((ISupportInitialize)layoutControlItem9).BeginInit();
-            ((ISupportInitialize)dxErrorProvider1).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)emptySpaceItem1).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
@@ -73,7 +68,6 @@
             layoutControl1.Controls.Add(txtRoughness);
             layoutControl1.Controls.Add(txtLength);
             layoutControl1.Controls.Add(txtDiameter);
-            layoutControl1.Controls.Add(imgCmbLinkStatus);
             layoutControl1.Dock = DockStyle.Fill;
             layoutControl1.Location = new Point(0, 0);
             layoutControl1.Name = "layoutControl1";
@@ -82,142 +76,6 @@
             layoutControl1.Size = new Size(477, 122);
             layoutControl1.TabIndex = 1;
             layoutControl1.Text = "layoutControl1";
-            // 
-            // txtMaterial
-            // 
-            txtMaterial.Location = new Point(304, 12);
-            txtMaterial.Name = "txtMaterial";
-            txtMaterial.Size = new Size(161, 20);
-            txtMaterial.StyleController = layoutControl1;
-            txtMaterial.TabIndex = 2;
-            // 
-            // txtMinorLoss
-            // 
-            txtMinorLoss.Location = new Point(304, 60);
-            txtMinorLoss.Name = "txtMinorLoss";
-            txtMinorLoss.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtMinorLoss.Size = new Size(161, 20);
-            txtMinorLoss.StyleController = layoutControl1;
-            txtMinorLoss.TabIndex = 6;
-            // 
-            // txtRoughness
-            // 
-            txtRoughness.Location = new Point(76, 60);
-            txtRoughness.Name = "txtRoughness";
-            txtRoughness.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtRoughness.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtRoughness.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtRoughness.Size = new Size(160, 20);
-            txtRoughness.StyleController = layoutControl1;
-            txtRoughness.TabIndex = 5;
-            // 
-            // txtLength
-            // 
-            txtLength.Location = new Point(304, 36);
-            txtLength.Name = "txtLength";
-            txtLength.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtLength.Properties.DisplayFormat.FormatString = "{0}m";
-            txtLength.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
-            txtLength.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtLength.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtLength.Properties.NullValuePrompt = "m";
-            txtLength.Size = new Size(161, 20);
-            txtLength.StyleController = layoutControl1;
-            txtLength.TabIndex = 4;
-            // 
-            // txtDiameter
-            // 
-            txtDiameter.Location = new Point(76, 36);
-            txtDiameter.Name = "txtDiameter";
-            txtDiameter.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtDiameter.Properties.DisplayFormat.FormatString = "{0}mm";
-            txtDiameter.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
-            txtDiameter.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtDiameter.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtDiameter.Properties.NullValuePrompt = "mm";
-            txtDiameter.Size = new Size(160, 20);
-            txtDiameter.StyleController = layoutControl1;
-            txtDiameter.TabIndex = 3;
-            // 
-            // imgCmbLinkStatus
-            // 
-            imgCmbLinkStatus.Location = new Point(76, 12);
-            imgCmbLinkStatus.Name = "imgCmbLinkStatus";
-            imgCmbLinkStatus.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
-            imgCmbLinkStatus.Size = new Size(160, 20);
-            imgCmbLinkStatus.StyleController = layoutControl1;
-            imgCmbLinkStatus.TabIndex = 0;
-            // 
-            // Root
-            // 
-            Root.AppearanceItemCaption.Options.UseTextOptions = true;
-            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem10, layoutControlItem4, layoutControlItem5, layoutControlItem6, layoutControlItem7, layoutControlItem9, layoutControlItem1 });
-            Root.Name = "Root";
-            Root.Size = new Size(477, 122);
-            Root.TextVisible = false;
-            // 
-            // layoutControlItem10
-            // 
-            layoutControlItem10.Control = imgCmbLinkStatus;
-            layoutControlItem10.Location = new Point(0, 0);
-            layoutControlItem10.Name = "layoutControlItem10";
-            layoutControlItem10.Size = new Size(228, 24);
-            layoutControlItem10.Text = "绠¢亾鐘舵��:";
-            layoutControlItem10.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.Control = txtDiameter;
-            layoutControlItem4.Location = new Point(0, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(228, 24);
-            layoutControlItem4.Text = "鐩村緞:";
-            layoutControlItem4.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem5
-            // 
-            layoutControlItem5.Control = txtLength;
-            layoutControlItem5.Location = new Point(228, 24);
-            layoutControlItem5.Name = "layoutControlItem5";
-            layoutControlItem5.Size = new Size(229, 24);
-            layoutControlItem5.Text = "闀垮害:";
-            layoutControlItem5.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem6
-            // 
-            layoutControlItem6.Control = txtRoughness;
-            layoutControlItem6.Location = new Point(0, 48);
-            layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Size = new Size(228, 24);
-            layoutControlItem6.Text = "绮楃硻绯绘暟:";
-            layoutControlItem6.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem7
-            // 
-            layoutControlItem7.Control = txtMinorLoss;
-            layoutControlItem7.Location = new Point(228, 48);
-            layoutControlItem7.Name = "layoutControlItem7";
-            layoutControlItem7.Size = new Size(229, 24);
-            layoutControlItem7.Text = "灞�闃荤郴鏁�:";
-            layoutControlItem7.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem9
-            // 
-            layoutControlItem9.Control = txtMaterial;
-            layoutControlItem9.Location = new Point(228, 0);
-            layoutControlItem9.Name = "layoutControlItem9";
-            layoutControlItem9.Size = new Size(229, 24);
-            layoutControlItem9.Text = "鏉愯川:";
-            layoutControlItem9.TextSize = new Size(52, 14);
-            // 
-            // dxErrorProvider1
-            // 
-            dxErrorProvider1.ContainerControl = this;
             // 
             // generalOkAndCancelCtrl1
             // 
@@ -230,6 +88,116 @@
             generalOkAndCancelCtrl1.Size = new Size(453, 26);
             generalOkAndCancelCtrl1.TabIndex = 7;
             // 
+            // txtMaterial
+            // 
+            txtMaterial.Location = new Point(76, 12);
+            txtMaterial.Name = "txtMaterial";
+            txtMaterial.Size = new Size(160, 20);
+            txtMaterial.StyleController = layoutControl1;
+            txtMaterial.TabIndex = 2;
+            // 
+            // txtMinorLoss
+            // 
+            txtMinorLoss.Location = new Point(76, 60);
+            txtMinorLoss.Name = "txtMinorLoss";
+            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtMinorLoss.Size = new Size(160, 20);
+            txtMinorLoss.StyleController = layoutControl1;
+            txtMinorLoss.TabIndex = 6;
+            // 
+            // txtRoughness
+            // 
+            txtRoughness.Location = new Point(304, 36);
+            txtRoughness.Name = "txtRoughness";
+            txtRoughness.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtRoughness.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtRoughness.Size = new Size(161, 20);
+            txtRoughness.StyleController = layoutControl1;
+            txtRoughness.TabIndex = 5;
+            // 
+            // txtLength
+            // 
+            txtLength.Location = new Point(76, 36);
+            txtLength.Name = "txtLength";
+            txtLength.Properties.DisplayFormat.FormatString = "{0}m";
+            txtLength.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtLength.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtLength.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtLength.Properties.NullValuePrompt = "m";
+            txtLength.Size = new Size(160, 20);
+            txtLength.StyleController = layoutControl1;
+            txtLength.TabIndex = 4;
+            // 
+            // txtDiameter
+            // 
+            txtDiameter.Location = new Point(304, 12);
+            txtDiameter.Name = "txtDiameter";
+            txtDiameter.Properties.DisplayFormat.FormatString = "{0}mm";
+            txtDiameter.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtDiameter.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtDiameter.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtDiameter.Properties.NullValuePrompt = "mm";
+            txtDiameter.Size = new Size(161, 20);
+            txtDiameter.StyleController = layoutControl1;
+            txtDiameter.TabIndex = 3;
+            // 
+            // Root
+            // 
+            Root.AppearanceItemCaption.Options.UseTextOptions = true;
+            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem5, layoutControlItem7, layoutControlItem9, layoutControlItem1, layoutControlItem4, layoutControlItem6, emptySpaceItem1 });
+            Root.Name = "Root";
+            Root.Size = new Size(477, 122);
+            Root.TextVisible = false;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = txtDiameter;
+            layoutControlItem4.Location = new Point(228, 0);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(229, 24);
+            layoutControlItem4.Text = "鐩村緞:";
+            layoutControlItem4.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = txtLength;
+            layoutControlItem5.Location = new Point(0, 24);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.Size = new Size(228, 24);
+            layoutControlItem5.Text = "闀垮害:";
+            layoutControlItem5.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem6
+            // 
+            layoutControlItem6.Control = txtRoughness;
+            layoutControlItem6.Location = new Point(228, 24);
+            layoutControlItem6.Name = "layoutControlItem6";
+            layoutControlItem6.Size = new Size(229, 24);
+            layoutControlItem6.Text = "绮楃硻绯绘暟:";
+            layoutControlItem6.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem7
+            // 
+            layoutControlItem7.Control = txtMinorLoss;
+            layoutControlItem7.Location = new Point(0, 48);
+            layoutControlItem7.Name = "layoutControlItem7";
+            layoutControlItem7.Size = new Size(228, 24);
+            layoutControlItem7.Text = "灞�闃荤郴鏁�:";
+            layoutControlItem7.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem9
+            // 
+            layoutControlItem9.Control = txtMaterial;
+            layoutControlItem9.Location = new Point(0, 0);
+            layoutControlItem9.Name = "layoutControlItem9";
+            layoutControlItem9.Size = new Size(228, 24);
+            layoutControlItem9.Text = "鏉愯川:";
+            layoutControlItem9.TextSize = new Size(52, 14);
+            // 
             // layoutControlItem1
             // 
             layoutControlItem1.Control = generalOkAndCancelCtrl1;
@@ -238,6 +206,14 @@
             layoutControlItem1.Size = new Size(457, 30);
             layoutControlItem1.TextSize = new Size(0, 0);
             layoutControlItem1.TextVisible = false;
+            // 
+            // emptySpaceItem1
+            // 
+            emptySpaceItem1.AllowHotTrack = false;
+            emptySpaceItem1.Location = new Point(228, 48);
+            emptySpaceItem1.Name = "emptySpaceItem1";
+            emptySpaceItem1.Size = new Size(229, 24);
+            emptySpaceItem1.TextSize = new Size(0, 0);
             // 
             // SetHydroPipeDlg
             // 
@@ -256,16 +232,14 @@
             ((ISupportInitialize)txtRoughness.Properties).EndInit();
             ((ISupportInitialize)txtLength.Properties).EndInit();
             ((ISupportInitialize)txtDiameter.Properties).EndInit();
-            ((ISupportInitialize)imgCmbLinkStatus.Properties).EndInit();
             ((ISupportInitialize)Root).EndInit();
-            ((ISupportInitialize)layoutControlItem10).EndInit();
             ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)layoutControlItem5).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
             ((ISupportInitialize)layoutControlItem9).EndInit();
-            ((ISupportInitialize)dxErrorProvider1).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)emptySpaceItem1).EndInit();
             ResumeLayout(false);
         }
 
@@ -273,12 +247,9 @@
 
         private DevExpress.XtraLayout.LayoutControl layoutControl1;
         private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
-        private DevExpress.XtraEditors.ImageComboBoxEdit imgCmbLinkStatus;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem10;
         private DevExpress.XtraEditors.TextEdit txtMinorLoss;
         private DevExpress.XtraEditors.TextEdit txtRoughness;
         private DevExpress.XtraEditors.TextEdit txtLength;
@@ -289,5 +260,6 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
         private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.cs
index 3c60005..74a3803 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.cs
@@ -8,7 +8,6 @@
             this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
             this.layoutControl1.SetupLayoutControl();
             this.generalOkAndCancelCtrl1.OkEvent += GeneralOkAndCancelCtrl1_OkEvent;
-            InitialLinkStatus();
         }
 
         /// <summary>
@@ -17,104 +16,70 @@
         public event Action<List<Yw.Model.HydroPipeInfo>> ReloadDataEvent;
 
         //鎵�鏈夐儴浠跺垪琛�
-        private List<Yw.Model.HydroPipeInfo> _allParterList = null;
+        private List<Yw.Model.HydroPipeInfo> _allVisualList = null;
 
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(Yw.Model.HydroPipeInfo parter)
+        public void SetBindingData(Yw.Model.HydroPipeInfo visual)
         {
-            var allParterList = parter == null ? null : new List<Yw.Model.HydroPipeInfo>() { parter };
+            var allParterList = visual == null ? null : new List<Yw.Model.HydroPipeInfo>() { visual };
             this.SetBindingData(allParterList);
         }
 
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(List<Yw.Model.HydroPipeInfo> allParterList)
+        public void SetBindingData(List<Yw.Model.HydroPipeInfo> allVisualList)
         {
-            _allParterList = allParterList;
-            if (_allParterList != null && _allParterList.Count == 1)
+            _allVisualList = allVisualList;
+            if (_allVisualList != null && _allVisualList.Count == 1)
             {
-                var parter = _allParterList.First();
-                this.imgCmbLinkStatus.EditValue = parter.LinkStatus;
-                this.txtMaterial.EditValue = parter.Material;
-                this.txtDiameter.EditValue = parter.Diameter;
-                this.txtLength.EditValue = parter.Length;
-                this.txtRoughness.EditValue = parter.Roughness;
-                this.txtMinorLoss.EditValue = parter.MinorLoss;
+                var visual = _allVisualList.First();
+                this.txtMaterial.EditValue = visual.Material;
+                this.txtDiameter.EditValue = visual.Diameter;
+                this.txtLength.EditValue = visual.Length;
+                this.txtRoughness.EditValue = visual.Roughness;
+                this.txtMinorLoss.EditValue = visual.MinorLoss;
             }
-        }
-
-        //鍒濆鍖栫娈电姸鎬�
-        private void InitialLinkStatus()
-        {
-            this.imgCmbLinkStatus.Properties.BeginUpdate();
-            this.imgCmbLinkStatus.Properties.Items.Clear();
-            this.imgCmbLinkStatus.Properties.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Open), Yw.Hydro.LinkStatus.Open, -1);
-            this.imgCmbLinkStatus.Properties.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Closed), Yw.Hydro.LinkStatus.Closed, -1);
-            this.imgCmbLinkStatus.Properties.EndUpdate();
-        }
-
-        //楠岃瘉
-        private bool Valid()
-        {
-            this.dxErrorProvider1.ClearErrors();
-            if (this.imgCmbLinkStatus.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.imgCmbLinkStatus, "蹇呴�夐」");
-                return false;
-            }
-            if (this.txtDiameter.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtDiameter, "蹇呭~椤�");
-                return false;
-            }
-            if (this.txtLength.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtLength, "蹇呭~椤�");
-                return false;
-            }
-            if (this.txtRoughness.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtRoughness, "蹇呭~椤�");
-                return false;
-            }
-            if (this.txtMinorLoss.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtMinorLoss, "蹇呭~椤�");
-                return false;
-            }
-            return true;
         }
 
         //纭畾
         private void GeneralOkAndCancelCtrl1_OkEvent()
         {
-            if (_allParterList == null || _allParterList.Count < 1)
+            if (_allVisualList == null || _allVisualList.Count < 1)
             {
                 return;
             }
-            if (!Valid())
-            {
-                return;
-            }
-            var linkStatus = this.imgCmbLinkStatus.EditValue.ToString();
             var material = this.txtMaterial.Text.Trim();
-            var diameter = double.Parse(this.txtDiameter.EditValue.ToString());
-            var length = double.Parse(this.txtLength.EditValue.ToString());
-            var roughness = double.Parse(this.txtRoughness.EditValue.ToString());
-            var minoroLoss = double.Parse(this.txtMinorLoss.EditValue.ToString());
-            _allParterList.ForEach(x =>
+            double? diameter = this.txtDiameter.EditValue == null ? null : double.Parse(this.txtDiameter.EditValue.ToString());
+            double? length = this.txtLength.EditValue == null ? null : double.Parse(this.txtLength.EditValue.ToString());
+            double? roughness = this.txtRoughness.EditValue == null ? null : double.Parse(this.txtRoughness.EditValue.ToString());
+            double? minorLoss = this.txtMinorLoss.EditValue == null ? null : double.Parse(this.txtMinorLoss.EditValue.ToString());
+            _allVisualList.ForEach(x =>
             {
-                x.LinkStatus = linkStatus;
-                x.Material = material;
-                x.Diameter = diameter;
-                x.Length = length;
-                x.Roughness = roughness;
-                x.MinorLoss = minoroLoss;
+                if (!string.IsNullOrEmpty(material))
+                {
+                    x.Material = material;
+                }
+                if (diameter.HasValue)
+                {
+                    x.Diameter = diameter.Value;
+                }
+                if (length.HasValue)
+                {
+                    x.Length = length.Value;
+                }
+                if (roughness.HasValue)
+                {
+                    x.Roughness = roughness.Value;
+                }
+                if (minorLoss.HasValue)
+                {
+                    x.MinorLoss = minorLoss.Value;
+                }
             });
-            this.ReloadDataEvent?.Invoke(_allParterList);
+            this.ReloadDataEvent?.Invoke(_allVisualList);
             this.DialogResult = DialogResult.OK;
             this.Close();
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.resx
index d438392..af32865 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/14-pipe/SetHydroPipeDlg.resx
@@ -117,7 +117,4 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.Designer.cs
index d2f0c56..21dffe9 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.Designer.cs
@@ -67,6 +67,8 @@
             layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
+            colCalcuMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuFrictionLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             ((ISupportInitialize)hydroTranslationViewModelBindingSource).BeginInit();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
@@ -126,7 +128,7 @@
             // 
             // gridView1
             // 
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colName, colCode, colModelType, colMaterial, colDiameter, colLength, colRoughness, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuFlow, colCalcuVelocity, colCalcuHeadLoss, colSet });
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colName, colCode, colModelType, colMaterial, colDiameter, colLength, colRoughness, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuFlow, colCalcuVelocity, colCalcuHeadLoss, colCalcuMinorLoss, colCalcuFrictionLoss, colSet });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.RowCellClick += gridView1_RowCellClick;
@@ -302,7 +304,7 @@
             colSet.MinWidth = 60;
             colSet.Name = "colSet";
             colSet.Visible = true;
-            colSet.VisibleIndex = 15;
+            colSet.VisibleIndex = 17;
             colSet.Width = 60;
             // 
             // repositoryItemButtonEdit1
@@ -418,6 +420,32 @@
             layoutControlItem9.TextSize = new Size(0, 0);
             layoutControlItem9.TextVisible = false;
             // 
+            // colCalcuMinorLoss
+            // 
+            colCalcuMinorLoss.FieldName = "CalcuMinorLoss";
+            colCalcuMinorLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuMinorLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuMinorLoss.ImageOptions.SvgImage");
+            colCalcuMinorLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuMinorLoss.MaxWidth = 100;
+            colCalcuMinorLoss.MinWidth = 100;
+            colCalcuMinorLoss.Name = "colCalcuMinorLoss";
+            colCalcuMinorLoss.Visible = true;
+            colCalcuMinorLoss.VisibleIndex = 15;
+            colCalcuMinorLoss.Width = 100;
+            // 
+            // colCalcuFrictionLoss
+            // 
+            colCalcuFrictionLoss.FieldName = "CalcuFrictionLoss";
+            colCalcuFrictionLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuFrictionLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuFrictionLoss.ImageOptions.SvgImage");
+            colCalcuFrictionLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuFrictionLoss.MaxWidth = 100;
+            colCalcuFrictionLoss.MinWidth = 100;
+            colCalcuFrictionLoss.Name = "colCalcuFrictionLoss";
+            colCalcuFrictionLoss.Visible = true;
+            colCalcuFrictionLoss.VisibleIndex = 16;
+            colCalcuFrictionLoss.Width = 100;
+            // 
             // HydroTranslationListCtrl
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
@@ -477,5 +505,7 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
         private GeneralSearchAndSetCtrl generalSearchAndSetCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuMinorLoss;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuFrictionLoss;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs
index 29731a5..6bdf497 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.cs
@@ -349,12 +349,14 @@
             this.colLength.Visible = true;
             this.colRoughness.Visible = true;
             this.colMinorLoss.Visible = true;
-            this.colCalcuFlow.Visible = true;
-            this.colCalcuVelocity.Visible = true;
-            this.colCalcuHeadLoss.Visible = true;
             this.colHasDb.Visible = true;
             this.colFlags.Visible = true;
             this.colDescription.Visible = true;
+            this.colCalcuFlow.Visible = true;
+            this.colCalcuVelocity.Visible = true;
+            this.colCalcuHeadLoss.Visible = true;
+            this.colCalcuMinorLoss.Visible = true;
+            this.colCalcuFrictionLoss.Visible = true;
             this.colSet.Visible = true;
         }
 
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.resx
index 6e21182..487dfd4 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/HydroTranslationListCtrl.resx
@@ -259,6 +259,98 @@
         Pg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
+  <data name="colCalcuMinorLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="colCalcuFrictionLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
   <data name="editorButtonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.Designer.cs
index 24712a7..bed254b 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.Designer.cs
@@ -28,24 +28,21 @@
         /// </summary>
         private void InitializeComponent()
         {
-            components = new Container();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             txtMaterial = new DevExpress.XtraEditors.TextEdit();
             txtMinorLoss = new DevExpress.XtraEditors.TextEdit();
             txtRoughness = new DevExpress.XtraEditors.TextEdit();
             txtLength = new DevExpress.XtraEditors.TextEdit();
             txtDiameter = new DevExpress.XtraEditors.TextEdit();
-            imgCmbLinkStatus = new DevExpress.XtraEditors.ImageComboBoxEdit();
             Root = new DevExpress.XtraLayout.LayoutControlGroup();
-            layoutControlItem10 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem9 = new DevExpress.XtraLayout.LayoutControlItem();
-            dxErrorProvider1 = new DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(components);
-            generalOkAndCancelCtrl1 = new GeneralOkAndCancelCtrl();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
             ((ISupportInitialize)layoutControl1).BeginInit();
             layoutControl1.SuspendLayout();
             ((ISupportInitialize)txtMaterial.Properties).BeginInit();
@@ -53,16 +50,14 @@
             ((ISupportInitialize)txtRoughness.Properties).BeginInit();
             ((ISupportInitialize)txtLength.Properties).BeginInit();
             ((ISupportInitialize)txtDiameter.Properties).BeginInit();
-            ((ISupportInitialize)imgCmbLinkStatus.Properties).BeginInit();
             ((ISupportInitialize)Root).BeginInit();
-            ((ISupportInitialize)layoutControlItem10).BeginInit();
             ((ISupportInitialize)layoutControlItem4).BeginInit();
             ((ISupportInitialize)layoutControlItem5).BeginInit();
             ((ISupportInitialize)layoutControlItem6).BeginInit();
             ((ISupportInitialize)layoutControlItem7).BeginInit();
             ((ISupportInitialize)layoutControlItem9).BeginInit();
-            ((ISupportInitialize)dxErrorProvider1).BeginInit();
             ((ISupportInitialize)layoutControlItem1).BeginInit();
+            ((ISupportInitialize)emptySpaceItem1).BeginInit();
             SuspendLayout();
             // 
             // layoutControl1
@@ -73,7 +68,6 @@
             layoutControl1.Controls.Add(txtRoughness);
             layoutControl1.Controls.Add(txtLength);
             layoutControl1.Controls.Add(txtDiameter);
-            layoutControl1.Controls.Add(imgCmbLinkStatus);
             layoutControl1.Dock = DockStyle.Fill;
             layoutControl1.Location = new Point(0, 0);
             layoutControl1.Name = "layoutControl1";
@@ -82,142 +76,6 @@
             layoutControl1.Size = new Size(477, 122);
             layoutControl1.TabIndex = 1;
             layoutControl1.Text = "layoutControl1";
-            // 
-            // txtMaterial
-            // 
-            txtMaterial.Location = new Point(304, 12);
-            txtMaterial.Name = "txtMaterial";
-            txtMaterial.Size = new Size(161, 20);
-            txtMaterial.StyleController = layoutControl1;
-            txtMaterial.TabIndex = 2;
-            // 
-            // txtMinorLoss
-            // 
-            txtMinorLoss.Location = new Point(304, 60);
-            txtMinorLoss.Name = "txtMinorLoss";
-            txtMinorLoss.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtMinorLoss.Size = new Size(161, 20);
-            txtMinorLoss.StyleController = layoutControl1;
-            txtMinorLoss.TabIndex = 6;
-            // 
-            // txtRoughness
-            // 
-            txtRoughness.Location = new Point(76, 60);
-            txtRoughness.Name = "txtRoughness";
-            txtRoughness.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtRoughness.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtRoughness.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtRoughness.Size = new Size(160, 20);
-            txtRoughness.StyleController = layoutControl1;
-            txtRoughness.TabIndex = 5;
-            // 
-            // txtLength
-            // 
-            txtLength.Location = new Point(304, 36);
-            txtLength.Name = "txtLength";
-            txtLength.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtLength.Properties.DisplayFormat.FormatString = "{0}m";
-            txtLength.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
-            txtLength.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtLength.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtLength.Properties.NullValuePrompt = "m";
-            txtLength.Size = new Size(161, 20);
-            txtLength.StyleController = layoutControl1;
-            txtLength.TabIndex = 4;
-            // 
-            // txtDiameter
-            // 
-            txtDiameter.Location = new Point(76, 36);
-            txtDiameter.Name = "txtDiameter";
-            txtDiameter.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.False;
-            txtDiameter.Properties.DisplayFormat.FormatString = "{0}mm";
-            txtDiameter.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
-            txtDiameter.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
-            txtDiameter.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
-            txtDiameter.Properties.NullValuePrompt = "mm";
-            txtDiameter.Size = new Size(160, 20);
-            txtDiameter.StyleController = layoutControl1;
-            txtDiameter.TabIndex = 3;
-            // 
-            // imgCmbLinkStatus
-            // 
-            imgCmbLinkStatus.Location = new Point(76, 12);
-            imgCmbLinkStatus.Name = "imgCmbLinkStatus";
-            imgCmbLinkStatus.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo) });
-            imgCmbLinkStatus.Size = new Size(160, 20);
-            imgCmbLinkStatus.StyleController = layoutControl1;
-            imgCmbLinkStatus.TabIndex = 0;
-            // 
-            // Root
-            // 
-            Root.AppearanceItemCaption.Options.UseTextOptions = true;
-            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
-            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
-            Root.GroupBordersVisible = false;
-            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem10, layoutControlItem4, layoutControlItem5, layoutControlItem6, layoutControlItem7, layoutControlItem9, layoutControlItem1 });
-            Root.Name = "Root";
-            Root.Size = new Size(477, 122);
-            Root.TextVisible = false;
-            // 
-            // layoutControlItem10
-            // 
-            layoutControlItem10.Control = imgCmbLinkStatus;
-            layoutControlItem10.Location = new Point(0, 0);
-            layoutControlItem10.Name = "layoutControlItem10";
-            layoutControlItem10.Size = new Size(228, 24);
-            layoutControlItem10.Text = "绠¢亾鐘舵��:";
-            layoutControlItem10.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem4
-            // 
-            layoutControlItem4.Control = txtDiameter;
-            layoutControlItem4.Location = new Point(0, 24);
-            layoutControlItem4.Name = "layoutControlItem4";
-            layoutControlItem4.Size = new Size(228, 24);
-            layoutControlItem4.Text = "鐩村緞:";
-            layoutControlItem4.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem5
-            // 
-            layoutControlItem5.Control = txtLength;
-            layoutControlItem5.Location = new Point(228, 24);
-            layoutControlItem5.Name = "layoutControlItem5";
-            layoutControlItem5.Size = new Size(229, 24);
-            layoutControlItem5.Text = "闀垮害:";
-            layoutControlItem5.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem6
-            // 
-            layoutControlItem6.Control = txtRoughness;
-            layoutControlItem6.Location = new Point(0, 48);
-            layoutControlItem6.Name = "layoutControlItem6";
-            layoutControlItem6.Size = new Size(228, 24);
-            layoutControlItem6.Text = "绮楃硻绯绘暟:";
-            layoutControlItem6.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem7
-            // 
-            layoutControlItem7.Control = txtMinorLoss;
-            layoutControlItem7.Location = new Point(228, 48);
-            layoutControlItem7.Name = "layoutControlItem7";
-            layoutControlItem7.Size = new Size(229, 24);
-            layoutControlItem7.Text = "灞�闃荤郴鏁�:";
-            layoutControlItem7.TextSize = new Size(52, 14);
-            // 
-            // layoutControlItem9
-            // 
-            layoutControlItem9.Control = txtMaterial;
-            layoutControlItem9.Location = new Point(228, 0);
-            layoutControlItem9.Name = "layoutControlItem9";
-            layoutControlItem9.Size = new Size(229, 24);
-            layoutControlItem9.Text = "鏉愯川:";
-            layoutControlItem9.TextSize = new Size(52, 14);
-            // 
-            // dxErrorProvider1
-            // 
-            dxErrorProvider1.ContainerControl = this;
             // 
             // generalOkAndCancelCtrl1
             // 
@@ -230,6 +88,116 @@
             generalOkAndCancelCtrl1.Size = new Size(453, 26);
             generalOkAndCancelCtrl1.TabIndex = 7;
             // 
+            // txtMaterial
+            // 
+            txtMaterial.Location = new Point(76, 12);
+            txtMaterial.Name = "txtMaterial";
+            txtMaterial.Size = new Size(160, 20);
+            txtMaterial.StyleController = layoutControl1;
+            txtMaterial.TabIndex = 2;
+            // 
+            // txtMinorLoss
+            // 
+            txtMinorLoss.Location = new Point(76, 60);
+            txtMinorLoss.Name = "txtMinorLoss";
+            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtMinorLoss.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtMinorLoss.Size = new Size(160, 20);
+            txtMinorLoss.StyleController = layoutControl1;
+            txtMinorLoss.TabIndex = 6;
+            // 
+            // txtRoughness
+            // 
+            txtRoughness.Location = new Point(304, 36);
+            txtRoughness.Name = "txtRoughness";
+            txtRoughness.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtRoughness.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtRoughness.Size = new Size(161, 20);
+            txtRoughness.StyleController = layoutControl1;
+            txtRoughness.TabIndex = 5;
+            // 
+            // txtLength
+            // 
+            txtLength.Location = new Point(76, 36);
+            txtLength.Name = "txtLength";
+            txtLength.Properties.DisplayFormat.FormatString = "{0}m";
+            txtLength.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtLength.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtLength.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtLength.Properties.NullValuePrompt = "m";
+            txtLength.Size = new Size(160, 20);
+            txtLength.StyleController = layoutControl1;
+            txtLength.TabIndex = 4;
+            // 
+            // txtDiameter
+            // 
+            txtDiameter.Location = new Point(304, 12);
+            txtDiameter.Name = "txtDiameter";
+            txtDiameter.Properties.DisplayFormat.FormatString = "{0}mm";
+            txtDiameter.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;
+            txtDiameter.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+            txtDiameter.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
+            txtDiameter.Properties.NullValuePrompt = "mm";
+            txtDiameter.Size = new Size(161, 20);
+            txtDiameter.StyleController = layoutControl1;
+            txtDiameter.TabIndex = 3;
+            // 
+            // Root
+            // 
+            Root.AppearanceItemCaption.Options.UseTextOptions = true;
+            Root.AppearanceItemCaption.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            Root.GroupBordersVisible = false;
+            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem5, layoutControlItem7, layoutControlItem9, layoutControlItem1, layoutControlItem4, layoutControlItem6, emptySpaceItem1 });
+            Root.Name = "Root";
+            Root.Size = new Size(477, 122);
+            Root.TextVisible = false;
+            // 
+            // layoutControlItem4
+            // 
+            layoutControlItem4.Control = txtDiameter;
+            layoutControlItem4.Location = new Point(228, 0);
+            layoutControlItem4.Name = "layoutControlItem4";
+            layoutControlItem4.Size = new Size(229, 24);
+            layoutControlItem4.Text = "鐩村緞:";
+            layoutControlItem4.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem5
+            // 
+            layoutControlItem5.Control = txtLength;
+            layoutControlItem5.Location = new Point(0, 24);
+            layoutControlItem5.Name = "layoutControlItem5";
+            layoutControlItem5.Size = new Size(228, 24);
+            layoutControlItem5.Text = "闀垮害:";
+            layoutControlItem5.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem6
+            // 
+            layoutControlItem6.Control = txtRoughness;
+            layoutControlItem6.Location = new Point(228, 24);
+            layoutControlItem6.Name = "layoutControlItem6";
+            layoutControlItem6.Size = new Size(229, 24);
+            layoutControlItem6.Text = "绮楃硻绯绘暟:";
+            layoutControlItem6.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem7
+            // 
+            layoutControlItem7.Control = txtMinorLoss;
+            layoutControlItem7.Location = new Point(0, 48);
+            layoutControlItem7.Name = "layoutControlItem7";
+            layoutControlItem7.Size = new Size(228, 24);
+            layoutControlItem7.Text = "灞�闃荤郴鏁�:";
+            layoutControlItem7.TextSize = new Size(52, 14);
+            // 
+            // layoutControlItem9
+            // 
+            layoutControlItem9.Control = txtMaterial;
+            layoutControlItem9.Location = new Point(0, 0);
+            layoutControlItem9.Name = "layoutControlItem9";
+            layoutControlItem9.Size = new Size(228, 24);
+            layoutControlItem9.Text = "鏉愯川:";
+            layoutControlItem9.TextSize = new Size(52, 14);
+            // 
             // layoutControlItem1
             // 
             layoutControlItem1.Control = generalOkAndCancelCtrl1;
@@ -239,14 +207,22 @@
             layoutControlItem1.TextSize = new Size(0, 0);
             layoutControlItem1.TextVisible = false;
             // 
-            // SetHydroPipeDlg
+            // emptySpaceItem1
+            // 
+            emptySpaceItem1.AllowHotTrack = false;
+            emptySpaceItem1.Location = new Point(228, 48);
+            emptySpaceItem1.Name = "emptySpaceItem1";
+            emptySpaceItem1.Size = new Size(229, 24);
+            emptySpaceItem1.TextSize = new Size(0, 0);
+            // 
+            // SetHydroTranslationDlg
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
             AutoScaleMode = AutoScaleMode.Font;
             ClientSize = new Size(477, 122);
             Controls.Add(layoutControl1);
             MaximizeBox = false;
-            Name = "SetHydroPipeDlg";
+            Name = "SetHydroTranslationDlg";
             StartPosition = FormStartPosition.CenterParent;
             Text = "璁剧疆";
             ((ISupportInitialize)layoutControl1).EndInit();
@@ -256,16 +232,14 @@
             ((ISupportInitialize)txtRoughness.Properties).EndInit();
             ((ISupportInitialize)txtLength.Properties).EndInit();
             ((ISupportInitialize)txtDiameter.Properties).EndInit();
-            ((ISupportInitialize)imgCmbLinkStatus.Properties).EndInit();
             ((ISupportInitialize)Root).EndInit();
-            ((ISupportInitialize)layoutControlItem10).EndInit();
             ((ISupportInitialize)layoutControlItem4).EndInit();
             ((ISupportInitialize)layoutControlItem5).EndInit();
             ((ISupportInitialize)layoutControlItem6).EndInit();
             ((ISupportInitialize)layoutControlItem7).EndInit();
             ((ISupportInitialize)layoutControlItem9).EndInit();
-            ((ISupportInitialize)dxErrorProvider1).EndInit();
             ((ISupportInitialize)layoutControlItem1).EndInit();
+            ((ISupportInitialize)emptySpaceItem1).EndInit();
             ResumeLayout(false);
         }
 
@@ -273,12 +247,9 @@
 
         private DevExpress.XtraLayout.LayoutControl layoutControl1;
         private DevExpress.XtraLayout.LayoutControlGroup Root;
-        private DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider dxErrorProvider1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
-        private DevExpress.XtraEditors.ImageComboBoxEdit imgCmbLinkStatus;
-        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem10;
         private DevExpress.XtraEditors.TextEdit txtMinorLoss;
         private DevExpress.XtraEditors.TextEdit txtRoughness;
         private DevExpress.XtraEditors.TextEdit txtLength;
@@ -289,5 +260,6 @@
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem9;
         private GeneralOkAndCancelCtrl generalOkAndCancelCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
     }
 }
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.cs
index c8ab4d7..0ee4a38 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.cs
@@ -8,7 +8,6 @@
             this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
             this.layoutControl1.SetupLayoutControl();
             this.generalOkAndCancelCtrl1.OkEvent += GeneralOkAndCancelCtrl1_OkEvent;
-            InitialLinkStatus();
         }
 
         /// <summary>
@@ -17,7 +16,7 @@
         public event Action<List<Yw.Model.HydroTranslationInfo>> ReloadDataEvent;
 
         //鎵�鏈夐儴浠跺垪琛�
-        private List<Yw.Model.HydroTranslationInfo> _allParterList = null;
+        private List<Yw.Model.HydroTranslationInfo> _allVisualList = null;
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -31,90 +30,57 @@
         /// <summary>
         /// 缁戝畾鏁版嵁
         /// </summary>
-        public void SetBindingData(List<Yw.Model.HydroTranslationInfo> allParterList)
+        public void SetBindingData(List<Yw.Model.HydroTranslationInfo> allVisualList)
         {
-            _allParterList = allParterList;
-            if (_allParterList != null && _allParterList.Count == 1)
+            _allVisualList = allVisualList;
+            if (_allVisualList != null && _allVisualList.Count == 1)
             {
-                var parter = _allParterList.First();
-                this.imgCmbLinkStatus.EditValue = parter.LinkStatus;
-                this.txtMaterial.EditValue = parter.Material;
-                this.txtDiameter.EditValue = parter.Diameter;
-                this.txtLength.EditValue = parter.Length;
-                this.txtRoughness.EditValue = parter.Roughness;
-                this.txtMinorLoss.EditValue = parter.MinorLoss;
+                var visual = _allVisualList.First();
+                this.txtMaterial.EditValue = visual.Material;
+                this.txtDiameter.EditValue = visual.Diameter;
+                this.txtLength.EditValue = visual.Length;
+                this.txtRoughness.EditValue = visual.Roughness;
+                this.txtMinorLoss.EditValue = visual.MinorLoss;
             }
         }
 
-        //鍒濆鍖栫娈电姸鎬�
-        private void InitialLinkStatus()
-        {
-            this.imgCmbLinkStatus.Properties.BeginUpdate();
-            this.imgCmbLinkStatus.Properties.Items.Clear();
-            this.imgCmbLinkStatus.Properties.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Open), Yw.Hydro.LinkStatus.Open, -1);
-            this.imgCmbLinkStatus.Properties.Items.Add(HydroLinkStatusHelper.GetStatusName(Yw.Hydro.LinkStatus.Closed), Yw.Hydro.LinkStatus.Closed, -1);
-            this.imgCmbLinkStatus.Properties.EndUpdate();
-        }
-
-        //楠岃瘉
-        private bool Valid()
-        {
-            this.dxErrorProvider1.ClearErrors();
-            if (this.imgCmbLinkStatus.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.imgCmbLinkStatus, "蹇呴�夐」");
-                return false;
-            }
-            if (this.txtDiameter.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtDiameter, "蹇呭~椤�");
-                return false;
-            }
-            if (this.txtLength.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtLength, "蹇呭~椤�");
-                return false;
-            }
-            if (this.txtRoughness.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtRoughness, "蹇呭~椤�");
-                return false;
-            }
-            if (this.txtMinorLoss.EditValue == null)
-            {
-                this.dxErrorProvider1.SetError(this.txtMinorLoss, "蹇呭~椤�");
-                return false;
-            }
-            return true;
-        }
 
         //纭畾
         private void GeneralOkAndCancelCtrl1_OkEvent()
         {
-            if (_allParterList == null || _allParterList.Count < 1)
+            if (_allVisualList == null || _allVisualList.Count < 1)
             {
                 return;
             }
-            if (!Valid())
-            {
-                return;
-            }
-            var linkStatus = this.imgCmbLinkStatus.EditValue.ToString();
             var material = this.txtMaterial.Text.Trim();
-            var diameter = double.Parse(this.txtDiameter.EditValue.ToString());
-            var length = double.Parse(this.txtLength.EditValue.ToString());
-            var roughness = double.Parse(this.txtRoughness.EditValue.ToString());
-            var minoroLoss = double.Parse(this.txtMinorLoss.EditValue.ToString());
-            _allParterList.ForEach(x =>
+            double? diameter = this.txtDiameter.EditValue == null ? null : double.Parse(this.txtDiameter.EditValue.ToString());
+            double? length = this.txtLength.EditValue == null ? null : double.Parse(this.txtLength.EditValue.ToString());
+            double? roughness = this.txtRoughness.EditValue == null ? null : double.Parse(this.txtRoughness.EditValue.ToString());
+            double? minorLoss = this.txtMinorLoss.EditValue == null ? null : double.Parse(this.txtMinorLoss.EditValue.ToString());
+            _allVisualList.ForEach(x =>
             {
-                x.LinkStatus = linkStatus;
-                x.Material = material;
-                x.Diameter = diameter;
-                x.Length = length;
-                x.Roughness = roughness;
-                x.MinorLoss = minoroLoss;
+                if (!string.IsNullOrEmpty(material))
+                {
+                    x.Material = material;
+                }
+                if (diameter.HasValue)
+                {
+                    x.Diameter = diameter.Value;
+                }
+                if (length.HasValue)
+                {
+                    x.Length = length.Value;
+                }
+                if (roughness.HasValue)
+                {
+                    x.Roughness = roughness.Value;
+                }
+                if (minorLoss.HasValue)
+                {
+                    x.MinorLoss = minorLoss.Value;
+                }
             });
-            this.ReloadDataEvent?.Invoke(_allParterList);
+            this.ReloadDataEvent?.Invoke(_allVisualList);
             this.DialogResult = DialogResult.OK;
             this.Close();
         }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.resx
index d438392..af32865 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-translation/SetHydroTranslationDlg.resx
@@ -117,7 +117,4 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="dxErrorProvider1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
 </root>
\ No newline at end of file
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.Designer.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.Designer.cs
index 2a8af90..11fb7e4 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.Designer.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.Designer.cs
@@ -30,11 +30,11 @@
         {
             components = new Container();
             ComponentResourceManager resources = new ComponentResourceManager(typeof(HydroValveListCtrl));
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions3 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject9 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject10 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject11 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject12 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
             gridControl1 = new DevExpress.XtraGrid.GridControl();
             hydroValveViewModelBindingSource = new BindingSource(components);
             gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
@@ -42,17 +42,17 @@
             colName = new DevExpress.XtraGrid.Columns.GridColumn();
             colCode = new DevExpress.XtraGrid.Columns.GridColumn();
             colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
+            colValveType = new DevExpress.XtraGrid.Columns.GridColumn();
             colLinkStatus = new DevExpress.XtraGrid.Columns.GridColumn();
             colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
             colDiameter = new DevExpress.XtraGrid.Columns.GridColumn();
             colMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
-            colValveType = new DevExpress.XtraGrid.Columns.GridColumn();
-            colCalcuFlow = new DevExpress.XtraGrid.Columns.GridColumn();
-            colCalcuVelocity = new DevExpress.XtraGrid.Columns.GridColumn();
-            colCalcuHeadLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             colHasDb = new DevExpress.XtraGrid.Columns.GridColumn();
             colFlags = new DevExpress.XtraGrid.Columns.GridColumn();
             colDescription = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuFlow = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuVelocity = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuHeadLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             colSet = new DevExpress.XtraGrid.Columns.GridColumn();
             repositoryItemButtonEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
             layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
@@ -67,6 +67,8 @@
             layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
             layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            colCalcuMinorLoss = new DevExpress.XtraGrid.Columns.GridColumn();
+            colCalcuFrictionLoss = new DevExpress.XtraGrid.Columns.GridColumn();
             ((ISupportInitialize)gridControl1).BeginInit();
             ((ISupportInitialize)hydroValveViewModelBindingSource).BeginInit();
             ((ISupportInitialize)gridView1).BeginInit();
@@ -102,7 +104,7 @@
             // 
             // gridView1
             // 
-            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colName, colCode, colModelType, colValveType, colLinkStatus, colMaterial, colDiameter, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuFlow, colCalcuVelocity, colCalcuHeadLoss, colSet });
+            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colDbLocked, colName, colCode, colModelType, colValveType, colLinkStatus, colMaterial, colDiameter, colMinorLoss, colHasDb, colFlags, colDescription, colCalcuFlow, colCalcuVelocity, colCalcuHeadLoss, colCalcuMinorLoss, colCalcuFrictionLoss, colSet });
             gridView1.GridControl = gridControl1;
             gridView1.Name = "gridView1";
             gridView1.RowCellClick += gridView1_RowCellClick;
@@ -148,6 +150,16 @@
             colModelType.VisibleIndex = 3;
             colModelType.Width = 100;
             // 
+            // colValveType
+            // 
+            colValveType.FieldName = "ValveType";
+            colValveType.MaxWidth = 100;
+            colValveType.MinWidth = 100;
+            colValveType.Name = "colValveType";
+            colValveType.Visible = true;
+            colValveType.VisibleIndex = 4;
+            colValveType.Width = 100;
+            // 
             // colLinkStatus
             // 
             colLinkStatus.FieldName = "LinkStatus";
@@ -188,15 +200,34 @@
             colMinorLoss.VisibleIndex = 8;
             colMinorLoss.Width = 100;
             // 
-            // colValveType
+            // colHasDb
             // 
-            colValveType.FieldName = "ValveType";
-            colValveType.MaxWidth = 100;
-            colValveType.MinWidth = 100;
-            colValveType.Name = "colValveType";
-            colValveType.Visible = true;
-            colValveType.VisibleIndex = 4;
-            colValveType.Width = 100;
+            colHasDb.FieldName = "HasDb";
+            colHasDb.MaxWidth = 40;
+            colHasDb.MinWidth = 40;
+            colHasDb.Name = "colHasDb";
+            colHasDb.Visible = true;
+            colHasDb.VisibleIndex = 9;
+            colHasDb.Width = 40;
+            // 
+            // colFlags
+            // 
+            colFlags.FieldName = "Flags";
+            colFlags.MaxWidth = 200;
+            colFlags.MinWidth = 100;
+            colFlags.Name = "colFlags";
+            colFlags.Visible = true;
+            colFlags.VisibleIndex = 10;
+            colFlags.Width = 100;
+            // 
+            // colDescription
+            // 
+            colDescription.FieldName = "Description";
+            colDescription.MinWidth = 100;
+            colDescription.Name = "colDescription";
+            colDescription.Visible = true;
+            colDescription.VisibleIndex = 11;
+            colDescription.Width = 100;
             // 
             // colCalcuFlow
             // 
@@ -237,35 +268,6 @@
             colCalcuHeadLoss.VisibleIndex = 14;
             colCalcuHeadLoss.Width = 100;
             // 
-            // colHasDb
-            // 
-            colHasDb.FieldName = "HasDb";
-            colHasDb.MaxWidth = 40;
-            colHasDb.MinWidth = 40;
-            colHasDb.Name = "colHasDb";
-            colHasDb.Visible = true;
-            colHasDb.VisibleIndex = 12;
-            colHasDb.Width = 40;
-            // 
-            // colFlags
-            // 
-            colFlags.FieldName = "Flags";
-            colFlags.MaxWidth = 200;
-            colFlags.MinWidth = 100;
-            colFlags.Name = "colFlags";
-            colFlags.Visible = true;
-            colFlags.VisibleIndex = 13;
-            colFlags.Width = 100;
-            // 
-            // colDescription
-            // 
-            colDescription.FieldName = "Description";
-            colDescription.MinWidth = 100;
-            colDescription.Name = "colDescription";
-            colDescription.Visible = true;
-            colDescription.VisibleIndex = 14;
-            colDescription.Width = 100;
-            // 
             // colSet
             // 
             colSet.Caption = "璁剧疆";
@@ -275,15 +277,15 @@
             colSet.MinWidth = 60;
             colSet.Name = "colSet";
             colSet.Visible = true;
-            colSet.VisibleIndex = 15;
+            colSet.VisibleIndex = 17;
             colSet.Width = 60;
             // 
             // repositoryItemButtonEdit1
             // 
             repositoryItemButtonEdit1.AutoHeight = false;
-            editorButtonImageOptions3.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions3.SvgImage");
-            editorButtonImageOptions3.SvgImageSize = new Size(20, 20);
-            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions3, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject9, serializableAppearanceObject10, serializableAppearanceObject11, serializableAppearanceObject12, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
+            editorButtonImageOptions1.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("editorButtonImageOptions1.SvgImage");
+            editorButtonImageOptions1.SvgImageSize = new Size(20, 20);
+            repositoryItemButtonEdit1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "", -1, true, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default) });
             repositoryItemButtonEdit1.Name = "repositoryItemButtonEdit1";
             repositoryItemButtonEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
             // 
@@ -415,6 +417,32 @@
             layoutControlItem1.TextSize = new Size(0, 0);
             layoutControlItem1.TextVisible = false;
             // 
+            // colCalcuMinorLoss
+            // 
+            colCalcuMinorLoss.FieldName = "CalcuMinorLoss";
+            colCalcuMinorLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuMinorLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuMinorLoss.ImageOptions.SvgImage");
+            colCalcuMinorLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuMinorLoss.MaxWidth = 100;
+            colCalcuMinorLoss.MinWidth = 100;
+            colCalcuMinorLoss.Name = "colCalcuMinorLoss";
+            colCalcuMinorLoss.Visible = true;
+            colCalcuMinorLoss.VisibleIndex = 15;
+            colCalcuMinorLoss.Width = 100;
+            // 
+            // colCalcuFrictionLoss
+            // 
+            colCalcuFrictionLoss.FieldName = "CalcuFrictionLoss";
+            colCalcuFrictionLoss.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right;
+            colCalcuFrictionLoss.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("colCalcuFrictionLoss.ImageOptions.SvgImage");
+            colCalcuFrictionLoss.ImageOptions.SvgImageSize = new Size(16, 16);
+            colCalcuFrictionLoss.MaxWidth = 100;
+            colCalcuFrictionLoss.MinWidth = 100;
+            colCalcuFrictionLoss.Name = "colCalcuFrictionLoss";
+            colCalcuFrictionLoss.Visible = true;
+            colCalcuFrictionLoss.VisibleIndex = 16;
+            colCalcuFrictionLoss.Width = 100;
+            // 
             // HydroValveListCtrl
             // 
             AutoScaleDimensions = new SizeF(7F, 14F);
@@ -475,5 +503,7 @@
         private DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit repositoryItemButtonEdit1;
         private GeneralSearchAndSetCtrl generalSearchAndSetCtrl1;
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuMinorLoss;
+        private DevExpress.XtraGrid.Columns.GridColumn colCalcuFrictionLoss;
     }
 }
diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.resx b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.resx
index 8e2e18f..9c8c4fc 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.resx
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/17-valve/HydroValveListCtrl.resx
@@ -259,7 +259,99 @@
         Pg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="editorButtonImageOptions3.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="colCalcuMinorLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="colCalcuFrictionLoss.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAPwIAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+        LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3
+        RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh
+        Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm
+        aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWRkQ2FsY3VsYXRlZEZpZWxkIj4NCiAgICA8
+        cGF0aCBkPSJNMTgsMjhIMWMtMC41LDAtMS0wLjUtMS0xVjNjMC0wLjUsMC41LTEsMS0xaDI2YzAuNSww
+        LDEsMC41LDEsMXYxNWgtMlY0SDJ2MjJoMTZWMjh6IE03LjcsMjEuOSAgIGMtMC4xLDAtMC4yLDAtMC4z
+        LTAuMWMtMC4xLDAtMC4yLTAuMS0wLjMtMC4zYy0wLjMtMC4zLTAuNS0wLjUtMC42LTAuNmMtMC4yLTAu
+        MS0wLjMtMC4yLTAuNS0wLjNjLTAuMi0wLjEtMC40LTAuMS0wLjUtMC4xICAgYy0wLjQsMC0wLjgsMC4x
+        LTEuMSwwLjRTNCwyMS42LDQsMjJjMCwwLjUsMC4zLDEsMC45LDEuNEM1LjQsMjMuOCw2LjEsMjQsNywy
+        NGMwLjksMCwxLjctMC4yLDIuMy0wLjVzMS4yLTAuOCwxLjctMS42ICAgYzAuNS0wLjcsMC45LTEuNiwx
+        LjEtMi42bDEuNy01LjNoMmwwLjUtMmgtMkwxNSw5LjZjMC4xLTAuNiwwLjMtMSwwLjQtMS4xYzAuMi0w
+        LjMsMC40LTAuNCwwLjctMC40YzAuMSwwLDAuMywwLDAuNCwwLjEgICBjMC4xLDAuMSwwLjMsMC4yLDAu
+        NiwwLjVjMC4yLDAuMywwLjQsMC40LDAuNywwLjVzMC41LDAuMiwwLjgsMC4yYzAuMywwLDAuNi0wLjEs
+        MC44LTAuMmMwLjItMC4xLDAuNC0wLjMsMC42LTAuNiAgIEMxOS45LDguNSwyMCw4LjIsMjAsOGMwLTAu
+        My0wLjEtMC43LTAuNC0xYy0wLjItMC4zLTAuNi0wLjYtMS0wLjdjLTAuNC0wLjItMS0wLjMtMS43LTAu
+        M2MtMS41LDAtMi43LDAuMy0zLjYsMSAgIGMtMC45LDAuNy0xLjcsMi42LTEuOSwzLjhMMTEuMSwxMkg5
+        LjVsLTAuNCwyaDEuNWwtMS44LDYuNEM4LjYsMjEuNCw4LjIsMjEuOSw3LjcsMjEuOXogTTE0LjQsMjEu
+        OWMwLjIsMC4xLDAuMywwLjEsMC41LDAuMSAgIGMwLjIsMCwwLjUtMC4xLDAuNy0wLjJjMC4zLTAuMSww
+        LjYtMC4zLDAuOS0wLjdjMC4zLTAuMywwLjctMC43LDEtMS4ybDAuMywwLjdjMC4yLDAuNCwwLjQsMC43
+        LDAuNiwwLjljMC4yLDAuMiwwLjQsMC4zLDAuNiwwLjQgICBjMC4yLDAuMSwwLjUsMC4xLDAuOCwwLjFj
+        MC43LDAsMS41LTAuMywyLjItMC45bC0wLjctMC43Yy0wLjMsMC4zLTAuNiwwLjQtMC45LDAuNGMtMC4y
+        LDAtMC4zLTAuMS0wLjUtMC4ycy0wLjQtMC41LTAuNi0wLjkgICBMMTkuMSwxOWMwLjQtMC41LDAuNi0w
+        LjgsMC43LTAuOGMwLjEtMC4xLDAuMi0wLjIsMC40LTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMmMw
+        LjEsMCwwLjIsMCwwLjUtMC4xYzAuMiwwLDAuNCwwLDAuNCwwICAgYzAuMSwwLDAuMi0wLjEsMC4zLTAu
+        MnMwLjItMC4yLDAuMy0wLjNjMC4xLTAuMSwwLjEtMC4yLDAuMS0wLjRjMC0wLjItMC4xLTAuNC0wLjIt
+        MC41UzIxLjQsMTYsMjEuMSwxNmMtMC4yLDAtMC41LDAuMS0wLjcsMC4yICAgcy0wLjUsMC4zLTAuOCww
+        LjVjLTAuMiwwLjItMC41LDAuNi0xLjEsMS4zbC0wLjktMS45aC0wLjVjLTAuNCwwLjMtMC45LDAuNC0x
+        LjQsMC41bC0wLjIsMS4xaDAuOWwwLjYsMS4yYy0wLjQsMC41LTAuNiwwLjktMC44LDEgICBjLTAuMiww
+        LjItMC4zLDAuMy0wLjUsMC40Yy0wLjEsMC4xLTAuMywwLjEtMC42LDAuMWMtMC4zLDAtMC42LDAuMS0w
+        LjcsMC4xYy0wLjEsMC4xLTAuMiwwLjItMC4zLDAuM0MxNCwyMC45LDE0LDIxLjEsMTQsMjEuMiAgIGMw
+        LDAuMSwwLDAuMywwLjEsMC40QzE0LjIsMjEuNywxNC4zLDIxLjgsMTQuNCwyMS45eiIgY2xhc3M9IkJs
+        YWNrIiAvPg0KICAgIDxwb2x5Z29uIHBvaW50cz0iMzIsMjQgMjgsMjQgMjgsMjAgMjQsMjAgMjQsMjQg
+        MjAsMjQgMjAsMjggMjQsMjggMjQsMzIgMjgsMzIgMjgsMjggMzIsMjggICIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KICA8L2c+DQo8L3N2Zz4L
+</value>
+  </data>
+  <data name="editorButtonImageOptions1.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl

--
Gitblit v1.9.3