ARTICLE DETAIL

资讯详情

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

Delphi 13.1 集成 DevExpress VCL 26.1.3 实战指南:安装、配置与避坑

Delphi 13.1 集成 DevExpress VCL 26.1.3 实战指南:安装、配置与避坑 简介DevExpress VCL Controls 26.1.3 EN 是面向 Delphi 13.1RAD 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、.incHelpCHM 帮助文档和 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 本身只是容器真正显示数据的是 ViewTableView、CardView、BandedTableView 等。新手最容易翻车的地方是拖了 Grid 却忘了设 View结果界面上什么都没有。最小可用步骤拖一个TcxGrid到 Form 上右键 → Edit Layout添加一个TableView再拖一个TDataSource和TClientDataSet把 DataSet 的字段定义好DataSource 指向 DataSetGrid 的 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;逻辑说明第一个参数是文件路径第二个是“是否打开查看”第三个是“是否显示进度条”。参数说明如果要控制纸张大小和边距用TcxPDFExportParamsvar 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 已 OpenGrid 里就是没行。原因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 之前先在一个干净的虚拟机上按上面步骤走一遍确认没问题再动主力开发机。这样即使翻车也有后悔药。希望帮到你。本文还有配套的精品资源点击获取
返回列表