duheng
2024-11-27 5d8b95b69c1bf800f2a2ebee62c6f7181c0bd7c8
冲突
已修改22个文件
已添加27个文件
4775 ■■■■■ 文件已修改
Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/MainForm - 复制(2).Designer.cs 447 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/MainForm - 复制(2).cs 874 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/MainForm - 复制(2).resx 699 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/MainForm.Designer.cs 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/MainForm.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/MainForm.resx 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.Designer.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/05-working/SimulationWorkingHelper.cs 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyCtrl.Designer.cs 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyCtrl.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyCtrl.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyDlg.Designer.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyDlg.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyDlg.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.Designer.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveDlg.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroCatalogLossScaleHelper.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroCatalogLossScaleViewModel.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleCtrl.Designer.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleCtrl.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleDlg.Designer.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleDlg.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunListCtrl.Designer.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunListCtrl.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunListCtrl.resx 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunViewModel.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsBarCtrl.Designer.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsBarCtrl.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsBarCtrl.resx 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsHelper.cs 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsItemViewModel.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/eEnergyType.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/02-total/HydroEnergyTotalViewCtrl.Designer.cs 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/02-total/HydroEnergyTotalViewCtrl.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/02-total/HydroEnergyTotalViewCtrl.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroEnergyStatisticsItemViewModel.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroPumpRunViewModel.datasource 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/Resources.Designer.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/Resources.resx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Resources/pump_run_32.png 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Resources/pump_shut_32.png 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Desktop/HStation.Desktop.PBS.Core/HStation.Desktop.PBS.Core.csproj
@@ -11,11 +11,14 @@
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="MainForm - å¤åˆ¶%282%29.cs" />
    <Compile Remove="MainForm - å¤åˆ¶%282%29.Designer.cs" />
    <Compile Remove="MainForm - å¤åˆ¶.cs" />
    <Compile Remove="MainForm - å¤åˆ¶.Designer.cs" />
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Remove="MainForm - å¤åˆ¶%282%29.resx" />
    <EmbeddedResource Remove="MainForm - å¤åˆ¶.resx" />
  </ItemGroup>
Desktop/HStation.Desktop.PBS.Core/MainForm - ¸´ÖÆ(2).Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,447 @@
namespace HStation.Desktop
{
    partial class MainForm
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
            tileNavPane = new DevExpress.XtraBars.Navigation.TileNavPane();
            nbTitle = new DevExpress.XtraBars.Navigation.NavButton();
            navButton3 = new DevExpress.XtraBars.Navigation.NavButton();
            nbBasicData = new DevExpress.XtraBars.Navigation.NavButton();
            nbRapidModeling = new DevExpress.XtraBars.Navigation.NavButton();
            nbModelAnalysis = new DevExpress.XtraBars.Navigation.NavButton();
            nbModelEvaluation = new DevExpress.XtraBars.Navigation.NavButton();
            nbSmartHardware = new DevExpress.XtraBars.Navigation.NavButton();
            navButton2 = new DevExpress.XtraBars.Navigation.NavButton();
            nbMin = new DevExpress.XtraBars.Navigation.NavButton();
            nbNormal = new DevExpress.XtraBars.Navigation.NavButton();
            nbClose = new DevExpress.XtraBars.Navigation.NavButton();
            documentManager1 = new DevExpress.XtraBars.Docking2010.DocumentManager(components);
            tabbedView1 = new DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(components);
            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
            flyoutPanel1 = new DevExpress.Utils.FlyoutPanel();
            flyoutPanelControl1 = new DevExpress.Utils.FlyoutPanelControl();
            svgImgItem32 = new DevExpress.Utils.SvgImageCollection(components);
            accordionControlFunction = new DevExpress.XtraBars.Navigation.AccordionControl();
            toolboxItem3 = new DevExpress.XtraToolbox.ToolboxItem();
            toolboxItem5 = new DevExpress.XtraToolbox.ToolboxItem();
            svgImgGroup32 = new DevExpress.Utils.SvgImageCollection(components);
            propertyGridControl1 = new DevExpress.XtraVerticalGrid.PropertyGridControl();
            ((System.ComponentModel.ISupportInitialize)tileNavPane).BeginInit();
            ((System.ComponentModel.ISupportInitialize)documentManager1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)tabbedView1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)flyoutPanel1).BeginInit();
            flyoutPanel1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)flyoutPanelControl1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)svgImgItem32).BeginInit();
            ((System.ComponentModel.ISupportInitialize)accordionControlFunction).BeginInit();
            ((System.ComponentModel.ISupportInitialize)svgImgGroup32).BeginInit();
            ((System.ComponentModel.ISupportInitialize)propertyGridControl1).BeginInit();
            SuspendLayout();
            //
            // tileNavPane
            //
            tileNavPane.AllowGlyphSkinning = true;
            tileNavPane.Appearance.BackColor = Color.White;
            tileNavPane.Appearance.BorderColor = Color.White;
            tileNavPane.Appearance.ForeColor = Color.Black;
            tileNavPane.Appearance.Options.UseBackColor = true;
            tileNavPane.Appearance.Options.UseBorderColor = true;
            tileNavPane.Appearance.Options.UseForeColor = true;
            tileNavPane.AppearanceDisabled.BackColor = Color.White;
            tileNavPane.AppearanceDisabled.BorderColor = Color.White;
            tileNavPane.AppearanceDisabled.ForeColor = Color.Black;
            tileNavPane.AppearanceDisabled.Options.UseBackColor = true;
            tileNavPane.AppearanceDisabled.Options.UseBorderColor = true;
            tileNavPane.AppearanceDisabled.Options.UseForeColor = true;
            tileNavPane.AppearanceHovered.BackColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceHovered.BorderColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceHovered.ForeColor = Color.White;
            tileNavPane.AppearanceHovered.Options.UseBackColor = true;
            tileNavPane.AppearanceHovered.Options.UseBorderColor = true;
            tileNavPane.AppearanceHovered.Options.UseForeColor = true;
            tileNavPane.AppearanceSelected.BackColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceSelected.BorderColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceSelected.ForeColor = Color.White;
            tileNavPane.AppearanceSelected.Options.UseBackColor = true;
            tileNavPane.AppearanceSelected.Options.UseBorderColor = true;
            tileNavPane.AppearanceSelected.Options.UseForeColor = true;
            tileNavPane.BackColor = Color.White;
            tileNavPane.ButtonPadding = new Padding(10);
            tileNavPane.Buttons.Add(nbTitle);
            tileNavPane.Buttons.Add(navButton3);
            tileNavPane.Buttons.Add(nbBasicData);
            tileNavPane.Buttons.Add(nbRapidModeling);
            tileNavPane.Buttons.Add(nbModelAnalysis);
            tileNavPane.Buttons.Add(nbModelEvaluation);
            tileNavPane.Buttons.Add(nbSmartHardware);
            tileNavPane.Buttons.Add(navButton2);
            tileNavPane.Buttons.Add(nbMin);
            tileNavPane.Buttons.Add(nbNormal);
            tileNavPane.Buttons.Add(nbClose);
            //
            // tileNavCategory1
            //
            tileNavPane.DefaultCategory.Name = "tileNavCategory1";
            //
            //
            //
            tileNavPane.DefaultCategory.Tile.AllowSelectAnimation = true;
            tileNavPane.DefaultCategory.Tile.DropDownOptions.BeakColor = Color.Empty;
            tileNavPane.Dock = DockStyle.Top;
            tileNavPane.Location = new Point(0, 0);
            tileNavPane.Margin = new Padding(0);
            tileNavPane.Name = "tileNavPane";
            tileNavPane.Size = new Size(2087, 70);
            tileNavPane.TabIndex = 0;
            tileNavPane.Text = "tileNavPane1";
            tileNavPane.ElementClick += tileNavPane_ElementClick;
            tileNavPane.MouseDown += tileNavPane_MouseDown;
            //
            // nbTitle
            //
            nbTitle.Appearance.BackColor = Color.White;
            nbTitle.Appearance.BorderColor = Color.White;
            nbTitle.Appearance.FontSizeDelta = 2;
            nbTitle.Appearance.ForeColor = Color.FromArgb(1, 96, 188);
            nbTitle.Appearance.Options.UseBackColor = true;
            nbTitle.Appearance.Options.UseBorderColor = true;
            nbTitle.Appearance.Options.UseFont = true;
            nbTitle.Appearance.Options.UseForeColor = true;
            nbTitle.AppearanceDisabled.BackColor = Color.White;
            nbTitle.AppearanceDisabled.BorderColor = Color.White;
            nbTitle.AppearanceDisabled.FontSizeDelta = 2;
            nbTitle.AppearanceDisabled.ForeColor = Color.FromArgb(1, 96, 188);
            nbTitle.AppearanceDisabled.Options.UseBackColor = true;
            nbTitle.AppearanceDisabled.Options.UseBorderColor = true;
            nbTitle.AppearanceDisabled.Options.UseFont = true;
            nbTitle.AppearanceDisabled.Options.UseForeColor = true;
            nbTitle.AppearanceHovered.BackColor = Color.White;
            nbTitle.AppearanceHovered.BorderColor = Color.White;
            nbTitle.AppearanceHovered.FontSizeDelta = 2;
            nbTitle.AppearanceHovered.ForeColor = Color.FromArgb(1, 96, 188);
            nbTitle.AppearanceHovered.Options.UseBackColor = true;
            nbTitle.AppearanceHovered.Options.UseBorderColor = true;
            nbTitle.AppearanceHovered.Options.UseFont = true;
            nbTitle.AppearanceHovered.Options.UseForeColor = true;
            nbTitle.AppearanceSelected.BackColor = Color.White;
            nbTitle.AppearanceSelected.BorderColor = Color.White;
            nbTitle.AppearanceSelected.FontSizeDelta = 2;
            nbTitle.AppearanceSelected.ForeColor = Color.FromArgb(1, 96, 188);
            nbTitle.AppearanceSelected.Options.UseBackColor = true;
            nbTitle.AppearanceSelected.Options.UseBorderColor = true;
            nbTitle.AppearanceSelected.Options.UseFont = true;
            nbTitle.AppearanceSelected.Options.UseForeColor = true;
            nbTitle.Caption = "二供成套系统";
            nbTitle.Enabled = false;
            nbTitle.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbTitle.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbTitle.ImageOptions.SvgImage");
            nbTitle.ImageOptions.SvgImageSize = new Size(24, 24);
            nbTitle.Name = "nbTitle";
            nbTitle.ElementClick += nbTitle_ElementClick;
            //
            // navButton3
            //
            navButton3.Appearance.BackColor = Color.White;
            navButton3.Appearance.BorderColor = Color.White;
            navButton3.Appearance.Options.UseBackColor = true;
            navButton3.Appearance.Options.UseBorderColor = true;
            navButton3.Caption = " ";
            navButton3.Enabled = false;
            navButton3.Name = "navButton3";
            //
            // nbBasicData
            //
            nbBasicData.Caption = "基础数据";
            nbBasicData.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbBasicData.ImageOptions.SvgImage");
            nbBasicData.ImageOptions.SvgImageSize = new Size(24, 24);
            nbBasicData.Name = "nbBasicData";
            nbBasicData.Tag = "BasicData";
            //
            // nbRapidModeling
            //
            nbRapidModeling.Caption = "快速建模";
            nbRapidModeling.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbRapidModeling.ImageOptions.SvgImage");
            nbRapidModeling.ImageOptions.SvgImageSize = new Size(24, 24);
            nbRapidModeling.Name = "nbRapidModeling";
            nbRapidModeling.Tag = "RapidModeling";
            //
            // nbModelAnalysis
            //
            nbModelAnalysis.Caption = "模型分析";
            nbModelAnalysis.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbModelAnalysis.ImageOptions.SvgImage");
            nbModelAnalysis.ImageOptions.SvgImageSize = new Size(24, 24);
            nbModelAnalysis.Name = "nbModelAnalysis";
            nbModelAnalysis.Tag = "ModelAnalysis";
            //
            // nbModelEvaluation
            //
            nbModelEvaluation.Caption = "模型评价";
            nbModelEvaluation.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbModelEvaluation.ImageOptions.SvgImage");
            nbModelEvaluation.ImageOptions.SvgImageSize = new Size(24, 24);
            nbModelEvaluation.Name = "nbModelEvaluation";
            nbModelEvaluation.Tag = "ModelEvaluation";
            //
            // nbSmartHardware
            //
            nbSmartHardware.Caption = "智能硬件";
            nbSmartHardware.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbSmartHardware.ImageOptions.SvgImage");
            nbSmartHardware.ImageOptions.SvgImageSize = new Size(24, 24);
            nbSmartHardware.Name = "nbSmartHardware";
            nbSmartHardware.Tag = "SmartHardware";
            //
            // navButton2
            //
            navButton2.Appearance.BackColor = Color.White;
            navButton2.Appearance.BorderColor = Color.White;
            navButton2.Appearance.Options.UseBackColor = true;
            navButton2.Appearance.Options.UseBorderColor = true;
            navButton2.AppearanceDisabled.BackColor = Color.White;
            navButton2.AppearanceDisabled.BorderColor = Color.White;
            navButton2.AppearanceDisabled.Options.UseBackColor = true;
            navButton2.AppearanceDisabled.Options.UseBorderColor = true;
            navButton2.AppearanceHovered.BackColor = Color.White;
            navButton2.AppearanceHovered.BorderColor = Color.White;
            navButton2.AppearanceHovered.Options.UseBackColor = true;
            navButton2.AppearanceHovered.Options.UseBorderColor = true;
            navButton2.AppearanceSelected.BackColor = Color.White;
            navButton2.AppearanceSelected.BorderColor = Color.White;
            navButton2.AppearanceSelected.Options.UseBackColor = true;
            navButton2.AppearanceSelected.Options.UseBorderColor = true;
            navButton2.Caption = "     ";
            navButton2.Enabled = false;
            navButton2.Name = "navButton2";
            //
            // nbMin
            //
            nbMin.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
            nbMin.Caption = null;
            nbMin.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbMin.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbMin.ImageOptions.SvgImage");
            nbMin.ImageOptions.SvgImageSize = new Size(24, 24);
            nbMin.Name = "nbMin";
            nbMin.ElementClick += nbMin_ElementClick;
            //
            // nbNormal
            //
            nbNormal.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
            nbNormal.Caption = null;
            nbNormal.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbNormal.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbNormal.ImageOptions.SvgImage");
            nbNormal.ImageOptions.SvgImageSize = new Size(22, 22);
            nbNormal.Name = "nbNormal";
            nbNormal.ElementClick += nbNormal_ElementClick;
            //
            // nbClose
            //
            nbClose.Alignment = DevExpress.XtraBars.Navigation.NavButtonAlignment.Right;
            nbClose.Caption = null;
            nbClose.ImageOptions.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            nbClose.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbClose.ImageOptions.SvgImage");
            nbClose.ImageOptions.SvgImageSize = new Size(24, 24);
            nbClose.Name = "nbClose";
            nbClose.ElementClick += nabClose_ElementClick;
            //
            // documentManager1
            //
            documentManager1.ContainerControl = this;
            documentManager1.View = tabbedView1;
            documentManager1.ViewCollection.AddRange(new DevExpress.XtraBars.Docking2010.Views.BaseView[] { tabbedView1 });
            //
            // tabbedView1
            //
            tabbedView1.DocumentGroupProperties.AllowHtmlDraw = true;
            tabbedView1.DocumentGroupProperties.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InActiveTabPageHeader;
            tabbedView1.DocumentGroupProperties.PinPageButtonShowMode = DevExpress.XtraTab.PinPageButtonShowMode.InActiveTabPageHeader;
            tabbedView1.DocumentProperties.AllowPin = true;
            tabbedView1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
            tabbedView1.DocumentSelected += tabbedView1_DocumentSelected;
            tabbedView1.DocumentAdded += tabbedView1_DocumentAdded;
            tabbedView1.DocumentActivated += tabbedView1_DocumentActivated;
            tabbedView1.DocumentClosed += tabbedView1_DocumentClosed;
            //
            // dockManager1
            //
            dockManager1.Form = this;
            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
            //
            // flyoutPanel1
            //
            flyoutPanel1.AnimationRate = 100;
            flyoutPanel1.Controls.Add(flyoutPanelControl1);
            flyoutPanel1.Location = new Point(706, 209);
            flyoutPanel1.Margin = new Padding(4, 5, 4, 5);
            flyoutPanel1.Name = "flyoutPanel1";
            flyoutPanel1.Options.CloseOnOuterClick = true;
            flyoutPanel1.OptionsBeakPanel.BeakLocation = DevExpress.Utils.BeakPanelBeakLocation.Top;
            flyoutPanel1.OptionsButtonPanel.ButtonPanelHeight = 47;
            flyoutPanel1.ParentForm = this;
            flyoutPanel1.Size = new Size(286, 157);
            flyoutPanel1.TabIndex = 5;
            //
            // flyoutPanelControl1
            //
            flyoutPanelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            flyoutPanelControl1.Dock = DockStyle.Fill;
            flyoutPanelControl1.FlyoutPanel = flyoutPanel1;
            flyoutPanelControl1.Location = new Point(0, 0);
            flyoutPanelControl1.Margin = new Padding(4, 5, 4, 5);
            flyoutPanelControl1.Name = "flyoutPanelControl1";
            flyoutPanelControl1.Size = new Size(286, 157);
            flyoutPanelControl1.TabIndex = 0;
            //
            // svgImgItem32
            //
            svgImgItem32.ImageSize = new Size(32, 32);
            svgImgItem32.Add("MapPin.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.MapPin.svg"));
            svgImgItem32.Add("BuildingEnergy.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.BuildingEnergy.svg"));
            svgImgItem32.Add("CityNext.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.CityNext.svg"));
            svgImgItem32.Add("MapLayers.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.MapLayers.svg"));
            svgImgItem32.Add("font-icon61846.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.font-icon61846.svg"));
            svgImgItem32.Add("Ruler.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.Ruler.svg"));
            svgImgItem32.Add("PostUpdate.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.PostUpdate.svg"));
            svgImgItem32.Add("Pump", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.Pump"));
            svgImgItem32.Add("Kit", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.Kit"));
            svgImgItem32.Add("Puzzle.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.Puzzle.svg"));
            svgImgItem32.Add("GroupList.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.GroupList.svg"));
            svgImgItem32.Add("CommandPrompt.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.CommandPrompt.svg"));
            svgImgItem32.Add("Dictionary.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.Dictionary.svg"));
            svgImgItem32.Add("PersonalFolder.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.PersonalFolder.svg"));
            svgImgItem32.Add("GuestUser.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.GuestUser.svg"));
            svgImgItem32.Add("PassiveAuthentication.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgItem32.PassiveAuthentication.svg"));
            //
            // accordionControlFunction
            //
            accordionControlFunction.Appearance.AccordionControl.BackColor = Color.White;
            accordionControlFunction.Appearance.AccordionControl.BorderColor = Color.White;
            accordionControlFunction.Appearance.AccordionControl.ForeColor = Color.Black;
            accordionControlFunction.Appearance.AccordionControl.Options.UseBackColor = true;
            accordionControlFunction.Appearance.AccordionControl.Options.UseBorderColor = true;
            accordionControlFunction.Appearance.AccordionControl.Options.UseForeColor = true;
            accordionControlFunction.Appearance.Item.Default.ForeColor = Color.Black;
            accordionControlFunction.Appearance.Item.Default.Options.UseForeColor = true;
            accordionControlFunction.Dock = DockStyle.Left;
            accordionControlFunction.Location = new Point(0, 70);
            accordionControlFunction.Name = "accordionControlFunction";
            accordionControlFunction.ScrollBarMode = DevExpress.XtraBars.Navigation.ScrollBarMode.Fluent;
            accordionControlFunction.Size = new Size(211, 1061);
            accordionControlFunction.TabIndex = 17;
            accordionControlFunction.ViewType = DevExpress.XtraBars.Navigation.AccordionControlViewType.HamburgerMenu;
            //
            // toolboxItem3
            //
            toolboxItem3.Caption = "12";
            toolboxItem3.Name = "toolboxItem3";
            //
            // toolboxItem5
            //
            toolboxItem5.Caption = "ToolboxItem";
            toolboxItem5.Name = "toolboxItem5";
            //
            // svgImgGroup32
            //
            svgImgGroup32.ImageSize = new Size(32, 32);
            svgImgGroup32.Add("EMI.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.EMI.svg"));
            svgImgGroup32.Add("CC.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.CC.svg"));
            svgImgGroup32.Add("Manage.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.Manage.svg"));
            svgImgGroup32.Add("ExploitProtectionSettings.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.ExploitProtectionSettings.svg"));
            svgImgGroup32.Add("Admin.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.Admin.svg"));
            //
            // propertyGridControl1
            //
            propertyGridControl1.Dock = DockStyle.Right;
            propertyGridControl1.Location = new Point(1487, 70);
            propertyGridControl1.Name = "propertyGridControl1";
            propertyGridControl1.OptionsView.AllowReadOnlyRowAppearance = DevExpress.Utils.DefaultBoolean.True;
            propertyGridControl1.SelectedObject = tabbedView1;
            propertyGridControl1.Size = new Size(600, 1061);
            propertyGridControl1.TabIndex = 18;
            //
            // MainForm
            //
            Appearance.BackColor = Color.White;
            Appearance.Options.UseBackColor = true;
            AutoScaleDimensions = new SizeF(10F, 22F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(2087, 1131);
            Controls.Add(propertyGridControl1);
            Controls.Add(accordionControlFunction);
            Controls.Add(tileNavPane);
            Controls.Add(flyoutPanel1);
            Margin = new Padding(4, 3, 4, 3);
            Name = "MainForm";
            Text = "Form1";
            WindowState = FormWindowState.Maximized;
            FormClosing += MainForm_FormClosing;
            FormClosed += MainForm_FormClosed;
            Load += MainForm_Load;
            Shown += MainForm_Shown;
            Resize += MainForm_Resize;
            ((System.ComponentModel.ISupportInitialize)tileNavPane).EndInit();
            ((System.ComponentModel.ISupportInitialize)documentManager1).EndInit();
            ((System.ComponentModel.ISupportInitialize)tabbedView1).EndInit();
            ((System.ComponentModel.ISupportInitialize)dockManager1).EndInit();
            ((System.ComponentModel.ISupportInitialize)flyoutPanel1).EndInit();
            flyoutPanel1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)flyoutPanelControl1).EndInit();
            ((System.ComponentModel.ISupportInitialize)svgImgItem32).EndInit();
            ((System.ComponentModel.ISupportInitialize)accordionControlFunction).EndInit();
            ((System.ComponentModel.ISupportInitialize)svgImgGroup32).EndInit();
            ((System.ComponentModel.ISupportInitialize)propertyGridControl1).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraBars.Navigation.TileNavPane tileNavPane;
        private DevExpress.XtraBars.Navigation.NavButton nbTitle;
        private DevExpress.XtraBars.Docking2010.DocumentManager documentManager1;
        private DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView tabbedView1;
        private DevExpress.XtraBars.Navigation.NavButton nbMin;
        private DevExpress.XtraBars.Navigation.NavButton nbNormal;
        private DevExpress.XtraBars.Navigation.NavButton nbClose;
        private DevExpress.XtraBars.Navigation.NavButton nbBasicData;
        private DevExpress.XtraBars.Navigation.NavButton nbRapidModeling;
        private DevExpress.Utils.FlyoutPanel flyoutPanel1;
        private DevExpress.Utils.FlyoutPanelControl flyoutPanelControl1;
        private DevExpress.Utils.SvgImageCollection svgImgItem32;
        private DevExpress.XtraBars.Navigation.NavButton nbModelAnalysis;
        private DevExpress.XtraBars.Navigation.NavButton nbModelEvaluation;
        private DevExpress.XtraBars.Navigation.NavButton nbSmartHardware;
        private DevExpress.XtraBars.Docking.DockManager dockManager1;
        private DevExpress.XtraToolbox.ToolboxItem toolboxItem3;
        private DevExpress.XtraToolbox.ToolboxItem toolboxItem5;
        private DevExpress.XtraBars.Navigation.AccordionControl accordionControlFunction;
        private DevExpress.Utils.SvgImageCollection svgImgGroup32;
        private DevExpress.XtraBars.Navigation.NavButton navButton2;
        private DevExpress.XtraBars.Navigation.NavButton navButton3;
        private DevExpress.XtraVerticalGrid.PropertyGridControl propertyGridControl1;
    }
}
Desktop/HStation.Desktop.PBS.Core/MainForm - ¸´ÖÆ(2).cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,874 @@
using DevExpress.Utils.Svg;
using DevExpress.XtraBars.Docking;
using DevExpress.XtraBars.Docking2010.Views;
using DevExpress.XtraBars.Navigation;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using HStation.WinFrmUI.Xhs.PumpProduct;
using System.Drawing.Drawing2D;
using System.IO;
using Yw.WinFrmUI;
using Yw.WinFrmUI.Page;
namespace HStation.Desktop
{
    public partial class MainForm : RibbonForm
    {
        public MainForm()
        {
            InitializeComponent();
            this.accordionControlFunction.GroupHeight = 50;
            this.accordionControlFunction.ItemHeight = 35;
            this.accordionControlFunction.Appearance.Group.Default.Font = new Font("微软雅黑", 10.5f);
            this.accordionControlFunction.Appearance.Item.Default.Font = new Font("微软雅黑", 9.5f);
            this.accordionControlFunction.AllowItemSelection = true;
            this.accordionControlFunction.Appearance.AccordionControl.BackColor = Color.White;
            this.accordionControlFunction.Appearance.AccordionControl.BorderColor = Color.White;
            //this.accordionControlFunction.ResizeMode = AccordionControlResizeMode.None;
            this.accordionControlFunction.AllowHtmlText = true;
            this.accordionControlFunction.HtmlTemplates.HamburgerHeaderPanel.Template = @"<div class='hamburger-header-background'></div>";
            this.accordionControlFunction.HtmlTemplates.HamburgerHeaderPanel.Styles = @".hamburger-header-background {background-color: #ffffff; height: 100%;width: 100%;}";
            this.tabbedView1.Style = DockingViewStyle.Classic;
            this.tabbedView1.Appearance.BackColor = Color.White;
            //this.tabbedView1.AppearancePage.Header.BackColor = Color.White;
            this.tabbedView1.AppearancePage.HeaderSelected.Font = new Font("微软雅黑", 10f, FontStyle.Bold);
           // this.tabbedView1.CustomDrawTabHeader += TabbedView1_CustomDrawTabHeader;
        }
        HatchBrush myHatchBrush1 = new HatchBrush(HatchStyle.BackwardDiagonal, Color.LightGray, Color.AliceBlue);
        private void TabbedView1_CustomDrawTabHeader(object sender, DevExpress.XtraTab.TabHeaderCustomDrawEventArgs e)
        {
            e.Cache.FillRectangle(myHatchBrush1, e.Bounds);
            e.DefaultDrawText();
            e.DefaultDrawImage();
            e.DefaultDrawButtons();
            e.Handled = true;
        }
        #region TileNavPane ç›¸å…³å¤„理
        //移动窗体
        private void tileNavPane_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Clicks >= 2)
            {
                if (this.WindowState == FormWindowState.Maximized)
                {
                    this.WindowState = FormWindowState.Normal;
                }
                else
                {
                    this.WindowState = FormWindowState.Maximized;
                }
            }
            else
            {
                var hit_info = this.tileNavPane.CalcHitInfo(e.Location);
                if (hit_info.InButton)
                {
                    return;
                }
                this.DragMove();
            }
        }
        //标题点击
        private void nbTitle_ElementClick(object sender, NavElementEventArgs e)
        {
        }
        //最大化最小化窗体
        private void nbNormal_ElementClick(object sender, NavElementEventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                this.WindowState = FormWindowState.Maximized;
            }
        }
        //最小化窗体
        private void nbMin_ElementClick(object sender, NavElementEventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }
        //关闭窗体
        private void nabClose_ElementClick(object sender, NavElementEventArgs e)
        {
            this.Close();
        }
        //功能点击事件
        private void tileNavPane_ElementClick(object sender, NavElementEventArgs e)
        {
            if (e.Element is not NavButton btn)
                return;
            if (!btn.Enabled)
                return;
            if (btn.Tag is not string tag)
                return;
            PageGuid pguid = null;
            if (this.tabbedView1.ActiveDocument != null)
            {
                pguid = this.tabbedView1.ActiveDocument.Tag as PageGuid;
            }
            SelectModular(tag, pguid);
        }
        #endregion TileNavPane ç›¸å…³å¤„理
        #region çª—体事件
        //界面记载事件
        private void MainForm_Load(object sender, EventArgs e)
        {
        }
        //界面显示事件
        private void MainForm_Shown(object sender, EventArgs e)
        {
            //var guid = new PageGuid()
            //{
            //    Modular = "PBS",
            //    MoudingType = eMoudingType.Tab,
            //    Function = "Home"
            //};
            //if (!IsExistPage(guid, true))
            //{
            //}
            SelectModular("BasicData");
        }
        //界面正在退出时确认
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                if (XtraMessageBox.Show("是否关闭程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
        //界面退出
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
        }
        //窗体尺寸改变
        private void MainForm_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
            }
            else
            {
            }
        }
        #endregion çª—体事件
        #region TabbedView ç›¸å…³äº‹ä»¶å¤„理程序
        //选中
        private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e)
        {
            if (e.Document == null)
                return;
            var pguid = e.Document.Tag as PageGuid;
            if (pguid == null)
                return;
            SelectModular(pguid.Modular, pguid);
        }
        //添加
        private void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e)
        {
            if (this.tabbedView1.Documents.Count > 1)
            {
                if (!this.tabbedView1.DocumentGroupProperties.ShowTabHeader)
                {
                }
            }
        }
        //激活
        private void tabbedView1_DocumentActivated(object sender, DocumentEventArgs e)
        {
            var page = e.Document.Control as DocumentPage;
            if (page == null)
            {
                return;
            }
        }
        //关闭 æ­¤æ—¶æŽ§ä»¶å·²ç»ä¸ºç©º
        private void tabbedView1_DocumentClosed(object sender, DocumentEventArgs e)
        {
        }
        #endregion TabbedView ç›¸å…³äº‹ä»¶å¤„理程序
        #region Page
        //是否存在Page
        private bool IsExistPage(PageGuid pguid, bool isActivePage)
        {
            if (pguid == null)
            {
                return false;
            }
            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
            {
                foreach (DockPanel panel in this.dockManager1.Panels)
                {
                    if (panel.Tag != null)
                    {
                        if (panel.Tag is PageGuid)
                        {
                            if ((panel.Tag as PageGuid).ToString() == pguid.ToString())
                            {
                                if (isActivePage)
                                {
                                    panel.Show();
                                }
                                return true;
                            }
                        }
                    }
                }
            }
            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
            {
                foreach (BaseDocument doc in this.tabbedView1.Documents)
                {
                    if (doc.Tag != null)
                    {
                        if (doc.Tag is PageGuid)
                        {
                            if ((doc.Tag as PageGuid).ToString() == pguid.ToString())
                            {
                                if (isActivePage)
                                {
                                    this.tabbedView1.Controller.Activate(doc);
                                }
                                return true;
                            }
                        }
                    }
                }
            }
            return false;
        }
        //更新数据
        private void RefreshPageData(PageGuid pguid)
        {
            if (pguid == null)
            {
                return;
            }
            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
            {
                var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                if (panel != null)
                {
                    if (panel.ControlContainer.Controls.Count > 0)
                    {
                        var page = panel.ControlContainer.Controls[0] as DocumentPage;
                        if (page != null)
                        {
                            page.RefreshData();
                        }
                    }
                    return;
                }
            }
            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
            {
                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                if (doc != null)
                {
                    var page = doc.Control as DocumentPage;
                    if (page != null)
                    {
                        page.RefreshData();
                    }
                    return;
                }
            }
        }
        //更新PageTitle
        private void UpdatePageTitle(PageGuid pguid, PageTitle title)
        {
            if (pguid == null || title == null)
                return;
            if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
            {
                var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                if (panel != null)
                {
                    panel.Text = title.Caption;
                    panel.ImageOptions.Image = title.HeaderImage;
                    panel.ImageOptions.SvgImage = title.HeaderSvgImage;
                    panel.ImageOptions.SvgImageSize = title.SvgImageSize;
                    if (panel.ControlContainer.Controls.Count > 0)
                    {
                        var page = panel.ControlContainer.Controls[0] as DocumentPage;
                        if (page != null)
                        {
                            page.PageTitle = title;
                        }
                    }
                    return;
                }
            }
            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
            {
                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                if (doc != null)
                {
                    doc.Caption = title.Caption;
                    doc.ImageOptions.Image = title.HeaderImage;
                    doc.ImageOptions.SvgImage = title.HeaderSvgImage;
                    doc.ImageOptions.SvgImageSize = title.SvgImageSize;
                    var page = doc.Control as DocumentPage;
                    if (page != null)
                    {
                        page.PageTitle = title;
                    }
                    return;
                }
            }
        }
        //创建Page
        private bool CreatePage(DocumentPage page, PageGuid pguid)
        {
            if (page == null || pguid == null)
            {
                return false;
            }
            page.PageGuid = pguid;
            page.Dock = DockStyle.Fill;
            page.IsExistPageEvent += IsExistPage;
            page.CreatePageEvent += CreatePage;
            page.RefreshPageDataEvent += RefreshPageData;
            page.UpdatePageTitleEvent += UpdatePageTitle;
            page.ClosePageEvent += ClosePage;
            page.RegistEvents();
            switch (pguid.MoudingType)
            {
                case eMoudingType.Dock:
                    {
                        this.dockManager1.BeginUpdate();
                        DockPanel docPnl = null;
                        if (pguid.DockType == eDockType.Left)
                        {
                            docPnl = this.dockManager1.AddPanel(DockingStyle.Left);
                        }
                        else if (pguid.DockType == eDockType.Right)
                        {
                            docPnl = this.dockManager1.AddPanel(DockingStyle.Right);
                        }
                        docPnl.Footer = Directory.GetCurrentDirectory();
                        if (page.PageTitle != null)
                        {
                            docPnl.Text = page.PageTitle.Caption;
                            docPnl.ImageOptions.Image = page.PageTitle.HeaderImage;
                            docPnl.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
                            docPnl.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
                            docPnl.Options.ShowCloseButton = page.PageTitle.AllowClose;
                        }
                        docPnl.ControlContainer.Controls.Add(page);
                        docPnl.Tag = pguid;
                        this.dockManager1.EndUpdate();
                        docPnl.Show();
                    }
                    break;
                case eMoudingType.Tab:
                    {
                        this.tabbedView1.BeginUpdate();
                        var doc = this.tabbedView1.AddDocument(page);
                        doc.Footer = Directory.GetCurrentDirectory();
                        if (page.PageTitle != null)
                        {
                            doc.Caption = page.PageTitle.Caption;
                            doc.ImageOptions.Image = page.PageTitle.HeaderImage;
                            doc.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
                            doc.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
                            doc.Properties.AllowClose = page.PageTitle.AllowClose ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
                        }
                        doc.Tag = pguid;
                        this.tabbedView1.EndUpdate();
                        this.tabbedView1.Controller.Activate(doc);
                    }
                    break;
                default: break;
            }
            page.InitialDataSource();
            return true;
        }
        //关闭Page
        private void ClosePage(PageGuid pguid)
        {
            switch (pguid.MoudingType)
            {
                case eMoudingType.Dock:
                    {
                        if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0)
                        {
                            var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                            if (panel != null)
                            {
                                if (panel.Visibility != DockVisibility.Hidden)
                                    panel.Close();//会触发正在关闭和关闭事件
                                                  //this.dockManager1.RemovePanel(panel);//不会触发正在关闭和关闭事件
                            }
                        }
                    }
                    break;
                case eMoudingType.Tab:
                    {
                        if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
                        {
                            var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                            if (doc != null)
                            {
                                this.tabbedView1.Controller.Close(doc);//会触发正在关闭和关闭事件
                            }
                        }
                    }
                    break;
                default: break;
            }
        }
        #endregion Page
        #region Modular
        private string _sel_modular = string.Empty;
        //选择模块
        private void SelectModular(string modular, PageGuid pguid = null)
        {
            if (_sel_modular != modular)
            {
                foreach (NavButton btn in this.tileNavPane.Buttons)
                {
                    if (btn.Tag == null)
                        continue;
                    if (btn.Tag is string tag)
                    {
                        if (tag == modular)
                        {
                            btn.Appearance.BackColor = Color.FromArgb(50, 121, 197);
                            btn.Appearance.ForeColor = Color.White;
                        }
                        else
                        {
                            btn.Appearance.BackColor = Color.White;
                            btn.Appearance.ForeColor = Color.Black;
                        }
                    }
                }
                //初始功能列表
                this.accordionControlFunction.Elements.Clear();
                var list = GetAccordionElementList(modular);
                if (list != null && list.Count > 0)
                {
                    foreach (var element in list)
                    {
                        var accEle = GetAccordionControlElement(element);
                        this.accordionControlFunction.Elements.Add(accEle);
                    }
                }
                _sel_modular = modular;
            }
            //选择功能
            if (pguid != null)
            {
                foreach (var item in this.accordionControlFunction.Elements)
                {
                    if (SelectAccordionControlElement(item, pguid))
                        break;
                }
            }
        }
        //获取模块元素
        private DevExpress.XtraBars.Navigation.AccordionControlElement GetAccordionControlElement(AccordionElement ele)
        {
            var dev_ele = new DevExpress.XtraBars.Navigation.AccordionControlElement();
            dev_ele.Name = ele.Id;
            dev_ele.Text = ele.Caption;
            dev_ele.Image = ele.Image;
            dev_ele.ImageOptions.SvgImage = ele.SvgImage;
            dev_ele.ImageOptions.SvgImageSize = ele.SvgImageSize;
            dev_ele.AllowGlyphSkinning = ele.AllowGlyphSkinning ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
            dev_ele.Tag = ele;
            dev_ele.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
            dev_ele.Click += delegate { ele.Click?.Invoke(); };
            if (ele.Elements != null && ele.Elements.Count > 0)
            {
                dev_ele.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
                foreach (var item in ele.Elements)
                {
                    dev_ele.Elements.Add(GetAccordionControlElement(item));
                }
            }
            return dev_ele;
        }
        //选择功能元素
        private bool SelectAccordionControlElement(DevExpress.XtraBars.Navigation.AccordionControlElement ctrl_ele, PageGuid pguid)
        {
            if (ctrl_ele == null)
                return false;
            if (pguid == null)
                return false;
            if (ctrl_ele.Tag is AccordionElement ele)
            {
                if (ele.PageGuid != null && ele.PageGuid.ToString() == pguid.ToString())
                {
                    this.accordionControlFunction.SelectedElement = ctrl_ele;
                    if (ctrl_ele.OwnerElement != null)
                    {
                        ctrl_ele.OwnerElement.Expanded = true;
                        this.accordionControlFunction.Refresh();
                    }
                    return true;
                }
                else
                {
                    if (ctrl_ele.Elements != null && ctrl_ele.Elements.Count > 0)
                    {
                        foreach (var item in ctrl_ele.Elements)
                        {
                            SelectAccordionControlElement(item, pguid);
                        }
                    }
                }
            }
            return false;
        }
        //获取
        private List<AccordionElement> GetAccordionElementList(string modular)
        {
            var list = new List<AccordionElement>();
            if (modular == "BasicData")
            {
                var place_mgr_ele = new AccordionElement()
                {
                    Id = "place",
                    Caption = "场所管理",
                    SvgImage = svgImgGroup32[0],
                    SvgImageSize = new Size(24, 24),
                    AllowGlyphSkinning = true,
                    Elements = new List<AccordionElement>()
                    {
                        Get("行政区域",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "DistrictMgr",
                        }, svgImgItem32[0], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new DocumentPage();
                                page.PageGuid = guid;
                                page.PageTitle.Caption = caption;
                                page.PageTitle.HeaderSvgImage = svg;
                                page.PageTitle.SvgImageSize = size;
                                CreatePage(page, guid);
                            }
                        }),
                        Get("场所建筑",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "PlaceMgr",
                        }, svgImgItem32[1], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new DocumentPage();
                                page.PageGuid = guid;
                                page.PageTitle.Caption = caption;
                                page.PageTitle.HeaderSvgImage = svg;
                                page.PageTitle.SvgImageSize = size;
                                CreatePage(page, guid);
                            }
                        }),
                        Get("场所设施", new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "FacilityMgr",
                        }, svgImgItem32[2], new Size(18, 18), (caption, guid, svg, size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new DocumentPage();
                                page.PageGuid = guid;
                                page.PageTitle.Caption = caption;
                                page.PageTitle.HeaderSvgImage = svg;
                                page.PageTitle.SvgImageSize = size;
                                CreatePage(page, guid);
                            }
                        })
                    }
                };
                var we_mgr_ele = new AccordionElement()
                {
                    Id = "we",
                    Caption = "当量管理",
                    SvgImage = svgImgGroup32[1],
                    SvgImageSize = new Size(24, 24),
                    AllowGlyphSkinning = true,
                    Elements = new List<AccordionElement>() {
                        Get("用水器具",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "WaterUtensilMgr",
                        }, svgImgItem32[4], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                        Get("用水当量",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "WaterWEMgr",
                        }, svgImgItem32[5], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        })
                    }
                };
                var asset_mgr_ele = new AccordionElement()
                {
                    Id = "asset",
                    Caption = "产品管理",
                    SvgImage = svgImgGroup32[2],
                    SvgImageSize = new Size(24, 24),
                    AllowGlyphSkinning = true,
                    Elements = new List<AccordionElement>() {
                        Get("厂商管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "AssetsManufacturerMgr",
                        }, svgImgItem32[6], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new DocumentPage();
                                page.PageGuid = guid;
                                page.PageTitle.Caption = caption;
                                page.PageTitle.HeaderSvgImage = svg;
                                page.PageTitle.SvgImageSize = size;
                                CreatePage(page, guid);
                            }
                        }),
                        Get("水泵管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "AssetsPumpMgr",
                        }, svgImgItem32[7], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page=new PumpProductMainPage();
                                page.PageGuid = guid;
                                page.PageTitle.Caption = caption;
                                page.PageTitle.HeaderSvgImage = svg;
                                page.PageTitle.SvgImageSize = size;
                                CreatePage(page,guid);
                            }
                        }),
                        Get("成套设备",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "AssetsKitMgr",
                        }, svgImgItem32[8], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        })
                    }
                };
                var system_config_ele = new AccordionElement()
                {
                    Id = "asset",
                    Caption = "系统配置",
                    SvgImage = svgImgGroup32[3],
                    SvgImageSize = new Size(24, 24),
                    AllowGlyphSkinning = true,
                    Elements = new List<AccordionElement>() {
                        Get("类型管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "SystemTypeMgr",
                        }, svgImgItem32[9], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                        Get("分类管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "SystemCatalogMgr",
                        }, svgImgItem32[10], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                        Get("属性管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "SystemPropMgr",
                        }, svgImgItem32[11], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                        Get("字典类型",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "SystemDictMgr",
                        }, svgImgItem32[12], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                     }
                };
                var auth_config_ele = new AccordionElement()
                {
                    Id = "asset",
                    Caption = "权限配置",
                    SvgImage = svgImgGroup32[4],
                    SvgImageSize = new Size(24, 24),
                    AllowGlyphSkinning = true,
                    Elements = new List<AccordionElement>() {
                        Get("角色管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "RoleMgr",
                        }, svgImgItem32[13], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                        Get("用户管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "UserMgr",
                        }, svgImgItem32[14], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                        Get("菜单管理",new PageGuid()
                        {
                            Modular = "BasicData",
                            MoudingType = eMoudingType.Tab,
                            Function = "MenuMgr",
                        }, svgImgItem32[15], new Size(18, 18), (caption,guid,svg,size) =>
                        {
                            if (!IsExistPage(guid, true))
                            {
                            }
                        }),
                    }
                };
                list.Add(place_mgr_ele);
                list.Add(we_mgr_ele);
                list.Add(asset_mgr_ele);
                list.Add(system_config_ele);
                list.Add(auth_config_ele);
            }
            return list;
        }
        private AccordionElement Get(string caption, PageGuid guid, SvgImage svg_img, Size size, Action<string, PageGuid, SvgImage, Size> action, bool glyph_skinning = true)
        {
            var ele = new AccordionElement();
            if (guid == null)
            {
                ele.Id = Guid.NewGuid().ToString();
            }
            else
            {
                ele.Id = guid.ToString();
                ele.Click = delegate { action(caption, guid, svg_img, size); };
            }
            ele.PageGuid = guid;
            ele.Caption = caption;
            ele.SvgImage = svg_img;
            ele.SvgImageSize = size;
            ele.AllowGlyphSkinning = glyph_skinning;
            return ele;
        }
        #endregion Modular
    }
}
Desktop/HStation.Desktop.PBS.Core/MainForm - ¸´ÖÆ(2).resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,699 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="DevExpress.Data.v23.2" name="DevExpress.Data.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="nbTitle.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7rCVPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbBasicData.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qCtPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbRapidModeling.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7q6dPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbModelAnalysis.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qWjPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbModelEvaluation.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qWMPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbSmartHardware.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qWkPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbMin.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFICAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlJlbW92ZSI+DQogICAgPHBhdGggZD0iTTI3LDE4SDVj
        LTAuNiwwLTEtMC41LTEtMXYtMmMwLTAuNiwwLjQtMSwxLTFoMjJjMC41LDAsMSwwLjQsMSwxdjJDMjgs
        MTcuNSwyNy41LDE4LDI3LDE4eiIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="nbNormal.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIkCAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
        ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
        OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
        dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IldpbmRvdyI+DQogICAgPHBhdGggZD0iTTMwLDEwVjVj
        MC0wLjUtMC41LTEtMS0xSDNDMi41LDQsMiw0LjUsMiw1djVIMzB6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
        ICA8cGF0aCBkPSJNMjgsMTB2MTZINFYxMEgydjE3YzAsMC41LDAuNSwxLDEsMWgyNmMwLjUsMCwxLTAu
        NSwxLTFWMTBIMjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <data name="nbClose.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAD0DAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
        YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
        Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVsZXRlIj4N
        CiAgICA8Zz4NCiAgICAgIDxwYXRoIGQ9Ik0xOC44LDE2bDYuOS02LjljMC40LTAuNCwwLjQtMSwwLTEu
        NGwtMS40LTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxNiwxMy4yTDkuMSw2LjNjLTAuNC0wLjQtMS0w
        LjQtMS40LDAgICAgTDYuMyw3LjdjLTAuNCwwLjQtMC40LDEsMCwxLjRsNi45LDYuOWwtNi45LDYuOWMt
        MC40LDAuNC0wLjQsMSwwLDEuNGwxLjQsMS40YzAuNCwwLjQsMSwwLjQsMS40LDBsNi45LTYuOWw2Ljks
        Ni45ICAgIGMwLjQsMC40LDEsMC40LDEuNCwwbDEuNC0xLjRjMC40LTAuNCwwLjQtMSwwLTEuNEwxOC44
        LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <metadata name="documentManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>259, 17</value>
  </metadata>
  <metadata name="svgImgItem32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>659, 17</value>
  </metadata>
  <data name="svgImgItem32.MapPin.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7pyHPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.BuildingEnergy.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7rCLPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.CityNext.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7rCGPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.MapLayers.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qCePC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.font-icon61846.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+74aWPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.Ruler.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7rWePC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.PostUpdate.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qOzPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.Pump" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFgIAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjMycHgiIGhl
        aWdodD0iMzJweCIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0
        cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
        L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik0xMDI0LjUxMiA3Ni44aC01MTJjLTU4LjU5
        MzI4IDAuMDUxMi0xMTUuNDQ1NzYgMTEuNTYwOTYtMTY4Ljk5MDcyIDM0LjIxMTg0LTUxLjgyNDY0IDIx
        LjkyMzg0LTk4LjM2NTQ0IDUzLjI5OTItMTM4LjMyMTkyIDkzLjI1NTY4cy03MS4zMzE4NCA4Ni40OTcy
        OC05My4yNTU2OCAxMzguMzIxOTJDODkuMjQxNiAzOTYuMjY3NTIgNzcuNzMxODQgNDUzLjI2MzM2IDc3
        LjczMTg0IDUxMnMxMS41MDk3NiAxMTUuNzQyNzIgMzQuMjExODQgMTY5LjQxMDU2YTQzMi43ODg0OCA0
        MzIuNzg4NDggMCAwIDAgMjMuOTkyMzIgNDguMTg5NDRIMFY5NDcuMmg1MTJ2LTAuMDEwMjRjMC4zMDcy
        IDAuMDEwMjQgMC42MjQ2NCAwLjAxMDI0IDAuOTMxODQgMC4wMTAyNCA1OC43MzM1NjggMCAxMTUuNzMy
        NDgtMTEuNTA5NzYgMTY5LjQwODUxMi0zNC4yMTE4NCA1MS44MjQ2NC0yMS45MjM4NCA5OC4zNjg1MTIt
        NTMuMjk5MiAxMzguMzIxOTItOTMuMjU0NjU2Qzg2MC42MjA4IDc3OS43NzYgODkxLjk5NjE2IDczMy4y
        MzUyIDkxMy45MiA2ODEuNDEwNTZjMjIuNzAyMDgtNTMuNjY3ODQgMzQuMjExODQtMTEwLjY3MzkyIDM0
        LjIxMTg0LTE2OS40MTA1NiAwLTc3LjM3MzQ0LTE5Ljk4OTUwNC0xNTEuNzA1Ni01OC4xOTM5Mi0yMTcu
        NmgxMzQuNTc0MDhWNzYuOHogbS01NjMuNzEyIDgxOS4yaC00MDkuNlY3ODAuOGgxODcuNzYwNjRhMzg2
        LjAwNjAxNiAzODYuMDA2MDE2IDAgMCAxLTQyLjI3MDcyLTUxLjJjLTQyLjcyMTI4LTYxLjg5MDU2LTY3
        Ljc1ODA4LTEzNi44NzgwOC02Ny43NTgwOC0yMTcuNiAwLTIxMS43MzI0OCAxNzIuMjU3MjgtMzg0IDM4
        NC0zODRoNDYwLjM4MDE2djExNS4ySDc5MS43ODc1MmwzMC4xNjcwNCA0MC44MTY2NGM0OS4wNDY1Mjgg
        NjYuMzY1NDQgNzQuOTc3MjggMTQ1LjIwMzIgNzQuOTc3MjggMjI3Ljk4MzM2IDAgMjExLjc0MjcyLTE3
        Mi4yNTcyOCAzODQtMzg0IDM4NC0wLjMwNzIgMC0wLjYyNDY0IDAtMC45MzE4NC0wLjAxMDI0IiBmaWxs
        PSIjMDQwMDAwIiAvPg0KICA8cGF0aCBkPSJNNDMwLjM0MDA5NiA1MTEuMTY5NTM2Yy0wLjQ3MTA0IDQ1
        LjI0MzM5MiAzNi45MTUyIDgyLjI5NjgzMiA4My41MTUzOTIgODIuNzQ5NDQgNDQuNjU4Njg4LTIuMTUy
        NDQ4IDc5Ljg2NTg1Ni0zNy43MTM5MiA4MC4zMTY0MTYtODEuMTMxNTIgMC40NTk3NzYtNDMuNDIwNjcy
        LTMzLjk5NDc1Mi03OS42NjgyMjQtNzguNjA0Mjg4LTgyLjcwMzM2LTQ2LjU5NjA5Ni0wLjQ2Mzg3Mi04
        NC43NTM0MDggMzUuODQ0MDk2LTg1LjIyNzUyIDgxLjA4NTQ0eiIgZmlsbD0iIzA0MDAwMCIgLz4NCiAg
        PHBhdGggZD0iTTUxMi4yNTYgNzQxLjM3NmMtNjEuMjY4OTkyIDAtMTE4Ljg2ODk5Mi0yMy44NTkyLTE2
        Mi4xOTM0MDgtNjcuMTgyNTkyQzMwNi43MzkyIDYzMC44NzAwMTYgMjgyLjg4IDU3My4yNjc5NjggMjgy
        Ljg4IDUxMmMwLTYxLjI2ODk5MiAyMy44NTkyLTExOC44NzAwMTYgNjcuMTgyNTkyLTE2Mi4xOTM0MDhD
        MzkzLjM4NTk4NCAzMDYuNDgzMiA0NTAuOTg3MDA4IDI4Mi42MjQgNTEyLjI1NiAyODIuNjI0YzYxLjI2
        Nzk2OCAwIDExOC44NzAwMTYgMjMuODU5MiAxNjIuMTkzNDA4IDY3LjE4MjU5MkM3MTcuNzcyOCAzOTMu
        MTI5OTg0IDc0MS42MzIgNDUwLjczMTAwOCA3NDEuNjMyIDUxMmMwIDYxLjI2Nzk2OC0yMy44NTkyIDEx
        OC44NzAwMTYtNjcuMTgyNTkyIDE2Mi4xOTM0MDhDNjMxLjEyNjAxNiA3MTcuNTE2OCA1NzMuNTIzOTY4
        IDc0MS4zNzYgNTEyLjI1NiA3NDEuMzc2eiBtMC00MDcuNTUyYy05OC4yNDY2NTYgMC0xNzguMTc2IDc5
        LjkyOTM0NC0xNzguMTc2IDE3OC4xNzZzNzkuOTI5MzQ0IDE3OC4xNzYgMTc4LjE3NiAxNzguMTc2IDE3
        OC4xNzYtNzkuOTI5MzQ0IDE3OC4xNzYtMTc4LjE3Ni03OS45MjkzNDQtMTc4LjE3Ni0xNzguMTc2LTE3
        OC4xNzZ6IiBmaWxsPSIjMDQwMDAwIiAvPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.Kit" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcTAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgd2lkdGg9IjMyLjAzMTI1
        cHgiIGhlaWdodD0iMzJweCIgdmlld0JveD0iMCAwIDEwMjUgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxu
        cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y
        Zy8xOTk5L3hsaW5rIiBjbGFzcz0iaWNvbiI+DQogIDxwYXRoIGQ9Ik04MjQuNTk2NDggMjA4LjgzNDU2
        VjYxLjU0MjRIMzc5LjIyODE2Yy01MC45NjQ0OCAwLjA0MDk2LTEwMC40MjM2OCAxMC4wNTU2OC0xNDYu
        OTk1MiAyOS43NTc0NC00NS4wODY3MiAxOS4wNjY4OC04NS41NjU0NCA0Ni4zNTY0OC0xMjAuMzMwMjQg
        ODEuMTIxMjgtMzQuNzU0NTYgMzQuNzU0NTYtNjIuMDQ0MTYgNzUuMjMzMjgtODEuMTExMDQgMTIwLjMy
        QzExLjAzODcyIDMzOS40MjUyOCAxLjAyNCAzODkuMDA3MzYgMS4wMjQgNDQwLjEwNDk2czEwLjAxNDcy
        IDEwMC42Njk0NCAyOS43Njc2OCAxNDcuMzYzODRjMTkuMDY2ODggNDUuMDc2NDggNDYuMzU2NDggODUu
        NTU1MiA4MS4xMTEwNCAxMjAuMzIgMTcuMzI2MDggMTcuMzI2MDggMzYuMDg1NzYgMzIuNzk4NzIgNTYu
        MTA0OTYgNDYuMzI1NzZhMzc4LjIyODczNiAzNzguMjI4NzM2IDAgMCAwIDY0LjIyNTI4IDM0Ljc5NDQ5
        NmMwLjc4ODQ4IDAuMzM3OTIgMS41ODcyIDAuNjY1NiAyLjM3NTY4IDAuOTgzMDQgMTIuOTYzODQgNS4z
        ODYyNCAyNi4xMzI0OCAxMC4wMTQ3MiAzOS41MDU5MiAxMy44ODY0NjQgNi4zODk3NiAxLjg2MjY1NiA2
        LjY4NjcyIDMuNTQzMDQgMTMuMTY4NjQgNS4wNDgzMmEzMzEuODA2NzIgMzMxLjgwNjcyIDAgMCAxLTI0
        LjI4OTI4LTUzLjQ3MzI4Yy0xOC42MjY1Ni02LjUzNDE0NC0zMC4zNjE2LTE0LjY5NTQyNC00Ny4zMjky
        OC0yNC4yOTAzMDQtNS4yMTIxNi0yLjk0OTEyLTEwLjM0MjQtNi4wMzEzNi0xNS4zODA0OC05LjI0NTY5
        NmEzMzYuNjY4NjcyIDMzNi42Njg2NzIgMCAwIDEtODEuOTcxMi03My44MzE0MjRDNzIuNzk2MTYgNTkw
        Ljg5OTIgNDUuNTY4IDUxOC42MTUwNCA0NS41NjggNDQwLjEwNDk2YzAtMTg0LjE4Njg4IDE0OS44NDE5
        Mi0zMzQuMDI4OCAzMzQuMDI4OC0zMzQuMDI4OGg0MDAuNDY0ODk2djEwMC4yMDg2NEg2MjIuMTYxOTJs
        MS42MTc5MiAyLjE5MTM2IDIwMC44MTY2NCAwLjM1ODR6IiBmaWxsPSIjMDQwMDAwIiAvPg0KICA8cGF0
        aCBkPSJNODM3LjE4MjQ2NCA0MTEuMDg0OGgtMTAuMjE5NTJsMTguNTEzOTIgMjUuMDQ3MDRhMzcwLjA4
        Mzg0IDM3MC4wODM4NCAwIDAgMC04LjI5NDQtMjUuMDQ3MDR6IG0tMTAxLjU5MjA2NC0xMDAuMjA4NjRo
        MTkxLjQwNjA4VjE2My45NDI0SDQ4MS42MjgxNmMtNTAuOTY0NDggMC4wNDA5Ni0xMDAuNDIzNjggMTAu
        MDU1NjgtMTQ2Ljk5NTIgMjkuNzU3NDQtNDUuMDg2NzIgMTkuMDY2ODgtODUuNTY1NDQgNDYuMzU2NDgt
        MTIwLjMzMDI0IDgxLjEyMTI4LTM0Ljc1NDU2IDM0Ljc1NDU2LTYyLjA0NDE2IDc1LjIzMzI4LTgxLjEx
        MTA0IDEyMC4zMkMxMTMuNDM4NzIgNDQxLjgyNTI4IDEwMy40MjQgNDkxLjQwNzM2IDEwMy40MjQgNTQy
        LjUwNDk2YzAgMzYuMDc0NDk2IDQuOTk3MTIgNzEuNDAyNDk2IDE0Ljg4ODk2IDEwNS40ODIyNCA0LjEx
        NjQ4IDE0LjE4MzQyNCA5LjA3MjY0IDI4LjE2IDE0Ljg3ODcyIDQxLjg4MTZhMzc3LjQxMTU4NCAzNzcu
        NDExNTg0IDAgMCAwIDM0LjgxNiA2NC4yNDU3NmMxMy41MTY4IDIwLjAxOTIgMjguOTc5MiAzOC43NDgx
        NiA0Ni4yOTUwNCA1Ni4wNzQyNCAxNy4zMjYwOCAxNy4zMjYwOCAzNi4wODU3NiAzMi43OTg3MiA1Ni4x
        MDQ5NiA0Ni4zMjU3NmEzNzguMjI4NzM2IDM3OC4yMjg3MzYgMCAwIDAgNjQuMjI1MjggMzQuNzk0NDk2
        YzEzLjcyMTYgNS44MDYwOCAxNi40MzUyIDEwLjc2MjI0IDMwLjYxNzYgMTQuODY5NTA0LTI4Ljg4NzA0
        LTIzLjAxOTUyLTUyLjg1ODg4LTUwLjcyODk2LTcyLjgwNjQtODEuOTYwOTYtOS44OTE4NC02LjMxODA4
        LTkuMTg1MjgtMTMuMTM3OTItMTguMzI5Ni0yMC40MzkwNGEzMzYuNzE3ODI0IDMzNi43MTc4MjQgMCAw
        IDEtNTMuNDAxNi01My4zOTIzODQgMzM1LjczNDc4NCAzMzUuNzM0Nzg0IDAgMCAxLTIwLjQyODgtMjgu
        NTY4NTc2Yy0zMy4xMTYxNi01MS44MzQ4OC01Mi4zMTYxNi0xMTMuMzc4MzA0LTUyLjMxNjE2LTE3OS4z
        MTI2NCAwLTE4NC4xODY4OCAxNDkuODQxOTItMzM0LjAyODggMzM0LjAyODgtMzM0LjAyODhoNDAwLjQ2
        NDg5NnYxMDAuMjA4NjRINzI0LjU2MTkybDEuNjE3OTIgMi4xOTEzNmg5LjQxMDU2eiIgZmlsbD0iIzA0
        MDAwMCIgLz4NCiAgPHBhdGggZD0iTTEwMjUuMDI0IDI2Ni4zNDI0SDU3OS42NTU2OGMtNTAuOTY1NTA0
        IDAuMDQwOTYtMTAwLjQyMzY4IDEwLjA1NTY4LTE0Ni45OTUyIDI5Ljc1NzQ0LTQ1LjA4NjcyIDE5LjA2
        Njg4LTg1LjU2NTQ0IDQ2LjM1NjQ4LTEyMC4zMzAyNCA4MS4xMjEyOC0zNC43NTQ1NiAzNC43NTQ1Ni02
        Mi4wNDQxNiA3NS4yMzMyOC04MS4xMTEwNCAxMjAuMzItMTkuNzUyOTYgNDYuNjg0MTYtMjkuNzY3Njgg
        OTYuMjY2MjQtMjkuNzY3NjggMTQ3LjM2Mzg0IDAgMjkuMzA2ODggMy4yOTcyOCA1OC4xMTIgOS44NDA2
        NCA4Ni4xNTkzNiAxLjUwNTI4IDYuNDgxOTIgMy4xODQ2NCAxMi45MjI4OCA1LjA0ODMyIDE5LjMyMjg4
        YTM3My42MjI3ODQgMzczLjYyMjc4NCAwIDAgMCAxMy44OTU2OCAzOS41MDU5MmMwLjMxNzQ0IDAuNzg5
        NTA0IDAuNjQ1MTIgMS41ODcyIDAuOTgzMDQgMi4zNzU2OGEzNzcuNDExNTg0IDM3Ny40MTE1ODQgMCAw
        IDAgMzQuODE2IDY0LjI0NTc2YzEzLjUxNjggMjAuMDE5MiAyOC45NzkyIDM4Ljc0ODE2IDQ2LjI5NTA0
        IDU2LjA3NDI0IDM0Ljc2NDggMzQuNzUzNTM2IDc1LjI0MzUyIDYyLjA1NDQgMTIwLjMzMDI0IDgxLjEy
        MTI4IDQ2LjY4NDE2IDE5Ljc0MjcyIDk2LjI2NjI0IDI5Ljc1ODQ2NCAxNDcuMzYzODQgMjkuNzU4NDY0
        IDUxLjA5NzYgMCAxMDAuNjcwNDY0LTEwLjAxNDcyIDE0Ny4zNTM2LTI5Ljc1ODQ2NCA0NS4wODY3Mi0x
        OS4wNjY4OCA4NS41NjU0NC00Ni4zNjY3MiAxMjAuMzMwMjQtODEuMTIxMjggMzQuNzU0NTYtMzQuNzY0
        OCA2Mi4wNTU0MjQtNzUuMjQzNTIgODEuMTIxMjgtMTIwLjMzMDI0IDE5Ljc0MjcyLTQ2LjY4NTE4NCAy
        OS43NTg0NjQtOTYuMjU2IDI5Ljc1ODQ2NC0xNDcuMzUzNiAwLTY3LjI5NzI4LTE3LjM5Nzc2LTEzMS45
        NjI4OC01MC42MjY1Ni0xODkuMjg2NEgxMDI1LjAyNFYyNjYuMzQyNHogbS00NC41MzM3NiAxNDQuNzQy
        NGgtMTU3LjkwMDhsMTguNTEzOTIgMjUuMDQ3MDQgNy43MjA5NiAxMC40NTUwNGM0Mi42NzAwOCA1Ny43
        MzMxMiA2NS4yMTg1NiAxMjYuMzEwNCA2NS4yMTg1NiAxOTguMzE4MDggMCAxODQuMTc2NjQtMTQ5Ljg0
        MTkyIDMzNC4wMjg4LTMzNC4wMTg1NiAzMzQuMDI4OC03OC41MTAwOCAwLTE1MC44MDQ0OC0yNy4yMzk0
        MjQtMjA3Ljg4MjI0LTcyLjc1NTJhMzM2LjQzMTEwNCAzMzYuNDMxMTA0IDAgMCAxLTczLjgzMDQtODEu
        OTYwOTYgMzMzLjMzMjQ4IDMzMy4zMzI0OCAwIDAgMS05LjI1Njk2LTE1LjM5MDcyIDMzMS44MDY3MiAz
        MzEuODA2NzIgMCAwIDEtMjQuMjg5MjgtNTMuNDczMjhjLTEyLjE1NDg4LTM0LjU4MTUwNC0xOC43Njk5
        Mi03MS43NjE5Mi0xOC43Njk5Mi0xMTAuNDQ4NjQgMC0xODQuMTg2ODggMTQ5Ljg0MTkyLTMzNC4wMjg4
        IDMzNC4wMjg4LTMzNC4wMjg4aDQwMC40NjU5MnYxMDAuMjA4NjR6IG0tMjUwLjA4MTI4LTEwMi40QTM3
        My40MzUzOTIgMzczLjQzNTM5MiAwIDAgMCA3MTEuNjggMjY2LjM0MjRoLTUxLjEwNzg0YTMzMi4wMTg2
        ODggMzMyLjAxODY4OCAwIDAgMSAyMi44MTQ3MiA0NC41MzM3NmgzOC40MjA0OGwtMS42MTc5Mi0yLjE5
        MTM2aDEwLjIxOTUyeiIgZmlsbD0iIzA0MDAwMCIgLz4NCiAgPHBhdGggZD0iTTU5OS4zODcxMzYgNDI5
        LjQyNjY4OGMtMTQyLjAyMDYwOC0xLjcwMzkzNi0xNzYuNjU0MzM2IDc3LjAxNzA4OC0xNzYuNjU0MzM2
        IDc3LjAxNzA4OGw4Mi4wNTEwNzIgODEuODE3NmExMDMuODM0NjI0IDEwMy44MzQ2MjQgMCAwIDAtMjIu
        NjI0MjU2IDU0LjcwMjA4bC0xMjEuNTY2MjA4LTEuMzk1NzEyYy0xLjYyNzEzNiAxNDEuOTQyNzg0IDc3
        LjA5Mjg2NCAxNzYuNDI0OTYgNzcuMDkyODY0IDE3Ni40MjQ5Nmw4My4yMTUzNi04My4zNzEwMDhjMTQu
        NDg4NTc2IDExLjU0NDU3NiAzMi4xNTQ2MjQgMTkuMzcxMDA4IDUxLjYwMDM4NCAyMS42OTU0ODhsLTEu
        NDcxNDg4IDEyMy45Njc0ODhjMTQxLjg2NzAwOCAxLjYyODE2IDE3Ni40OTk3MTItNzcuMDE0MDE2IDE3
        Ni40OTk3MTItNzcuMDE0MDE2bC04Mi45MDUwODgtODIuOTA0MDY0YzEyLjE2NTEyLTE0LjQxMTc3NiAy
        MC4zNzg2MjQtMzIuMjMxNDI0IDIzLjE2OTAyNC01MS44MzI4MzJsMTIzLjgxMDgxNiAxLjM5NTcxMmMx
        LjYyNjExMi0xNDEuODY5MDU2LTc3LjE2OTY2NC0xNzYuNTAyNzg0LTc3LjE2OTY2NC0xNzYuNTAyNzg0
        bC04MS41MDkzNzYgODEuNTg1MTUyYTEwMi4yMjU5MiAxMDIuMjI1OTIgMCAwIDAtNTQuOTMzNTA0LTI0
        LjI1MDM2OGwxLjM5NDY4OC0xMjEuMzM0Nzg0eiBtNDkuMzU2OCAyMjYuMTY1NzZjLTAuMzg2MDQ4IDM0
        LjY2MzQyNC0yOC43OTU5MDQgNjIuNDQ5NjY0LTYzLjQ1NzI4IDYyLjA2MzYxNi0zNC42NjEzNzYtMC4z
        ODcwNzItNjIuNDQ2NTkyLTI4Ljc5NjkyOC02Mi4wNjE1NjgtNjMuNDU4MzA0czI4Ljc5NTkwNC02Mi40
        NDQ1NDQgNjMuNDU3MjgtNjIuMDYyNTkyYzM0LjY1OTMyOCAwLjM4NzA3MiA2Mi40NDU1NjggMjguNzk3
        OTUyIDYyLjA2MTU2OCA2My40NTcyOHoiIGZpbGw9IiMwNDAwMDAiIC8+DQogIDxwYXRoIGQ9Ik01NDUu
        NDAxODU2IDY1NC40MjkxODRjLTAuMjM0NDk2IDIzLjE0ODU0NCAxOC4zMzk4NCA0Mi4xMDg5MjggNDEu
        NDkyNDggNDIuMzQyNCAyMi4xODkwNTYtMS4xMDE4MjQgMzkuNjc3OTUyLTE5LjI5NjI1NiAzOS45MDQy
        NTYtNDEuNTE1MDA4IDAuMjI4MzUyLTIyLjIxMzYzMi0xNi44ODk4NTYtNDAuNzYyMzY4LTM5LjA1MzMx
        Mi00Mi4zMTU3NzYtMjMuMTUwNTkyLTAuMjM4NTkyLTQyLjEwNjg4IDE4LjMzOTg0LTQyLjM0MzQyNCA0
        MS40ODgzODR6IiBmaWxsPSIjMDQwMDAwIiAvPg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.Puzzle.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qqGPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.GroupList.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+74WoPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.CommandPrompt.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7p2WPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.Dictionary.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qCtPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.PersonalFolder.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7rClPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.GuestUser.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7rmXPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgItem32.PassiveAuthentication.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+74yqPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <metadata name="svgImgGroup32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>455, 17</value>
  </metadata>
  <data name="svgImgGroup32.EMI.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7pyxPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgGroup32.CC.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7p+wPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgGroup32.Manage.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7qSSPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgGroup32.ExploitProtectionSettings.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+74mZPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
  <data name="svgImgGroup32.Admin.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi40
        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAALABAAAC77u/
        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAz
        MiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkJLkJsYWNrCgkJewoJCQlmaWxsOiM3Mjcy
        NzI7IAoJCQlmb250LWZhbWlseTonZHgtZm9udC1pY29ucyc7IAoJCQlmb250LXNpemU6MzJweDsKCQl9
        Cgk8L3N0eWxlPg0KICA8dGV4dCB4PSIwcHgiIHk9IjMycHgiIGNsYXNzPSJCbGFjayI+7p+vPC90ZXh0
        Pg0KPC9zdmc+Cw==
</value>
  </data>
</root>
Desktop/HStation.Desktop.PBS.Core/MainForm.Designer.cs
@@ -42,26 +42,19 @@
            nbMin = new DevExpress.XtraBars.Navigation.NavButton();
            nbNormal = new DevExpress.XtraBars.Navigation.NavButton();
            nbClose = new DevExpress.XtraBars.Navigation.NavButton();
            documentManager1 = new DevExpress.XtraBars.Docking2010.DocumentManager(components);
            tabbedView1 = new DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(components);
            dockManager1 = new DevExpress.XtraBars.Docking.DockManager(components);
            flyoutPanel1 = new DevExpress.Utils.FlyoutPanel();
            flyoutPanelControl1 = new DevExpress.Utils.FlyoutPanelControl();
            svgImgItem32 = new DevExpress.Utils.SvgImageCollection(components);
            accordionControlFunction = new DevExpress.XtraBars.Navigation.AccordionControl();
            toolboxItem3 = new DevExpress.XtraToolbox.ToolboxItem();
            toolboxItem5 = new DevExpress.XtraToolbox.ToolboxItem();
            svgImgGroup32 = new DevExpress.Utils.SvgImageCollection(components);
            xtraTabContrl = new DevExpress.XtraTab.XtraTabControl();
            ((System.ComponentModel.ISupportInitialize)tileNavPane).BeginInit();
            ((System.ComponentModel.ISupportInitialize)documentManager1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)tabbedView1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)dockManager1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)flyoutPanel1).BeginInit();
            flyoutPanel1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)flyoutPanelControl1).BeginInit();
            ((System.ComponentModel.ISupportInitialize)svgImgItem32).BeginInit();
            ((System.ComponentModel.ISupportInitialize)accordionControlFunction).BeginInit();
            ((System.ComponentModel.ISupportInitialize)svgImgGroup32).BeginInit();
            ((System.ComponentModel.ISupportInitialize)xtraTabContrl).BeginInit();
            SuspendLayout();
            // 
            // tileNavPane
@@ -79,14 +72,14 @@
            tileNavPane.AppearanceDisabled.Options.UseBackColor = true;
            tileNavPane.AppearanceDisabled.Options.UseBorderColor = true;
            tileNavPane.AppearanceDisabled.Options.UseForeColor = true;
            tileNavPane.AppearanceHovered.BackColor = Color.FromArgb(1, 96, 188);
            tileNavPane.AppearanceHovered.BorderColor = Color.FromArgb(1, 96, 188);
            tileNavPane.AppearanceHovered.BackColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceHovered.BorderColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceHovered.ForeColor = Color.White;
            tileNavPane.AppearanceHovered.Options.UseBackColor = true;
            tileNavPane.AppearanceHovered.Options.UseBorderColor = true;
            tileNavPane.AppearanceHovered.Options.UseForeColor = true;
            tileNavPane.AppearanceSelected.BackColor = Color.FromArgb(1, 96, 188);
            tileNavPane.AppearanceSelected.BorderColor = Color.FromArgb(1, 96, 188);
            tileNavPane.AppearanceSelected.BackColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceSelected.BorderColor = Color.FromArgb(50, 121, 197);
            tileNavPane.AppearanceSelected.ForeColor = Color.White;
            tileNavPane.AppearanceSelected.Options.UseBackColor = true;
            tileNavPane.AppearanceSelected.Options.UseBorderColor = true;
@@ -185,10 +178,6 @@
            // 
            // nbRapidModeling
            // 
            nbRapidModeling.AppearanceHovered.BackColor = Color.FromArgb(1, 96, 188);
            nbRapidModeling.AppearanceHovered.BorderColor = Color.FromArgb(1, 96, 188);
            nbRapidModeling.AppearanceHovered.Options.UseBackColor = true;
            nbRapidModeling.AppearanceHovered.Options.UseBorderColor = true;
            nbRapidModeling.Caption = "快速建模";
            nbRapidModeling.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("nbRapidModeling.ImageOptions.SvgImage");
            nbRapidModeling.ImageOptions.SvgImageSize = new Size(24, 24);
@@ -271,50 +260,10 @@
            nbClose.Name = "nbClose";
            nbClose.ElementClick += nabClose_ElementClick;
            // 
            // documentManager1
            //
            documentManager1.ContainerControl = this;
            documentManager1.View = tabbedView1;
            documentManager1.ViewCollection.AddRange(new DevExpress.XtraBars.Docking2010.Views.BaseView[] { tabbedView1 });
            //
            // tabbedView1
            //
            tabbedView1.DocumentProperties.AllowPin = true;
            tabbedView1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
            tabbedView1.DocumentSelected += tabbedView1_DocumentSelected;
            tabbedView1.DocumentAdded += tabbedView1_DocumentAdded;
            tabbedView1.DocumentActivated += tabbedView1_DocumentActivated;
            tabbedView1.DocumentClosed += tabbedView1_DocumentClosed;
            //
            // dockManager1
            // 
            dockManager1.Form = this;
            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
            //
            // flyoutPanel1
            //
            flyoutPanel1.AnimationRate = 100;
            flyoutPanel1.Controls.Add(flyoutPanelControl1);
            flyoutPanel1.Location = new Point(706, 209);
            flyoutPanel1.Margin = new Padding(4, 5, 4, 5);
            flyoutPanel1.Name = "flyoutPanel1";
            flyoutPanel1.Options.CloseOnOuterClick = true;
            flyoutPanel1.OptionsBeakPanel.BeakLocation = DevExpress.Utils.BeakPanelBeakLocation.Top;
            flyoutPanel1.OptionsButtonPanel.ButtonPanelHeight = 47;
            flyoutPanel1.ParentForm = this;
            flyoutPanel1.Size = new Size(286, 157);
            flyoutPanel1.TabIndex = 5;
            //
            // flyoutPanelControl1
            //
            flyoutPanelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            flyoutPanelControl1.Dock = DockStyle.Fill;
            flyoutPanelControl1.FlyoutPanel = flyoutPanel1;
            flyoutPanelControl1.Location = new Point(0, 0);
            flyoutPanelControl1.Margin = new Padding(4, 5, 4, 5);
            flyoutPanelControl1.Name = "flyoutPanelControl1";
            flyoutPanelControl1.Size = new Size(286, 157);
            flyoutPanelControl1.TabIndex = 0;
            // 
            // svgImgItem32
            // 
@@ -373,6 +322,58 @@
            svgImgGroup32.Add("ExploitProtectionSettings.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.ExploitProtectionSettings.svg"));
            svgImgGroup32.Add("Admin.svg", (DevExpress.Utils.Svg.SvgImage)resources.GetObject("svgImgGroup32.Admin.svg"));
            // 
            // xtraTabContrl
            //
            xtraTabContrl.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
            xtraTabContrl.Appearance.BackColor = Color.White;
            xtraTabContrl.Appearance.BorderColor = Color.White;
            xtraTabContrl.Appearance.ForeColor = Color.Black;
            xtraTabContrl.Appearance.Options.UseBackColor = true;
            xtraTabContrl.Appearance.Options.UseBorderColor = true;
            xtraTabContrl.Appearance.Options.UseForeColor = true;
            xtraTabContrl.AppearancePage.Header.BackColor = Color.White;
            xtraTabContrl.AppearancePage.Header.BorderColor = Color.White;
            xtraTabContrl.AppearancePage.Header.ForeColor = Color.Black;
            xtraTabContrl.AppearancePage.Header.Options.UseBackColor = true;
            xtraTabContrl.AppearancePage.Header.Options.UseBorderColor = true;
            xtraTabContrl.AppearancePage.Header.Options.UseForeColor = true;
            xtraTabContrl.AppearancePage.HeaderActive.BackColor = Color.White;
            xtraTabContrl.AppearancePage.HeaderActive.BorderColor = Color.White;
            xtraTabContrl.AppearancePage.HeaderActive.ForeColor = Color.Black;
            xtraTabContrl.AppearancePage.HeaderActive.Options.UseBackColor = true;
            xtraTabContrl.AppearancePage.HeaderActive.Options.UseBorderColor = true;
            xtraTabContrl.AppearancePage.HeaderActive.Options.UseForeColor = true;
            xtraTabContrl.AppearancePage.HeaderDisabled.BackColor = Color.White;
            xtraTabContrl.AppearancePage.HeaderDisabled.BorderColor = Color.White;
            xtraTabContrl.AppearancePage.HeaderDisabled.ForeColor = Color.Black;
            xtraTabContrl.AppearancePage.HeaderDisabled.Options.UseBackColor = true;
            xtraTabContrl.AppearancePage.HeaderDisabled.Options.UseBorderColor = true;
            xtraTabContrl.AppearancePage.HeaderDisabled.Options.UseForeColor = true;
            xtraTabContrl.AppearancePage.HeaderHotTracked.BackColor = Color.White;
            xtraTabContrl.AppearancePage.HeaderHotTracked.BorderColor = Color.White;
            xtraTabContrl.AppearancePage.HeaderHotTracked.ForeColor = Color.Black;
            xtraTabContrl.AppearancePage.HeaderHotTracked.Options.UseBackColor = true;
            xtraTabContrl.AppearancePage.HeaderHotTracked.Options.UseBorderColor = true;
            xtraTabContrl.AppearancePage.HeaderHotTracked.Options.UseForeColor = true;
            xtraTabContrl.AppearancePage.PageClient.BackColor = Color.White;
            xtraTabContrl.AppearancePage.PageClient.BorderColor = Color.White;
            xtraTabContrl.AppearancePage.PageClient.ForeColor = Color.Black;
            xtraTabContrl.AppearancePage.PageClient.Options.UseBackColor = true;
            xtraTabContrl.AppearancePage.PageClient.Options.UseBorderColor = true;
            xtraTabContrl.AppearancePage.PageClient.Options.UseForeColor = true;
            xtraTabContrl.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            xtraTabContrl.BorderStylePage = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
            xtraTabContrl.ClosePageButtonShowMode = DevExpress.XtraTab.ClosePageButtonShowMode.InActiveTabPageHeader;
            xtraTabContrl.Dock = DockStyle.Fill;
            xtraTabContrl.Location = new Point(211, 70);
            xtraTabContrl.LookAndFeel.SkinMaskColor = Color.White;
            xtraTabContrl.LookAndFeel.UseDefaultLookAndFeel = false;
            xtraTabContrl.Name = "xtraTabContrl";
            xtraTabContrl.Size = new Size(1876, 1061);
            xtraTabContrl.TabIndex = 19;
            xtraTabContrl.SelectedPageChanged += xtraTabContrl_SelectedPageChanged;
            xtraTabContrl.CloseButtonClick += xtraTabContrl_CloseButtonClick;
            //
            // MainForm
            // 
            Appearance.BackColor = Color.White;
@@ -380,9 +381,9 @@
            AutoScaleDimensions = new SizeF(10F, 22F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(2087, 1131);
            Controls.Add(xtraTabContrl);
            Controls.Add(accordionControlFunction);
            Controls.Add(tileNavPane);
            Controls.Add(flyoutPanel1);
            Margin = new Padding(4, 3, 4, 3);
            Name = "MainForm";
            Text = "Form1";
@@ -393,15 +394,11 @@
            Shown += MainForm_Shown;
            Resize += MainForm_Resize;
            ((System.ComponentModel.ISupportInitialize)tileNavPane).EndInit();
            ((System.ComponentModel.ISupportInitialize)documentManager1).EndInit();
            ((System.ComponentModel.ISupportInitialize)tabbedView1).EndInit();
            ((System.ComponentModel.ISupportInitialize)dockManager1).EndInit();
            ((System.ComponentModel.ISupportInitialize)flyoutPanel1).EndInit();
            flyoutPanel1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)flyoutPanelControl1).EndInit();
            ((System.ComponentModel.ISupportInitialize)svgImgItem32).EndInit();
            ((System.ComponentModel.ISupportInitialize)accordionControlFunction).EndInit();
            ((System.ComponentModel.ISupportInitialize)svgImgGroup32).EndInit();
            ((System.ComponentModel.ISupportInitialize)xtraTabContrl).EndInit();
            ResumeLayout(false);
        }
@@ -409,15 +406,11 @@
        private DevExpress.XtraBars.Navigation.TileNavPane tileNavPane;
        private DevExpress.XtraBars.Navigation.NavButton nbTitle;
        private DevExpress.XtraBars.Docking2010.DocumentManager documentManager1;
        private DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView tabbedView1;
        private DevExpress.XtraBars.Navigation.NavButton nbMin;
        private DevExpress.XtraBars.Navigation.NavButton nbNormal;
        private DevExpress.XtraBars.Navigation.NavButton nbClose;
        private DevExpress.XtraBars.Navigation.NavButton nbBasicData;
        private DevExpress.XtraBars.Navigation.NavButton nbRapidModeling;
        private DevExpress.Utils.FlyoutPanel flyoutPanel1;
        private DevExpress.Utils.FlyoutPanelControl flyoutPanelControl1;
        private DevExpress.Utils.SvgImageCollection svgImgItem32;
        private DevExpress.XtraBars.Navigation.NavButton nbModelAnalysis;
        private DevExpress.XtraBars.Navigation.NavButton nbModelEvaluation;
@@ -429,5 +422,6 @@
        private DevExpress.Utils.SvgImageCollection svgImgGroup32;
        private DevExpress.XtraBars.Navigation.NavButton navButton2;
        private DevExpress.XtraBars.Navigation.NavButton navButton3;
        private DevExpress.XtraTab.XtraTabControl xtraTabContrl;
    }
}
Desktop/HStation.Desktop.PBS.Core/MainForm.cs
@@ -4,12 +4,10 @@
using DevExpress.XtraBars.Navigation;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using HStation.WinFrmUI;
using HStation.WinFrmUI.Assets;
using HStation.WinFrmUI.Basic;
using HStation.WinFrmUI.PBS;
using HStation.WinFrmUI.WE;
using DevExpress.XtraTab;
using DevExpress.XtraTab.ViewInfo;
using HStation.WinFrmUI.Xhs.PumpProduct;
using System.Drawing.Drawing2D;
using System.IO;
using Yw.WinFrmUI;
using Yw.WinFrmUI.Page;
@@ -30,29 +28,21 @@
            this.accordionControlFunction.Appearance.AccordionControl.BackColor = Color.White;
            this.accordionControlFunction.Appearance.AccordionControl.BorderColor = Color.White;
            //this.accordionControlFunction.ResizeMode = AccordionControlResizeMode.None;
            this.accordionControlFunction.AllowHtmlText = true;
            this.accordionControlFunction.HtmlTemplates.HamburgerHeaderPanel.Template = @"<div class='hamburger-header-background'></div>";
            this.accordionControlFunction.HtmlTemplates.HamburgerHeaderPanel.Styles = @".hamburger-header-background {background-color: #ffffff; height: 100%;width: 100%;}";
            this.tabbedView1.Style = DockingViewStyle.Classic;
            this.tabbedView1.Appearance.BackColor = Color.White;
            this.tabbedView1.AppearancePage.Header.BackColor = Color.White;
            this.tabbedView1.AppearancePage.HeaderSelected.Font = new Font("微软雅黑", 10f, FontStyle.Bold);
            this.xtraTabContrl.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
        }
        HatchBrush myHatchBrush1 = new HatchBrush(HatchStyle.BackwardDiagonal, Color.LightGray, Color.AliceBlue);
        private void TabbedView1_CustomDrawTabHeader(object sender, DevExpress.XtraTab.TabHeaderCustomDrawEventArgs e)
        {
            // é˜»æ­¢é»˜è®¤ç»˜åˆ¶
            e.Handled = true;
            // è®¾ç½®åœ†è§’为0,去除圆角效果
            //e.Cache.RoundRect = false;
            // ä½¿ç”¨é»˜è®¤ç»˜åˆ¶æ–¹æ³•绘制其他元素,如背景、文本和按钮
            e.DefaultDrawBackground();
            e.Cache.FillRectangle(myHatchBrush1, e.Bounds);
            e.DefaultDrawText();
            e.DefaultDrawImage();
            e.DefaultDrawButtons();
            e.Handled = true;
        }
        #region TileNavPane ç›¸å…³å¤„理
@@ -122,9 +112,9 @@
            if (btn.Tag is not string tag)
                return;
            PageGuid pguid = null;
            if (this.tabbedView1.ActiveDocument != null)
            if (this.xtraTabContrl.SelectedTabPage != null)
            {
                pguid = this.tabbedView1.ActiveDocument.Tag as PageGuid;
                pguid = this.xtraTabContrl.SelectedTabPage.Tag as PageGuid;
            }
            SelectModular(tag, pguid);
        }
@@ -188,40 +178,26 @@
        #region TabbedView ç›¸å…³äº‹ä»¶å¤„理程序
        //选中
        private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e)
        private void xtraTabContrl_SelectedPageChanged(object sender, TabPageChangedEventArgs e)
        {
            if (e.Document == null)
            if (e.Page == null)
                return;
            var pguid = e.Document.Tag as PageGuid;
            var pguid = e.Page.Tag as PageGuid;
            if (pguid == null)
                return;
            SelectModular(pguid.Modular, pguid);
        }
        //添加
        private void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e)
        //关闭
        private void xtraTabContrl_CloseButtonClick(object sender, EventArgs e)
        {
            if (this.tabbedView1.Documents.Count > 1)
            var arg = e as ClosePageButtonEventArgs;
            var last_index = this.xtraTabContrl.SelectedTabPageIndex - 1;
            this.xtraTabContrl.TabPages.Remove(arg.Page as XtraTabPage);
            if (last_index > 0)
            {
                if (!this.tabbedView1.DocumentGroupProperties.ShowTabHeader)
                {
                }
                this.xtraTabContrl.SelectedTabPageIndex = last_index;
            }
        }
        //激活
        private void tabbedView1_DocumentActivated(object sender, DocumentEventArgs e)
        {
            var page = e.Document.Control as DocumentPage;
            if (page == null)
            {
                return;
            }
        }
        //关闭 æ­¤æ—¶æŽ§ä»¶å·²ç»ä¸ºç©º
        private void tabbedView1_DocumentClosed(object sender, DocumentEventArgs e)
        {
        }
        #endregion TabbedView ç›¸å…³äº‹ä»¶å¤„理程序
@@ -256,9 +232,9 @@
                }
            }
            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
            if (this.xtraTabContrl.TabPages != null && this.xtraTabContrl.TabPages.Count > 0)
            {
                foreach (BaseDocument doc in this.tabbedView1.Documents)
                foreach (XtraTabPage doc in this.xtraTabContrl.TabPages)
                {
                    if (doc.Tag != null)
                    {
@@ -268,7 +244,7 @@
                            {
                                if (isActivePage)
                                {
                                    this.tabbedView1.Controller.Activate(doc);
                                    this.xtraTabContrl.SelectedTabPage = doc;
                                }
                                return true;
                            }
@@ -304,12 +280,12 @@
                }
            }
            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
            if (this.xtraTabContrl.TabPages != null && this.xtraTabContrl.TabPages.Count > 0)
            {
                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                var doc = this.xtraTabContrl.TabPages.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                if (doc != null)
                {
                    var page = doc.Control as DocumentPage;
                    var page = doc.Controls[0] as DocumentPage;
                    if (page != null)
                    {
                        page.RefreshData();
@@ -346,16 +322,16 @@
                }
            }
            if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
            if (this.xtraTabContrl.TabPages != null && this.xtraTabContrl.TabPages.Count > 0)
            {
                var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                var doc = this.xtraTabContrl.TabPages.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                if (doc != null)
                {
                    doc.Caption = title.Caption;
                    doc.Text = title.Caption;
                    doc.ImageOptions.Image = title.HeaderImage;
                    doc.ImageOptions.SvgImage = title.HeaderSvgImage;
                    doc.ImageOptions.SvgImageSize = title.SvgImageSize;
                    var page = doc.Control as DocumentPage;
                    var page = doc.Controls[0] as DocumentPage;
                    if (page != null)
                    {
                        page.PageTitle = title;
@@ -413,20 +389,20 @@
                case eMoudingType.Tab:
                    {
                        this.tabbedView1.BeginUpdate();
                        var doc = this.tabbedView1.AddDocument(page);
                        doc.Footer = Directory.GetCurrentDirectory();
                        var sel_page = new XtraTabPage();
                        page.Dock = DockStyle.Fill;
                        sel_page.Controls.Add(page);
                        this.xtraTabContrl.TabPages.Add(sel_page);
                        if (page.PageTitle != null)
                        {
                            doc.Caption = page.PageTitle.Caption;
                            doc.ImageOptions.Image = page.PageTitle.HeaderImage;
                            doc.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
                            doc.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
                            doc.Properties.AllowClose = page.PageTitle.AllowClose ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
                            sel_page.Text = page.PageTitle.Caption;
                            sel_page.ImageOptions.Image = page.PageTitle.HeaderImage;
                            sel_page.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage;
                            sel_page.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize;
                            //doc.Properties.AllowClose = page.PageTitle.AllowClose ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False;
                        }
                        doc.Tag = pguid;
                        this.tabbedView1.EndUpdate();
                        this.tabbedView1.Controller.Activate(doc);
                        sel_page.Tag = pguid;
                        this.xtraTabContrl.SelectedTabPage = sel_page;
                    }
                    break;
@@ -458,12 +434,12 @@
                case eMoudingType.Tab:
                    {
                        if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
                        if (this.xtraTabContrl.TabPages != null && this.xtraTabContrl.TabPages.Count > 0)
                        {
                            var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                            var doc = this.xtraTabContrl.TabPages.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString());
                            if (doc != null)
                            {
                                this.tabbedView1.Controller.Close(doc);//会触发正在关闭和关闭事件
                                this.xtraTabContrl.TabPages.Remove(doc);
                            }
                        }
                    }
@@ -492,7 +468,7 @@
                    {
                        if (tag == modular)
                        {
                            btn.Appearance.BackColor = Color.FromArgb(1, 96, 188);
                            btn.Appearance.BackColor = Color.FromArgb(50, 121, 197);
                            btn.Appearance.ForeColor = Color.White;
                        }
                        else
@@ -586,6 +562,7 @@
            return false;
        }
        //获取
        private List<AccordionElement> GetAccordionElementList(string modular)
        {
@@ -672,8 +649,6 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new WaterUtensilMainPage();
                                 CreatePage(page, guid);
                            }
                        }),
                        Get("用水当量",new PageGuid()
@@ -707,8 +682,12 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new AssetsManufacturerMainPage();
                                 CreatePage(page, guid);
                                var page = new DocumentPage();
                                page.PageGuid = guid;
                                page.PageTitle.Caption = caption;
                                page.PageTitle.HeaderSvgImage = svg;
                                page.PageTitle.SvgImageSize = size;
                                CreatePage(page, guid);
                            }
                        }),
                        Get("水泵管理",new PageGuid()
@@ -737,9 +716,7 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                                var page = new PackageManageMainPage();
                                 CreatePage(page, guid);
                             }
                            }
                        })
                    }
                };
@@ -761,9 +738,7 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                                  var page=new SysTypeManageMainPanel();
                                  CreatePage(page,guid);
                             }
                            }
                        }),
                        Get("分类管理",new PageGuid()
                        {
@@ -774,8 +749,6 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                                 var page=new SysCatalogManageMainPanel();
                                 CreatePage(page,guid);
                            }
                        }),
                        Get("属性管理",new PageGuid()
@@ -787,8 +760,6 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                                    var page=new SysPropManageMainPanel();
                                    CreatePage(page,guid);
                            }
                        }),
                        Get("字典类型",new PageGuid()
@@ -800,8 +771,6 @@
                        {
                            if (!IsExistPage(guid, true))
                            {
                               var page=new HStation.WinFrmUI.Dict.DictManageMainPanel();
                               CreatePage(page,guid);
                            }
                        }),
                     }
@@ -881,5 +850,8 @@
        }
        #endregion Modular
    }
}
Desktop/HStation.Desktop.PBS.Core/MainForm.resx
@@ -264,14 +264,11 @@
        LDE2eiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8L2c+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
  </data>
  <metadata name="documentManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="dockManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>259, 17</value>
  </metadata>
  <metadata name="svgImgItem32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>659, 17</value>
    <value>417, 17</value>
  </metadata>
  <data name="svgImgItem32.MapPin.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
@@ -619,7 +616,7 @@
</value>
  </data>
  <metadata name="svgImgGroup32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>455, 17</value>
    <value>213, 17</value>
  </metadata>
  <data name="svgImgGroup32.EMI.svg" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.Designer.cs
@@ -182,10 +182,11 @@
            // 
            // dockManager1
            // 
            dockManager1.AllowGlyphSkinning = true;
            dockManager1.DockingOptions.ShowCloseButton = false;
            dockManager1.Form = this;
            dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] { dockPanel1 });
            dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
            dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Classic;
            dockManager1.TopZIndexControls.AddRange(new string[] { "DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl" });
            // 
            // dockPanel1
@@ -204,10 +205,10 @@
            // dockPanel1_Container
            // 
            dockPanel1_Container.Controls.Add(AssetsPumpSeriesTreeListCtrl1);
            dockPanel1_Container.Location = new Point(0, 34);
            dockPanel1_Container.Location = new Point(4, 38);
            dockPanel1_Container.Margin = new Padding(4, 5, 4, 5);
            dockPanel1_Container.Name = "dockPanel1_Container";
            dockPanel1_Container.Size = new Size(201, 793);
            dockPanel1_Container.Size = new Size(191, 785);
            dockPanel1_Container.TabIndex = 0;
            // 
            // AssetsPumpSeriesTreeListCtrl1
@@ -218,7 +219,7 @@
            AssetsPumpSeriesTreeListCtrl1.Location = new Point(0, 0);
            AssetsPumpSeriesTreeListCtrl1.Margin = new Padding(6, 8, 6, 8);
            AssetsPumpSeriesTreeListCtrl1.Name = "AssetsPumpSeriesTreeListCtrl1";
            AssetsPumpSeriesTreeListCtrl1.Size = new Size(201, 793);
            AssetsPumpSeriesTreeListCtrl1.Size = new Size(191, 785);
            AssetsPumpSeriesTreeListCtrl1.TabIndex = 0;
            // 
            // gridControl1
WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/PumpProductMainPage.cs
@@ -15,6 +15,8 @@
            this.gridView1.RegistCustomDrawRowIndicator();
            this.AssetsPumpSeriesTreeListCtrl1.FocusedChangedEvent += AssetsPumpSeriesTreeListCtrl1_FocusedChangedEvent;
            this.AssetsPumpSeriesTreeListCtrl1.AddAssetsPumpMain += BtnAdd_ItemClickAsync;
            this.dockManager1.Style = DevExpress.XtraBars.Docking2010.Views.DockingViewStyle.Light;
        }
        private readonly List<AssetsPumpMainViewModel> _allBindingList = new();
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/05-working/SimulationWorkingHelper.cs
@@ -13,12 +13,22 @@
        public SimulationWorkingHelper() { }
        /// <summary>
        /// æ°´åŠ›ä¿¡æ¯
        /// </summary>
        public Yw.Model.HydroModelInfo HydroInfo
        {
            get { return _hydroInfo; }
            private set { _hydroInfo = value; }
        }
        private Yw.Model.HydroModelInfo _hydroInfo = null;
        /// <summary>
        /// å·¥å†µ
        /// </summary>
        public HydroWorkingVmo Working
        {
            get { return _working; }
            set { _working = value; }
            private set { _working = value; }
        }
        private HydroWorkingVmo _working = null;
@@ -28,7 +38,7 @@
        public HydroCheckResult CheckResult
        {
            get { return _checkResult; }
            set { _checkResult = value; }
            private set { _checkResult = value; }
        }
        private HydroCheckResult _checkResult = null;
@@ -38,19 +48,35 @@
        public HydroCalcuResult CalcuResult
        {
            get { return _calcuResult; }
            set { _calcuResult = value; }
            private set { _calcuResult = value; }
        }
        private HydroCalcuResult _calcuResult = null;
        /// <summary>
        /// åˆå§‹åŒ–数据
        /// </summary>
        public void InitialData(HydroWorkingVmo working, HydroCheckResult checkResult, HydroCalcuResult calcuResult)
        public void InitialData
            (
                Yw.Model.HydroModelInfo hydroInfo,
                HydroWorkingVmo working,
                HydroCheckResult checkResult,
                HydroCalcuResult calcuResult
            )
        {
            this.HydroInfo = hydroInfo;
            this.Working = working;
            this.CheckResult = checkResult;
            this.CalcuResult = calcuResult;
        }
        /// <summary>
        /// é‡ç½®å·¥å†µ
        /// </summary>
        public void ResetWorking(HydroWorkingVmo working)
        {
            this.Working = working;
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -1,7 +1,9 @@
using DevExpress.Diagram.Core.Native;
using DevExpress.Mvvm.Native;
using DevExpress.Utils.MVVM;
using DevExpress.XtraMap;
using HStation.WinFrmUI.PhartRelation;
using Mapster;
using NPOI.SS.Formula.Functions;
using System.Diagnostics;
using Yw.Hydro;
@@ -2079,6 +2081,8 @@
                _hydroInfo.UpdateWorkingInfo(vm.WorkingInfo);
                allMonitorValueList.UpdateMonitorValue(vm.MonitorInfo);
                var hydroInfo = _hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
                var working = new HydroWorkingVmo();
                working.ModelID = _hydroInfo.ID;
                working.Name = working.Name;
@@ -2088,14 +2092,12 @@
                working.Description = working.Description;
                var workingHelper = GetWorkingHelper();
                //校验
                var checkResult = _hydroInfo.Check();
                if (!checkResult.Succeed)
                {
                    ShowCheckCtrl(checkResult);
                    workingHelper.InitialData(working, checkResult, null);
                    workingHelper.InitialData(hydroInfo, working, checkResult, null);
                    TipFormHelper.ShowError("校验失败,请检查后重试");
                    return;
                }
@@ -2104,7 +2106,7 @@
                //await Task.Delay(3000);
                var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
                WaitFormHelper.HideWaitForm();
                workingHelper.InitialData(working, checkResult, calcuResult);
                workingHelper.InitialData(hydroInfo, working, checkResult, calcuResult);
                if (calcuResult.Succeed)
                {
                    if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0)
@@ -2206,7 +2208,8 @@
            dlg.SetBindingData(workingHelper.Working);
            dlg.ReloadDataEvent += (rhs) =>
            {
                workingHelper.Working = rhs;
                this.barBtnAddWorking.Enabled = false;
                workingHelper.ResetWorking(rhs);
                this.AppendWorkingEvent?.Invoke(rhs);
            };
            dlg.ShowDialog();
@@ -2405,7 +2408,10 @@
        private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
            var workingHelper = GetWorkingHelper();
            var dlg = new SimulationSingleWorkingEnergyDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
            dlg.ShowDialog();
        }
        #endregion
@@ -2414,25 +2420,25 @@
        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //if (_visual == null)
            //{
            //    XtraMessageBox.Show("请选择节点后重试!");
            //    return;
            //}
            //if (!(_visual is Yw.Model.HydroNodeInfo))
            //{
            //    XtraMessageBox.Show("请选择节点后重试!");
            //    return;
            //}
            //var network = _hydroInfo.ToNetwork();
            //var calcuResult = network.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            //var allNodeList = network.GetAllNodes();
            //var node = allNodeList.Find(x => x.Id == _visual.Code);
            //var allPathList = network.AnalyzeDownstreamPath(node, calcuResult);
            //var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, calcuResult);
            //var allLossList = allEpaLossList?.Select(x => new HydroNodeLossViewModel(x)).ToList();
            if (_visual == null)
            {
                XtraMessageBox.Show("请选择节点后重试!");
                return;
            }
            if (!(_visual is Yw.Model.HydroNodeInfo))
            {
                XtraMessageBox.Show("请选择节点后重试!");
                return;
            }
            var network = _hydroInfo.ToNetwork();
            var calcuResult = network.Calcu(Yw.EPAnet.CalcuMode.Simple);
            var allNodeList = network.GetAllNodes();
            var node = allNodeList.Find(x => x.Id == _visual.Code);
            var allPathList = network.AnalyzeDownstreamPath(node, calcuResult);
            var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, calcuResult);
            var allLossList = allEpaLossList?.Select(x => new HydroNodeLossViewModel(x)).ToList();
            var dlg = new HydroSingleLossCurveDlg();
            dlg.SetBindingData(null);
            dlg.SetBindingData(allLossList);
            dlg.ShowDialog();
        }
@@ -2442,8 +2448,17 @@
        private void barBtnWorkingLossScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var workingHelper = GetWorkingHelper();
            if (workingHelper.Working == null)
            {
                TipFormHelper.ShowWarn("请计算后重试!");
                return;
            }
            var network = workingHelper.HydroInfo.ToNetwork();
            var calcuResult = network.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            var allEnergyPointList = network.AnalyzeEnergy(calcuResult);
            var dlg = new HydroSingleLossScaleDlg();
            dlg.SetBindingData();
            dlg.SetBindingData(workingHelper.HydroInfo, allEnergyPointList);
            dlg.ShowDialog();
        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
@@ -1553,7 +1553,7 @@
            dlg.SetBindingData(workingHelper.Working);
            dlg.ReloadDataEvent += (rhs) =>
            {
                workingHelper.Working = rhs;
                workingHelper.ResetWorking(rhs);
            };
            dlg.ShowDialog();
        }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,354 @@
namespace HStation.WinFrmUI
{
    partial class SimulationSingleWorkingEnergyCtrl
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Component Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            panelControl1 = new PanelControl();
            singlePumpCalcCtrl1 = new Xhs.SinglePumpCalcCtrl();
            txtE = new TextEdit();
            txtP = new TextEdit();
            txtH = new TextEdit();
            txtQ = new TextEdit();
            hydroPumpRunStatusListCtrl1 = new HydroPumpRunListCtrl();
            hydroEnergyTotalViewCtrl1 = new HydroEnergyTotalViewCtrl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            splitterItem1 = new DevExpress.XtraLayout.SplitterItem();
            layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            groupForSinglePumpInfo = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem5 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem7 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)panelControl1).BeginInit();
            panelControl1.SuspendLayout();
            ((ISupportInitialize)txtE.Properties).BeginInit();
            ((ISupportInitialize)txtP.Properties).BeginInit();
            ((ISupportInitialize)txtH.Properties).BeginInit();
            ((ISupportInitialize)txtQ.Properties).BeginInit();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)splitterItem1).BeginInit();
            ((ISupportInitialize)layoutControlGroup2).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)groupForSinglePumpInfo).BeginInit();
            ((ISupportInitialize)layoutControlItem4).BeginInit();
            ((ISupportInitialize)layoutControlItem5).BeginInit();
            ((ISupportInitialize)layoutControlItem6).BeginInit();
            ((ISupportInitialize)layoutControlItem7).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            ((ISupportInitialize)layoutControlGroup1).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)layoutControlItem3).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(panelControl1);
            layoutControl1.Controls.Add(txtE);
            layoutControl1.Controls.Add(txtP);
            layoutControl1.Controls.Add(txtH);
            layoutControl1.Controls.Add(txtQ);
            layoutControl1.Controls.Add(hydroPumpRunStatusListCtrl1);
            layoutControl1.Controls.Add(hydroEnergyTotalViewCtrl1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new Rectangle(1056, 309, 650, 400);
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(1012, 603);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // panelControl1
            //
            panelControl1.BorderStyle = BorderStyles.Simple;
            panelControl1.Controls.Add(singlePumpCalcCtrl1);
            panelControl1.Location = new Point(232, 71);
            panelControl1.Name = "panelControl1";
            panelControl1.Padding = new Padding(1);
            panelControl1.Size = new Size(778, 530);
            panelControl1.TabIndex = 11;
            //
            // singlePumpCalcCtrl1
            //
            singlePumpCalcCtrl1.Dock = DockStyle.Fill;
            singlePumpCalcCtrl1.Location = new Point(3, 3);
            singlePumpCalcCtrl1.Margin = new Padding(2, 2, 2, 2);
            singlePumpCalcCtrl1.Name = "singlePumpCalcCtrl1";
            singlePumpCalcCtrl1.Size = new Size(772, 524);
            singlePumpCalcCtrl1.TabIndex = 0;
            //
            // txtE
            //
            txtE.Location = new Point(734, 35);
            txtE.Name = "txtE";
            txtE.Properties.ReadOnly = true;
            txtE.Properties.UseReadOnlyAppearance = false;
            txtE.Size = new Size(106, 20);
            txtE.StyleController = layoutControl1;
            txtE.TabIndex = 5;
            //
            // txtP
            //
            txtP.Location = new Point(584, 35);
            txtP.Name = "txtP";
            txtP.Properties.ReadOnly = true;
            txtP.Properties.UseReadOnlyAppearance = false;
            txtP.Size = new Size(106, 20);
            txtP.StyleController = layoutControl1;
            txtP.TabIndex = 4;
            //
            // txtH
            //
            txtH.Location = new Point(434, 35);
            txtH.Name = "txtH";
            txtH.Properties.ReadOnly = true;
            txtH.Properties.UseReadOnlyAppearance = false;
            txtH.Size = new Size(106, 20);
            txtH.StyleController = layoutControl1;
            txtH.TabIndex = 3;
            //
            // txtQ
            //
            txtQ.Location = new Point(284, 35);
            txtQ.Name = "txtQ";
            txtQ.Properties.ReadOnly = true;
            txtQ.Properties.UseReadOnlyAppearance = false;
            txtQ.Size = new Size(106, 20);
            txtQ.StyleController = layoutControl1;
            txtQ.TabIndex = 2;
            //
            // hydroPumpRunStatusListCtrl1
            //
            hydroPumpRunStatusListCtrl1.Location = new Point(5, 148);
            hydroPumpRunStatusListCtrl1.Name = "hydroPumpRunStatusListCtrl1";
            hydroPumpRunStatusListCtrl1.Size = new Size(210, 450);
            hydroPumpRunStatusListCtrl1.TabIndex = 6;
            //
            // hydroEnergyTotalViewCtrl1
            //
            hydroEnergyTotalViewCtrl1.Location = new Point(14, 35);
            hydroEnergyTotalViewCtrl1.Name = "hydroEnergyTotalViewCtrl1";
            hydroEnergyTotalViewCtrl1.Size = new Size(192, 73);
            hydroEnergyTotalViewCtrl1.TabIndex = 0;
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { splitterItem1, layoutControlGroup2, groupForSinglePumpInfo, layoutControlGroup1, layoutControlItem3 });
            Root.Name = "Root";
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(1012, 603);
            Root.TextVisible = false;
            //
            // splitterItem1
            //
            splitterItem1.AllowHotTrack = true;
            splitterItem1.Location = new Point(220, 0);
            splitterItem1.Name = "splitterItem1";
            splitterItem1.Size = new Size(10, 603);
            //
            // layoutControlGroup2
            //
            layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem2 });
            layoutControlGroup2.Location = new Point(0, 122);
            layoutControlGroup2.Name = "layoutControlGroup2";
            layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            layoutControlGroup2.Size = new Size(220, 481);
            layoutControlGroup2.Text = "水泵列表";
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = hydroPumpRunStatusListCtrl1;
            layoutControlItem2.Location = new Point(0, 0);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(214, 454);
            layoutControlItem2.TextSize = new Size(0, 0);
            layoutControlItem2.TextVisible = false;
            //
            // groupForSinglePumpInfo
            //
            groupForSinglePumpInfo.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem4, layoutControlItem5, layoutControlItem6, layoutControlItem7, emptySpaceItem1 });
            groupForSinglePumpInfo.Location = new Point(230, 0);
            groupForSinglePumpInfo.Name = "groupForSinglePumpInfo";
            groupForSinglePumpInfo.Size = new Size(782, 69);
            groupForSinglePumpInfo.Text = "æ°´æ³µ";
            //
            // layoutControlItem4
            //
            layoutControlItem4.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem4.Control = txtQ;
            layoutControlItem4.Location = new Point(0, 0);
            layoutControlItem4.MaxSize = new Size(150, 24);
            layoutControlItem4.MinSize = new Size(150, 24);
            layoutControlItem4.Name = "layoutControlItem4";
            layoutControlItem4.Size = new Size(150, 24);
            layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem4.Text = "流量:";
            layoutControlItem4.TextSize = new Size(28, 14);
            //
            // layoutControlItem5
            //
            layoutControlItem5.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem5.Control = txtH;
            layoutControlItem5.Location = new Point(150, 0);
            layoutControlItem5.MaxSize = new Size(150, 24);
            layoutControlItem5.MinSize = new Size(150, 24);
            layoutControlItem5.Name = "layoutControlItem5";
            layoutControlItem5.Size = new Size(150, 24);
            layoutControlItem5.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem5.Text = "扬程:";
            layoutControlItem5.TextSize = new Size(28, 14);
            //
            // layoutControlItem6
            //
            layoutControlItem6.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem6.Control = txtP;
            layoutControlItem6.Location = new Point(300, 0);
            layoutControlItem6.MaxSize = new Size(150, 24);
            layoutControlItem6.MinSize = new Size(150, 24);
            layoutControlItem6.Name = "layoutControlItem6";
            layoutControlItem6.Size = new Size(150, 24);
            layoutControlItem6.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem6.Text = "功率:";
            layoutControlItem6.TextSize = new Size(28, 14);
            //
            // layoutControlItem7
            //
            layoutControlItem7.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem7.Control = txtE;
            layoutControlItem7.Location = new Point(450, 0);
            layoutControlItem7.MaxSize = new Size(150, 24);
            layoutControlItem7.MinSize = new Size(150, 24);
            layoutControlItem7.Name = "layoutControlItem7";
            layoutControlItem7.Size = new Size(150, 24);
            layoutControlItem7.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem7.Text = "效率:";
            layoutControlItem7.TextSize = new Size(28, 14);
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(600, 0);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(158, 24);
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // layoutControlGroup1
            //
            layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1 });
            layoutControlGroup1.Location = new Point(0, 0);
            layoutControlGroup1.Name = "layoutControlGroup1";
            layoutControlGroup1.Size = new Size(220, 122);
            layoutControlGroup1.Text = "总能耗";
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = hydroEnergyTotalViewCtrl1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.MinSize = new Size(110, 77);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(196, 77);
            layoutControlItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            layoutControlItem1.TextSize = new Size(0, 0);
            layoutControlItem1.TextVisible = false;
            //
            // layoutControlItem3
            //
            layoutControlItem3.Control = panelControl1;
            layoutControlItem3.Location = new Point(230, 69);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.Size = new Size(782, 534);
            layoutControlItem3.TextSize = new Size(0, 0);
            layoutControlItem3.TextVisible = false;
            //
            // SimulationSingleWorkingEnergyCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "SimulationSingleWorkingEnergyCtrl";
            Size = new Size(1012, 603);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)panelControl1).EndInit();
            panelControl1.ResumeLayout(false);
            ((ISupportInitialize)txtE.Properties).EndInit();
            ((ISupportInitialize)txtP.Properties).EndInit();
            ((ISupportInitialize)txtH.Properties).EndInit();
            ((ISupportInitialize)txtQ.Properties).EndInit();
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)splitterItem1).EndInit();
            ((ISupportInitialize)layoutControlGroup2).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)groupForSinglePumpInfo).EndInit();
            ((ISupportInitialize)layoutControlItem4).EndInit();
            ((ISupportInitialize)layoutControlItem5).EndInit();
            ((ISupportInitialize)layoutControlItem6).EndInit();
            ((ISupportInitialize)layoutControlItem7).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ((ISupportInitialize)layoutControlGroup1).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)layoutControlItem3).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private TextEdit txtE;
        private TextEdit txtP;
        private TextEdit txtH;
        private TextEdit txtQ;
        private HydroPumpRunListCtrl hydroPumpRunStatusListCtrl1;
        private HydroEnergyTotalViewCtrl hydroEnergyTotalViewCtrl1;
        private DevExpress.XtraLayout.SplitterItem splitterItem1;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraLayout.LayoutControlGroup groupForSinglePumpInfo;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem7;
        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
        private PanelControl panelControl1;
        private Xhs.SinglePumpCalcCtrl singlePumpCalcCtrl1;
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
using DevExpress.XtraEditors;
using NPOI.OpenXmlFormats.Dml;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Yw.EPAnet;
namespace HStation.WinFrmUI
{
    public partial class SimulationSingleWorkingEnergyCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public SimulationSingleWorkingEnergyCtrl()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
            this.hydroPumpRunStatusListCtrl1.SelectedChangedEvent += HydroPumpRunStatusListCtrl1_SelectedChangedEvent;
        }
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private Dictionary<string, HydroCalcuVisualResult> _allCalcuResultVisualDict = null;//所有计算结果可见字典
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult)
        {
            if (hydroInfo == null)
            {
                return;
            }
            if (calcuResult == null)
            {
                return;
            }
            if (!calcuResult.Succeed)
            {
                return;
            }
            var allCalcuResultVisualDict = calcuResult.GetVisualDict();
            SetBindingData(hydroInfo, allCalcuResultVisualDict);
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict)
        {
            if (hydroInfo == null)
            {
                return;
            }
            if (allCalcuResultVisualDict == null || allCalcuResultVisualDict.Count < 1)
            {
                return;
            }
            _hydroInfo = hydroInfo;
            _allCalcuResultVisualDict = allCalcuResultVisualDict;
            this.hydroEnergyTotalViewCtrl1.SetBindingData(hydroInfo, allCalcuResultVisualDict);
            this.hydroPumpRunStatusListCtrl1.SetBindingData(hydroInfo);
        }
        //泵选择改变
        private void HydroPumpRunStatusListCtrl1_SelectedChangedEvent(Yw.Model.HydroPumpInfo pump)
        {
            if (_hydroInfo == null)
            {
                return;
            }
            if (_allCalcuResultVisualDict == null || _allCalcuResultVisualDict.Count < 1)
            {
                return;
            }
            if (pump == null)
            {
                return;
            }
            this.groupForSinglePumpInfo.Text = pump.Name;
            this.txtQ.EditValue = null;
            this.txtH.EditValue = null;
            this.txtP.EditValue = null;
            this.txtE.EditValue = null;
            if (_allCalcuResultVisualDict.ContainsKey(pump.Code))
            {
                var calcuResult = _allCalcuResultVisualDict[pump.Code] as HydroCalcuPumpResult;
                if (calcuResult != null)
                {
                    if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open)
                    {
                        this.txtQ.EditValue = calcuResult.CalcuQ.HasValue ? $"{Math.Round(calcuResult.CalcuQ.Value, 1)}m³/h" : null;
                        this.txtH.EditValue = calcuResult.CalcuH.HasValue ? $"{Math.Round(calcuResult.CalcuH.Value, 2)}m" : null;
                        this.txtP.EditValue = calcuResult.CalcuP.HasValue ? $"{Math.Round(calcuResult.CalcuP.Value, 1)}kW" : null;
                        this.txtE.EditValue = calcuResult.CalcuE.HasValue ? $"{Math.Round(calcuResult.CalcuE.Value, 1)}%" : null;
                    }
                    var matching = AssetsMatchingParasHelper.Create(_hydroInfo, pump, _allCalcuResultVisualDict.Values.ToList());
                    this.singlePumpCalcCtrl1.SetBindindData(matching);
                }
            }
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyDlg.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
namespace HStation.WinFrmUI
{
    partial class SimulationSingleWorkingEnergyDlg
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            ribbon = new DevExpress.XtraBars.Ribbon.RibbonControl();
            ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            simulationSingleWorkingEnergyCtrl1 = new SimulationSingleWorkingEnergyCtrl();
            ((ISupportInitialize)ribbon).BeginInit();
            SuspendLayout();
            //
            // ribbon
            //
            ribbon.ExpandCollapseItem.Id = 0;
            ribbon.Items.AddRange(new DevExpress.XtraBars.BarItem[] { ribbon.ExpandCollapseItem });
            ribbon.Location = new Point(0, 0);
            ribbon.MaxItemId = 1;
            ribbon.Name = "ribbon";
            ribbon.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
            ribbon.RibbonCaptionAlignment = DevExpress.XtraBars.Ribbon.RibbonCaptionAlignment.Left;
            ribbon.ShowDisplayOptionsMenuButton = DevExpress.Utils.DefaultBoolean.False;
            ribbon.Size = new Size(1039, 32);
            //
            // ribbonPage1
            //
            ribbonPage1.Groups.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPageGroup[] { ribbonPageGroup1 });
            ribbonPage1.Name = "ribbonPage1";
            ribbonPage1.Text = "ribbonPage1";
            //
            // ribbonPageGroup1
            //
            ribbonPageGroup1.Name = "ribbonPageGroup1";
            ribbonPageGroup1.Text = "ribbonPageGroup1";
            //
            // simulationSingleWorkingEnergyCtrl1
            //
            simulationSingleWorkingEnergyCtrl1.Dock = DockStyle.Fill;
            simulationSingleWorkingEnergyCtrl1.Location = new Point(0, 32);
            simulationSingleWorkingEnergyCtrl1.Name = "simulationSingleWorkingEnergyCtrl1";
            simulationSingleWorkingEnergyCtrl1.Size = new Size(1039, 631);
            simulationSingleWorkingEnergyCtrl1.TabIndex = 3;
            //
            // SimulationSingleWorkingEnergyDlg
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(1039, 663);
            Controls.Add(simulationSingleWorkingEnergyCtrl1);
            Controls.Add(ribbon);
            FormBorderStyle = FormBorderStyle.SizableToolWindow;
            Name = "SimulationSingleWorkingEnergyDlg";
            Ribbon = ribbon;
            RibbonVisibility = DevExpress.XtraBars.Ribbon.RibbonVisibility.Hidden;
            StartPosition = FormStartPosition.CenterParent;
            Text = "能耗分析";
            ((ISupportInitialize)ribbon).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
        #endregion
        private DevExpress.XtraBars.Ribbon.RibbonControl ribbon;
        private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
        private SimulationSingleWorkingEnergyCtrl simulationSingleWorkingEnergyCtrl1;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyDlg.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
namespace HStation.WinFrmUI
{
    public partial class SimulationSingleWorkingEnergyDlg : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public SimulationSingleWorkingEnergyDlg()
        {
            InitializeComponent();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult)
        {
            this.simulationSingleWorkingEnergyCtrl1.SetBindingData(hydroInfo, calcuResult);
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/09-energy/01-single/SimulationSingleWorkingEnergyDlg.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/XhsProjectSimulationMgrPage.cs
@@ -17,6 +17,7 @@
            this.xhsProjectSimulationFunctionMgrCtrl1.ShowProjectSiteSimulationEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSimulationEvent;
            this.xhsProjectSimulationFunctionMgrCtrl1.ShowProjectSiteWorkingEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteWorkingEvent;
            this.xhsProjectSimulationFunctionMgrCtrl1.ProjectSiteWorkingCheckedEvent += XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingCheckedEvent;
            this.xhsProjectSimulationFunctionMgrCtrl1.CreateProjectSiteSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_CreateProjectSiteSchemeEvent;
        }
        private XhsProjectVmo _project = null;//项目
@@ -156,45 +157,18 @@
            ctrl.UpdateWorkingCheckedList(working, hasChecked);
        }
        //创建项目方案事件
        private void XhsProjectSimulationFunctionMgrCtrl1_CreateProjectSchemeEvent(DevExpress.Utils.Svg.SvgImage svgImage)
        //项目站方案创建事件
        private async void XhsProjectSimulationFunctionMgrCtrl1_CreateProjectSiteSchemeEvent
            (XhsProjectVmo project, XhsProjectSiteVmo projectSite, DevExpress.Utils.Svg.SvgImage svgImage)
        {
            //if (_projectSite == null)
            //{
            //    return;
            //}
            //var dlg = new AddXhsProjectSimulationSchemeDlg();
            //await dlg.SetBindingData(_projectSite.ID);
            //dlg.ReloadDataEvent += (scheme) =>
            //{
            //    this.xhsProjectSimulationFunctionMgrCtrl1.AppendScheme(scheme);
            //};
            //dlg.ShowDialog();
            var dlg = new AddXhsSchemeDlg();
            // await dlg.SetBindingData(_project, _projectSite, _hydroInfo);
            await dlg.SetBindingData(project, projectSite, null);
            dlg.ShowDialog();
        }
        //显示项目方案事件
        private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSchemeEvent(XhsSchemeVmo arg1, DevExpress.Utils.Svg.SvgImage arg2)
        {
        }
        //比较项目工况事件
        private void XhsProjectSimulationFunctionMgrCtrl1_CompareProjectWorkingEvent(DevExpress.Utils.Svg.SvgImage obj)
        {
        }
        //显示项目工况事件
        private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectWorkingEvent(HydroWorkingVmo arg1, DevExpress.Utils.Svg.SvgImage arg2)
        {
        }
        #endregion
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj
@@ -195,6 +195,9 @@
    <Compile Update="04-pump\03-calc\SinglePumpCalcCtrl.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="03-simulation\09-energy\01-single\SimulationSingleWorkingEnergyDlg.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
WinFrmUI/HStation.WinFrmUI.Xhs.Core/HStation.WinFrmUI.Xhs.Core.csproj.user
@@ -226,6 +226,9 @@
    <Compile Update="03-simulation\07-l3d\XhsProjectSimulationL3dCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="03-simulation\09-energy\01-single\SimulationSingleWorkingEnergyCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="03-simulation\XhsProjectSimulationMgrPage.cs">
      <SubType>UserControl</SubType>
    </Compile>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveCtrl.Designer.cs
@@ -60,6 +60,7 @@
            // chartControl1
            // 
            xyDiagram1.AxisX.GridLines.Visible = true;
            xyDiagram1.AxisX.MinorCount = 1;
            xyDiagram1.AxisX.NumericScaleOptions.AutoGrid = false;
            xyDiagram1.AxisX.Tickmarks.MinorVisible = false;
            xyDiagram1.AxisX.Title.Text = "距离";
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/01-curve/HydroSingleLossCurveDlg.cs
@@ -13,19 +13,19 @@
        /// </summary>
        public void SetBindingData(List<HydroNodeLossViewModel> allNodeLossList)
        {
            allNodeLossList = new List<HydroNodeLossViewModel>()
            {
                new HydroNodeLossViewModel(){ Code="1",Elev=10,StartHead=666,EndHead=623,Distance=10},
                new HydroNodeLossViewModel(){ Code="2",Elev=20,StartHead=600,EndHead=567,Distance=30},
                new HydroNodeLossViewModel(){ Code="3",Elev=25,StartHead=544,EndHead=521,Distance=100},
                new HydroNodeLossViewModel(){ Code="4",Elev=19,StartHead=500,EndHead=789,Distance=110},
                new HydroNodeLossViewModel(){ Code="5",Elev=23,StartHead=700,EndHead=677,Distance=150},
                new HydroNodeLossViewModel(){ Code="6",Elev=22,StartHead=632,EndHead=600,Distance=200},
                new HydroNodeLossViewModel(){ Code="7",Elev=13,StartHead=550,EndHead=510,Distance=300},
                new HydroNodeLossViewModel(){ Code="8",Elev=13,StartHead=500,EndHead=345,Distance=500},
                new HydroNodeLossViewModel(){ Code="9",Elev=11,StartHead=300,EndHead=289,Distance=700},
                new HydroNodeLossViewModel(){ Code="10",Elev=10,StartHead=260,EndHead=150,Distance=820},
            };
            //allNodeLossList = new List<HydroNodeLossViewModel>()
            //{
            //    new HydroNodeLossViewModel(){ Code="1",Elev=10,StartHead=666,EndHead=623,Distance=10},
            //    new HydroNodeLossViewModel(){ Code="2",Elev=20,StartHead=600,EndHead=567,Distance=30},
            //    new HydroNodeLossViewModel(){ Code="3",Elev=25,StartHead=544,EndHead=521,Distance=100},
            //    new HydroNodeLossViewModel(){ Code="4",Elev=19,StartHead=500,EndHead=789,Distance=110},
            //    new HydroNodeLossViewModel(){ Code="5",Elev=23,StartHead=700,EndHead=677,Distance=150},
            //    new HydroNodeLossViewModel(){ Code="6",Elev=22,StartHead=632,EndHead=600,Distance=200},
            //    new HydroNodeLossViewModel(){ Code="7",Elev=13,StartHead=550,EndHead=510,Distance=300},
            //    new HydroNodeLossViewModel(){ Code="8",Elev=13,StartHead=500,EndHead=345,Distance=500},
            //    new HydroNodeLossViewModel(){ Code="9",Elev=11,StartHead=300,EndHead=289,Distance=700},
            //    new HydroNodeLossViewModel(){ Code="10",Elev=10,StartHead=260,EndHead=150,Distance=820},
            //};
            this.hydroSingleLossCurveCtrl1.SetBindingData(allNodeLossList);
        }
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroCatalogLossScaleHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public static class HydroCatalogLossScaleHelper
    {
        /// <summary>
        /// èŽ·å–åˆ†ç±»æŸå¤±æ¯”ä¾‹åˆ—è¡¨
        /// </summary>
        public static List<HydroCatalogLossScaleViewModel> GetAllCatalogLossScaleList(this Yw.Model.HydroModelInfo hydroInfo, List<Yw.EPAnet.EnergyPoint> allEnergyList)
        {
            if (hydroInfo == null)
            {
                return default;
            }
            var allScaleList = new List<HydroCatalogLossScaleViewModel>();
            if (allEnergyList != null && allEnergyList.Count > 0)
            {
                if (hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
                {
                    var allVisualIds = hydroInfo.Pipes.Select(x => x.Code).Distinct().ToList();
                    var allVisualEnergyList = allEnergyList.Where(x => allVisualIds.Contains(x.Id)).ToList();
                    var visualLossScale = new HydroCatalogLossScaleViewModel();
                    visualLossScale.Catalog = Yw.Hydro.ParterCatalog.Pipe;
                    visualLossScale.CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe);
                    visualLossScale.Loss = allVisualEnergyList.Count > 0 ? allVisualEnergyList.Sum(x => x.EnergyPower) : 0;
                    allScaleList.Add(visualLossScale);
                }
                if (hydroInfo.Translations != null && hydroInfo.Translations.Count > 0)
                {
                    var allVisualIds = hydroInfo.Translations.Select(x => x.Code).Distinct().ToList();
                    var allVisualEnergyList = allEnergyList.Where(x => allVisualIds.Contains(x.Id)).ToList();
                    var visualLossScale = new HydroCatalogLossScaleViewModel();
                    visualLossScale.Catalog = Yw.Hydro.ParterCatalog.Translation;
                    visualLossScale.CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Translation);
                    visualLossScale.Loss = allVisualEnergyList.Count > 0 ? allVisualEnergyList.Sum(x => x.EnergyPower) : 0;
                    allScaleList.Add(visualLossScale);
                }
                if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
                {
                    var allVisualIds = hydroInfo.Valves.Select(x => x.Code).Distinct().ToList();
                    var allVisualEnergyList = allEnergyList.Where(x => allVisualIds.Contains(x.Id)).ToList();
                    var visualLossScale = new HydroCatalogLossScaleViewModel();
                    visualLossScale.Catalog = Yw.Hydro.ParterCatalog.Valve;
                    visualLossScale.CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve);
                    visualLossScale.Loss = allVisualEnergyList.Count > 0 ? allVisualEnergyList.Sum(x => x.EnergyPower) : 0;
                    allScaleList.Add(visualLossScale);
                }
                if (hydroInfo.Elbows != null && hydroInfo.Elbows.Count > 0)
                {
                    var allVisualIds = hydroInfo.Elbows.Select(x => x.Code).Distinct().ToList();
                    var allVisualEnergyList = allEnergyList.Where(x => allVisualIds.Contains(x.Id)).ToList();
                    var visualLossScale = new HydroCatalogLossScaleViewModel();
                    visualLossScale.Catalog = Yw.Hydro.ParterCatalog.Elbow;
                    visualLossScale.CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Elbow);
                    visualLossScale.Loss = allVisualEnergyList.Count > 0 ? allVisualEnergyList.Sum(x => x.EnergyPower) : 0;
                    allScaleList.Add(visualLossScale);
                }
                if (hydroInfo.Threelinks != null && hydroInfo.Threelinks.Count > 0)
                {
                    var allVisualIds = hydroInfo.Threelinks.Select(x => x.Code).Distinct().ToList();
                    var allVisualEnergyList = allEnergyList.Where(x => allVisualIds.Contains(x.Id)).ToList();
                    var visualLossScale = new HydroCatalogLossScaleViewModel();
                    visualLossScale.Catalog = Yw.Hydro.ParterCatalog.Threelink;
                    visualLossScale.CatalogName = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Threelink);
                    visualLossScale.Loss = allVisualEnergyList.Count > 0 ? allVisualEnergyList.Sum(x => x.EnergyPower) : 0;
                    allScaleList.Add(visualLossScale);
                }
            }
            return allScaleList;
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroCatalogLossScaleViewModel.cs
@@ -11,6 +11,11 @@
        public string Catalog { get; set; }
        /// <summary>
        /// åˆ†ç±»åç§°
        /// </summary>
        public string CatalogName { get; set; }
        /// <summary>
        /// æŸå¤±
        /// </summary>
        public double Loss { get; set; }
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleCtrl.Designer.cs
@@ -49,12 +49,12 @@
            // 
            chartControl1.Dock = DockStyle.Fill;
            chartControl1.Legend.LegendID = -1;
            chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
            chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
            chartControl1.Location = new Point(0, 0);
            chartControl1.Name = "chartControl1";
            series1.ArgumentDataMember = "Catalog";
            series1.ArgumentDataMember = "CatalogName";
            series1.DataSource = bindingSource1;
            doughnutSeriesLabel1.TextPattern = "{A}: {VP:P2}";
            doughnutSeriesLabel1.TextPattern = "{A}({V:N2}):{VP:P2}";
            series1.Label = doughnutSeriesLabel1;
            series1.Name = "Series 1";
            series1.SeriesID = 1;
@@ -68,7 +68,6 @@
    };
            chartControl1.Size = new Size(884, 602);
            chartControl1.TabIndex = 0;
            chartControl1.Click += chartControl1_Click;
            // 
            // HydroSingleLossScaleCtrl
            // 
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleCtrl.cs
@@ -15,9 +15,5 @@
            this.bindingSource1.DataSource = allCatalogLossList;
        }
        private void chartControl1_Click(object sender, EventArgs e)
        {
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleDlg.Designer.cs
@@ -32,7 +32,17 @@
            ribbonPage1 = new DevExpress.XtraBars.Ribbon.RibbonPage();
            ribbonPageGroup1 = new DevExpress.XtraBars.Ribbon.RibbonPageGroup();
            hydroSingleLossScaleCtrl1 = new HydroSingleLossScaleCtrl();
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            hydroEnergyStatisticsBarCtrl1 = new HydroEnergyStatisticsBarCtrl();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)ribbon).BeginInit();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            SuspendLayout();
            // 
            // ribbon
@@ -45,7 +55,7 @@
            ribbon.Pages.AddRange(new DevExpress.XtraBars.Ribbon.RibbonPage[] { ribbonPage1 });
            ribbon.RibbonCaptionAlignment = DevExpress.XtraBars.Ribbon.RibbonCaptionAlignment.Left;
            ribbon.ShowDisplayOptionsMenuButton = DevExpress.Utils.DefaultBoolean.False;
            ribbon.Size = new Size(886, 32);
            ribbon.Size = new Size(997, 32);
            // 
            // ribbonPage1
            // 
@@ -60,18 +70,66 @@
            // 
            // hydroSingleLossScaleCtrl1
            // 
            hydroSingleLossScaleCtrl1.Dock = DockStyle.Fill;
            hydroSingleLossScaleCtrl1.Location = new Point(0, 32);
            hydroSingleLossScaleCtrl1.Location = new Point(2, 19);
            hydroSingleLossScaleCtrl1.Name = "hydroSingleLossScaleCtrl1";
            hydroSingleLossScaleCtrl1.Size = new Size(886, 555);
            hydroSingleLossScaleCtrl1.TabIndex = 6;
            hydroSingleLossScaleCtrl1.Size = new Size(993, 374);
            hydroSingleLossScaleCtrl1.TabIndex = 0;
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(hydroEnergyStatisticsBarCtrl1);
            layoutControl1.Controls.Add(hydroSingleLossScaleCtrl1);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 32);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(997, 591);
            layoutControl1.TabIndex = 8;
            layoutControl1.Text = "layoutControl1";
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem2, layoutControlItem1 });
            Root.Name = "Root";
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(997, 591);
            Root.TextVisible = false;
            //
            // hydroEnergyStatisticsBarCtrl1
            //
            hydroEnergyStatisticsBarCtrl1.Location = new Point(2, 414);
            hydroEnergyStatisticsBarCtrl1.Name = "hydroEnergyStatisticsBarCtrl1";
            hydroEnergyStatisticsBarCtrl1.Size = new Size(993, 175);
            hydroEnergyStatisticsBarCtrl1.TabIndex = 2;
            //
            // layoutControlItem2
            //
            layoutControlItem2.Control = hydroEnergyStatisticsBarCtrl1;
            layoutControlItem2.Location = new Point(0, 395);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(997, 196);
            layoutControlItem2.Text = "能量统计";
            layoutControlItem2.TextLocation = DevExpress.Utils.Locations.Top;
            layoutControlItem2.TextSize = new Size(48, 14);
            //
            // layoutControlItem1
            //
            layoutControlItem1.Control = hydroSingleLossScaleCtrl1;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(997, 395);
            layoutControlItem1.Text = "分类统计";
            layoutControlItem1.TextLocation = DevExpress.Utils.Locations.Top;
            layoutControlItem1.TextSize = new Size(48, 14);
            // 
            // HydroSingleLossScaleDlg
            // 
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(886, 587);
            Controls.Add(hydroSingleLossScaleCtrl1);
            ClientSize = new Size(997, 623);
            Controls.Add(layoutControl1);
            Controls.Add(ribbon);
            FormBorderStyle = FormBorderStyle.SizableToolWindow;
            Name = "HydroSingleLossScaleDlg";
@@ -80,6 +138,11 @@
            StartPosition = FormStartPosition.CenterParent;
            Text = "损失比例";
            ((ISupportInitialize)ribbon).EndInit();
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
@@ -90,5 +153,10 @@
        private DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage1;
        private DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup1;
        private HydroSingleLossScaleCtrl hydroSingleLossScaleCtrl1;
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private HydroEnergyStatisticsBarCtrl hydroEnergyStatisticsBarCtrl1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/18-loss/02-scale/HydroSingleLossScaleDlg.cs
@@ -1,4 +1,6 @@
namespace Yw.WinFrmUI
using DevExpress.Xpo.Helpers;
namespace Yw.WinFrmUI
{
    public partial class HydroSingleLossScaleDlg : DevExpress.XtraBars.Ribbon.RibbonForm
    {
@@ -6,22 +8,26 @@
        {
            InitializeComponent();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
            this.layoutControl1.SetupLayoutControl();
        }
        /// <summary>
        /// 
        /// </summary>
        public void SetBindingData()
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<Yw.EPAnet.EnergyPoint> allEnergyList)
        {
            var allList = new List<HydroCatalogLossScaleViewModel>()
            if (hydroInfo == null)
            {
                new HydroCatalogLossScaleViewModel(){ Catalog="弯头",Loss=13},
                new HydroCatalogLossScaleViewModel(){Catalog="阀门",Loss=39},
                new HydroCatalogLossScaleViewModel(){Catalog="管道",Loss=123}
            };
            this.hydroSingleLossScaleCtrl1.SetBindingData(allList);
                return;
            }
            var allLossList = hydroInfo.GetAllCatalogLossScaleList(allEnergyList);
            this.hydroSingleLossScaleCtrl1.SetBindingData(allLossList);
            var allStatisticsList = allEnergyList.GetStatisticsList();
            this.hydroEnergyStatisticsBarCtrl1.SetBindingData(allStatisticsList);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunListCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
namespace Yw.WinFrmUI
{
    partial class HydroPumpRunListCtrl
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Component Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new Container();
            DevExpress.XtraEditors.TableLayout.ItemTemplateBase itemTemplateBase1 = new DevExpress.XtraEditors.TableLayout.ItemTemplateBase();
            DevExpress.XtraEditors.TableLayout.TableColumnDefinition tableColumnDefinition1 = new DevExpress.XtraEditors.TableLayout.TableColumnDefinition();
            DevExpress.XtraEditors.TableLayout.TableColumnDefinition tableColumnDefinition2 = new DevExpress.XtraEditors.TableLayout.TableColumnDefinition();
            DevExpress.XtraEditors.TableLayout.TableColumnDefinition tableColumnDefinition3 = new DevExpress.XtraEditors.TableLayout.TableColumnDefinition();
            DevExpress.XtraEditors.TableLayout.TemplatedItemElement templatedItemElement1 = new DevExpress.XtraEditors.TableLayout.TemplatedItemElement();
            DevExpress.XtraEditors.TableLayout.TemplatedItemElement templatedItemElement2 = new DevExpress.XtraEditors.TableLayout.TemplatedItemElement();
            DevExpress.XtraEditors.TableLayout.TemplatedItemElement templatedItemElement3 = new DevExpress.XtraEditors.TableLayout.TemplatedItemElement();
            DevExpress.XtraEditors.TableLayout.TableRowDefinition tableRowDefinition1 = new DevExpress.XtraEditors.TableLayout.TableRowDefinition();
            ComponentResourceManager resources = new ComponentResourceManager(typeof(HydroPumpRunListCtrl));
            imageListBoxControl1 = new DevExpress.XtraEditors.ImageListBoxControl();
            hydroPumpRunViewModelBindingSource = new BindingSource(components);
            image32 = new DevExpress.Utils.ImageCollection(components);
            ((ISupportInitialize)imageListBoxControl1).BeginInit();
            ((ISupportInitialize)hydroPumpRunViewModelBindingSource).BeginInit();
            ((ISupportInitialize)image32).BeginInit();
            SuspendLayout();
            //
            // imageListBoxControl1
            //
            imageListBoxControl1.DataSource = hydroPumpRunViewModelBindingSource;
            imageListBoxControl1.DisplayMember = "Name";
            imageListBoxControl1.Dock = DockStyle.Fill;
            imageListBoxControl1.ImageIndexMember = "ImageIndex";
            imageListBoxControl1.ImageList = image32;
            imageListBoxControl1.ImageMember = "ImageIndex";
            imageListBoxControl1.ItemHeight = 36;
            imageListBoxControl1.Location = new Point(0, 0);
            imageListBoxControl1.Name = "imageListBoxControl1";
            imageListBoxControl1.Size = new Size(285, 624);
            imageListBoxControl1.TabIndex = 0;
            tableColumnDefinition1.Length.Value = 40D;
            tableColumnDefinition2.Length.Value = 171D;
            tableColumnDefinition3.Length.Value = 70D;
            itemTemplateBase1.Columns.Add(tableColumnDefinition1);
            itemTemplateBase1.Columns.Add(tableColumnDefinition2);
            itemTemplateBase1.Columns.Add(tableColumnDefinition3);
            templatedItemElement1.ColumnIndex = 1;
            templatedItemElement1.FieldName = "Name";
            templatedItemElement1.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter;
            templatedItemElement1.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside;
            templatedItemElement1.Text = "Name";
            templatedItemElement1.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleLeft;
            templatedItemElement2.Appearance.Normal.ForeColor = Color.Silver;
            templatedItemElement2.Appearance.Normal.Options.UseForeColor = true;
            templatedItemElement2.ColumnIndex = 2;
            templatedItemElement2.FieldName = "CurrentHz";
            templatedItemElement2.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter;
            templatedItemElement2.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside;
            templatedItemElement2.Text = "CurrentHz";
            templatedItemElement2.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter;
            templatedItemElement3.FieldName = "Image";
            templatedItemElement3.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter;
            templatedItemElement3.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside;
            templatedItemElement3.Text = "Image";
            templatedItemElement3.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter;
            itemTemplateBase1.Elements.Add(templatedItemElement1);
            itemTemplateBase1.Elements.Add(templatedItemElement2);
            itemTemplateBase1.Elements.Add(templatedItemElement3);
            itemTemplateBase1.Name = "template1";
            itemTemplateBase1.Rows.Add(tableRowDefinition1);
            imageListBoxControl1.Templates.Add(itemTemplateBase1);
            imageListBoxControl1.ValueMember = "Code";
            imageListBoxControl1.SelectedValueChanged += imageListBoxControl1_SelectedValueChanged;
            //
            // hydroPumpRunViewModelBindingSource
            //
            hydroPumpRunViewModelBindingSource.DataSource = typeof(HydroPumpRunViewModel);
            //
            // image32
            //
            image32.ImageSize = new Size(32, 32);
            image32.ImageStream = (DevExpress.Utils.ImageCollectionStreamer)resources.GetObject("image32.ImageStream");
            image32.Images.SetKeyName(0, "pump-run.png");
            image32.Images.SetKeyName(1, "pump-shut.png");
            //
            // HydroPumpRunListCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(imageListBoxControl1);
            Name = "HydroPumpRunListCtrl";
            Size = new Size(285, 624);
            ((ISupportInitialize)imageListBoxControl1).EndInit();
            ((ISupportInitialize)hydroPumpRunViewModelBindingSource).EndInit();
            ((ISupportInitialize)image32).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraEditors.ImageListBoxControl imageListBoxControl1;
        private DevExpress.Utils.ImageCollection image32;
        private BindingSource hydroPumpRunViewModelBindingSource;
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunListCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Yw.WinFrmUI
{
    public partial class HydroPumpRunListCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public HydroPumpRunListCtrl()
        {
            InitializeComponent();
        }
        /// <summary>
        /// é€‰æ‹©æ”¹å˜äº‹ä»¶
        /// </summary>
        public event Action<Yw.Model.HydroPumpInfo> SelectedChangedEvent;
        private List<HydroPumpRunViewModel> _allBindingList = null;//绑定列表
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
        {
            SetBindingData(hydroInfo.Pumps);
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<Yw.Model.HydroPumpInfo> pumps)
        {
            _allBindingList = new List<HydroPumpRunViewModel>();
            pumps?.ForEach(x => _allBindingList.Add(new HydroPumpRunViewModel(x)));
            this.hydroPumpRunViewModelBindingSource.DataSource = _allBindingList;
            this.hydroPumpRunViewModelBindingSource.ResetBindings(false);
        }
        //选择改变
        private void imageListBoxControl1_SelectedValueChanged(object sender, EventArgs e)
        {
            if (_allBindingList == null || _allBindingList.Count < 1)
            {
                return;
            }
            var item = this.imageListBoxControl1.SelectedItem;
            var pump = item as HydroPumpRunViewModel;
            if (pump == null)
            {
                return;
            }
            this.SelectedChangedEvent?.Invoke(pump.Vmo);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunListCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="hydroPumpRunViewModelBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>122, 17</value>
  </metadata>
  <metadata name="image32.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <assembly alias="DevExpress.Utils.v23.2" name="DevExpress.Utils.v23.2, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
  <data name="image32.ImageStream" type="DevExpress.Utils.ImageCollectionStreamer, DevExpress.Utils.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYyMy4yLCBWZXJzaW9uPTIzLjIu
        NC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT
        eXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv
        a2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAChEZXZFeHByZXNzLlV0aWxzLkltYWdlQ29sbGVjdGlvblN0
        cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P//
        /xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAACAAAAAgAAAACQUAAAAP
        BQAAAJEDAAACvgEAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAARnQU1BAACxjwv8
        YQUAAAF1SURBVFhH7VXbbcMwDDRgF3AzRUfpKB2lf2myREbpKBmlFUVKJi2Sotx++oADEok8nqiHpxMn
        RrHeXz4uX/Pj9TY/kcvPKNfr8k5yMazX9Q2L6oKjHDIAwZpI5X35Hu1E2AC0WxPgpNAMjO+bCRnorpxI
        4QKX2/KpxRZ2DcCea4kaKaUBmtC70TUgV+C3lFJUWJ1wDcjVz8885uxtTnKg5bkGuGv4TcNkTDGRbgHE
        wTyFVuyNw3+assHvOw0JWG2FQsUExrRmQTuLeMB7jYI0JNAaYIVqrsE0TzI2esFbwc2gtlqLlGKjigUM
        lJbzAj71rgp0t4B/E3JsfPUhA7zA/mT7Ty12xPtohQ4hFqEEuob5Wa6dabkXzvGK0aKnghfemES8wp5g
        gtTstF834LNngF/ZXuwhA5BD6Q1wG0ps4PAdMmC86XzlXpzAfxhADXn4vC4JHDGQD6j5FsC1DKy84JAB
        g6H7vsefDKQuQNFwu0+cqJimX0b9nRk3FaMvAAAAAElFTkSuQmCCywEAAIlQTkcNChoKAAAADUlIRFIA
        AAAgAAAAIAgGAAAAc3p69AAAAARnQU1BAACxjwv8YQUAAAGCSURBVFhH7VXBEcMwCMsoHaWjdISM0E06
        SkfpKK3kwz5MADvuN7rT5YIFVohDtgsXzmLf9wf4Aj/C7wLvUm4OSLiB3NQrtsJ5AxSbZMs3eLYTcwYg
        ZLu9Ao0iLcA99TNmxgYoMkkuRd4B8afVGeYGIOA79xIPlJQDsEYTUTeGBvQTpC2VFBdYjzoRG8CifvqP
        xMJ3W5ISQOPlpQa066eEqzGvGL8C5txE2oCYNf6QpRgQte9dQh0Qj9rKjYoJXKnxzL5KkQwQ8YlKQQl1
        QNwa0BvV3IhvKRNjJEa8btgMqtiQkhIDolpsaACsLe82Seh2tQNEo1eg/wlnx/CUAb1Bd7Jxn43a0hEw
        +2lNHUI9/8tniCvHcnbAusK4p94z2j7rA7CoN65kkWzjuCCAdV0zb78Rz3JkwB1qLiBYMRBONqzpv+nU
        4Vsx4M50xO2wyv9+BER/G8A9a9jDN57/BIUmcYY8oNEsYGz85BUQrxiIOP7eLZD0jwF2gQNort0XLjRs
        2w9oZulV76wILQAAAABJRU5ErkJgggs=
</value>
  </data>
</root>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/19-pump/01-run/HydroPumpRunViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class HydroPumpRunViewModel
    {
        /// <summary>
        ///
        /// </summary>
        public HydroPumpRunViewModel() { }
        /// <summary>
        ///
        /// </summary>
        public HydroPumpRunViewModel(Yw.Model.HydroPumpInfo pump)
        {
            this.Code = pump.Code;
            this.Name = pump.Name;
            if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open)
            {
                this.Image = Yw.WinFrmUI.Hydro.Core.Properties.Resources.pump_run_32;
                this.CurrentHz = $"{Math.Round(pump.RatedHz * pump.SpeedRatio, 1)}hz";
            }
            else
            {
                this.Image = Yw.WinFrmUI.Hydro.Core.Properties.Resources.pump_shut_32;
            }
            this.Description = pump.Description;
            this.Vmo = pump;
        }
        /// <summary>
        /// ç¼–码
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// åç§°
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// å›¾ç‰‡
        /// </summary>
        public Image Image { get; set; }
        /// <summary>
        /// å½“前Hz
        /// </summary>
        public string CurrentHz { get; set; }
        /// <summary>
        /// è¯´æ˜Ž
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// vmo
        /// </summary>
        public Yw.Model.HydroPumpInfo Vmo { get; set; }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsBarCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
namespace Yw.WinFrmUI
{
    partial class HydroEnergyStatisticsBarCtrl
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Component Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new Container();
            DevExpress.XtraCharts.XYDiagram xyDiagram1 = new DevExpress.XtraCharts.XYDiagram();
            DevExpress.XtraCharts.Series series1 = new DevExpress.XtraCharts.Series();
            chartControl1 = new DevExpress.XtraCharts.ChartControl();
            bindingSource1 = new BindingSource(components);
            ((ISupportInitialize)chartControl1).BeginInit();
            ((ISupportInitialize)xyDiagram1).BeginInit();
            ((ISupportInitialize)series1).BeginInit();
            ((ISupportInitialize)bindingSource1).BeginInit();
            SuspendLayout();
            //
            // chartControl1
            //
            xyDiagram1.AxisX.VisibleInPanesSerializable = "-1";
            xyDiagram1.AxisY.VisibleInPanesSerializable = "-1";
            xyDiagram1.AxisY.WholeRange.AutoSideMargins = false;
            xyDiagram1.AxisY.WholeRange.EndSideMargin = 0.94000000000000006D;
            xyDiagram1.AxisY.WholeRange.StartSideMargin = 0D;
            chartControl1.Diagram = xyDiagram1;
            chartControl1.Dock = DockStyle.Fill;
            chartControl1.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Center;
            chartControl1.Legend.LegendID = -1;
            chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
            chartControl1.Location = new Point(0, 0);
            chartControl1.Name = "chartControl1";
            series1.ArgumentDataMember = "EnergyName";
            series1.DataSource = bindingSource1;
            series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
            series1.Name = "Series 1";
            series1.SeriesID = 0;
            series1.ValueDataMembersSerializable = "EnergyValue";
            chartControl1.SeriesSerializable = new DevExpress.XtraCharts.Series[]
    {
    series1
    };
            chartControl1.Size = new Size(1005, 485);
            chartControl1.TabIndex = 0;
            //
            // bindingSource1
            //
            bindingSource1.DataSource = typeof(HydroEnergyStatisticsItemViewModel);
            //
            // HydroEnergyStatisticsBarCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(chartControl1);
            Name = "HydroEnergyStatisticsBarCtrl";
            Size = new Size(1005, 485);
            ((ISupportInitialize)xyDiagram1).EndInit();
            ((ISupportInitialize)series1).EndInit();
            ((ISupportInitialize)chartControl1).EndInit();
            ((ISupportInitialize)bindingSource1).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraCharts.ChartControl chartControl1;
        private BindingSource bindingSource1;
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsBarCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
using DevExpress.Xpo.Helpers;
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Yw.WinFrmUI
{
    public partial class HydroEnergyStatisticsBarCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public HydroEnergyStatisticsBarCtrl()
        {
            InitializeComponent();
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<Yw.EPAnet.EnergyPoint> allEnergyList)
        {
            var allStatisticsList = allEnergyList.GetStatisticsList();
            SetBindingData(allStatisticsList);
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(List<HydroEnergyStatisticsItemViewModel> allStatisticsList)
        {
            this.bindingSource1.DataSource = allStatisticsList;
            this.bindingSource1.ResetBindings(false);
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsBarCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
</root>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public static class HydroEnergyStatisticsHelper
    {
        /// <summary>
        /// èŽ·å–ç»Ÿè®¡åˆ—è¡¨
        /// </summary>
        public static List<HydroEnergyStatisticsItemViewModel> GetStatisticsList(this List<Yw.EPAnet.EnergyPoint> allEnergyList)
        {
            var allStatisticsList = new List<HydroEnergyStatisticsItemViewModel>();
            if (allEnergyList != null && allEnergyList.Count > 0)
            {
                var allEnergyGroupList = allEnergyList.GroupBy(x => x.EnergyType).ToList();
                foreach (var energyGroup in allEnergyGroupList)
                {
                    var item = new HydroEnergyStatisticsItemViewModel();
                    switch (energyGroup.Key)
                    {
                        case EPAnet.eEnergyType.Input:
                            {
                                item.EnergyType = eEnergyType.Input;
                                item.EnergyName = eEnergyType.Input.GetDisplayText();
                            }
                            break;
                        case EPAnet.eEnergyType.Output:
                            {
                                item.EnergyType = eEnergyType.Output;
                                item.EnergyName = eEnergyType.Output.GetDisplayText();
                            }
                            break;
                        case EPAnet.eEnergyType.Promote:
                            {
                                item.EnergyType = eEnergyType.Promote;
                                item.EnergyName = eEnergyType.Promote.GetDisplayText();
                            }
                            break;
                        case EPAnet.eEnergyType.MinorLoss:
                            {
                                item.EnergyType = eEnergyType.MinorLoss;
                                item.EnergyName = eEnergyType.MinorLoss.GetDisplayText();
                            }
                            break;
                        case EPAnet.eEnergyType.FrictionalLoss:
                            {
                                item.EnergyType = eEnergyType.FrictionalLoss;
                                item.EnergyName = eEnergyType.FrictionalLoss.GetDisplayText();
                            }
                            break;
                        default: break;
                    }
                    item.EnergyValue = Math.Round(energyGroup.Sum(x => x.EnergyPower), 1);
                    allStatisticsList.Add(item);
                }
            }
            return allStatisticsList.OrderBy(x => x.EnergyType).ToList();
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/HydroEnergyStatisticsItemViewModel.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    ///
    /// </summary>
    public class HydroEnergyStatisticsItemViewModel
    {
        /// <summary>
        /// èƒ½é‡ç±»åž‹
        /// </summary>
        public eEnergyType EnergyType { get; set; }
        /// <summary>
        /// èƒ½é‡åç§°
        /// </summary>
        public string EnergyName { get; set; }
        /// <summary>
        /// èƒ½é‡å€¼
        /// </summary>
        public double EnergyValue { get; set; }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/01-statistics/eEnergyType.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
namespace Yw.WinFrmUI
{
    /// <summary>
    /// èƒ½é‡ç±»åž‹
    /// </summary>
    public enum eEnergyType
    {
        /// <summary>
        /// é‡åŠ›åŠ¿èƒ½è¾“å…¥ï¼šæ°´æ± ã€æ°´åº“
        /// </summary>
        [Display(Name = "输入能量")]
        Input,
        /// <summary>
        /// æ°´æ³µæå‡èƒ½é‡ï¼ˆè¾“入系统的有效功率),不考虑效率
        /// </summary>
        [Display(Name = "提升能量")]
        Promote,
        /// <summary>
        /// å±€éƒ¨æ‘©æ“¦é˜»åŠ›å¸¦æ¥çš„èƒ½é‡æŸå¤±ï¼šé˜€é—¨ã€è¿žæŽ¥èŠ‚ç‚¹ã€ç®¡é“ã€è®¾å¤‡ï¼ˆæ¢çƒ­å™¨ã€ç©ºåŽ‹æœºï¼‰
        /// </summary>
        [Display(Name = "局部损失")]
        MinorLoss,
        /// <summary>
        /// æ²¿ç¨‹æ‘©æ“¦é˜»åŠ›å¸¦æ¥çš„èƒ½é‡æŸå¤±ï¼šç®¡é“
        /// </summary>
        [Display(Name = "沿程损失")]
        FrictionalLoss,
        /// <summary>
        /// é‡åŠ›åŠ¿èƒ½è¾“å‡ºï¼šæ°´æ± ã€æ°´åº“ã€æ‰©æ•£å™¨
        /// </summary>
        [Display(Name = "输出能量")]
        Output,
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/02-total/HydroEnergyTotalViewCtrl.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
namespace Yw.WinFrmUI
{
    partial class HydroEnergyTotalViewCtrl
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Component Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
            txtE = new DevExpress.XtraEditors.TextEdit();
            txtP = new DevExpress.XtraEditors.TextEdit();
            txtQ = new DevExpress.XtraEditors.TextEdit();
            Root = new DevExpress.XtraLayout.LayoutControlGroup();
            layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
            emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
            layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
            layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
            ((ISupportInitialize)layoutControl1).BeginInit();
            layoutControl1.SuspendLayout();
            ((ISupportInitialize)txtE.Properties).BeginInit();
            ((ISupportInitialize)txtP.Properties).BeginInit();
            ((ISupportInitialize)txtQ.Properties).BeginInit();
            ((ISupportInitialize)Root).BeginInit();
            ((ISupportInitialize)layoutControlItem1).BeginInit();
            ((ISupportInitialize)emptySpaceItem1).BeginInit();
            ((ISupportInitialize)layoutControlItem2).BeginInit();
            ((ISupportInitialize)layoutControlItem3).BeginInit();
            SuspendLayout();
            //
            // layoutControl1
            //
            layoutControl1.Controls.Add(txtE);
            layoutControl1.Controls.Add(txtP);
            layoutControl1.Controls.Add(txtQ);
            layoutControl1.Dock = DockStyle.Fill;
            layoutControl1.Location = new Point(0, 0);
            layoutControl1.Name = "layoutControl1";
            layoutControl1.Root = Root;
            layoutControl1.Size = new Size(238, 78);
            layoutControl1.TabIndex = 0;
            layoutControl1.Text = "layoutControl1";
            //
            // txtE
            //
            txtE.Location = new Point(54, 50);
            txtE.Name = "txtE";
            txtE.Properties.ReadOnly = true;
            txtE.Properties.UseReadOnlyAppearance = false;
            txtE.Size = new Size(182, 20);
            txtE.StyleController = layoutControl1;
            txtE.TabIndex = 6;
            //
            // txtP
            //
            txtP.Location = new Point(54, 26);
            txtP.Name = "txtP";
            txtP.Properties.ReadOnly = true;
            txtP.Properties.UseReadOnlyAppearance = false;
            txtP.Size = new Size(182, 20);
            txtP.StyleController = layoutControl1;
            txtP.TabIndex = 5;
            //
            // txtQ
            //
            txtQ.Location = new Point(54, 2);
            txtQ.Name = "txtQ";
            txtQ.Properties.ReadOnly = true;
            txtQ.Properties.UseReadOnlyAppearance = false;
            txtQ.Size = new Size(182, 20);
            txtQ.StyleController = layoutControl1;
            txtQ.TabIndex = 4;
            //
            // Root
            //
            Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
            Root.GroupBordersVisible = false;
            Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { layoutControlItem1, emptySpaceItem1, layoutControlItem2, layoutControlItem3 });
            Root.Name = "Root";
            Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
            Root.Size = new Size(238, 78);
            Root.TextVisible = false;
            //
            // layoutControlItem1
            //
            layoutControlItem1.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem1.Control = txtQ;
            layoutControlItem1.Location = new Point(0, 0);
            layoutControlItem1.Name = "layoutControlItem1";
            layoutControlItem1.Size = new Size(238, 24);
            layoutControlItem1.Text = "总流量:";
            layoutControlItem1.TextSize = new Size(40, 14);
            //
            // emptySpaceItem1
            //
            emptySpaceItem1.AllowHotTrack = false;
            emptySpaceItem1.Location = new Point(0, 72);
            emptySpaceItem1.MinSize = new Size(1, 1);
            emptySpaceItem1.Name = "emptySpaceItem1";
            emptySpaceItem1.Size = new Size(238, 6);
            emptySpaceItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
            emptySpaceItem1.TextSize = new Size(0, 0);
            //
            // layoutControlItem2
            //
            layoutControlItem2.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem2.Control = txtP;
            layoutControlItem2.Location = new Point(0, 24);
            layoutControlItem2.Name = "layoutControlItem2";
            layoutControlItem2.Size = new Size(238, 24);
            layoutControlItem2.Text = "总功率:";
            layoutControlItem2.TextSize = new Size(40, 14);
            //
            // layoutControlItem3
            //
            layoutControlItem3.ContentVertAlignment = DevExpress.Utils.VertAlignment.Center;
            layoutControlItem3.Control = txtE;
            layoutControlItem3.Location = new Point(0, 48);
            layoutControlItem3.Name = "layoutControlItem3";
            layoutControlItem3.Size = new Size(238, 24);
            layoutControlItem3.Text = "总效率:";
            layoutControlItem3.TextSize = new Size(40, 14);
            //
            // HydroEnergyTotalViewCtrl
            //
            AutoScaleDimensions = new SizeF(7F, 14F);
            AutoScaleMode = AutoScaleMode.Font;
            Controls.Add(layoutControl1);
            Name = "HydroEnergyTotalViewCtrl";
            Size = new Size(238, 78);
            ((ISupportInitialize)layoutControl1).EndInit();
            layoutControl1.ResumeLayout(false);
            ((ISupportInitialize)txtE.Properties).EndInit();
            ((ISupportInitialize)txtP.Properties).EndInit();
            ((ISupportInitialize)txtQ.Properties).EndInit();
            ((ISupportInitialize)Root).EndInit();
            ((ISupportInitialize)layoutControlItem1).EndInit();
            ((ISupportInitialize)emptySpaceItem1).EndInit();
            ((ISupportInitialize)layoutControlItem2).EndInit();
            ((ISupportInitialize)layoutControlItem3).EndInit();
            ResumeLayout(false);
        }
        #endregion
        private DevExpress.XtraLayout.LayoutControl layoutControl1;
        private DevExpress.XtraEditors.TextEdit txtP;
        private DevExpress.XtraEditors.TextEdit txtQ;
        private DevExpress.XtraLayout.LayoutControlGroup Root;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
        private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
        private DevExpress.XtraEditors.TextEdit txtE;
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/02-total/HydroEnergyTotalViewCtrl.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
using DevExpress.Office.Utils;
using DevExpress.Xpo.Helpers;
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Yw.EPAnet;
using Yw.WinFrmUI.Q3d;
namespace Yw.WinFrmUI
{
    public partial class HydroEnergyTotalViewCtrl : DevExpress.XtraEditors.XtraUserControl
    {
        public HydroEnergyTotalViewCtrl()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, HydroCalcuResult calcuResult)
        {
            if (hydroInfo == null)
            {
                return;
            }
            if (calcuResult == null)
            {
                return;
            }
            if (!calcuResult.Succeed)
            {
                return;
            }
            var allCalcuResultVisualDict = calcuResult.GetVisualDict();
            SetBindingData(hydroInfo, allCalcuResultVisualDict);
        }
        /// <summary>
        /// ç»‘定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict)
        {
            if (hydroInfo == null)
            {
                return;
            }
            if (allCalcuResultVisualDict == null || allCalcuResultVisualDict.Count < 1)
            {
                return;
            }
            double? totalQ = null;
            double? totalP = null;
            var allEfficiList = new List<double>();
            if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
            {
                foreach (var pump in hydroInfo.Pumps)
                {
                    if (!allCalcuResultVisualDict.ContainsKey(pump.Code))
                    {
                        continue;
                    }
                    var calcuResult = allCalcuResultVisualDict[pump.Code] as HydroCalcuPumpResult;
                    if (calcuResult == null)
                    {
                        continue;
                    }
                    if (pump.LinkStatus == Yw.Hydro.PumpStatus.Open)
                    {
                        if (calcuResult.CalcuQ.HasValue)
                        {
                            if (!totalQ.HasValue)
                            {
                                totalQ = 0;
                            }
                            totalQ += calcuResult.CalcuQ.Value;
                        }
                        if (calcuResult.CalcuP.HasValue)
                        {
                            if (!totalP.HasValue)
                            {
                                totalP = 0;
                            }
                            totalP += calcuResult.CalcuP.Value;
                        }
                        if (calcuResult.CalcuE.HasValue)
                        {
                            allEfficiList.Add(calcuResult.CalcuE.Value);
                        }
                    }
                }
            }
            if (totalQ.HasValue)
            {
                this.txtQ.EditValue = $"{Math.Round(totalQ.Value, 1)}m³/h";
            }
            if (totalP.HasValue)
            {
                this.txtP.EditValue = $"{Math.Round(totalP.Value, 1)}kW";
            }
            if (allEfficiList.Count > 0)
            {
                this.txtE.EditValue = $"{Math.Round(allEfficiList.Average(), 1)}%";
            }
        }
    }
}
WinFrmUI/Yw.WinFrmUI.Hydro.Core/20-energy/02-total/HydroEnergyTotalViewCtrl.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroEnergyStatisticsItemViewModel.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="HydroEnergyStatisticsItemViewModel" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
  <TypeInfo>Yw.WinFrmUI.HydroEnergyStatisticsItemViewModel, Yw.WinFrmUI.Hydro.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/DataSources/Yw.WinFrmUI.HydroPumpRunViewModel.datasource
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
    This file is automatically generated by Visual Studio. It is
    used to store generic object data source configuration information.
    Renaming the file extension or editing the content of this file may
    cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="HydroPumpRunViewModel" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
  <TypeInfo>Yw.WinFrmUI.HydroPumpRunViewModel, Yw.WinFrmUI.Hydro.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/Resources.Designer.cs
@@ -83,6 +83,26 @@
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap pump_run_32 {
            get {
                object obj = ResourceManager.GetObject("pump_run_32", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap pump_shut_32 {
            get {
                object obj = ResourceManager.GetObject("pump_shut_32", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap succeed_128 {
            get {
                object obj = ResourceManager.GetObject("succeed_128", resourceCulture);
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Properties/Resources.resx
@@ -124,6 +124,12 @@
  <data name="failed_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\failed_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="pump_run_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\pump_run_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="pump_shut_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\pump_shut_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="succeed_128" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\succeed_128.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Resources/pump_run_32.png
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Resources/pump_shut_32.png
WinFrmUI/Yw.WinFrmUI.Hydro.Core/Yw.WinFrmUI.Hydro.Core.csproj.user
@@ -61,6 +61,15 @@
    <Compile Update="18-loss\02-scale\HydroSingleLossScaleCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="19-pump\01-run\HydroPumpRunListCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="20-energy\01-statistics\HydroEnergyStatisticsBarCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="20-energy\02-total\HydroEnergyTotalViewCtrl.cs">
      <SubType>UserControl</SubType>
    </Compile>
    <Compile Update="99-view\01-q3d\HydroQ3dViewPage.cs">
      <SubType>UserControl</SubType>
    </Compile>