十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Delphi 12 Athens安装TeeChart Pro VCL FMX完整指南

Delphi 12 Athens安装TeeChart Pro VCL  FMX完整指南 简介数据可视化是现代应用程序开发中的关键环节尤其对于桌面和跨平台应用图表控件直接影响用户体验与开发效率。在Delphi生态中TeeChart Pro作为老牌商业图表解决方案凭借丰富的图表类型和灵活的定制能力长期被用于金融分析、项目管理等复杂业务场景。它同时支持VCL与FMX两大框架允许开发者以几乎一致的API在Windows、macOS、Android等平台构建图形界面大大降低了跨平台迁移的维护成本。然而在Delphi 12 Athens版本升级后内置的TeeChart Lite版往往无法满足高级功能需求完整商业版TeeChart Pro的编译安装便成为许多工程师面临的现实问题。内容涵盖环境准备、源码包结构、编译安装流程与常见错误排查完整呈现了在Delphi 12.3上部署TeeChart Pro VCL FMX Full Source的实操过程助力开发者快速构建可用的图表开发环境。 在Delphi圈子里TeeChart几乎是和Delphi绑定最深的第三方图表控件了。从早期的Delphi 5开始它就作为标配出现在安装光盘里一直到今天IDE里依然内置着TeeChart的标准版。但到了Delphi 12 Athens这一代如果你接手的是老项目或者需要在VCL和FMX两个框架同时出图就会发现内置的TeeChart Lite版本经常不够用这时候就得请出Steema的完整商业版——TeeChart Pro。我这次在Delphi 12.3上安装的就是Steema TeeChart Pro VCL FMX v2023.38带Full Source完整源码的版本。这篇文章把整个流程和期间踩过的坑记录下来给同样在Delphi 12 Athens上折腾图表的同学做个参考。1. 项目概述拆解这份TeeChart Pro源码包1.1 Delphi 12 Athens版本升级时的“控件魔咒”做Delphi开发的老哥们应该都有体会每一个大版本迭代最让人头疼的不是语言本身的变化而是项目里那一堆第三方控件的兼容性。Delphi 12 Athens这代IDE发布之后我周围不少朋友升级工程时都遇到过同一个问题打开老项目提示某个包找不到、某个组件无法创建实例、或者编译时直接报“Unit xxx was compiled with a different version of xxx”。这些问题的根源基本都是第三方控件没有跟上新IDE的版本。TeeChart在这里还算是情况比较好的。因为Embarcadero官方一直和Steema有合作IDE本身会带一套基础版的TeeChartLite版很多老项目直接用它做图形展示也没啥大问题。但真到业务复杂的时候Lite版就不够看了比如金融K线、甘特图、股市图、3D表面图、多层轴、多序列叠加这些功能Lite版本要么没有要么做出来性能很难看。这时候靠的就是TeeChart Pro这种完整商业版。而它在新IDE上能不能顺利编译安装就是升级路上的第一道坎。1.2 v2023.38源码包里的真实内容这份压缩包名字里包含的几个关键词每个都值得拿出来说一下Delphi 12.3 / Delphi 12 Athens说明这个版本是明确匹配Delphi 12系列的。虽然TeeChart的代码相对稳定但 IDE 每次更新组件面板、RTL 的接口、编译器版本号都会变源码包必须重新编译才能被新 IDE 正确加载。VCL FMXVCL是Windows原生控件库FMX是FireMonkey跨平台框架。这个包里两套框架的源码都有也就是说它既能服务传统的Windows桌面项目也能用在Android、iOS、macOS、Linux的FMX项目里。Full Source不是只给bin、不给源码的试用版而是拿到手就是一整套可以修改、重新编译的源码。对Delphi开发者来说Full Source意味着你可以自己调试控件内部逻辑也可以按需裁剪不依赖官方编译器的版本。v2023.38Steema的版本号一直按年份递增这个版本对应的是2023年的第38个发布迭代。版本号本身不是越高越好重要的是和你的IDE版本匹配。所以这份包的实际价值不是“装完就行”而是“装好之后它能成为你自己的控件库的一部分”后面做定制开发时底子是完整的。2. 选型解析为什么非TeeChart Pro不可2.1 在VCL和FMX之间来回横跳很多老Delphi程序员是从VCL一路用过来的Windows上做桌面管理系统VCL确实高效稳定。但最近几年移动端和跨平台桌面需求越来越多FMX就成了绕不开的选择。问题在于很多图表控件只做了一套VCL你要在FMX里用就只能换工具。但业务端画图表的逻辑是现成的换控件等于重写一遍数据绑定和画面布局这成本谁都受不了。TeeChart Pro让我最满意的一点就是它的API设计在VCL和FMX两套框架下保持了高度一致。同一个套路在VCL里是Chart1.Series[0].Add(X, Y, , clRed)在FMX里也差不多的写法。虽然底层绘制机制完全不同VCL走GDI/GDIFMX走GPU加速的Canvas但我的业务代码基本不用动只是改一下控件引用和窗体类型。这就是选型时最值钱的地方——跨平台的迁移成本被压得非常低。2.2 Full Source版本的真实取舍带Full Source的控件在业内评价两极分化。喜欢的人觉得“源码在手天下我有”不喜欢的人觉得“源码包编译配置太麻烦不如装个编译好的bin”。我的观点是Delphi生态里做图形类控件有源码绝对是加分项。因为图表的定制场景太多了官方给的默认配色、字体渲染、鼠标交互模式到你手里的真实业务里往往都要微调。没有源码的时候你想改一个坐标轴标签的渲染逻辑只能靠控件提供的官方事件硬凑有了源码你可以直接看着TeeChart的绘制源码找到DrawAxisLabel这类函数改完重新编译就能看到效果。这在图表类控件里属于“我就是要抄它底层逻辑”级别的便利。当然风险也有。源码包编译过程对新手不算友好如果路径设置不对、缺依赖、IDE库路径混乱就会编译失败。但这些问题都有规律后面我会把整个过程捋一遍按步骤来基本不会出岔子。2.3 商业授权边界提醒这里必须提醒一句TeeChart Pro是商业软件不是免费开源的。网上很多地方流传的“Full Source”资源在商业项目里使用前一定要确认授权方式。个人学习、评估阶段用没问题但如果你在公司项目里要分发、要商用建议去Steema官网搞清楚Licensing条款别因为一时图方便后面被追授权费。开源的LCULibraries for Compiler Utilities类库也不是万能挡箭牌商业合规这块自己心里要有数。3. 环境准备与安装全流程实录3.1 安装前的三项必要检查不管是什么控件安装前我习惯先做三件事磨刀不误砍柴工检查IDE版本打开Delphi 12.3点“Help → About”确认主版本号。TeeChart源码包一般会区分Delphi 12和Delphi 11对应的分支装错了编译会直接报版本不匹配。规划解压路径解压路径里必须纯英文不能有空格也不能有中文。Delphi的老毛病安装路径带中文或空格经常让一些组件在设计期加载时出诡异问题。我一般放在D:\Libs\TeeChartPro202338这类干净的路径。确认第三方依赖TeeChart Pro本身不依赖太多第三方库但它的demo和demos需要额外的一些包这个不影响正式使用。在动手编译之前最好把IDE的Library路径设置好因为后面编译生成的*.bpl文件要能被IDE找到。3.2 编译安装的完整步骤下面是我在Delphi 12.3上按照完整流程操作下来的记录基本上一遍过。第一步解压源码包用7-Zip解压TeeChart Pro v2023.38 Full Source.7z到指定目录。解压后你会看到很明显的目录结构类似Sources VCL Compiler Delphi12 TeeChartProVCL.dpk DclTeeChartProVCL.dpk FMX Compiler Delphi12 TeeChartProFMX.dpk DclTeeChartProFMX.dpk ...里面通常还包含Compiled文件夹、Demo文件夹和Help文件夹。Compiled里一般会有预先编译好的BPL文件但强烈建议自己重新编译因为IDE的Build版本可能不同直接用预编译的BPL很容易出现“不能加载包版本不符”的错误。第二步编译并安装运行时包Runtime Packages打开Delphi 12.3通过File → Open Project打开TeeChartProVCL.dpk。在工程管理器里右键这个项目选Compile。编译生成的是运行时包不带Dcl前缀也就是设计期不需要的那个包。如果编译过程没有报错就直接Install安装成功之后组件面板里会出现TeeChart相关的组件页。这里需要注意一个细节先编译运行时包再编译设计时包。DclTeeChartProVCL.dpk是设计期包它在IDE里负责往组件面板注册组件、弹出属性编辑器。如果你只装设计时包不装运行时包编译运行时会找不到运行库项目根本编译不过去。两者是配套关系缺一不可。第三步编译并安装设计时包同样流程打开DclTeeChartProVCL.dpk先Compile再Install。安装时IDE会有短暂假死状态多等几秒就好。安装完成后打开组件面板在TeeChart 9或类似页签下应该能看到TChart、TChartEdit、TChartPreviewer等一堆组件。如果名字带TeeChart Pro字样说明这安装的确实是Pro版而不是Lite版。第四步配置搜索路径在Tools → Options → Delphi Options → Library里把TeeChart的Sources路径加进去。我一般会加D:\Libs\TeeChartPro202338\Sources\VCLD:\Libs\TeeChartPro202338\Sources\FMX还有它内部可能存在的Compiled\Delphi12路径这个路径配置很重要。如果你不把Sources加到搜索路径里后续新建工程引用TeeChart相关单元时IDE找不到VCLTee.TeeProcs等单元就会编译报错。我在很多新手机器上都见过这个问题明明包安装成功了但一用就报“File not found: VCLTee.TeeProcs”原因就在这里。第五步重新编译老项目以上都完成后再打开之前报错的老项目等IDE重新编译一遍。如果项目代码里用的是标准TeeChart组件理论上这时候已经完全能正常运行了。如果还有残留的报错大概率是工程里引用了不同版本的路径比如旧的BPL路径还在项目搜索路径里去Project Options里把旧的搜索路径清理掉就行。3.3 编译过程中的常见报错与处理我在安装时遇到过几个比较典型的编译错误整理了排查方法放在后面常见问题章节里一起说这里先提一个最容易踩的注意64位系统下Delphi安装的是32位IDE默认的BPL路径是C:\Users\Public\Documents\Embarcadero\Studio\23.0\Bpl23.0对应Delphi 12。有些第三方安装脚本会往这个目录放BPL但有时也会放错到Windows系统目录里去。如果编译时提示“无法找到包xxx”先检查一下BPL文件有没有存在于正确路径。4. 在Delphi 12工程中使用TeeChart4.1 5分钟画出第一张折线图安装完成后最重要的事是验证一下控件真的能用。我先拿一个最简单的DEMO来说。新建一个VCL Application在窗体上放一个TChart组件再放一个TButton。双击Button的OnClick写下面的代码procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin // 先清空所有序列 Chart1.SeriesList.Clear; // 创建一个折线序列 with Chart1.AddSeries(TLineSeries) do begin Title : 销售趋势; for I : 0 to 20 do Add(I, Random * 100, , clBlue); end; end;在Delphi 12.3里这一步只要代码编辑器和窗体设计器正常联动运行后点击按钮就能看到一条随机波动的蓝线。这期间没有任何编译错误说明控件安装完美。如果要换FMX项目流程几乎一样新建Multi-Device Application放TChart组件在OnClick事件里写几乎相同的代码。FMX下的TChart会有一些平台差异但API层面的体验是一致的这也是我选择它的核心理由。4.2 常用图表类型与业务场景对照我用TeeChart这几年真正高频使用的图表类型不是很多但每一个都有自己适合的场景。简单列个表图表类型典型应用场景关键参数TLineSeries趋势分析、指标波动X轴可为数值或日期LinePen控制线宽颜色TAreaSeries面积堆叠、占比变化AreaChart属性控制堆叠模式TBarSeries分类对比、月度统计BarWidthPercent、MultiBar控制柱宽与分组TPieSeries占比、收入构成RotationAngle控制扇区起始角度TFastLineSeries大数据量实时曲线不保留点位DrawAllPoints控制性能TGanttSeries项目排期、任务甘特图用AddGantt添加起止时间TCandleSeries股票K线、金融分析CandleStyle控制阳线阴线颜色实际项目里我用得最多的除了折线、柱状就是TGanttSeries。项目管理软件里每个任务的起始时间和结束时间用甘特图展示最直观而TeeChart这一套实现比自己在Canvas上硬画省太多了。4.3 坐标轴、图例与数据交互的配置细节画图不难难的是把图做得让业务方满意。这里有几个我总结的经验坐标轴标题和格式with Chart1.Axes.Left do begin Title.Caption : 销售额万元; LabelsFormat.Format : #,##0; end; with Chart1.Axes.Bottom do begin Title.Caption : 月份; LabelsFormat.Format : yyyy-MM; end;图例配置TeeChart9以上版本可以在IDE里通过TChartEdit直接拖拽图例位置也可以代码设置Chart1.Legend.Alignment : laBottom; Chart1.Legend.Visible : True;鼠标悬停提示默认的鼠标悬停提示不够友好建议用OnMouseMove事件或OnClickSeries事件手动弹提示。比如procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var LIndex: Integer; LValue: Double; begin if Chart1.Series[0].Clicked(X, Y, LIndex) then begin LValue : Chart1.Series[0].YValue[LIndex]; Chart1.Hint : Format(当前值%.2f, [LValue]); end else Chart1.Hint : ; end;这些细节虽然不复杂但真正能把图表做“活”、做“顺手”都是靠这些交互配置堆起来的。5. 常见问题与排查技巧实录5.1 每次进入IDE都丢失控件放置后保存再打开又没了这个问题的出现频率在Delphi第三方控件里排名第一。原因基本就两个一是设计时包没有正确安装。如果某个控件只有运行时包进了项目没往IDE的组件面板里注册那工程里引用的控件类名是能认识但窗体文件里的对象在IDE设计器里无法实例化于是显示成“丢失”的状态。解决办法就是回到第3步确保DclTeeChartProVCL.dpk安装成功。二是设计时包和运行时包版本不匹配。比如你机器上同时装了TeeChart的Lite版和Pro版或者装了两个不同年份的TeeChart版本IDE就会出现包冲突加载窗体时随机丢失某个包里的控件。排查办法是打开Component → Install Packages关闭掉多余的TeeChart相关包只保留对应版本的。我遇到过一次诡异情况就是打开项目管理器时IDE少识别了一个运行时包但窗体还能显示一保存再打开就全部变成灰框。最后发现是BPL文件被注册到了Windows\System32下而IDE的Library路径里引的是公共文档下的BPL两边同名冲突。清理掉System32下的旧BPL后彻底解决。5.2 FMX中图表字体和缩放问题FMX版的TeeChart在Windows桌面调试时一切正常到Android或Linux上就出幺蛾子最常见的两个问题字体丢失FMX的跨平台字体处理依赖各平台字体栈默认图表标题字体在某些Linux桌面环境或Android设备上会显示成“方块”。解决办法是把图表中用到字体Title、AxisLabels、Legend统一设置为平台通用字体。在Android上我一般用TeeFont.Name : Roboto在Linux上会用Sans。高分屏缩放错位FMX在Windows上默认支持高DPI缩放但TeeChart的坐标轴标签和marker在缩放比例不是100%时容易出现位置偏移。这个问题在v2023.38版本里已经比老版本好很多了但还是建议在TChart的OnBeforeDrawChart事件里手动刷新一下布局procedure TForm1.Chart1BeforeDrawChart(Sender: TObject); begin Chart1.AutoRepaint : False; Chart1.LeftAxis.Automatic : True; Chart1.BottomAxis.Automatic : True; Chart1.AutoRepaint : True; end;5.3 大数据量图表卡顿与内存优化TeeChart画几千个点很轻松但到百万级数据点时就需要做优化了。我的实践经验是优先用TFastLineSeriesFastLine不做点位存储和命中检测只做线的绘制性能远超普通TLineSeries。设置DownSamplingTeeChart自带降采样功能Chart1.Series[0].DownSamplingMethod可以设置为dsMinMax这个模式下数据点过多时TeeChart会按区间取MinMax值来画线在保留波形特征的同时大幅减少绘制开销。减少实时刷新频率实时滚动曲线不需要每次来数据都重绘整条曲线。可以设置Chart1.AutoRepaint : False把数据追加后手动调用Draw方法控制刷新节奏。代码如下Chart1.AutoRepaint : False; try with Chart1.Series[0] as TFastLineSeries do begin Add(Time, Value, , clRed); if Count 10000 then Delete(0); // 窗口滑动只保留最近一万个点 end; finally Chart1.AutoRepaint : True; Chart1.Draw; end;这样处理下来实时监控画面的CPU占用可以从20%以上降到5%以内效果非常明显。5.4 编译时提示“Fatal: File not found”的快速定位思路这个报错在源码包安装后第一次使用新工程时经常遇到。我的排查顺序是先看报错缺的是哪个.pas文件名比如VCLTee.TeeProcs。在源码目录里用Everything或Windows资源管理器搜一下这个文件是否存在。如果存在说明当前工程搜索路径没包含这个目录。打开Project → Options → Delphi Compiler → Search path把TeeChart的Sources\VCL路径加进去。如果加了路径还报错看文件是否被其他路径下的同名文件拦截。用Ctrl鼠标左键跳转到该单元定义确认跳转的目标是否在TeeChart解压目录里。大部分情况的根源就是路径配置混乱梳理清楚就好了。6. 关于这套源码的后续扩展TeeChart Pro装好之后不只是能用现成组件。因为带源码你可以直接修改TeeChart自带的设计器甚至扩展序列类型。我见过有人基于TeeChart源码做了一套内部专用的业绩看板控件给序列加了自己的鼠标拖拽逻辑效果非常好。如果你想在控件层面做定制这条路的成本比换控件低得多。另外TeeChart的Demo工程非常多几乎覆盖了所有图表类型我强烈建议把Demo目录里的各个示例跑一遍。新手学图表参数的设置与其看文档不如看看这些Demo的运行时效果再对照代码里改了几个关键属性理解效率完全不同。还有一个小技巧v2023.38的TeeChart在保存窗体时会把图表配置序列化成二进制或文本格式视设置而定。如果多人协作开发建议在属性面板里把TChart的about信息统一记录好这样版本管理时窗体文件的冲突概率会小一点。根据我个人这段时间的使用体验TeeChart Pro在Delphi 12 Athens上几乎是一站式图表方案VCL和FMX两套框架同时可用真的省掉了很多来回切换控件的麻烦。最直观的收益就是老项目升级时不用担心图表控件挂掉新项目做跨平台移动端时也不需要另学一套图表API。如果你正在折腾Delphi 12.3的控件环境这份TeeChart Pro源码包值得花一点时间装好它。本文还有配套的精品资源点击获取
返回列表