using DevExpress.XtraEditors;
|
using System.Data;
|
|
|
namespace Yw.WinFrmUI.Phart
|
{
|
public partial class UniversalEditCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public UniversalEditCtrl()
|
{
|
InitializeComponent();
|
|
this.gridView1.SetNormalEditView();
|
this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
this.curveExpressEditChart.DefinePointChangedEvent += FeatCurvesDispCtrl1_OnDefinePointChanged;
|
}
|
|
|
private List<Yw.Geometry.Point2d> _pt_ql_list = null;
|
private List<Yw.Geometry.Point2d> _fitCurvePoints = null;
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public void SetBindingData()
|
{
|
_pt_ql_list = null;
|
|
_fitCurvePoints = new List<Yw.Geometry.Point2d>();
|
this.bindingSource1.DataSource = _fitCurvePoints;
|
}
|
|
|
/// <summary>
|
/// 初始化数据(目前没有定义点)
|
/// </summary>
|
public void SetBindingData(Yw.Geometry.CubicSpline2d cubic_spline_ql)
|
{
|
if (cubic_spline_ql == null)
|
return;
|
List<Yw.Geometry.Point2d> pt_ql_list;
|
|
pt_ql_list = cubic_spline_ql.GetPointList(100);
|
|
SetBindingData(pt_ql_list, pt_ql_list);
|
}
|
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public void SetBindingData(List<Yw.Geometry.Point2d> pt_ql_list,
|
List<Yw.Geometry.Point2d> def_pt_ql_list)
|
{
|
|
_fitCurvePoints = new List<Yw.Geometry.Point2d>();
|
this.bindingSource1.DataSource = _fitCurvePoints;
|
|
_pt_ql_list = null;
|
|
if (pt_ql_list == null || pt_ql_list.Count < 4)
|
{
|
this.curveExpressEditChart.ClearChart();
|
return;
|
}
|
|
_pt_ql_list = pt_ql_list;
|
|
|
this.cmbCurveType.Properties.Items.Clear();
|
this.cmbCurveType.Properties.Items.Add("流量水损曲线");
|
this.cmbCurveType.SelectedIndex = 0;
|
|
this.curveExpressEditChart.SetBindingData(_pt_ql_list, def_pt_ql_list);
|
|
ReloadCurvePoints();
|
}
|
|
//性能曲线点修改事件
|
private void FeatCurvesDispCtrl1_OnDefinePointChanged(List<Yw.Geometry.Point2d> points)
|
{
|
_fitCurvePoints.Clear();
|
_pt_ql_list = points;
|
foreach (Yw.Geometry.Point2d pt in _pt_ql_list)
|
{
|
var x = Math.Round(pt.X, 2);
|
var y = Math.Round(pt.Y, 2);
|
_fitCurvePoints.Add(new Yw.Geometry.Point2d(x, y));
|
}
|
this.bindingSource1.ResetBindings(false);
|
}
|
|
|
|
//单元格修改后触发
|
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
|
{
|
_pt_ql_list = _fitCurvePoints.Select(x => new Yw.Geometry.Point2d(x)).ToList();
|
ReloadCurvePoints();
|
}
|
|
//按钮点击事件
|
private void buttonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
|
{
|
if (e.Button.Tag == null)
|
return;
|
var tag = e.Button.Tag.ToString();
|
switch (tag)
|
{
|
case "Delete": DeletePoint(); break;
|
case "InsertPoint": InsertPoint(); break;
|
case "ReloadCalcu": ReloadCalcu(); break;
|
}
|
}
|
|
|
/// <summary>
|
/// 刷新数据
|
/// </summary>
|
private void ReloadCurvePoints()
|
{
|
_fitCurvePoints.Clear();
|
foreach (Yw.Geometry.Point2d pt in _pt_ql_list)
|
_fitCurvePoints.Add(new Yw.Geometry.Point2d(pt.X, pt.Y));
|
|
var list = _fitCurvePoints?.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList();
|
this.curveExpressEditChart.UpdateCurve(list);
|
this.bindingSource1.ResetBindings(false);
|
}
|
|
//删除点
|
private void DeletePoint()
|
{
|
var row = this.gridView1.GetFocusedRow() as Yw.Geometry.Point2d;
|
if (row == null)
|
return;
|
if (XtraMessageBox.Show("是否删除此点?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information) != DialogResult.Yes)
|
return;
|
_fitCurvePoints.Remove(row);
|
this.bindingSource1.ResetBindings(false);
|
|
var points = new List<Yw.Geometry.Point2d>();
|
foreach (var curvePoint in _fitCurvePoints)
|
{
|
var x = curvePoint.X;
|
var y = curvePoint.Y;
|
points.Add(new Yw.Geometry.Point2d(x, y));
|
}
|
_pt_ql_list = points;
|
this.curveExpressEditChart.UpdateCurve(points);
|
}
|
|
|
//插入点
|
private void InsertPoint()
|
{
|
var dlg = new InputXYDlg();
|
List<Yw.Geometry.Point2d> points = null;
|
|
dlg.SetLabelX("Q");
|
dlg.SetLabelY("L");
|
points = _pt_ql_list;
|
|
if (dlg.ShowDialog() != DialogResult.OK)
|
return;
|
|
points.Add(new Yw.Geometry.Point2d(dlg.X, dlg.Y));
|
ReloadCurvePoints();
|
}
|
|
//重新计算
|
private void ReloadCalcu()
|
{
|
if (_fitCurvePoints == null)
|
return;
|
ReloadCurvePoints();
|
}
|
|
|
/// <summary>
|
/// 设置曲线坐标
|
/// </summary>
|
public void SetCoordinateByDialog()
|
{
|
this.curveExpressEditChart.SetChartAxis();
|
}
|
|
|
/// <summary>
|
/// 获取点信息
|
/// </summary>
|
/// <param name="pt_ql_list"></param>
|
/// <returns></returns>
|
public bool GetPoints(out List<Yw.Geometry.Point2d> pt_ql_list)
|
{
|
pt_ql_list = _pt_ql_list?.ToList();
|
if (pt_ql_list == null || pt_ql_list.Count < 4)
|
{
|
XtraMessageBox.Show("点数过少!");
|
return false;
|
}
|
|
return true;
|
}
|
|
|
}
|
}
|