简介:这份 DevExpress VCL 20.2.6 控件安装包面向使用 Delphi 11 进行桌面应用开发的程序员,尤其是从旧版本升级后需要重新配置第三方控件库的开发者。它解决了国内资源普遍存在的版本不符、无法编译或试用版限制等问题,提供可直接使用的完整源码版本。压缩包为 7z 格式,整体约 473.21MB,内含安装程序 DxAutoInstaller.exe 及配套源码与库文件,运行后即可自动完成部署,无需手动配置环境。目前已有 514 人学习下载,说明该资源在 Delphi 社区中具有一定认可度。读者拿到后可直接在 Delphi 11 中调用 DevExpress VCL 的完整控件集,省去搜索、验证与排错的时间,快速恢复或搭建开发环境,适合需要稳定控件库支撑项目开发的中高级 Delphi 开发者。
1. DevExpress VCL 20.2.6 装到 Delphi 11:先搞清楚你手里这套包到底是什么
很多人第一次拿到 DevExpress VCL 的 fullsource 包,第一反应是双击 exe 一路 Next,结果装完 Delphi 11 里控件面板空空如也,编译报一堆找不到 dcu 的错。我见过最典型的一次,某开发者把 20.2.6 的包直接往 Delphi 11 的 IDE 里拖,装完发现 VCL 面板只剩一半控件,剩下的一半全变成灰色不可用。问题不在包本身,在于这套 fullsource 包需要先编译源码、再走 IDE 的包安装流程,而不是像普通组件那样一键注册。DevExpress VCL 20.2.6 这个版本号对应的是 Delphi 11 Alexandria 的官方支持周期,源码包里带了完整的 pas 和 dpk 工程文件,支持从 Delphi 10.4 到 11 的编译目标。如果你手上是编译好的 binary 包,那只能对应特定 Delphi 版本,跨版本用大概率翻车。这篇记录的是 fullsource 包在 Delphi 11 上的完整落地过程,从环境清理到编译顺序再到验证跑通,每一步都有可复现的命令和参数。适合正在配 Delphi 11 开发环境、需要一套稳定 VCL 控件库的开发者,也适合之前装过旧版本、现在想升级到 20.2.6 但被残留文件坑过的人。
2. 装之前先把环境理干净:Delphi 11 的路径、权限和旧版本残留
2.1 确认 Delphi 11 的安装形态和库路径
Delphi 11 的安装形态直接决定后面 dpk 编译时的搜索路径怎么写。常见的有两种:一种是默认装在C:\Program Files (x86)\Embarcadero\Studio\22.0,另一种是自定义到非系统盘。不管哪种,先确认三个关键路径存在:
# 确认 Delphi 11 的根目录和库路径 # 默认安装时 22.0 是 Delphi 11 的内部版本号 ls "C:\Program Files (x86)\Embarcadero\Studio\22.0" ls "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin" ls "C:\Program Files (x86)\Embarcadero\Studio\22.0\lib\Win32\release"第一条列出 IDE 根目录,里面应该有bin、lib、source等子目录。第二条确认bds.exe和dcc32.exe都在,这是后面命令行编译要用的。第三条是 Win32 release 的库路径,DevExpress 的 dcu 输出目录一般会挂到这里或者单独建一个。如果lib\Win32\release不存在,说明安装时没勾选 Win32 平台支持,需要回安装器补上。我一般会先把这三个路径记下来,后面配置 Library Path 时直接粘贴,避免手打出错。
2.2 清理旧版 DevExpress 的残留文件和注册表项
升级安装最容易翻车的地方就是旧版本没清干净。DevExpress 的包会往 IDE 的bin目录写 bpl,往注册表写包注册信息,还会在lib下留一堆 dcu。如果直接覆盖装 20.2.6,IDE 启动时可能加载到旧版 bpl 导致控件面板错乱。清理步骤分三步:
# 第一步:删除旧版 bpl 和 dcp 文件 # 这些文件通常在 Delphi 的 bin 目录下 del "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\dclcx*.bpl" del "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\cx*.bpl" del "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\dclcx*.dcp" # 第二步:清理旧版 dcu 输出目录 # 如果你之前把 dcu 输出到自定义目录,一并删掉 rmdir /s /q "D:\DevExpress\Library\Delphi11" # 第三步:清理注册表中的包注册项 # 路径在 HKEY_CURRENT_USER\Software\Embarcadero\BDS\22.0\Known Packages reg delete "HKEY_CURRENT_USER\Software\Embarcadero\BDS\22.0\Known Packages" /f第一步删的是设计期包(dcl 开头)和运行期包(cx 开头),这些 bpl 如果残留,IDE 启动时会尝试加载旧版。第二步是清 dcu 输出目录,fullsource 包重新编译时会生成新的 dcu,旧的不删可能被优先搜索到。第三步删注册表里的 Known Packages 键,这个键记录 IDE 启动时要加载哪些包,清掉之后重新安装会重建。注意第三步会清掉所有第三方包的注册信息,如果你还装了其他控件,需要之后重新注册。我一般会在清理前先导出这个注册表项做备份,万一要回滚还能恢复。
2.3 权限和杀毒软件的干扰排除
Delphi 11 默认装在Program Files (x86)下,这个目录写文件需要管理员权限。DevExpress 编译过程中会往 IDE 的bin和lib目录写 bpl 和 dcu,如果权限不够,编译到一半会报“拒绝访问”。常见做法是以管理员身份运行 Delphi 11,或者把 DevExpress 的编译输出目录改到非系统盘。另外杀毒软件会拦截 bpl 的写入,尤其是编译大量 pas 文件时,实时扫描会拖慢速度甚至误删。我一般会在编译前把 DevExpress 的源码目录和输出目录加到杀毒软件的白名单里,编译完再恢复。这一步不是必须,但能省掉很多“编译到 90% 突然失败”的玄学问题。
3. 编译 fullsource 包:从 dpk 工程到 dcu 输出的完整顺序
3.1 用命令行编译运行期包和设计期包
DevExpress VCL 的 fullsource 包里有一堆 dpk 工程,分布在Sources目录下。手动在 IDE 里一个个打开编译太慢,而且容易漏。我一般用dcc32命令行批量编译,先编运行期包,再编设计期包。运行期包的 dpk 文件名不带dcl前缀,设计期包带dcl前缀。编译命令模板如下:
# 设置 Delphi 11 的编译环境变量 set BDS=C:\Program Files (x86)\Embarcadero\Studio\22.0 set BDSINCLUDE=%BDS%\include set BDSLIB=%BDS%\lib\Win32\release # 编译运行期包示例:cxLibrary # -Q 是安静模式,-W 是输出警告,-$D+ 是调试信息 "%BDS%\bin\dcc32.exe" -Q -W -$D+ -I"%BDSINCLUDE%" -U"%BDSLIB%" -LE"D:\DevExpress\Library\Delphi11" -LN"D:\DevExpress\Library\Delphi11" -NU"D:\DevExpress\Library\Delphi11" "D:\DevExpress\Sources\cxLibrary\cxLibrary.dpk" # 编译设计期包示例:dclcxLibrary "%BDS%\bin\dcc32.exe" -Q -W -$D+ -I"%BDSINCLUDE%" -U"%BDSLIB%" -LE"D:\DevExpress\Library\Delphi11" -LN"D:\DevExpress\Library\Delphi11" -NU"D:\DevExpress\Library\Delphi11" "D:\DevExpress\Sources\cxLibrary\dclcxLibrary.dpk"-LE指定 bpl 输出目录,-LN指定 dcp 输出目录,-NU指定 dcu 输出目录。这三个目录我一般统一设成D:\DevExpress\Library\Delphi11,方便后面在 IDE 里配 Library Path。-I和-U分别指定 include 和 unit 搜索路径,指向 Delphi 自带的库目录。编译顺序很重要:先编运行期包,因为设计期包依赖运行期包。如果先编设计期包,会报找不到运行期包的 dcp。常见做法是按cxLibrary→cxEditors→cxGrid→cxPageControl这个依赖顺序编,最后编对应的dcl设计期包。
3.2 在 IDE 里注册设计期包并配置 Library Path
命令行编译完只是生成了 bpl 和 dcu,还需要在 IDE 里注册设计期包,控件才会出现在面板上。打开 Delphi 11,走Component→Install Packages→Add,选择编译好的dclcx*.bpl文件。每加一个会提示是否重新编译,选“否”,因为已经命令行编过了。全部加完后点OK,IDE 会重新加载包,这时 VCL 面板上应该能看到 DevExpress 的控件页签。接着配 Library Path:走Tools→Options→Language→Delphi→Library,在Library Path里加上D:\DevExpress\Library\Delphi11。这个路径是 dcu 的搜索路径,不加的话新建工程引用 DevExpress 控件时会报找不到单元。我一般还会在Browsing Path里加上源码目录,方便 Ctrl+Click 跳转到源码。
3.3 验证编译结果:检查 bpl、dcu 和 IDE 面板
编译和注册完成后,做三个检查确认没翻车。第一,看输出目录里 bpl 和 dcu 的数量:
# 统计编译输出的 bpl 和 dcu 数量 dir /b "D:\DevExpress\Library\Delphi11\*.bpl" | find /c /v "" dir /b "D:\DevExpress\Library\Delphi11\*.dcu" | find /c /v ""bpl 数量应该和设计期包数量一致,dcu 数量会多很多,因为每个 pas 单元都会生成一个 dcu。第二,打开 Delphi 11,看 VCL 面板上是否有DevExpress页签,里面控件是否可拖拽。第三,新建一个 VCL 工程,拖一个cxGrid到窗体上,编译运行。如果编译通过且运行时能看到表格控件,说明运行期包和设计期包都注册成功了。如果编译报File not found: 'cxGrid.dcu',说明 Library Path 没配对,回去检查路径。
4. 避坑与排查:装 DevExpress VCL 20.2.6 最常见的五个翻车点
4.1 现象:IDE 启动时报“Cannot load package dclcx...” → 原因:旧版 bpl 残留 → 解决:彻底清理 bin 目录
这个报错通常出现在升级安装后第一次启动 IDE。原因是旧版的dclcx*.bpl还在bin目录里,IDE 按注册表里的记录去加载,但旧版 bpl 依赖的 dcp 已经被新版覆盖,导致加载失败。解决方法是关掉 IDE,删掉bin目录下所有dclcx*.bpl和cx*.bpl,然后重新走一遍设计期包注册。我一般会在删之前先确认新版 bpl 已经编译到输出目录,避免删完没得用。
4.2 现象:编译 dpk 时报“Unit cxClasses was compiled with a different version” → 原因:dcu 版本混用 → 解决:清空输出目录重新编译
这个报错说明编译器找到了旧版本的cxClasses.dcu,和当前源码版本不匹配。常见原因是输出目录里同时存在 20.1 和 20.2.6 的 dcu,或者 Delphi 自带库路径里有旧版 dcu。解决方法是清空 DevExpress 的输出目录,同时检查 Library Path 里有没有指向旧版 DevExpress 的路径。我一般会在编译前先rmdir /s /q输出目录,确保从零开始编。
4.3 现象:控件面板上 DevExpress 页签是空的 → 原因:设计期包没注册或注册失败 → 解决:手动 Install Packages
页签存在但里面没控件,说明设计期包加载了但注册过程出错。常见原因是 bpl 的依赖项没满足,比如运行期包没编译或没在系统 PATH 里。解决方法是走Component→Install Packages,看 DevExpress 的包是否在列表里且勾选。如果勾选了但页签还是空,尝试移除后重新 Add,Add 的时候注意选择正确的 bpl 路径。我遇到过一种情况是 bpl 编译到了 64 位目录,但 IDE 是 32 位,加载不了,这种要确认编译目标平台和 IDE 平台一致。
4.4 现象:新建工程编译报“Required package 'cxLibrary' not found” → 原因:运行期包没注册到 IDE → 解决:在 Project Options 里加包引用
这个报错说明工程引用了 DevExpress 的运行期包,但 IDE 不知道这个包在哪。解决方法是走Project→Options→Packages,在Runtime Packages里加上cxLibrary等包名,或者在Search Path里加上 bpl 所在目录。更彻底的做法是把 bpl 输出目录加到系统 PATH 环境变量里,这样 IDE 和编译出来的 exe 都能找到。我一般会在 Project Options 里显式加包引用,避免依赖系统 PATH。
4.5 现象:编译速度极慢,卡在某个 pas 文件 → 原因:杀毒软件实时扫描 → 解决:加白名单或临时关闭
DevExpress 的源码文件很多,编译时 dcc32 会频繁读写 pas 和 dcu。杀毒软件的实时扫描会拦截每次文件写入,导致编译时间从几分钟变成几十分钟。解决方法是把 DevExpress 的源码目录和输出目录加到杀毒软件的白名单里。如果用的是 Windows Defender,可以在“排除项”里加目录。我一般会在编译前临时关掉实时扫描,编译完再开,但这不是长久之计,加白名单更稳妥。
5. 装完怎么验证跑通:三个可复现的检查动作
5.1 用命令行编译一个最小 VCL 工程验证 dcu 搜索路径
最直接的验证方式是写一个最小工程,只引用 DevExpress 的一个单元,用命令行编译。新建一个TestDevEx.dpr,内容如下:
program TestDevEx; uses Vcl.Forms, cxClasses, // 引用 DevExpress 的核心单元 Unit1 in 'Unit1.pas' {Form1}; begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.Unit1.pas里放一个空窗体,uses 里加上cxGrid。然后用dcc32编译:
"%BDS%\bin\dcc32.exe" -Q -W -I"%BDSINCLUDE%" -U"%BDSLIB%;D:\DevExpress\Library\Delphi11" -LE"D:\TestOutput" TestDevEx.dpr如果编译通过且D:\TestOutput下生成了 exe,说明 dcu 搜索路径配对了。如果报File not found: 'cxClasses.dcu',回去检查-U参数里的路径是否包含 DevExpress 的输出目录。这个检查比在 IDE 里点编译更严格,因为命令行不会自动加载 IDE 的 Library Path,全靠参数指定。
5.2 在 IDE 里拖控件并运行,确认设计期和运行期都正常
命令行编译通过只说明运行期没问题,设计期还要单独验证。打开 Delphi 11,新建 VCL Application,从 DevExpress 页签拖一个cxGrid和一个cxButton到窗体上。cxGrid拖上去后应该能看到列头和网格线,cxButton应该显示默认样式。然后按 F9 运行,窗体弹出后控件正常显示,点击按钮有响应。这一步验证的是设计期包注册成功,且运行期包在 IDE 环境下能正常加载。如果拖控件时 IDE 卡死或报错,说明设计期包有问题,回去检查dclcx*.bpl是否注册正确。
5.3 检查版本号,确认装的是 20.2.6 而不是旧版
最后一个检查是确认版本号。DevExpress 的版本号可以在源码里找到,打开cxClasses.pas,搜索cxVersion或DXVersion,应该能看到20.2.6的字样。或者在 IDE 里拖一个cxLabel,在 Object Inspector 里看Version属性。如果显示的是 20.1 或更早,说明旧版 dcu 还在被搜索到,需要回去清理 Library Path 和输出目录。我一般会在装完后立刻检查版本号,避免装了半天发现装的是旧版。
从那以后我每次装 DevExpress 新版本,都会先把旧版 bpl、dcu 和注册表项清一遍,再按“命令行编译 → IDE 注册 → Library Path 配置 → 最小工程验证”这个顺序走一遍,不跳步。这套流程看起来繁琐,但能省掉后面调试“玄学报错”的时间。希望帮到你。
本文还有配套的精品资源,点击获取