| | |
| | | using DevExpress.XtraEditors.Repository; |
| | | using DevExpress.XtraLayout.Utils; |
| | | using DevExpress.XtraVerticalGrid.Events; |
| | | using Yw.Model; |
| | | |
| | | namespace Yw.WinFrmUI |
| | | { |
| | |
| | | { |
| | | InitializeComponent(); |
| | | this.layoutControl1.SetupLayoutControl(); |
| | | SetDescriptionVisible(false); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// 第二个参数为曲线类型 |
| | | /// 第三个参数为是否设置成功 |
| | | /// </summary> |
| | | public event Func<HydroVisualViewModel, string, bool> SetCurveEvent; |
| | | public event Func<HydroVisualViewModel, string, string, bool> SetCurveEvent; |
| | | /// <summary> |
| | | /// 设置模式事件 |
| | | /// 第一个参数为设置模式事的ViewModel |
| | |
| | | set |
| | | { |
| | | this.barBtnChangeLink.Visibility = value is HydroLinkViewModel ? BarItemVisibility.Always : BarItemVisibility.Never; |
| | | this.barBtnDb.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always; |
| | | this.barBtnView.Visibility = value == null ? BarItemVisibility.Never : BarItemVisibility.Always; |
| | | if (value != null) |
| | | { |
| | | if (value is HydroReservoirViewModel) |
| | | { |
| | | this.barBtnDb.Visibility = BarItemVisibility.Never; |
| | | } |
| | | else if (value is HydroJunctionViewModel) |
| | | { |
| | | this.barBtnDb.Visibility = BarItemVisibility.Never; |
| | | } |
| | | } |
| | | this.propertyGridControl1.SelectedObject = value; |
| | | } |
| | | } |
| | |
| | | { |
| | | return; |
| | | } |
| | | |
| | | //属性描述器 |
| | | var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row); |
| | | if (descriptor != null) |
| | |
| | | if (displayNameAttri != null && !string.IsNullOrEmpty(displayNameAttri.DisplayName)) |
| | | { |
| | | e.Caption = displayNameAttri.DisplayName; |
| | | } |
| | | //图标 |
| | | var calcuProAttri = (HydroCalcuProAttribute)descriptor.Attributes[typeof(HydroCalcuProAttribute)]; |
| | | if (calcuProAttri != null) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | return; |
| | | } |
| | | switch (curvePropAttri.CurveType) |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, curvePropAttri.Curve, curvePropAttri.CurveType)) |
| | | { |
| | | case HydroCurve.Tank: |
| | | var curveCode = e.Row.Properties.Value?.ToString(); |
| | | var curveInfo = vm.HydroInfo.Curves?.Find(x => x.Code == curveCode); |
| | | var dlg = new SetHydroCurveDlg(); |
| | | dlg.SetBindingData(vm.HydroInfo, curveInfo, curvePropAttri.Curve, curvePropAttri.CurveType); |
| | | dlg.ReloadDataEvent += (curveInfoRhs) => |
| | | { |
| | | if (vm.HydroInfo.Curves == null) |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, HydroCurve.Pump)) |
| | | { |
| | | XtraMessageBox.Show("正在开发中..."); |
| | | } |
| | | vm.HydroInfo.Curves = new List<Model.HydroCurveInfo>(); |
| | | } |
| | | break; |
| | | case HydroCurve.TankVol: |
| | | if (curveInfo != null) |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, HydroCurve.TankVol)) |
| | | { |
| | | XtraMessageBox.Show("正在开发中..."); |
| | | } |
| | | vm.HydroInfo.Curves.Remove(curveInfo); |
| | | } |
| | | break; |
| | | case HydroCurve.Pump: |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, HydroCurve.Pump)) |
| | | { |
| | | //缺省的设置方法 |
| | | } |
| | | } |
| | | break; |
| | | case HydroCurve.PumpQH: |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, HydroCurve.PumpQH)) |
| | | { |
| | | var pumpViewModel = vm as HydroPumpViewModel; |
| | | var curveQh = vm.HydroInfo.Curves?.Find(x => x.Code == pumpViewModel.CurveQH); |
| | | var dlg = new SetHydroCurveDlg(); |
| | | dlg.ReloadDataEvent += (curveInfo) => |
| | | { |
| | | if (vm.HydroInfo.Curves == null) |
| | | { |
| | | vm.HydroInfo.Curves = new List<Model.HydroCurveInfo>(); |
| | | } |
| | | if (curveQh != null) |
| | | { |
| | | vm.HydroInfo.Curves.Remove(curveQh); |
| | | } |
| | | vm.HydroInfo.Curves.Add(curveInfo); |
| | | pumpViewModel.CurveQH = curveInfo.Code; |
| | | UpdateRows(); |
| | | }; |
| | | dlg.SetBindingData(vm.HydroInfo, curveQh, curvePropAttri.CurveType); |
| | | dlg.ShowDialog(); |
| | | } |
| | | } |
| | | break; |
| | | case HydroCurve.PumpQP: |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, curvePropAttri.CurveType)) |
| | | { |
| | | var pumpViewModel = vm as HydroPumpViewModel; |
| | | var curveQp = vm.HydroInfo.Curves?.Find(x => x.Code == pumpViewModel.CurveQP); |
| | | var dlg = new SetHydroCurveDlg(); |
| | | dlg.ReloadDataEvent += (curveInfo) => |
| | | { |
| | | if (vm.HydroInfo.Curves == null) |
| | | { |
| | | vm.HydroInfo.Curves = new List<Model.HydroCurveInfo>(); |
| | | } |
| | | if (curveQp != null) |
| | | { |
| | | vm.HydroInfo.Curves.Remove(curveQp); |
| | | } |
| | | vm.HydroInfo.Curves.Add(curveInfo); |
| | | pumpViewModel.CurveQP = curveInfo.Code; |
| | | UpdateRows(); |
| | | }; |
| | | dlg.SetBindingData(vm.HydroInfo, curveQp, curvePropAttri.CurveType); |
| | | dlg.ShowDialog(); |
| | | } |
| | | } |
| | | break; |
| | | case HydroCurve.PumpQE: |
| | | { |
| | | var pumpViewModel = vm as HydroPumpViewModel; |
| | | var curveQe = vm.HydroInfo.Curves?.Find(x => x.Code == pumpViewModel.CurveQE); |
| | | var dlg = new SetHydroCurveDlg(); |
| | | dlg.ReloadDataEvent += (curveInfo) => |
| | | { |
| | | if (vm.HydroInfo.Curves == null) |
| | | { |
| | | vm.HydroInfo.Curves = new List<Model.HydroCurveInfo>(); |
| | | } |
| | | if (curveQe != null) |
| | | { |
| | | vm.HydroInfo.Curves.Remove(curveQe); |
| | | } |
| | | vm.HydroInfo.Curves.Add(curveInfo); |
| | | pumpViewModel.CurveQE = curveInfo.Code; |
| | | UpdateRows(); |
| | | }; |
| | | dlg.SetBindingData(vm.HydroInfo, curveQe, curvePropAttri.CurveType); |
| | | dlg.ShowDialog(); |
| | | } |
| | | break; |
| | | case HydroCurve.Valve: |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, HydroCurve.Valve)) |
| | | { |
| | | //缺省的设置方法 |
| | | } |
| | | } |
| | | break; |
| | | case HydroCurve.ValveQL: |
| | | { |
| | | if (this.SetCurveEvent == null || !this.SetCurveEvent.Invoke(vm, curvePropAttri.CurveType)) |
| | | { |
| | | //缺省的设置方法 |
| | | } |
| | | } |
| | | break; |
| | | default: break; |
| | | vm.HydroInfo.Curves.Add(curveInfo); |
| | | e.Row.Properties.Value = curveInfo.Code; |
| | | vm.UpdateVmoProperty(); |
| | | UpdateRows(); |
| | | }; |
| | | dlg.ShowDialog(); |
| | | } |
| | | }; |
| | | e.RepositoryItem = buttonEdit; |
| | |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 阀门 |
| | | |
| | | if (vm is HydroValveViewModel valve) |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValveSetting)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | switch (valve.Vmo.ValveType) |
| | | { |
| | | case Yw.Hydro.ValveType.PSV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = true; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | } |
| | | break; |
| | | case Yw.Hydro.ValveType.PRV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = true; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | } |
| | | break; |
| | | case Yw.Hydro.ValveType.PBV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = true; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | } |
| | | break; |
| | | case Yw.Hydro.ValveType.FCV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = true; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | } |
| | | break; |
| | | case Yw.Hydro.ValveType.TCV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = true; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | } |
| | | break; |
| | | case Yw.Hydro.ValveType.GPV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = true; |
| | | } |
| | | } |
| | | break; |
| | | case Yw.Hydro.ValveType.CV: |
| | | { |
| | | if (fieldName == nameof(HydroValveViewModel.ValvePress)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveFlow)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveOL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | if (fieldName == nameof(HydroValveViewModel.ValveQL)) |
| | | { |
| | | e.Row.Visible = false; |
| | | } |
| | | } |
| | | break; |
| | | default: break; |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | |
| | | } |
| | | |
| | |
| | | { |
| | | this.FlowEffectPropertyValueChangedEvent?.Invoke(vm); |
| | | } |
| | | this.propertyGridControl1.UpdateRows(); |
| | | } |
| | | } |
| | | |
| | | //选择 |
| | | private void barBtnDb_ItemClick(object sender, ItemClickEventArgs e) |
| | | { |
| | | var vm = this.SelectedObject; |
| | | if (vm == null) |
| | | { |
| | | return; |
| | | } |
| | | if (this.MatchingDbEvent != null) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |