ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Delphi 12.3下TeeChart Pro VCL/FMX图表控件安装与实战指南

Delphi 12.3下TeeChart Pro VCL/FMX图表控件安装与实战指南 简介面向Delphi 12.3开发者的Steema TeeChart Pro VCL/FMX 2023.39控件包专注于VCL与FMX框架下的专业图表绘制覆盖2D/3D、实时数据、OpenGL及多语言等常见场景适合需要在桌面应用中实现数据可视化、报表展示或实时监控图表的开发者。资源共含2000个文件以hpp、cpp、h等源码与头文件为主并附带PDF/Markdown说明文档整体470.79MB便于有经验的Delphi工程师按需查阅与集成可清晰区分核心库、示例工程和说明资料。目前已有187人学习查看可作为控件二次开发或图表功能评估的参考。包内示例覆盖曲线、曲面、三维绘制与实时刷新等典型应用能帮助开发者快速掌握TeeChart在VCL/FMX环境下的集成方法与性能调优思路减少从零搭建的摸索成本。1. 一份 .rar 背后Delphi 12.3 里 TeeChart Pro VCL/FMX 到底解决什么问题做 Delphi 做的久了你迟早会接到“给我加个趋势图”的需求。数据在数据库里躺着TDBGrid 列了一屏领导要看曲线。自己用 TImage 画折线图一旦涉及缩放、滚动、多序列、坐标轴标签你会发现自己其实是在重复造一个没人愿意维护的轮子。标题这个Delphi 12.3控件之Steema TeeChart Pro VCL FMX 2023.39.rar就是给这条老路踩刹车的东西一套商业级图表控件同时覆盖 VCL 和 FMX 两套框架装进 Delphi 12.3 之后折线、柱状、饼图、面积、金融 K 线、3D 表面图都变成拖拽控件的事。这篇笔记写给正在学习 Delphi、又被图表需求卡住的开发者也写给还在用裸 TCanvas 硬画的熟手——我按自己实际装过的路径把“这是什么、怎么装上、怎么写第一行代码、哪些地方会坑你”一次讲完。2. 为什么在 Delphi 里画图绕不开 TeeChart Pro选型逻辑与 VCL/FMX 的真实差异2.1 先看懂 TeeChart Pro 在 Delphi 生态里的位置TeeChart 是 Steema 公司的产品从 Delphi 3 时代就跟着 IDE 走Delphi 自带的基础版叫 TeeChart Lite锁定在VCLTee.TeeChart这类单元里。标题里的 2023.39 是 TeeChart 的 release 版本号搭配 Delphi 12.3RAD Studio 12.3 Athens构建的安装包通常以 .rar 形式分发。Pro 比 Lite 多出来的东西正是做正经项目要用的五十多种图表系列Series、金融指标、统计函数、坐标轴多轴支持、数据导出PNG/JPEG/PDF/Excel、以及 FMX 下的跨平台渲染。选型逻辑其实很简单。你面前有三条路第一条用 Delphi 自带的 TChartLite 版零成本但你很快会发现自定义程度有限比如做 Candlestick 需要额外买金融包第二条找一个开源控件自己改常见结果是为一个坐标轴刻度的显示问题改一整天源码第三条直接用 Pro 版功能边界清楚文档跟 IDE 自带的帮助系统整合遇到问题能按图索骥。我的观点是如果这是商用项目TeeChart Pro 的授权费相比你花在自绘上的工时成本完全不亏——你省下的是不断修边缘 case 的隐性成本。2.2 VCL 与 FMX同一个 TeeChart两套完全不同的底层逻辑这是接这个包时必须先建立的认知VCL 和 FMX 不是“皮肤不一样”。VCL 基于 Windows GDITeeChart 的 VCL 版直接操作 Windows 的 Canvas、句柄和消息循环这也让它和 Delphi 的老代码、第三方 VCL 控件比如 FastReport VCL 报表里嵌入图表兼容性极好。FMX 则是一套自绘的跨平台框架在 Windows 上走 Direct2D在 macOS 走 Quartz在 Android/iOS 走 OpenGL 或 Metal。这意味着同一个 TChart 控件放在 FMX 里底层绘制路径完全不同。实际项目里这种差异会以非常具体的形式暴露出来对比维度VCL 版 TeeChartFMX 版 TeeChart目标平台Windows32/64 位Windows、macOS、iOS、Android底层绘制GDI / GDIDirect2D / Quartz / OpenGL设计期支持完全集成 IDE 组件面板同样集成但渲染预览与运行期有偏差常用单元VCLTee.TeeChartFMXTee.TeeChart字体与缩放跟随系统 DPI一般不用管跨平台字体回退中文显示需要单独设置打印直接输出到 TPrinter需要通过 FMX 的打印接口行为有差异记住一点你写的uses子句决定了你用哪套VCLTee.*和FMXTee.*是两个互斥的单元树混用必然出编译错误。标题里的 VCL FMX 字样说明这个包同时包含了两套源文件和设计期包安装时不要只装一半后面我会讲为什么。2.3 用 VCL 还是 FMX这是项目架构问题不是控件问题很多新手拿到这个包第一个问题就是“那我该用哪个”。我的判断标准很直接如果你只是做 Windows 桌面工具库房管理、进销存、工控上位机选 VCL因为 VCL 的老牌控件生态太丰富了从报表到界面皮肤都成熟你不需要为 FMX 的跨平台能力付出额外调试成本。如果你的目标是新项目、将来可能要出 macOS 或移动端版本选 FMX但你要接受一个事实FMX 生态里除了 TeeChart Pro很多你想用的第三方控件不再更新团队里必须有能自己扛 UI 细节的人。这里还牵扯到 Delphi 12.3 本身的特性。RAD Studio 12.3 对高 DPI、Win11 主题、C Builder 互操作都做了不少优化而 TeeChart Pro 2023.39 这个版本号对应的就是适配这一波 IDE 更新之后的构建。如果你用的是 Delphi 10.4 或者 11安装同一个包可能报错因为包的版本标识.dpk文件里的版本号不匹配。所以看到2023.39时先确认你的 IDE 是 12.x别急着解压。3. 把 Steema TeeChart Pro 2023.39 装进 Delphi 12.3解压、编译、注册三步走3.1 安装前的目录规划把解压当成项目的一部分很多 Delphi 控件装不上的根源不是代码有问题而是解压到了乱七八糟的目录。TeeChart 这个包解压之后会有一堆源码文件、.dpk包文件、.bpl运行时包、还有示例和文档。我最常用的做法是在 Delphi 的公共库目录下建一个独立的\TeeChart文件夹比如C:\Dev\Components\TeeChartPro2023。不要在路径里带中文或空格Delphi 的 MSBuild 对带空格的路径支持虽然比早期版本好但第三方控件的构建脚本未必处理得好。打开 rar 之前先看压缩包里的目录结构。一般来说会有\Source,\Compiled,\Lib,\Examples这样的目录。Source是 Delphi 单元源码Compiled有时候是预编译好的.bpl和.bpi文件Lib里通常是不同平台Win32/Win64的.dcu文件。我这里给出一套典型的命令行解压流程实际操作时用 WinRAR 或 7-Zip 都可以关键是解压后目录要固定# 以 7-Zip 为例把压缩包解压到目标目录 # -o 指定输出目录目录要提前建好不要带中文和空格 mkdir -p C:\Dev\Components\TeeChartPro2023 7z x Delphi 12.3控件之Steema TeeChart Pro VCL FMX 2023.39.rar -oC:\Dev\Components\TeeChartPro2023 # 解压完成后确认关键文件存在 ls C:\Dev\Components\TeeChartPro2023\Source # 你应该能看到 .dpk、.pas、.inc 文件如果只有 .exe 没有源码说明你下的是安装版而非源码版这个命令里有两个参数值得注意。-o后面跟的输出路径是整个安装的锚点后续 IDE 里的 Library Path 都指向这里。解压之后先看Source目录里有没有.dpk文件比如TeeChartProVCL.dpk和TeeChartProFMX.dpk这决定你后面是编译安装还是直接加载预编译包。如果只有.bpl没有.pas那这个包多半是给正式版用户用的安装程序你需要运行其中的 Setup 而不是手动编译。3.2 编译 VCL 包先 32 位后 64 位这个顺序别搞反Delphi 12.3 默认安装后支持 Win32 和 Win64 两个 Windows 平台。TeeChart 的包编译有一个约定俗成的顺序先编译运行时包TeeChartProVCLRuntime.dpk再编译设计期包TeeChartProVCLDesign.dpk。运行时包是程序运行时要加载的.bpl设计期包是让控件出现在 IDE 面板上的.bpl。如果直接用 IDE 打开设计期包并 InstallDelphi 会提示依赖缺失。我习惯用命令行 MSBuild 编译因为输出信息比 IDE 的 TOOLS 窗口更清楚。下面这个命令在 Delphi 12.3 自带的“RAD Studio Command Prompt”里执行注意要先切到对应目录# 先切到源码目录 cd /d C:\Dev\Components\TeeChartPro2023\Source # 编译 Win32 运行时包 msbuild TeeChartProVCL.dpk /t:Build /p:ConfigRelease /p:PlatformWin32 # 编译 Win32 设计期包 msbuild TeeChartProVCLDesign.dpk /t:Build /p:ConfigRelease /p:PlatformWin32 # 把 Platform 换成 Win64 再来一遍两个都要编译 msbuild TeeChartProVCL.dpk /t:Build /p:ConfigRelease /p:PlatformWin64 msbuild TeeChartProVCLDesign.dpk /t:Build /p:ConfigRelease /p:PlatformWin64这里ConfigRelease的意思是编译成发布版不包含调试信息.bpl体积小、运行快。PlatformWin32和Win64分开编译是因为生成的.bpl、.dcu各自带平台标记混在一起会提示DCU 与平台不匹配。如果你只做 32 位程序至少 Win32 那两个包必须成功但只要你的项目里任何一次编译选择了 Win64运行环境没有对应.bpl就会启动报错。所以我的习惯是干脆两个平台都编。3.3 把 TeeChart 的路径告诉 IDELibrary Path 的配置细节包编译成功只是第一步Delphi IDE 要能找到 TeeChart 的单元文件否则你新建一个 Form往上面拖控件时提示找不到vcltee.hpp或者TChart未声明。这个配置在 IDE 里有固定的入口Tools Options Environment Options Delphi Options Library右侧有两个关键项Library path和Browsing path。Library path要添加四个路径Source目录、Source\Compiled目录如果有、以及 Win32/Win64 的.dcu输出目录。注意事项如下库路径配置要点 1. Library path 每一项对应一个分号;分隔的绝对路径不要加引号 2. Win32 和 Win64 的 dcu 目录如果分开必须都加进去 比如 C:\Dev\Components\TeeChartPro2023\Source\DCU\Win32 C:\Dev\Components\TeeChartPro2023\Source\DCU\Win64 3. 配置完成后点 OK然后重启 IDE不要指望运行期才生效 4. 如果在 IDE 里新建包Package编译路径会被覆盖建议用命令行或 .dproj 固定这里有新手最容易踩的一个坑Browsing path不配置也能编译但你在 IDE 里 Ctrl点击 TChart 跳不到源码也看不到 TeeChart 自带的大量代码示例等于把帮助文档断开一半。所以两个路径都要填Library path负责编译期Browsing path负责编辑期的代码导航和学习。3.4 安装设计期包让控件出现在 Tool Palette路径配好后打开 IDE点Component Install Packages在对话框里点Add定位到你刚才编译出来的TeeChartProVCLDesign.bpl在Source目录下或你指定的输出目录。添加成功后右侧的Tool Palette里会出现一组TeeChart分类里面有TChart、TChartListBox、TChartEditor等控件。注意FMX 包和 VCL 包的安装不能互相覆盖。如果你想在 FMX 项目里也用需要重复上面流程只不过文件换成TeeChartProFMX.dpk和TeeChartProFMXDesign.dpk。我之前遇到过只装了 VCL 版新建 FMX 应用时 Palette 里死活找不到 TChart后来才意识到 FMX 包根本没编译。两个框架的控件在 Palette 里会分属不同的注册页VCL 的 TChart 拖不到 FMX Form 上反之亦然这是设计使然不是安装出问题。3.5 安装后立刻做的验证从源码里找版本号安装不要以“能看到图标”为结束。我每次装完组件习惯顺手写一个几行的小程序验证单元路径和版本是否正确。打开 Delphi 12.3新建一个 VCL Application在 Form 上放一个 TChart然后在uses里显式写上VCLTee.TeeChart在 Form 的OnCreate里写一行取版本号的代码uses VCLTee.TeeChart; procedure TForm1.FormCreate(Sender: TObject); begin Caption : TeeChart Version: TeeMsg_Version; // 只要这一行能编译通过说明 VCL 包路径和单元引用都正常 end;TeeMsg_Version是 TeeChart 源码里定义的一个常量字符串编译期会解析到具体的版本号比如2023.39。如果编译报错TeeMsg_Version 未声明多半是 Library path 没生效如果编译通过但运行期报找不到.bpl那是.bpl文件没放到系统路径或程序目录下。这一步能帮你把问题定位到“代码级”还是“环境级”后面所有排查都围绕这两类展开。4. 用代码验证安装VCL 和 FMX 各跑一个最小图表4.1 第一个 VCL 图表让坐标轴和数据动起来安装验证里最经典的例子不是拖一个 TChart 就完事而是用代码往序列里灌数据再看图表是否随数据变化。设计期拖出来的图表只是一个空壳你要理解的是 TeeChart 的核心模型TChart控件包含多个TChartSeries序列每个序列由一组点构成点的坐标和样式由序列类型决定。折线、柱状、饼图都是“序列类型”不是控件类型。下面这个代码是纯运行期创建不放任何设计期控件适合测试安装是否真正可用。我把一个TChart动态创建在 Form 上添加一个TLineSeries再往里塞 20 个点uses VCLTee.TeeChart, VCLTee.Series; procedure TForm1.Button1Click(Sender: TObject); var Chart1: TChart; MyLine: TLineSeries; i: Integer; begin // 动态创建 Chart 并设置父窗口、位置和尺寸 Chart1 : TChart.Create(Self); Chart1.Parent : Self; Chart1.Align : alClient; Chart1.Title.Text.Text : 安装验证 - 动态折线图; // 创建折线序列并添加到 Chart 里 MyLine : TLineSeries.Create(Chart1); Chart1.AddSeries(MyLine); // 用正弦噪声的方式模拟一组实时数据 for i : 0 to 19 do MyLine.AddXY(i, Sin(i * 0.5) * 10 Random(5), Format(A%d, [i])); end;这段代码的核心逻辑是TLineSeries.Create(Chart1)创建序列Chart1.AddSeries把它注册进图表然后AddXY按 X 坐标、Y 值和 X 轴标签三个参数逐一加数据点。AddXY的第三个参数是每个点的 X 轴标签如果你不给默认显示 X 坐标值。这里我传了一个格式化的字符串这样坐标轴底部的标签会显示A0、A1...而不是赤裸裸的数字。运行后你会看到一条正弦曲线鼠标移到序列上会弹出提示这是 TeeChart 运行期的默认行为不需要额外开启。参数说明Chart1.Align : alClient让图表撑满 Form省去手动布局Sin(i * 0.5) * 10 Random(5)中Random(5)是模拟噪声目的是让点不是一条理想曲线更接近真实采集数据。如果按钮点击后图表空白先检查MyLine.SeriesColor是否被设成了白色在浅色背景上会出现白线画在白底上的问题。4.2 FMX 版的最小差异当事件、TeeChart 的陷阱暴露出来FMX 下的代码套路类似但有一个明显的差异FMX 的TChart属于FMXTee.TeeChart管理而且它和 VCL 版的界面缩放、触摸手势处理不同。下面这一段是 FMX 版的最小代码生成一个柱状图并在每个柱子上方显示数值uses FMXTee.TeeChart, FMXTee.Series; procedure TForm1.FormCreate(Sender: TObject); var Chart1: TChart; MyBar: TBarSeries; i: Integer; begin Chart1 : TChart.Create(Self); Chart1.Parent : Self; Chart1.Align : TAlignLayout.Client; MyBar : TBarSeries.Create(Chart1); Chart1.AddSeries(MyBar); MyBar.Marks.Visible : True; // 显示点标签 MyBar.Marks.Angle : 0; // 标签不旋转 for i : 1 to 6 do MyBar.Add(Random * 100, Format(第%d月, [i])); end;这段代码里有两个 FMX 特有的点。一是TAlignLayout.ClientFMX 的布局枚举值名跟 VCL 不一样写成alClient会直接编译错误初学者常在这里翻车。二是Marks.Visible : True让每个柱子上方显示值标签但在 FMX 里如果你不设置Marks.Font.Size在 Retina 屏上标签会小到看不见而 VCL 版直接跟随系统 DPI一般不用管。我见过不少项目从 VCL 往 FMX 迁移时图表文字模糊或者位置偏移最后都归因到 Marks 的字体、旋转角度和颜色这几个属性没有按平台单独配置。另外FMX 版运行在 Windows 上时图表渲染默认走 Direct2D如果你的测试机是 Windows 7 且没装平台更新会直接白屏。这不是 TeeChart 的问题是 Direct2D 对老系统的限制但排查时容易误伤控件。遇到这种情况先确认操作系统版本再说控件的事。4.3 设计期配置能省一半代码面板、编辑器与序列类型纯代码创建适合验证环境实际开发我更建议设计期就把图表搭好。拖一个TChart到 Form 上双击它会打开TeeChart Editor左侧是序列列表右侧是属性页。这个编辑器里最值得先熟悉的是Series页下的Change按钮你可以把一个已创建好的折线序列一键改成柱状或面积而不需要删除重建。设计期把图表结构调整好运行期代码只负责添数据这对维护性有质的提升。设计期配置有一个概念要讲清楚TChart的SeriesList是一个集合每一项是一个具体序列对象。你设计期添加几个序列运行期Chart1[0]、Chart1[1]就能拿到它们避免运行期AddSeries重复创建。配合数据绑定后面会提到。这里给一个新项目初始化序列的常用套路// 设计期已添加两个序列的前提下运行期这样初始化数据源 Chart1[0].Clear; // 清空折线序列 Chart1[1].Clear; // 清空柱状序列 for i : 0 to 99 do begin Chart1[0].AddXY(i, MyData1[i], ); // 给折线填充数据 Chart1[1].Add(i, FormatFloat(0.0#, MyData1[i])); // 给柱状填充 end; Chart1[0].Title : 温度趋势; Chart1[1].Title : 湿度分布;注意Chart1[0]的索引访问方式等价于Chart1.SeriesList[0]但类型是TChartSeries基类使用时如果需要折线的特殊方法要自己用as TLineSeries做类型转换。这种设计期建结构、运行期填数据的模式是我在多个项目里验证过最不容易翻车的写法。5. Delphi 12.3 下 TeeChart Pro 的 5 个常见安装与运行坑5.1 编译报错“F1026 File not found: VclTee.TeeChart.dcu”这是装完包后出现频率最高的红字错误。现象是新建一个 VCL 程序uses VCLTee.TeeChart后编译直接报找不到.dcu但你在 Library path 里明明配了Source目录。原因分两种一是你只把路径加到了Browsing path没加到Library path——IDE 里这两个输入框长得像实际职责完全不同.dcu查找只走 Library path二是 TeeChart 的Source目录下根本没有预编译的.dcu需要你自己先编译.dpk生成.dcu。我用命令行编译后.dcu会输出到Source下的某个子目录或者直接和.pas混在一起。如果你发现.pas存在但.dcu不存在说明编译那一步就没成功先回看第 3.2 节的msbuild输出有没有error关键词。解决步骤确认.dcu实际所在的目录复制其绝对路径在Library path里新增一行重启 IDE。如果不想重启也行但 TE 的编译缓存有时会缓存旧路径重启是最省事的后悔药。5.2 设计期 Palette 里没有 TChart但代码里能引用这个坑很迷惑代码里写TChart.Create能编译能运行Tool Palette 的搜索框输入 TeeChart 却什么都没有。原因是设计期包没装或装错。我遇到的一次实际情况是同事用 IDE 的Open Project打开了TeeChartProVCLDesign.dpk点了Compile没点Install。编译只是生成.bpl要让控件进入 Palette必须右键包管理器里的Install。还有一种情况是安装了 VCL 设计期包但你在 FMX 项目里找 TChart——FMX 的 Palette 要等 FMX 包安装后才会有。解决是通过Component Install Packages看已安装列表里有没有TeeChart Pro VCL Design和TeeChart Pro FMX Design。没有就点Add重新装注意.bpl路径别选成 Win64 的IDE 设计期一般是 32 位进程加载 64 位包会报“不是一个有效的包”。5.3 运行程序时提示“无法定位程序输入点 ... 于 TeeChartProVCL.bpl”现象是安装和编译都正常程序一运行就弹这个错通常发生在把项目从一台机器拷到另一台机器或者 IDE 升级过之后。本质原因是.bpl版本不匹配。你在 Delphi 12.3 下编译的.bpl和程序里引用的版本号不同步比如源码目录里有一个老的TeeChartProVCL.bplLibrary path 里排在前面的Compiled目录也有一个不同版本的同名文件。Windows 加载 DLL 时按 PATH 顺序找Delphi 运行库加载.bpl走的也是类似机制你的程序目录或C:\Windows\System32里如果残留旧的.bpl就会先加载老文件。解决步骤全盘搜索TeeChartProVCL.bpl把所有非源码目录下的旧文件清干净把当前编译出的.bpl复制到程序输出目录或 System32但不推荐保证只有一个版本存在。这个坑我从 Delphi 10.4 追到 12.3最后发现是安装时老版本没卸载干净所以装新版前先卸载旧控件或删旧.bpl。5.4 FMX 图表在 Windows 上字体发虚中文标签变成方块字FMX 版 TeeChart 在 Win10/11 上最常见的视觉问题标题和轴标签锯齿严重、中文完全显示为方块。原因不是 TeeChart 自身渲染坏了而是 FMX 的字体回退机制和 VCL 不同。VCL 里 Tahoma 能正常显示中文因为系统自动做字体链接FMX 在 Direct2D 渲染路径下字体的FontFamily如果没匹配到中文字体就直接画成方块或者用默认 UI 字体渲染。解决方式在运行期显式指定字体。设计期选中 TChart在 Object Inspector 里展开Title.Font、Axes.Left.Labels.Font、Axes.Bottom.Labels.Font这些子属性把Family从默认改成微软雅黑或PingFang SCmacOS。如果项目还要跑 Android字体名要按平台分支设否则直接用系统TFontManager拿默认字体更稳妥。我的习惯是在 Form 的OnCreate里统一设置一轮字体避免设计期和运行期环境不一致导致显示差异。5.5 数据点超过 10 万个之后图表操作卡顿鼠标拖拽不跟手性能问题不算 bug但是“它能跑”和“它能交付”之间最大的门槛。TeeChart Pro 在数据点数量上来后默认 UI 线程绘制和鼠标悬停检测都会变慢。现象是一次性AddXY灌入 10 万点图表能画出来但缩放或拖动时肉眼可见掉帧。原因是 TeeChart 默认在每次AddXY后都可能触发重绘Invalidate而且鼠标悬停提示要遍历所有点找最近点。优化的方向有两个一是批量加入数据之前调用Chart1.Series[0].BeginUpdate结束时EndUpdate减少中间无效绘制二是在大量数据场景下把序列的Marks关闭、设置Chart1.Axes.Bottom.SetMinMax固定显示范围让绘制只处理可视区。对于真正超过百万点的应用TeeChart 的ToolSet里还有SeriesRegionTool这种高效交互工具但我不建议一上来就上这种复杂方案——先把数据量控制住再谈高级特性。// 大批量数据添加时的标准写法 with Chart1.Series[0] as TLineSeries do begin BeginUpdate; // 暂停绘制刷新 try for i : 0 to 100000 - 1 do AddXY(i, Random * 100, ); finally EndUpdate; // 结束后统一重绘 end; end;BeginUpdate/EndUpdate是 TeeChart 所有序列都有的方法它内部通过计数器阻止重绘能让十万点数据的加载时间从肉眼可见的停顿降到流畅完成。这个写法同时适用于 VCL 和 FMX 版。6. 进阶从“能出图”到“能交付”的几个手段——数据库绑定、坐标轴同步与导出图表装上、坐标系跑通这只是起点。实际项目里你要面对的从来不是“画一条漂亮的曲线”而是“让图表和数据库里的数据保持同步、把结果交到别人手里”。这三个技巧是我认为投入产出比最高的进阶方向。第一个是数据库直接绑定。TeeChart Pro 的TChart在设计期有一个Data Source属性可以挂接TDataSet然后用CheckDataSource同步数据。但我的实际经验是直接在OnAfterScroll或查询结束后用代码填充值更可控尤其当你需要把时间戳字符串转成 X 轴坐标时。数据库时间字段转TDateTime再调用AddXY(DateTime, Value, )就能得到一个正确的时间轴。这里要注意TeeChart 的时间轴默认按数值处理你要把Chart1.Axes.Bottom.DateTimeFormat设为yyyy-mm-dd hh:nn:ss否则轴标签会显示成一串小数。第二个是坐标轴同步。当你有两个 Y 轴比如温度和一氧化碳浓度量纲不同默认各自缩放会导致曲线形态误导人。正确做法是用Chart1.LeftAxis.Automatic : False然后把两个 Y 轴的最大最小值通过公式关联或者直接用TeeChart的LeftAxis.Maximum和Minimum显式指定让两条曲线的波动幅度可比。这是很多工控项目报表图表都会忽略的细节——图表画出来了但一眼看去数值变化趋势被坐标尺缩放扭曲了。第三个是导出与报告集成。TeeChart 的导出不像你想的只能用截图。代码里调用Chart1.Export.PNG.SaveToFile可以输出高清 PNGExport.PDF能出矢量 PDF这在配合 FastReport VCL 做报表时特别有用。我看到过有人在写上位机时用屏幕截图函数截图表区域分辨率一放大就糊其实一行代码就能导出高清图。// 在 VCL 程序里导出高清 PNG 和 PDF Chart1.Export.PNG.Width : 1920; Chart1.Export.PNG.Height : 1080; Chart1.Export.PNG.SaveToFile(report_20240312.png); Chart1.Export.PDF.Width : 1200; Chart1.Export.PDF.Height : 800; Chart1.Export.PDF.SaveToFile(report_20240312.pdf);导出 PNG 时显式指定Width和Height很关键TeeChart 的Export.PNG默认按屏幕像素输出不给尺寸的话在高 DPI 显示器上截出来的图可能只有 800 宽。PDF 导出则适合做矢量报告打印出来不失真。我最后再唠叨一个习惯每升一次 Delphi 大版本或者换一台开发机我都会拿第 4 章那个最小图表程序先跑一遍确认版本常量能正确解析再做正事。这个习惯帮我避开了不少“控件怎么突然不见了”的玄学问题——大部分所谓玄学都是版本串味了。希望这篇笔记能帮你在 Delphi 12.3 的图表开发路上少踩几个坑把时间花在数据本身而不是控件上。本文还有配套的精品资源点击获取
返回列表