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);
}
};
参考代码
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( - DateTime.Now.Day);
eDate.EditValue = DateTime.Now.Date.Add(new TimeSpan(, , ));
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 > )
{
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[].DataSource = mainSymptom;
chartControl4.Series[].DataSource = mainSymptom;
chartControl4.Series[].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);
}
}
}
}
dev ChartControl 备忘的更多相关文章
- Npm vs Yarn 之备忘大全
有则笑话,如此讲到:"老丈人爱吃核桃,昨天买了二斤陪妻子送去,老丈人年轻时练过武,用手一拍核桃就碎了,笑着对我说:你还用锤子,你看我用手就成.我嘴一抽,来了句:人和动物最大的区别就是人会使用 ...
- centos 6.4 mysql rpm 离线安装【备忘】
离线状态下使用rpm的安装包进行mysql的安装,仅作备忘 准备工作: 官网下载mysql离线rpm安装包(这里就不演示了,拿现成的做演示) =================更新线 2018-01- ...
- ubuntu下串口编程备忘
弄了一下串口,一个小问题多折腾了下,备忘.软件环境:zl@zhanglong:~$ cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=12.0 ...
- CentOS6.4 X86_64 kvm+PXE备忘
Install 安装 1 2 3 4 5 # yum install qemu-kvm qemu-img # 使用kvm至少要安装的包,一个提供用户级别kvm模拟器,一个提供磁盘镜像的管理 # 安装虚 ...
- Proxmox 安装 dsm 黑群 备忘
备忘:Proxmox 虚拟机使用 E1000网卡(用Virlo找不到引导),直通数据硬盘 . 使用的引导文件是 DS918+_6.21-23824-1.04b.img 虚拟机启动使用第三项EX ...
- GIS部分理论知识备忘随笔
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...
- python序列,字典备忘
初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...
- Vi命令备忘
备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...
- ExtJs4常用配置方法备忘
viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...
随机推荐
- mysql 修改用户密码
修改mysql用户密码 目录 mysqladmin命令 UPDATE user 语句 SET PASSWORD 语句 root密码丢失的情况(待验证) mysqladmin命令(回目录) 格式如下 ...
- 机器学习入门-贝叶斯中文新闻分类任务 1. .map(做标签数字替换) 2.CountVectorizer(词频向量映射) 3.TfidfVectorizer(TFDIF向量映射) 4.MultinomialNB()贝叶斯模型构建
1.map做一个标签的数字替换 2.vec = CountVectorizer(lowercase=False, max_features=4000) # 从sklean.extract_featu ...
- as3 关闭加载流
/** Loader 取消加载**/ function closeQueueLoader():void { if (cur_loader && cur_loader.contentLo ...
- python生成可执行文件保护源码
工作中由于需要防止源代泄漏,需要将源代码隐藏,找到两种方法: 1.使用python生成的pyc文件. 这种方法的优点就是pyc文件生成很容易,缺点则是很容易通过工具得到源码,并且python版本不一致 ...
- Kotlin语言学习笔记(6)
运算符重载(Operator overloading) 一元运算符 Expression Translated to +a a.unaryPlus() -a a.unaryMinus() !a a.n ...
- Mysql 5.8安装报错
1 mysql安装过程中报下面这个错 解决方法:只要将目录改成反斜杠即可. 2 修改密码错误:ERROR 1064 (42000): You have an error in your SQL syn ...
- 序列下载及处理之seqinr包
缺点:需要联网,经常出错,不是操作问题而是因为网络问题 安装 if("seqinr" %in% rownames(installed.packages()) == FALSE) { ...
- Docker Dockerfile 定制镜像(转)
转自: https://yeasy.gitbooks.io/docker_practice/ 及 https://blog.csdn.net/wo18237095579/article/details ...
- 记一次spring-session登录后失效的问题
用户登录后,可以进入页面,但ajax请求或跳转其他页面时,会被当做匿名用户,即没有登录.查看session数据库,发现多出两条session,一条为正常数据,里面有对应的用户名:另一条为异常的数据,没 ...
- cdoj第13th校赛初赛F - Fabricate equation
http://acm.uestc.edu.cn/#/contest/show/54 F - Fabricate equation Time Limit: 3000/1000MS (Java/Other ...