Delphi XE10.2 安装 TMS Component Pack v8.3.4.0 详细指南
简介:本资源为Delphi XE10.2 Tokyo平台专用的TMS Component Pack v8.3.4.0完整开发组件包,面向中高级Windows桌面及跨平台(Android/iOS)Delphi开发者,解决UI构建、数据绑定、图表可视化、数据库导航等高频开发需求。压缩包含2000个文件,主体为1673个Pascal源码(.pas)、488个窗体定义(.dfm)、384个工程文件(.dpr/.dproj)、1039个编译单元(.dcu)及大量资源文件(.res/.bmp/.png),覆盖VCL与FireMonkey双框架适配,支持深度定制与源码级调试。资源大小103.4MB,结构清晰,内置compilexe10.bat等自动化编译脚本,可一键适配XE10.2环境并快速验证组件兼容性。目前已有1206人学习下载,用户可直接复用TAdvGrid、TMS FlexGrid、TMS Charts、TMS DB Navigator等成熟控件,获取完整源码、多语言资源(含English/Spanish/French/German等.aff词典文件)及配套示例工程,显著提升界面开发效率与项目交付质量。
1. Delphi 控件安装翻车现场:TMS Component Pack v8.3.4.0 + XE10.2 不是“复制粘贴就能用”,而是“路径错一位、注册报三行、设计器全灰”的玄学现场
你刚在某高校实验室接手一个遗留的 Delphi 桌面系统维护任务,需求是给老界面加个带 Excel 导出的表格控件——查了一圈,TMS Component Pack 是业内公认最稳的商业组件集之一,尤其对 XE10.2 这个仍在大量产线项目中服役的版本支持成熟。但别急着点下载就开干:v8.3.4.0 这个看似普通的补丁号,实则是 TMS 官方为 XE10.2 专门打的“兼容性补丁包”,它不兼容 XE10.1 或 XE10.3,也不向下兼容 D10.1(即 Seattle),更不会自动识别你 IDE 的 BPL 输出路径。我亲眼见过 A 同学把包解压到C:\Program Files\Embarcadero\Studio\19.0\下,结果 IDE 启动时直接弹窗报“找不到 TMSAdvGrid.bpl”,而真正该放的位置其实是C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\——注意,是Public\Documents,不是Program Files,也不是My Documents。这不是路径洁癖,是 Delphi IDE 加载 BPL 的硬编码逻辑。这套环境适合正在维护/升级 XE10.2 项目的开发者、需要快速集成高级 UI 控件(如带主题切换的 TreeView、支持 PDF 导出的 RichView)的桌面应用工程师,以及被“组件注册失败”卡住半天、反复重装 IDE 的崩溃边缘人。
2. 环境确认与安装包结构解析:先看清 v8.3.4.0 里到底塞了什么,再决定往哪塞
TMS Component Pack v8.3.4.0 并非单个安装程序,而是一套按功能模块拆分的源码+编译库混合包。它不提供一键式 Setup.exe,官方刻意保留手动集成流程,目的是让开发者明确知道每个 BPL 文件的依赖链和 IDE 版本绑定关系。你拿到的压缩包解压后,典型结构如下(以 Windows 64 位 XE10.2 为例):
TMS_Component_Pack_v8.3.4.0_XE10.2\ ├── Source\ # 所有控件的 Pascal 源码(.pas),含完整注释和示例 ├── Lib\ # 编译好的二进制库,按平台/IDE 版本细分 │ └── Win32\ # 注意:XE10.2 默认生成 Win32 应用,Win64 需额外配置 │ └── 19.0\ # Embarcadero 内部版本号:19.0 = XE10.2(不是 10.2!) │ ├── dcltms*.bpl # 设计时包(Design-time BPL),必须注册到 IDE │ ├── tms*.bpl # 运行时包(Runtime BPL),供你的 EXE 动态链接 │ └── tms*.dcu # 已编译单元(.dcu),供无源码部署时引用 ├── Demos\ # 可直接打开的 .dpr 示例工程,覆盖 90% 常用场景 ├── Docs\ # CHM 格式帮助文档(含 API 索引和属性速查表) └── Install.bat # 官方提供的批处理脚本(但默认不执行注册,仅拷贝)提示:
19.0是关键标识。XE10.2 的内部代号是19.0,XE10.1 是18.0,XE10.3 是20.0。所有路径、注册表项、BPL 文件名中的190或19.0都不可替换为10.2,否则 IDE 将完全无视该包。
2.1 确认本地 XE10.2 的真实安装路径与版本号
别信你记的路径,也别信注册表里模糊的 “Delphi 10.2”,必须用 IDE 自身输出的权威信息:
- 启动 XE10.2 IDE(确保是完整版,非 Community Edition);
- 菜单栏 →Help → About;
- 在弹出窗口中找到"Version Info"区域,确认显示为:
Embarcadero® RAD Studio 10.2 Version 25.0.29807.2784 (Update 2) Platform: Windows 64-bit注意:下方小字会写
Build 19.0.29807.2784—— 这里的19.0就是你所有后续操作的黄金坐标。如果显示18.0或20.0,说明你打开的不是 XE10.2,立刻退出并检查快捷方式指向。
2.2 解压包到安全位置:为什么不能直接解压到 Program Files?
Program Files目录在 Windows 10/11 上默认启用 UAC 保护,IDE 在注册设计时包(dcltms*.bpl)时需要向该目录写入.tds(类型库描述)文件,而普通用户权限下会被拦截,导致注册“成功”但设计器中控件仍灰色。正确做法是:
# 推荐路径(无空格、无权限限制、符合 Delphi 社区惯例) C:\TMS\v8.3.4.0_XE10.2\ # 或使用用户文档目录(更稳妥) C:\Users\%USERNAME%\Documents\TMS\v8.3.4.0_XE10.2\逻辑说明:Delphi IDE 在加载设计时包时,会优先搜索
$(BDSCOMMONDIR)\Components\和$(BDSCOMMONDIR)\Bpl\,而$(BDSCOMMONDIR)默认指向C:\Users\Public\Documents\Embarcadero\Studio\19.0\。将源码和库放在自定义路径,是为了避免污染系统目录,且便于多版本共存(例如同时维护 XE10.2 和 XE11 的项目)。
2.3 关键路径对照表:XE10.2 的四个核心目录必须对齐
| 路径类型 | 标准路径(XE10.2) | 用途 | 是否必须存在 |
|---|---|---|---|
| IDE 公共目录 | C:\Users\Public\Documents\Embarcadero\Studio\19.0\ | 存放所有 IDE 共享资源(BPL、DCU、模板) | ✅ 必须存在,若不存在需手动创建 |
| 设计时包目录 | C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\ | 放置dcltms*.bpl,IDE 启动时自动加载 | ✅ 必须存在 |
| 运行时包目录 | C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\ | 放置tms*.bpl,你的 EXE 运行时动态链接 | ✅ 必须存在(可与设计时包同目录) |
| 源码搜索路径 | C:\Users\Public\Documents\Embarcadero\Studio\19.0\Source\ | IDE 编译时查找.pas的默认路径 | ⚠️ 可选,但建议创建并放入Source\ |
参数说明:
$(BDSCOMMONDIR)是 Delphi 内置宏,IDE 所有版本均识别。不要试图修改注册表去硬编码这个路径,IDE 启动时会严格校验其合法性。若你发现Public\Documents\Embarcadero\Studio\19.0\不存在,请立即用管理员权限新建该完整路径(注意:19.0是文件夹名,不是版本号字符串)。
3. 分步安装:从解压到 IDE 注册,每一步都带验证点
安装不是“解压→双击注册→完事”,而是三段式流水线:准备环境 → 注册设计时包 → 配置项目引用。漏掉任一环节,设计器就变灰色,编译就报Unit not found。
3.1 准备环境:创建标准目录结构并拷贝核心文件
打开命令提示符(无需管理员权限),执行以下步骤(请逐行复制,注意路径中的19.0):
# 1. 创建 IDE 公共目录结构(若不存在) mkdir "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl" mkdir "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Source" # 2. 假设你已将 TMS 包解压到 C:\TMS\v8.3.4.0_XE10.2\ # 将设计时包(dcltms*.bpl)拷贝到 Bpl 目录 copy "C:\TMS\v8.3.4.0_XE10.2\Lib\Win32\19.0\dcltms*.bpl" "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\" # 3. 将运行时包(tms*.bpl)也拷贝过去(同一目录即可) copy "C:\TMS\v8.3.4.0_XE10.2\Lib\Win32\19.0\tms*.bpl" "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\" # 4. 将源码(.pas)拷贝到 Source 目录,供编译时查找 xcopy "C:\TMS\v8.3.4.0_XE10.2\Source\*" "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Source\" /E /I /Y逻辑说明:
/E表示复制所有子目录(即使为空),/I表示如果目标不存在则假定为目录,/Y表示覆盖时不提示。这四步完成后,Bpl\目录下应有约 30+ 个.bpl文件(如dcltmsadvgrid190.bpl,tmsadvgrid190.bpl),Source\下应有TMSAdvGrid.pas,TMSFlatControls.pas等数百个文件。这是 IDE 能识别组件的基础。
3.2 注册设计时包:用 IDE 自带工具,而非第三方注册器
TMS 官方强烈反对使用regsvr32或第三方 BPL 注册工具,因为设计时包需要与 IDE 的 VCL 架构深度集成,必须通过 IDE 的原生机制。正确流程:
- 关闭所有 XE10.2 IDE 实例;
- 重新启动 XE10.2 IDE;
- 菜单栏 →Component → Install Packages…;
- 在弹出窗口中点击Add…;
- 浏览到
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\; - 多选所有
dcltms*.bpl文件(不要选tms*.bpl!那是运行时包); - 点击Open,然后点击OK。
参数说明:IDE 会逐个加载这些
.bpl,并在状态栏显示 “Loading dcltmsadvgrid190.bpl…”。若某一个加载失败,IDE 会弹窗报错(如 “Invalid package”),此时立即停止,不要点 OK。常见失败原因是 BPL 版本与 IDE 不匹配(比如误用了 XE10.3 的包),或文件损坏。成功后,Install Packages窗口的列表中会出现所有dcltms*条目,且左侧复选框为勾选状态。
3.3 验证设计器是否激活:看 Palette 和 Object Inspector
注册完成后,不要急着建新项目,先做两件事:
检查 Palette(组件面板):
查看右下角组件面板,应出现多个新页签,如TMS VCL UI、TMS VCL Grids、TMS VCL Editors。展开TMS VCL UI,里面应有TMSAdvPanel、TMSFlatButton等控件图标。如果页签存在但图标全为灰色,说明注册未生效;如果页签根本没出现,说明dcltms*.bpl未被加载。拖一个控件到空白窗体,检查 Object Inspector(对象检查器):
拖TMSAdvGrid到窗体,选中它,在 Object Inspector 中应看到大量以Adv开头的属性(如AdvOptions、AdvAppearance)。如果只看到Name、Tag等基础属性,说明.dcu或源码路径未生效,IDE 编译时找不到类定义。
验证技巧:右键点击 Palette 页签 →Customize…→ 确保
TMS VCL *所有页签的复选框已勾选。这是很多人忽略的“最后开关”。
4. 项目级配置:让你的工程能编译、能运行、能调试
注册完设计时包,只是让 IDE 认识组件;要让你的.dpr工程真正调用 TMS 控件,还需在项目层面配置三个关键路径。这步漏掉,编译时必报F2063 Could not find unit 'TMSAdvGrid'。
4.1 配置项目搜索路径(Search Path):告诉编译器去哪找 .pas 和 .dcu
- 在 IDE 中打开你的目标工程(
.dproj); - 菜单栏 →Project → Options…;
- 左侧树形菜单展开 →Delphi Compiler → Search Path;
- 在右侧
Search path输入框中,追加以下两个路径(用英文分号;分隔):
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Source;C:\TMS\v8.3.4.0_XE10.2\Lib\Win32\19.0逻辑说明:第一个路径指向源码(
.pas),编译器优先在此查找;第二个路径指向已编译单元(.dcu),当源码不可用时作为备选。顺序很重要:若你把.dcu路径放前面,而.dcu版本过旧,编译器就不会去读新版.pas,导致行为不一致。务必确认路径中19.0与你的 IDE 版本严格一致。
4.2 配置运行时包依赖(Runtime Packages):避免 BPL 找不到的 DLL Hell
XE10.2 默认使用静态链接(即把所有代码编译进 EXE),但 TMS 组件庞大,静态链接会导致 EXE 体积暴增(>50MB)且无法热更新。推荐启用运行时包:
- Project → Options… → Packages → Runtime Packages;
- 勾选"Link with runtime packages";
- 在
Runtime packages输入框中,追加以下运行时包名(逗号分隔,不带扩展名):
tmsadvgrid190,tmsadvstringgrid190,tmsflatcontrols190,tmspack190参数说明:包名必须与
Bpl\目录下的.bpl文件名前缀完全一致(tmsadvgrid190.bpl→tmsadvgrid190)。IDE 编译时会自动生成requires子句,并在 EXE 启动时动态加载这些.bpl。若你只用TMSAdvGrid,只需填tmsadvgrid190;若还用了TMSFlatButton,则必须加上tmsflatcontrols190。漏掉任一依赖,运行时会弹窗:“The procedure entry point … could not be located in the dynamic link library tmsadvgrid190.bpl”。
4.3 部署时的 BPL 分发策略:EXE 同目录 or 系统 PATH?
你的 EXE 运行时需要.bpl,但客户机器上没有C:\Users\Public\Documents\…。解决方案只有两个:
方案 A(推荐):BPL 与 EXE 同目录
将C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\下所有tms*.bpl复制到你的工程Win32\Debug\或Win32\Release\目录下。IDE 默认会把 EXE 生成到此处,客户双击即可运行。方案 B(企业级):添加到系统 PATH
在安装程序中执行:setx PATH "%PATH%;C:\YourApp\Bpl"。但需管理员权限,且易引发冲突,不推荐。
血泪经验:某公司发布安装包时忘了打包
tmspack190.bpl(它是所有 TMS 控件的公共基础包),导致客户启动后主窗体一片空白,日志只有一行Access violation at address...。后来发现是TMSBaseControl类构造失败。从此我养成了一个习惯:发布前用Dependency Walker扫描 EXE,确认所有tms*.bpl均被声明为依赖。
5. 避坑指南:TMS Component Pack v8.3.4.0 + XE10.2 的五大经典翻车点
安装过程看似线性,实则布满隐性陷阱。以下是我在某跨平台系统迁移中踩过的、被问得最多的问题,按发生频率排序:
5.1 现象:IDE 启动后 Palette 中 TMS 页签存在,但所有控件图标灰色,拖拽无反应
原因:dcltms*.bpl已加载,但对应的tms*.bpl(运行时包)缺失或版本不匹配。设计时包依赖运行时包的导出符号,若tmsadvgrid190.bpl未就位,dcltmsadvgrid190.bpl无法完成初始化。
解决:确认C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\下存在tmsadvgrid190.bpl,且文件大小 > 2MB(小于 1MB 很可能是损坏包)。用记事本打开该.bpl,开头应有MZ字样(Windows PE 文件头)。
5.2 现象:编译时报错F2063 Could not find unit 'TMSAdvGrid',但 Object Inspector 中该控件属性正常显示
原因:项目Search Path中未包含源码路径,或路径中19.0写成了10.2。IDE 设计器用的是注册时加载的.bpl,而编译器用的是Search Path查找.pas/.dcu,二者路径来源不同。
解决:在Project → Options → Delphi Compiler → Search Path中,删除所有含10.2的路径,只保留19.0。然后点击右下角"Restore Defaults"重置,再手动添加正确路径。
5.3 现象:运行时弹窗报The ordinal 12345 could not be located in tmsadvgrid190.bpl
原因:tmsadvgrid190.bpl被其他版本(如 v8.2.0 或 XE10.3 的 v8.4.0)覆盖。.bpl是二进制文件,不同版本间导出函数序号(ordinal)不兼容。
解决:用sigcheck -a "C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\tmsadvgrid190.bpl"(Sysinternals 工具)查看文件签名和时间戳;对比C:\TMS\v8.3.4.0_XE10.2\Lib\Win32\19.0\下原始文件的 MD5,不一致则重新拷贝。
5.4 现象:在高 DPI 显示器(如 4K 屏)上,TMS 控件文字模糊、布局错乱
原因:XE10.2 默认未启用 Per-Monitor DPI Awareness,而 TMS v8.3.4.0 的渲染逻辑依赖系统 DPI 设置。
解决:在项目Project → Options → Application → Manifest file中,勾选"Enable high DPI awareness";或手动编辑.manifest文件,添加<dpiAware>true/PM</dpiAware>。重启 IDE 后重新编译。
5.5 现象:安装后 IDE 启动变慢,甚至卡死在 Splash Screen
原因:Install Packages中勾选了过多dcltms*.bpl,尤其是dcltmswebbrowser190.bpl(基于 IE 内核)在某些 Windows 10 版本上会触发 COM 初始化阻塞。
解决:进入Component → Install Packages…,取消勾选暂不用的包(如dcltmswebbrowser190、dcltmscloud190),只保留当前项目必需的(如dcltmsadvgrid190、dcltmsflatcontrols190)。IDE 启动速度可从 45 秒降至 8 秒。
注意:以上所有问题,90% 都能在
Event Log(View → Tool Windows → Event Log)中找到线索。IDE 加载失败时,这里会记录Error loading package ...的详细堆栈,比弹窗信息更有价值。
6. 验证跑通:用一个 5 行代码的 Demo 工程,确认从设计、编译到运行全链路无断点
装完不是终点,验证才是闭环。下面这个极简 Demo,能在 2 分钟内跑通全部环节,且暴露 95% 的配置错误。
6.1 创建最小可验证工程(MVE)
- File → New → VCL Forms Application - Delphi;
- 保存工程到新文件夹(如
C:\TMS_Test\); - 在窗体上拖一个
TMSAdvGrid(来自TMS VCL Grids页签); - 双击窗体,进入
OnCreate事件,粘贴以下代码:
procedure TForm1.FormCreate(Sender: TObject); begin // 1. 初始化网格(验证运行时包加载) AdvGrid1.RowCount := 3; AdvGrid1.ColCount := 2; // 2. 填充数据(验证单元引用正确) AdvGrid1.Cells[0, 0] := 'Name'; AdvGrid1.Cells[1, 0] := 'Age'; AdvGrid1.Cells[0, 1] := 'Alice'; AdvGrid1.Cells[1, 1] := '28'; // 3. 启用主题(验证 TMS 主题引擎) AdvGrid1.AdvAppearance.HeaderFont.Color := clRed; end;- Project → Options → Delphi Compiler → Search Path,添加:
C:\Users\Public\Documents\Embarcadero\Studio\19.0\Source;C:\TMS\v8.3.4.0_XE10.2\Lib\Win32\19.0 - Project → Options → Packages → Runtime Packages,勾选
Link with runtime packages,填入:tmsadvgrid190,tmspack190
6.2 编译 & 运行:三阶段验证表
| 阶段 | 预期现象 | 失败含义 | 快速定位方法 |
|---|---|---|---|
| 编译(Ctrl+F9) | 输出窗口显示Success,无F2063错误 | Search Path错误或源码缺失 | 查看Output窗口末尾,找Fatal: F2063行 |
| 链接(Build) | 输出Linking Project1.dproj,无ILINK32错误 | 运行时包名拼写错误或缺失 | 查看Messages窗口,找Error: Unresolved external |
| 运行(F9) | 窗体弹出,网格显示两列三行,标题行红色字体 | tms*.bpl未就位或 DPI 问题 | 启动后立即看Event Log,找Exception或LoadLibrary失败 |
关键技巧:运行前,在 IDE 菜单栏右上角点击"Toggle Form/Unit"(或 Ctrl+Tab),确保当前焦点在
.pas文件上,而不是.dfm。否则 F9 会尝试编译.dfm,报错Cannot create form。
6.3 进阶验证:检查 BPL 加载日志(黑匣子取证)
IDE 不会告诉你tmsadvgrid190.bpl是何时、以何种方式加载的。但你可以用 Windows 自带工具抓取:
- 下载
ProcMon(Microsoft Sysinternals); - 过滤条件:
Process Nameisbds.exe,OperationisLoad Image; - 启动 IDE,观察
Path列中是否出现tmsadvgrid190.bpl; - 若出现
NAME NOT FOUND,说明路径错误;若出现SUCCESS但后续报错,说明 BPL 内部初始化失败。
这招曾帮我揪出一个隐藏 Bug:某次更新后,tmspack190.bpl被误删,但tmsadvgrid190.bpl加载成功,直到运行时调用TMSBaseControl.Create才崩溃——ProcMon日志里清晰显示tmspack190.bpl的NAME NOT FOUND,而其他包全是SUCCESS。
从那以后我每次给新同事配环境,都强制走一遍这个 5 行 Demo:先敲代码,再配路径,最后看 ProcMon 日志。不是为了炫技,是让每一个“已安装”都变成可验证的“已跑通”。希望帮到你。
本文还有配套的精品资源,点击获取