using DevExpress.Skins; using DevExpress.Utils.Extensions; using DevExpress.XtraEditors; using DevExpress.XtraLayout; using DevExpress.XtraLayout.Utils; namespace Yw.WinFrmUI { public partial class SetHydroWorkingCtrl : DevExpress.XtraEditors.XtraUserControl { public SetHydroWorkingCtrl() { InitializeComponent(); this.layoutControl1.SetupLayoutControl(); } /// /// 查看组件事件 /// public event Action HydroViewEvent; private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息 private SetHydroWorkingViewModel _working = null;//工况 private List _visualCtrlList = null;//可见控件列表 /// /// 绑定数据 /// public void SetBindingData ( Yw.Model.HydroModelInfo hydroInfo, List allWorkingList, List allMonitorValueList ) { if (hydroInfo == null) { return; } _hydroInfo = hydroInfo; _working = new SetHydroWorkingViewModel(hydroInfo, allWorkingList, allMonitorValueList); _visualCtrlList = new List(); #region 信息 //var basicGroup = this.layoutControl1.AddGroup(); //basicGroup.Text = "工况信息"; //basicGroup.ExpandButtonVisible = true; //basicGroup.Expanded = false; //basicGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText; //basicGroup.ExpandOnDoubleClick = true; //var basicCtrl = new SetHydroWorkingBasicCtrl(); //basicCtrl.SetBindingData(_hydroWorking); //var basicItem = basicGroup.AddItem("工况信息", basicCtrl); //basicItem.TextVisible = false; //basicItem.Height = 120; //basicGroup.BestFit(); //basicGroup.LayoutMode = LayoutMode.Regular; //basicGroup.AllowBorderColorBlending = true; //basicGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204); //_basicCtrl = basicCtrl; #endregion #region 水库 if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0) { var group = this.layoutControl1.AddGroup(); group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Reservoir); group.ExpandButtonVisible = true; group.Expanded = true; group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText; group.ExpandOnDoubleClick = true; foreach (var visual in hydroInfo.Reservoirs) { var visualCtrl = new SetHydroWorkingReservoirCtrl(); visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x); var workingInfo = new HydroWorkingReservoirViewModel(visual); _working.WorkingInfo.AppendWorking(workingInfo); visualCtrl.SetBindingData(visual, workingInfo); var item = group.AddItem(visual.Name, visualCtrl); item.TextVisible = false; _visualCtrlList.Add(visualCtrl); } group.BestFit(); group.LayoutMode = LayoutMode.Flow; group.AllowBorderColorBlending = true; group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204); foreach (LayoutControlItem item in group.Items) { item.Size = new Size(200, 80); } } #endregion #region 水池 var tanks = hydroInfo.GetAllTanks(); if (tanks != null && tanks.Count > 0) { var group = this.layoutControl1.AddGroup(); group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank); group.ExpandButtonVisible = true; group.Expanded = true; group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText; group.ExpandOnDoubleClick = true; foreach (var visual in tanks) { var visualCtrl = new SetHydroWorkingTankCtrl(); visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x); var workingInfo = new HydroWorkingTankViewModel(visual); _working.WorkingInfo.AppendWorking(workingInfo); visualCtrl.SetBindingData(visual, workingInfo); var item = group.AddItem(visual.Name, visualCtrl); item.TextVisible = false; _visualCtrlList.Add(visualCtrl); } group.BestFit(); group.LayoutMode = LayoutMode.Flow; group.AllowBorderColorBlending = true; group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204); foreach (LayoutControlItem item in group.Items) { item.Size = new Size(200, 80); } } #endregion #region 水泵 if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0) { var group = this.layoutControl1.AddGroup(); group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump); group.ExpandButtonVisible = true; group.Expanded = true; group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText; group.ExpandOnDoubleClick = true; foreach (var visual in hydroInfo.Pumps) { var visualCtrl = new SetHydroWorkingPumpCtrl(); visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x); var workingInfo = new HydroWorkingPumpViewModel(visual); _working.WorkingInfo.AppendWorking(workingInfo); visualCtrl.SetBindingData(visual, workingInfo); var item = group.AddItem(visual.Name, visualCtrl); item.TextVisible = false; _visualCtrlList.Add(visualCtrl); } group.BestFit(); group.LayoutMode = LayoutMode.Flow; group.AllowBorderColorBlending = true; group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204); foreach (LayoutControlItem item in group.Items) { item.Size = new Size(200, 100); } } #endregion #region 阀门 if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0) { foreach (var visual in hydroInfo.Valves) { var workingInfo = new HydroWorkingValveViewModel(visual); _working.WorkingInfo.AppendWorking(workingInfo); } } #endregion #region 阻件 var resistances = hydroInfo.GetAllResistances(); if (resistances != null && resistances.Count > 0) { foreach (var visual in resistances) { var workingInfo = new HydroWorkingResistanceViewModel(visual); _working.WorkingInfo.AppendWorking(workingInfo); } } #endregion } /// /// 获取工况 /// public SetHydroWorkingViewModel GetWorking() { if (_hydroInfo == null) { return default; } if (_working == null) { return default; } _visualCtrlList?.ForEach(x => x.GetWorking()); return _working; } } }