Delphi XE10.2 安装 TMS Component Pack v8.3.4.0 详细指南

发布时间:2026/10/24 20:10:54
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 自身输出的权威信息:

  1. 启动 XE10.2 IDE(确保是完整版,非 Community Edition);
  2. 菜单栏 →Help → About;
  3. 在弹出窗口中找到"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 的原生机制。正确流程:

  1. 关闭所有 XE10.2 IDE 实例;
  2. 重新启动 XE10.2 IDE;
  3. 菜单栏 →Component → Install Packages…;
  4. 在弹出窗口中点击Add…;
  5. 浏览到C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\;
  6. 多选所有dcltms*.bpl文件(不要选tms*.bpl!那是运行时包);
  7. 点击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

  1. 在 IDE 中打开你的目标工程(.dproj);
  2. 菜单栏 →Project → Options…;
  3. 左侧树形菜单展开 →Delphi Compiler → Search Path;
  4. 在右侧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)且无法热更新。推荐启用运行时包:

  1. Project → Options… → Packages → Runtime Packages;
  2. 勾选"Link with runtime packages";
  3. 在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)

  1. File → New → VCL Forms Application - Delphi;
  2. 保存工程到新文件夹(如C:\TMS_Test\);
  3. 在窗体上拖一个TMSAdvGrid(来自TMS VCL Grids页签);
  4. 双击窗体,进入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;
  1. 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
  2. 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 自带工具抓取:

  1. 下载ProcMon(Microsoft Sysinternals);
  2. 过滤条件:Process Nameisbds.exe,OperationisLoad Image;
  3. 启动 IDE,观察Path列中是否出现tmsadvgrid190.bpl;
  4. 若出现NAME NOT FOUND,说明路径错误;若出现SUCCESS但后续报错,说明 BPL 内部初始化失败。

这招曾帮我揪出一个隐藏 Bug:某次更新后,tmspack190.bpl被误删,但tmsadvgrid190.bpl加载成功,直到运行时调用TMSBaseControl.Create才崩溃——ProcMon日志里清晰显示tmspack190.bpl的NAME NOT FOUND,而其他包全是SUCCESS。

从那以后我每次给新同事配环境,都强制走一遍这个 5 行 Demo:先敲代码,再配路径,最后看 ProcMon 日志。不是为了炫技,是让每一个“已安装”都变成可验证的“已跑通”。希望帮到你。

本文还有配套的精品资源,点击获取