using HStation.WinFrmUI.Xhs;
namespace HStation.WinFrmUI
{
///
/// 项目模拟属性控件
///
public partial class XhsProjectSimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl
{
public XhsProjectSimulationPropertyCtrl()
{
InitializeComponent();
this.hydroParterPropertyCtrl1.GetHydroInfoEvent += HydroParterPropertyCtrl1_GetHydroInfoEvent;
this.hydroParterPropertyCtrl1.SelectCurveEvent += HydroParterPropertyCtrl1_SelectCurveEvent;
this.hydroParterPropertyCtrl1.SelectPatternEvent += HydroParterPropertyCtrl1_SelectPatternEvent;
this.hydroParterPropertyCtrl1.PropertyValueChangedEvent += HydroParterPropertyCtrl1_PropertyValueChangedEvent;
this.hydroParterPropertyCtrl1.PropertyValueChangingEvent += HydroParterPropertyCtrl1_PropertyValueChangingEvent;
}
//水力信息方法
private Func _hydroInfoFunc = null;
///
/// 绑定数据
///
public void SetBindingData(Func hydroInfoFunc)
{
_hydroInfoFunc = hydroInfoFunc;
}
///
/// 选择组件
///
public void SelectParter(long id)
{
var hydroInfo = _hydroInfoFunc?.Invoke();
if (hydroInfo == null)
{
this.hydroParterPropertyCtrl1.SelectedObject = null;
return;
}
var allParterList = hydroInfo.GetAllParters();
var parter = allParterList.Find(x => x.ID == id);
var vm = Yw.WinFrmUI.HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList);
this.hydroParterPropertyCtrl1.SelectedObject = vm;
}
///
/// 选择组件
///
public void SelectParter(string code)
{
var hydroInfo = _hydroInfoFunc?.Invoke();
if (hydroInfo == null)
{
this.hydroParterPropertyCtrl1.SelectedObject = null;
return;
}
var allParterList = hydroInfo.GetAllParters();
var parter = allParterList.Find(x => x.Code == code);
var vm = Yw.WinFrmUI.HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList);
this.hydroParterPropertyCtrl1.SelectedObject = vm;
}
///
/// 选择组件
///
public void SelectParter(Yw.Model.HydroParterInfo parter, List allParterList)
{
var vm = Yw.WinFrmUI.HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList);
this.hydroParterPropertyCtrl1.SelectedObject = vm;
}
///
/// 更新计算属性
///
public void UpdateCalcuProperty(Yw.WinFrmUI.IHydroCalcuProperty rhs)
{
var vm = this.hydroParterPropertyCtrl1.SelectedObject;
if (vm == null)
{
return;
}
vm.UpdateCalcuProperty(rhs);
this.hydroParterPropertyCtrl1.UpdateRows();
}
//获取水力信息事件
private Yw.Model.HydroModelInfo HydroParterPropertyCtrl1_GetHydroInfoEvent()
{
var hydroInfo = _hydroInfoFunc?.Invoke();
return hydroInfo;
}
//选择曲线
private bool HydroParterPropertyCtrl1_SelectCurveEvent(HydroParterPropertyViewModel propViewModel, string curveType)
{
switch (curveType)
{
case Yw.WinFrmUI.HydroCurve.Pump:
{
var hydroInfo = _hydroInfoFunc?.Invoke();
if (hydroInfo == null)
{
return false;
}
var vmPump = propViewModel as HydroPumpPropertyViewModel;
var modelType = vmPump.ModelType;
var dbId = vmPump.DbId;
var curveDbId = string.Empty;
if (!string.IsNullOrEmpty(vmPump.CurveQH))
{
var curveQh = hydroInfo.Curves?.Find(x => x.Code == vmPump.CurveQH);
curveDbId = curveQh?.DbId;
}
var dlg = new PumpMainCurveChoiceDlg();
dlg.SetBindingData(dbId, modelType, curveDbId);
dlg.SelectCurveInfoEvent += (dbId, curveId, curveInfo) =>
{
};
dlg.ShowDialog();
return true;
}
case Yw.WinFrmUI.HydroCurve.PumpQH:
{
return false;
}
case Yw.WinFrmUI.HydroCurve.PumpQP:
{
return false;
}
case Yw.WinFrmUI.HydroCurve.PumpQE:
{
return false;
}
case Yw.WinFrmUI.HydroCurve.Valve:
{
return true;
}
case Yw.WinFrmUI.HydroCurve.ValveQL:
{
return false;
}
default: break;
}
return false;
}
//选择模式
private bool HydroParterPropertyCtrl1_SelectPatternEvent(HydroParterPropertyViewModel propViewModel, string patternType)
{
switch (patternType)
{
case Yw.WinFrmUI.HydroPattern.Demand:
{
}
break;
case Yw.WinFrmUI.HydroPattern.Head:
{
}
break;
default: break;
}
return true;
}
//属性发生改变
private bool HydroParterPropertyCtrl1_PropertyValueChangedEvent(HydroParterPropertyViewModel obj)
{
return false;
}
//属性正在发生改变
private bool HydroParterPropertyCtrl1_PropertyValueChangingEvent(HydroParterPropertyViewModel arg)
{
return false;
}
}
}