Delphi窗体显示Echarts图表
笨办法,先保存用着
unit Unit1; interface uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, DBAccess, Vcl.Menus,
System.Actions, Vcl.ActnList, Vcl.StdCtrls, Vcl.OleCtrls, SHDocVw, Vcl.AppEvnts,
Uni; type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
btnShowEcharts: TButton;
ApplicationEvents1: TApplicationEvents;
procedure btnShowEchartsClick(Sender: TObject);
procedure WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation uses
DataModule; {$R *.dfm}
var
PathStr: string; //屏蔽右键
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
with Msg do
begin
if not IsChild(WebBrowser1.Handle, hwnd) then
Exit;
Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU);
end;
end; //生成并显示图表
procedure TForm1.btnShowEchartsClick(Sender: TObject);
var
str, strSql: TStringList;
strSPMC, strSL: string;
qryDT: TUniQuery;
i: Integer;
begin
str := TStringList.Create;
strSql := TStringList.Create;
qryDT := TUniQuery.Create(Self); try
if DataModule2.UniConnection1.Connected then
qryDT.Connection := DataModule2.UniConnection1;
strSql.Add('SELECT s.SPMC,SUM(SL)SL FROM QDDBDMX AS q ');
strSql.Add('LEFT JOIN SHANGPIN AS s ON s.SPDM=q.SPDM ');
strSql.Add('WHERE s.BYZD8=''2019''');
strSql.Add('GROUP BY s.SPMC'); with qryDT do
begin
Close;
SQL.text := strSql.Text;
Open;
end; qryDT.First; for i := to qryDT.RecordCount - do
begin
strSPMC := strSPMC + '"' + qryDT.FieldByName('SPMC').Value + '"';
strSL := strSL + IntToStr(qryDT.FieldByName('SL').Value);
if i = qryDT.RecordCount - then
begin
strSPMC := strSPMC;
strSL := strSL;
end
else
begin
strSPMC := strSPMC + ',';
strSL := strSL + ',';
end;
qryDT.Next;
end; str.add('<!DOCTYPE html> ');
str.add('<html> ');
str.add('<head> ');
str.add(' <meta http-equiv="content-type" content="text/html;charset=gb2312"> ');
str.add(' <title>ECharts</title> ');
str.add(' <!-- 引入 echarts.js --> ');
str.add(' <script src="https://cdn.bootcss.com/echarts/4.1.0-release/echarts.min.js"></script> ');
str.add('</head> ');
str.add('<body> ');
str.add(' <!-- 为ECharts准备一个具备大小(宽高)的Dom --> ');
str.add(' <div id="main" style="width: 1000px;height:400px;"></div> ');
str.add(' <script type="text/javascript"> ');
str.add(' // 基于准备好的dom,初始化echarts实例 ');
str.add(' var myChart = echarts.init(document.getElementById(''main'')); ');
str.add(' ');
str.add(' // 指定图表的配置项和数据 ');
str.add(' var option = { ');
str.add(' title: { ');
str.add(' text: ''类别销售对比''');
str.add(' }, ');
str.add(' tooltip: {}, ');
str.add(' legend: { ');
str.add(' data:[''销量'']');
str.add(' }, ');
str.add(' xAxis: { ');
str.add(' data: [' + strSPMC + '] ');
str.add(' }, ');
str.add(' yAxis: {}, ');
str.add(' series: [{ ');
str.add(' name: ''品类'', ');
str.add(' type: ''bar'', ');
str.add(' data: [' + strSL + '] ');
str.add(' }] ');
str.add(' }; ');
str.add(' ');
str.add(' // 使用刚指定的配置项和数据显示图表。 ');
str.add(' myChart.setOption(option); ');
str.add(' </script> ');
str.add('</body> ');
str.add('</html>'); //生成并保存网页
PathStr := ExtractFilePath(Application.ExeName) + 'index.html';
str.SaveToFile(PathStr);
//加载本地网页
WebBrowser1.Navigate(ExtractFileDir(ParamStr()) + '\index.html');
finally
str.Free;
strSql.Free;
qryDT.Free;
end;
end; //网页加载完毕
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
begin
//隐藏滚动条
WebBrowser1.oleobject.Document.body.Scroll := 'no';
WebBrowser1.oleobject.Document.documentElement.style.overflow := 'hidden';
//删除文件
DeleteFile(PathStr);
end; end.
效果

Delphi窗体显示Echarts图表的更多相关文章
- ECharts图表tooltip显示时超出canvas图层解决方法
我们在做ECharts图表的时候可能会遇到tooltip显示时超出了canvas图层范围,并且被其它z-index较高的div容器遮盖,这是悬浮展示信息就看不全,我们根据官网文档的配置项查询发现con ...
- ECharts图表插件(4.x版本)使用(一、关系图force节点显示为自定义图像/图片,带分类选择)
导读 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safar ...
- echarts之bootstrap选项卡不能显示其他标签echarts图表
在echarts跟bootstrap选项卡整合的时候,默认第一个选中选项卡可以正常加载echarts图表,但是切换其他选项的时候不能渲染出其他选项卡echarts图表. 解决方法: 在js中添加代码: ...
- C#WinForm应用程序中嵌入ECharts图表
C#WinForm应用程序中嵌入ECharts图表 程序运行效果: 下载ECharts: 官网下载ECharts :http://echarts.baidu.com/download.html 或者直 ...
- echarts图表第一个案例
1.action中获取到数据 @Override public String execute() throws Exception { List<Student> find = echar ...
- echarts图表标签(axisLabel)折行
在项目中遇到了一个echarts图表标签过长需折行的需求,so引出这篇总结,啦啦啦有帮助就多多支持啦,撒花撒花撒花~~~~ 在此不对echarts其他用法做解释,详细见echarts文档(点击前往) ...
- ECharts图表中级入门之formatter:夜谈关于ECharts图表内的数据格式化方法
来源于:http://www.ithao123.cn/content-3751220.html 格式化之所以存在,主要是因为我们想把一些不够人性化的内容通过某种处理让其变得人性化,便于用户更好地理解内 ...
- Echarts图表控件使用总结2(Line,Bar)—问题篇
Echarts图表控件使用总结1(Line,Bar):http://www.cnblogs.com/hanyinglong/p/Echarts.html 1.前言 a.前两天简单写了一篇在MVC中如何 ...
- Delphi窗体创建释放过程及单元文件小结(转)
Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时 ...
随机推荐
- 金蝶k/3 现金流量表编制口诀
现金流量表编制口诀 现金流量表是会计考试中十分令人头疼的内容,丢三落四是现金流量表编制中最容易出现的错误.下面的口诀基本上概括了现金流量表的全部编制过程.口诀的具体内容如何理解,我们在口诀后边详细阐述 ...
- SQL允许脏读WITH(NOLOCK)
使用WIHT(NOLOCK)有利也有弊,所以在决定使用之前,你一定需要了解清楚WITH(NOLOCK)的功能和缺陷,看其是否适合你的业务需求,不要觉得它能提升性能,稀里糊涂的就使用它. --事务未提交 ...
- matplotlib注解-【老鱼学matplotlib】
本节讲述在图片中添加注解. 直接上代码: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 生成x轴上的 ...
- Python学习(三十六)—— Cookie、Session和自定义分页
一.Django中操作Cookie 获取Cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR ...
- UOJ#395. 【NOI2018】你的名字 字符串,SAM,线段树合并
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ395.html 题解 记得同步赛的时候这题我爆0了,最暴力的暴力都没调出来. 首先我们看看 68 分怎么做 ...
- windows与linux之间文件的传输
这边记录一下如何在windows与linux之间进行文件的传输,下面是具体的网址. 原文地址::http://blog.csdn.net/shufac/article/details/51966276 ...
- Codeforces Round #547 (Div. 3)
我老人家走了四公里吃个汉堡还没吃成.垃圾肯德基.垃圾春分半价桶. 蜜雪冰城百香果加冰+烤串真是爽死了.原来二十多块钱可以吃的这么爽. A: #include <bits/stdc++.h> ...
- Nestjs 微服务
文档 工作示例 安装: $ npm i --save @nestjs/microservices main.ts import { NestFactory } from '@nestjs/core'; ...
- SEED实验——Environment Variable and Set-UID Program实验描述与实验任务
第一部分:实验描述 该实验的学习任务是理解环境变量是如何影响程序和系统行为的.环境变量是一组动态命名的变量 第二部分:实验任务 2.1 任务一:操作环境变量 在这个任务中,我们研究可以用来设置和取消设 ...
- MySql 主从复制 mysql-proxy实现读写分离
1.安装和配置Docker 服务器版本阿里云CentOS7.4 docker版本18.06.0-ce docker安装步骤https://docs.docker.com/install/linux/d ...