简介:DevExpress VCL Controls 26.1.3 EN 是面向 Delphi 13.1(RAD Studio Alexandria)开发者的原生可视化组件库,基于 Windows VCL 框架构建,提供 200 余个可定制 UI 控件与非可视化服务组件,适合需要快速搭建企业级桌面应用的中高级 Object Pascal 开发者。压缩包为 7z 格式,共 2000 个文件、约 458.89MB,其中 cpp 与 h 文件占主体,配合 png 界面素材、txt 说明、xml/json 配置、pas 源码单元、pdf/docx 文档及 chm 帮助文件,覆盖源码、示例与文档多个层面。已有 144 人学习下载。资源内含完整源代码、CHM 帮助文档与大量可直接运行的示例工程,涵盖数据网格、图表、报表、皮肤、Ribbon 等模块,并支持高 DPI、Direct2D 渲染与多数据库访问层,便于读者研究控件实现、复用示例代码并加速项目界面开发。
1. Delphi 13.1 配 DevExpress VCL 26.1.3:这套控件包到底解决什么问题
如果你正在用 Delphi 13.1 做 Windows 桌面项目,又不想把时间耗在自绘表格、手搓皮肤、写导出逻辑上,那 DevExpress VCL Controls 26.1.3 这套控件包基本就是绕不开的选择。它覆盖了 Grid、TreeList、PivotGrid、Chart、Scheduler、Editors、Bars、Ribbon、LayoutControl、PDF 导出等一整套企业级 UI 组件,装完之后工具箱里会多出几百个控件,直接拖到 Form 上就能跑。标题里的 “EN” 表示英文版安装包,“7z” 是压缩格式,解压后是标准的安装程序加源码/帮助文档结构。
这套东西适合谁?一是手上已经有 Delphi 13.1 环境、需要快速交付管理后台、报表系统、工控上位机的开发者;二是从 Delphi 7/2007 老项目迁移过来,想保留 VCL 开发习惯但又要现代 UI 的团队。它不解决算法问题,也不帮你写业务逻辑,它解决的是“界面像样、交互顺滑、导出打印不翻车”这三件事。下面按“装什么 → 怎么装 → 怎么用 → 坑在哪 → 怎么进阶”的顺序,把我在实际项目里踩过的路讲清楚。
2. 环境准备与安装:Delphi 13.1 下跑通 DevExpress VCL 26.1.3 的最小路径
2.1 先确认你的 Delphi 13.1 是哪个版本
DevExpress VCL 26.1.3 对 IDE 版本有明确要求,不是所有 Delphi 13.1 的变体都能直接装。常见的有 Community Edition、Professional、Enterprise、Architect,安装程序会检测注册表里的 IDE 路径和版本号。如果你装的是精简版或绿色版,注册表信息不全,安装程序可能直接报“未找到兼容的 Delphi 版本”。
我一般会先做两件事:打开 Delphi,点 Help → About,确认版本号是 13.1 且带 Update 补丁;然后关掉 IDE,检查系统环境变量里有没有BDS或BDSLIB指向正确目录。如果之前装过旧版 DevExpress,务必先用控制面板卸载干净,再手动删掉C:\Program Files (x86)\DevExpress和C:\Users\Public\Documents\DevExpress下的残留目录。血泪经验:旧版残留的 BPL 包会让新版安装程序误判,导致编译时提示“单元重复”或“找不到 dxCore.dcu”。
2.2 解压与安装:7z 包里的目录结构
拿到DevExpress VCL Controls 26.1.3 EN.7z之后,用 7-Zip 或 WinRAR 解压到一个短路径目录,比如D:\DX26。不要放在中文路径或带空格的路径下,否则安装脚本里的批处理可能解析失败。解压后典型结构如下:
| 目录/文件 | 作用 |
|---|---|
Setup.exe | 主安装程序,负责注册 IDE 包和编译源码 |
Sources | 控件源码,含.pas、.dfm、.inc |
Help | CHM 帮助文档和 PDF 手册 |
Demos | 各控件的示例工程,按 VCL 和 FMX 分目录 |
Library | 预编译的 DCU 和 BPL,按 Win32/Win64 分 |
Readme.txt | 版本说明和已知问题 |
安装时右键Setup.exe以管理员身份运行。第一步选“Install”,第二步它会列出检测到的 Delphi 版本,勾选 13.1 对应的条目。第三步选安装类型:Typical 会装常用控件和预编译包,Custom 可以只选你需要的模块(比如只装 Grid 和 Editors 能省几百 MB)。我一般选 Custom,把ExpressLibrary、ExpressEditors、ExpressGrids、ExpressBars、ExpressPrinting这几个勾上,其他按需。
2.3 编译源码与注册包
安装程序跑完后,不要急着打开 IDE。先进入Sources目录,找到对应 Delphi 版本的批处理,比如Build_Win32.bat或Build_Win64.bat。用命令行执行:
cd /d D:\DX26\Sources Build_Win32.bat这个脚本会调用dcc32.exe编译所有源码,生成 DCU 和 BPL。如果报错“找不到 dcc32”,说明 Delphi 的 Bin 目录没在 PATH 里,手动加一下:
set PATH=%PATH%;C:\Program Files (x86)\Embarcadero\Studio\13.1\Bin编译完成后,打开 Delphi,点 Component → Install Packages → Add,把D:\DX26\Library\Win32\下的.bpl文件逐个加进去。加完后工具箱里会出现DevExpress标签页。如果没出现,检查包的Load和Install是否都勾了,以及 BPL 的搜索路径是否包含Library\Win32。
提示:Win64 项目需要单独编译和注册 64 位包,步骤同上,只是把
Build_Win32.bat换成Build_Win64.bat,并在 IDE 的 64 位目标平台下添加包。
3. 核心控件上手:Grid、TreeList、Editors 的配置与数据绑定
3.1 TcxGrid:从零绑定一个可编辑表格
TcxGrid 是这套控件里用得最多的。它和标准 TStringGrid 最大的区别是“分层”:Grid 本身只是容器,真正显示数据的是 View(TableView、CardView、BandedTableView 等)。新手最容易翻车的地方是拖了 Grid 却忘了设 View,结果界面上什么都没有。
最小可用步骤:拖一个TcxGrid到 Form 上,右键 → Edit Layout,添加一个TableView;再拖一个TDataSource和TClientDataSet,把 DataSet 的字段定义好,DataSource 指向 DataSet,Grid 的 DataController.DataSource 指向 DataSource。代码里这样填充:
// 假设已经有一个 TClientDataSet 叫 cds1,字段为 ID、Name、Price cds1.Close; cds1.CreateDataSet; cds1.Open; cds1.Append; cds1.FieldByName('ID').AsInteger := 1; cds1.FieldByName('Name').AsString := 'Widget'; cds1.FieldByName('Price').AsFloat := 9.99; cds1.Post;逻辑说明:CreateDataSet在内存里建表,Append/Post插入一行。参数说明:ID是整型主键,Name是字符串,Price是浮点。如果想让 Price 列显示两位小数,选中 TableView 的 Price 列,在 Properties 里设DisplayFormat = #,##0.00。想禁止编辑某一列,把列的Options.Editing设为 False。
3.2 TcxTreeList:层级数据的展开与懒加载
TreeList 适合做目录树、组织架构、BOM 表。它的节点是TcxTreeListNode,每个节点可以挂数据。常见做法是先用AddChild建根节点,再递归建子节点。如果数据量大,不要一次性全建,用OnGetNodeData或手动在展开事件里加载。
var Root, Child: TcxTreeListNode; begin cxTreeList1.Clear; Root := cxTreeList1.AddChild(nil); Root.Values[0] := '根节点'; Child := cxTreeList1.AddChild(Root); Child.Values[0] := '子节点'; Root.Expanded := True; end;逻辑说明:AddChild(nil)建根,AddChild(Root)建子。Values[0]对应第一列的显示值。参数说明:如果列是绑定字段的,用Root.Values[ColumnIndex];如果是自定义绘制,用Root.Texts[ColumnIndex]。懒加载时,在OnExpanding事件里判断Node.HasChildren,没有就动态加。
3.3 Editors:用 TcxLookupComboBox 做下拉选择
DevExpress 的 Editors 比标准控件多出很多属性,比如Properties.Items、Properties.DropDownListStyle、Properties.ImmediatePost。做下拉选择时,TcxLookupComboBox 可以直接绑 DataSource,显示一列、存另一列。
// 假设 cdsLookup 有 Code 和 Name 两个字段 cxLookupComboBox1.Properties.ListSource := dsLookup; cxLookupComboBox1.Properties.ListFieldNames := 'Name'; cxLookupComboBox1.Properties.KeyFieldNames := 'Code'; cxLookupComboBox1.Properties.DropDownListStyle := lsEditList;逻辑说明:ListSource是下拉数据源,ListFieldNames是显示字段,KeyFieldNames是实际取值字段。参数说明:lsEditList允许输入过滤,lsFixedList只能选。如果下拉框显示空白,检查ListFieldNames的字段名是否拼写正确,以及 DataSource 是否 Active。
4. 导出与打印:PDF、Excel、图片的落地参数
4.1 用 TcxGrid 导出 PDF 的完整代码
DevExpress 自带TcxGridDBTableView的导出方法,不需要额外装 itext for Delphi 或 rbuilder。核心是ExportToPDF单元里的TcxGridDBTableViewExportToPDF类。
uses cxGridExportLink, cxExportPdfLink; procedure TForm1.ExportGridToPDF; begin cxGridDBTableView1.ExportToPDF('D:\output.pdf', True, True); end;逻辑说明:第一个参数是文件路径,第二个是“是否打开查看”,第三个是“是否显示进度条”。参数说明:如果要控制纸张大小和边距,用TcxPDFExportParams:
var Params: TcxPDFExportParams; begin Params := TcxPDFExportParams.Create; try Params.PageSize := psA4; Params.Margins.Left := 20; Params.Margins.Right := 20; cxGridDBTableView1.ExportToPDF('D:\output.pdf', Params); finally Params.Free; end; end;4.2 导出 Excel 的两种方式与性能差异
方式一:ExportToXLSX,直接生成 xlsx,速度快,格式保留好。方式二:ExportToXLS,生成旧版 xls,兼容老 Office,但行数有限制(65536 行)。如果数据超过 6 万行,必须用 xlsx。
uses cxGridExportLink; cxGridDBTableView1.ExportToXLSX('D:\output.xlsx');参数说明:ExportToXLSX还有重载可以传TcxXLSXExportParams,里面能设SheetName、FitToWidth、FreezeRows。我一般会设FreezeRows := 1,让表头冻结。如果导出后中文乱码,检查Params.Encoding是否为teUTF8。
4.3 打印预览与页眉页脚设置
用TcxGridDBTableView的ShowPrintPreview方法可以弹出预览窗口。页眉页脚在TcxGridPrintStyle里设:
var Style: TcxGridPrintStyle; begin Style := TcxGridPrintStyle.Create; try Style.Header.Text := '销售报表'; Style.Footer.Text := '第 [Page] 页,共 [Pages] 页'; cxGridDBTableView1.PrintStyle := Style; cxGridDBTableView1.ShowPrintPreview; finally Style.Free; end; end;逻辑说明:[Page]和[Pages]是内置占位符,打印时自动替换。参数说明:Header.Font可以改字体,Footer.Alignment可以设对齐方式。
5. 避坑与排查:DevExpress VCL 26.1.3 在 Delphi 13.1 下的 5 个常见问题
5.1 安装后工具箱没有 DevExpress 标签页
现象:装完包,IDE 里找不到控件。原因:BPL 没注册成功,或者包的Install没勾。解决:Component → Install Packages,找到 DevExpress 的包,确认Load和Install都勾上;如果列表里没有,手动 AddLibrary\Win32\*.bpl。还不行就检查Library\Win32是否在 IDE 的 Library Path 里。
5.2 编译时报“找不到 dxCore.dcu”
现象:新建项目拖了控件,编译提示单元找不到。原因:源码没编译,或者搜索路径没加。解决:先跑Build_Win32.bat,然后在 IDE 的 Tools → Options → Language → Delphi → Library 里,把D:\DX26\Library\Win32加到 Library Path。如果用的是 64 位目标,加Library\Win64。
5.3 Grid 显示空白,数据源明明有数据
现象:DataSource 已连,DataSet 已 Open,Grid 里就是没行。原因:TableView 没绑定 DataController.DataSource,或者 View 的DataController.DataModeController.GridMode设成了 True。解决:选中 TableView,在 Object Inspector 里把DataController.DataSource指向 DataSource;把GridMode设为 False(除非你确实要用虚拟模式)。
5.4 导出 PDF 时中文变成方框
现象:PDF 里中文显示为乱码或方框。原因:默认字体不支持中文。解决:在TcxPDFExportParams里设Font.Name := 'SimSun'或'Microsoft YaHei';如果还是不行,检查系统是否装了对应字体,以及Params.Encoding是否为teUTF8。
5.5 运行时提示“Class TcxGrid not found”
现象:程序在开发机跑得好,拷到客户机报类找不到。原因:BPL 没随程序发布,或者运行时包没装。解决:要么把 DevExpress 的 BPL 一起拷过去并注册,要么在项目选项里关掉“Build with runtime packages”,让 DCU 静态链接进 EXE。我一般选后者,虽然 EXE 大一点,但部署省心。
6. 进阶技巧:用 DevExpress 皮肤与布局做可配置界面
6.1 动态切换皮肤与保存用户偏好
DevExpress 的皮肤引擎在cxLookAndFeels单元里。切换皮肤只要一行:
uses cxLookAndFeels, cxLookAndFeelPainters; procedure TForm1.SetSkin(const SkinName: string); begin cxLookAndFeelController1.BeginUpdate; try cxLookAndFeelController1.NativeStyle := False; cxLookAndFeelController1.SkinName := SkinName; finally cxLookAndFeelController1.EndUpdate; end; end;逻辑说明:BeginUpdate/EndUpdate避免切换时闪烁。参数说明:SkinName可以是'Office 2019 Colorful'、'DevExpress Dark Style'等,具体列表在cxLookAndFeelPainters里。保存用户偏好时,把 SkinName 写进 INI 或注册表,下次启动读出来再调一次。
6.2 用 LayoutControl 做自适应窗体
LayoutControl 能按比例或固定尺寸排列子控件,窗口缩放时自动调整。关键属性是LayoutControlItem的SizeConstraintsType和Control.MinWidth。我一般把输入框的SizeConstraintsType设为sctRatio,比例设 1,这样它会随窗口拉伸。按钮设sctFixed,保持固定宽度。如果布局乱了,右键 LayoutControl → Reset Layout 可以恢复默认。
6.3 验证安装是否完整的三个检查点
第一,打开 Demos 目录,随便编译一个示例工程,能跑起来说明源码和包都正常。第二,新建一个 VCL 项目,拖一个 TcxGrid、一个 TcxButton、一个 TcxLookupComboBox,编译运行,看是否报缺单元。第三,导出一次 PDF 和 Excel,打开文件确认内容完整。这三个检查点过了,基本可以投入项目使用。
我自己的习惯是:每次升级 Delphi 或 DevExpress 之前,先在一个干净的虚拟机上按上面步骤走一遍,确认没问题再动主力开发机。这样即使翻车,也有后悔药。希望帮到你。
本文还有配套的精品资源,点击获取