• dev ChartControl 备忘


    一个chartControl 里包括以个diagram(图表)

    diagram里可以设置 x-axis与y-axis ,另外还可以设置SecondaryXAxis与SecondaryYAxis,在Series属性里可以选择使用Secondary Axis

    一个diagram里包括多少个Series,一个Series表示一组(x,y)取值集合

    一个diagram里可以添加多个Panel, 二Series可以设置呈现在那个panel里

    Series的主要属性是DataSource,指定 ArgumentDataMember(X-Axis),ValuesDataMembers(Y-Axis)

    1.自定义标注显示内,首相要设置series.LablesVisibility=True

                chartControl1.CustomDrawSeriesPoint += (s, e) =>
                {
                    if (e.Series == chartControl1.Series["Real"])
                    {
                        var it = e.SeriesPoint;
                        var obj = it.Tag as QualifiedInfo; //Tag里是当前点的记录
                        e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);
                    }
                };
    View Code

    参考代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Linq;
    using System.Windows.Forms;
    using DevExpress.XtraEditors;
    using WinDetectionClockAdmin.Model;
    using DevExpress.XtraCharts;
    using System.Threading;
    using DetectionClock.EFModel;
    namespace WinDetectionClockAdmin
    {
        public partial class frmPercentOfPassCharting : DevExpress.XtraEditors.XtraForm
        {
            private ChartControl CurCharControl { get; set; }
            public SynchronizationContext SyncContext { get; set; }
            public frmPercentOfPassCharting()
            {
                InitializeComponent();
                SyncContext = SynchronizationContext.Current;
    
                #region Tab
                layoutControlGroup3.Shown += (s, e) =>
                {
                    CurCharControl = chartControl1;
                };
                layoutControlGroup4.Shown += (s, e) => { CurCharControl = chartControl2; };
                layoutControlGroup5.Shown += (s, e) => { CurCharControl = chartControl3; };
                layoutControlGroup6.Shown += (s, e) => { CurCharControl = chartControl4; };
                #endregion
                #region 自自定义Lbl显示
                chartControl1.CustomDrawSeriesPoint += (s, e) =>
                {
                    if (e.Series == chartControl1.Series["Real"])
                    {
                        var it = e.SeriesPoint;
                        var obj = it.Tag as QualifiedInfo;
                        e.LabelText = string.Format("{0}|{2}|{1}", obj.Disqualification, obj.Amount,obj.DisqualificationWithoutOtherDuty);
                    }
                };
                #endregion
    
                #region
                bDate.EditValue = DateTime.Now.Date.AddDays(1 - DateTime.Now.Day);
                eDate.EditValue = DateTime.Now.Date.Add(new TimeSpan(23, 59, 59));
                ThreadPool.QueueUserWorkItem(o =>
                {
                    using (var ctx = DBCtx.GetCtx())
                    {
                        var sql = DRecAnalyze.LoadSql("sql04.txt");
                        var mInfoList = ctx.ExecuteStoreQuery<MInfo>(sql).ToList();
                        var batnos = ctx.FO_Task.GroupBy(ent => ent.Batno).Select(ent => ent.Key).Where(ent => ent != null).ToList();
                        
                        var empList = ctx.FO_TaskEmps.ToList();
    
                        SyncContext.Post(s =>
                        {
                            team.Properties.DataSource = empList;
                            mno.Properties.DataSource = mInfoList;
                            batno.Properties.Items.AddRange(batnos.ToArray());
                        }, null);
    
                    }
                }, null);
    
                #endregion
            }
    
            private void btnLoad_Click(object sender, EventArgs e)
            {
                try
                {
                    var sql = DRecAnalyze.LoadSql("sql05.txt");
                    if (bDate.EditValue == null) throw new Exception("请指定开始时间");
                    if (eDate.EditValue == null) throw new Exception("请指定结束时间");
                    var bTime=(DateTime)bDate.EditValue;
                    var eTime=(DateTime)eDate.EditValue;
    
                    var dCondition = string.Format(" And d.AddTime>='{0}' And d.AddTime<='{1}' ",
                        bTime.Date.ToString("yyyy-MM-dd 00:00:00"),
                        eTime.Date.ToString("yyyy-MM-dd 23:59:59")
                        );
    
                    var tCondition = "";
                    if (mno.EditValue != null )
                    {
                        if (!string.IsNullOrWhiteSpace(mno.ToString()))
                        {
                            tCondition += string.Format(" And t.MNo='{0}'", mno.EditValue.ToString());
                        }
                    }
                    if (!string.IsNullOrWhiteSpace(batno.Text))
                    {
                        tCondition += string.Format(" And t.BatNo='{0}'", batno.Text);
                    }
                    if (team.EditValue != null)
                    {
                        if(!string.IsNullOrWhiteSpace(team.EditValue.ToString()))
                        {
                            dCondition += String.Format(" And d.TaskEmpsId={0}", team.EditValue);
                        }
                    }
                    var exeSql= sql.Replace("$DCondition", dCondition).Replace("$TCondition", tCondition);
    
    
                    #region AsyncAction
                    Action act = () =>
                    {
                        var data = DRecAnalyze.LoadData(exeSql);
                        var list = DRecAnalyze.AnalyzePercentOfPass(data);
    
    
                        //所有不良项
                        var symptomList = DRecAnalyze.AnalyzeSymptom(data);
    
                        //生产部不良项
                        var assembleSymptomList = DRecAnalyze.AnalyzeAssembleSymptom(data);
    
                        //主要不良项
                        var mainSymptom = DRecAnalyze.AnalyzeMainSymptom(data);
    
                        SyncContext.Post(o =>
                        {
                            var diagram = chartControl1.Diagram as XYDiagram;
                            if (list.Count > 0)
                            {
                                diagram.AxisY.Range.MaxValue = Math.Floor(list.Max(ent => ent.Disqualification) * 1.6);
                            }
                            chartControl1.Series["Aim"].DataSource = list;
                            chartControl1.Series["Real"].DataSource = list;
                            chartControl1.Series["Disqualification"].DataSource = list;
    
                            chartControl2.Series["Symptom"].DataSource = symptomList;
    
                            chartControl3.Series["Symptom"].DataSource = assembleSymptomList;
    
                            chartControl4.Series[0].DataSource = mainSymptom;
                            chartControl4.Series[1].DataSource = mainSymptom;
                            chartControl4.Series[2].DataSource = mainSymptom;
                        }, null);
                    };
                    #endregion
                    this.AsyncInvoke(act);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
    
            
                    
    
            }
    
            private void btnExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
            {
                SaveFileDialog fileDialog = new SaveFileDialog();
                fileDialog.Filter = "Excel文件|*.xls";
                fileDialog.FileName = this.Text + DateTime.Now.ToString("yyMMddHHmm");
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {
                    CurCharControl.ExportToXls(fileDialog.FileName);
                    XtraMessageBox.Show("操作成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            }
        }
    }
    View Code
  • 相关阅读:
    安卓笔记:Android 界面设计指南——人人都是产品经理就是个玩笑话
    Windows CMD 命令
    安卓开发:dex 文件反编译
    VBA 学习笔记 运算符
    工商管理同等学力申硕全国统一考试资料整理
    VBA 学习笔记 判断语句、循环
    VBA 学习笔记 日期时间函数
    安卓自动领水果福气
    【合集】人大商学院同等学力工商管理
    安卓笔记:进度设计原则和常见错误
  • 原文地址:https://www.cnblogs.com/wdfrog/p/4123113.html
Copyright © 2020-2023  润新知