尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

DevExpress VCL Controls 26.1.3在Delphi 13.1中的安装与实战指南

DevExpress VCL Controls 26.1.3在Delphi 13.1中的安装与实战指南 简介Delphi作为经典的桌面开发语言在传统行业管理系统中仍占据重要地位但原生VCL控件面对复杂交互时显得力不从心。第三方VCL组件库通过封装成熟的表格、布局、皮肤等能力成为提升开发效率与界面质感的有效方案。例如cxGrid提供多级分组、主从表等高级数据展示dxLayoutControl则让表单界面自动对齐、快速布局。这类组件不仅减少了自绘代码量还增强了多显示器DPI适配与运行期性能广泛应用于ERP、MES、HIS等Windows桌面客户端。本文围绕DevExpress VCL Controls 26.1.3 EN在Delphi 13.1中的安装部署、路径配置、核心控件使用及常见问题进行梳理帮助开发者快速上手将老项目的界面从“能用”打磨到“好用”。 如果你的开发环境是 Delphi 13.1又恰好常年维护传统行业的桌面管理系统那大概率会有这种感觉原生 VCL 控件能交差但界面总是透着一股“上古工具”的味道。DevExpress VCL Controls 就是为解决这个问题而来的我今天要聊的这份 DevExpress VCL Controls 26.1.3 EN是英文版控件包解决的是从“能用”到“好用”的问题。下面按我实际落地的顺序写怎么装、怎么接进工程、几个核心控件怎么用以及最容易翻车的坑。适合刚接触这套控件的 Delphi 开发者也适合在旧项目里评估控件升级的老手。1. 项目背景与控件包定位1.1 为什么成熟业务系统需要第三方VCL控件Delphi 的 VCL 是很成熟的桌面 UI 框架但原生组件库里能直接扛住复杂业务场景的重组件并不多。普通展示可以用 TDBGrid但业务系统一旦涉及多级分组、合并单元格、列头筛选、条件格式原生 TDBGrid 做起来就是灾难需要自己写大量消息处理和自绘代码。DevExpress VCL Controls 把这些通用痛点做成了现成组件它有 cxGrid、cxTreeList、cxVerticalGrid、cxPivotGrid 等多个数据展示类控件数据操作层的封装非常彻底。你不需要掌握太深的自绘机制按属性配置就能实现高级交互。再加上运行期性能、皮肤一致性、多显示器 DPI 适配都比原生控件成熟所以很多 ERP、MES、HIS 客户端都用它做基础界面。我自己的经验是一个传统的采购订单界面原生控件可能需要三天打磨交互用 cxGrid 和 dxLayoutControl 组合半天就能出来一个能看的版本剩余时间可以全部花在业务逻辑上。这里不是说原生 VCL 不行而是说当项目体量变大、界面复杂度变高之后第三方控件库能显著压缩“界面基建”的投入。尤其当你面对的是一个维护了多年的老项目需求方要求界面风格统一、交互接近现代软件原生控件往往让你边做边骂。1.2 DevExpress VCL Controls 26.1.3 EN 到底包含什么把版本号拆开看DevExpress 是开发商VCL 是组件框架26.1.3 是版本标识EN 代表语言资源包是英文。.rar只是打包格式不代表安装方式特殊。整个控件包里面大致分几类数据展示类、数据编辑类、布局导航类、图表报表类、系统皮肤类。数据展示类最常用的是 cxGrid 系列支持普通表格、主从表、树形列表、卡片视图数据编辑类包括 cxTextEdit、cxButtonEdit、cxDateEdit、cxCheckBox、cxComboBox 等一系列带掩码、校验、下拉选择的编辑框布局导航类包括 dxLayoutControl、dxDocking、dxBarManager、dxRibbon用于做界面的自动布局、停靠窗格和工具栏/功能区。图表报表类包括 dxSpreadSheet、dxPivotGrid、dxChart 等适合做轻量的表格计算和可视化分析。还有一个容易被忽略的 dxSkin 体系它提供几十套界面皮肤能让产品从“内部工具”瞬间变成“商业软件”的质感。这套控件覆盖的面积非常大一个中型管理系统的常规界面需求基本都能命中。但需要说明它不是一套简单的“控件集合”更像是一整套 UI 生态上手后你会发现控件之间的关联性和一致性也很重要。1.3 适用场景与不适用场景作为使用经验我先说边界。如果你做的是 Windows 桌面下的数据密集型应用DevExpress VCL 非常合适。但如果你打算做 PDA、手持扫码机这类移动端程序我的建议是趁早转向 FireMonkey 或原生 Android不要指望 VCL 版本的 DevExpress 来帮你。虽然 Delphi 的 FireMonkey 也有自己的控件体系DevExpress 也有 FMX 版本但移动端体验和扫码枪、PDA 的硬件适配并不是 VCL 的强项。很多人问“Delphi FireMonkey PDA 扫码结果怎么接收”那是另一个话题需要调用硬件厂商的扫码 SDK或者处理键盘模拟输出而不是在 VCL 表格颜色上做文章。这套 VCL 控件最适合的场景是Win32/Win64 桌面客户端、后台管理系统、工业上位机、医院或工厂里连接数据库的业务终端。认清边界比下载安装更重要。2. 安装部署与项目集成2.1 安装前的环境准备在解压安装之前先确认三件事。第一Delphi 13.1 必须安装完整至少包含 VCL 和数据库相关组件因为 DevExpress 安装程序会自动扫描 IDE 版本如果你的 RAD Studio 装得不完整可能出现检测不到版本的情况。第二把压缩包解压到一个路径里不能有中文和空格最好类似D:\DevExpressVCL。这一步很重要控件编译过程中会有大量路径拼接中文路径容易触发“Cannot create output file”这类莫名其妙的问题。第三临时关闭杀毒软件或把安装目录加入白名单。DevExpress 的安装包会注册 ActiveX 控件、写入注册表、生成大量 bpl/dcp 文件一些杀软会把新生成的可执行文件误报。正版安装包本身没有问题但安装过程中被拦一半是常事装完再恢复保护即可。还有个小建议安装前尽量关闭其他占用 CPU 的程序因为安装过程会编译大量源码包CPU 性能直接影响等待时间。如果你机器上同时跑着虚拟机或者大型 IDE建议先关掉否则编译到一半报错很难判断是环境问题还是资源不足。2.2 从EN.rar到控件安装的具体步骤解压后进入目录通常会有Setup.exe或者 DevExpress 的安装引导程序。双击运行时选择 Components勾选 VCL Controls注意不要选错成 FMX 的产品线。安装程序会自动探测已安装的 Delphi 版本如果你机器上同时有 Delphi 10.4、11、12、13.1它会列出可选项建议只勾选你当前工程在用的版本不要全部勾选否则编译时间会成倍增加。然后一路 Next 等待编译。这个过程是真正的编译安装不是在复制文件时间长短取决于 CPU通常会在 20 分钟到一个小时之间。看到“Installation completed”后打开 Delphi 13.1新建一个 VCL Application检查 Tool Palette 里是否出现 DevExpress 页面。如果没出现不用急着重装多半是 IDE 缓存问题关掉 IDE 后删除%AppData%\Embarcadero\BDS\13.0\下的*.dsk文件再打开试试。这里要特别强调不要直接双击项目文件就期望控件出现在窗体上必须先确认 IDE 本身加载了 DevExpress 设计期包否则打开旧工程会报类找不到。2.3 在 Delphi 13.1 中配置控件库路径安装程序的默认路径一般能直接工作但如果你像我一样习惯把组件源码单独管理可能需要手动配置 IDE 的 Library path。路径怎么填打开 Tools Options Environment Options Delphi Options Library - Win32在 Library path 里加一行控件包源码目录比如D:\DevExpressVCL\Library\RS29x\Win32具体子目录会随版本不同而不同。注意不要只加根目录要把包含.dcu和.pas的具体子目录都加上否则编译时提示找不到单元。对于 64-bit Windows 平台还要在 Library - Win64 里加对应的 x64 路径。这一步最容易漏很多人的问题是“控件在设计期能用一编译就提示 File not found: cxClasses.dcu”基本都是这里没有配置完整。如果你用的是安装程序的默认安装一般全局路径已经配好了但如果你后续手动移动过整个 DevExpress 安装目录就必须重新配置。还有一点项目级别的 Search path 和全局 Library path 优先级不同项目级路径会影响当前工程全局路径影响所有工程排查问题时两个位置都要看。2.4 在项目中快速验证控件可用安装完成后我习惯建一个最小工程来做冒烟测试而不是立刻把旧项目打开。新建一个 VCL Application拖一个 TcxGrid 和 TButton 到窗体在 ButtonClick 里写一段代码给 cxGrid 填充几行数据。如果没有编译错误说明控件环境基本正常。很多新手在这一步会直接把 Demo 工程的第一行去掉结果出现各种包加载错误所以这个冒烟测试不要跳过。它验证的是设计期包、运行时包和 Library path 三者的匹配状态。下面这段代码是我从常用启动测试模块里截出来的procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin cxGrid1DBTableView1.DataController.BeginUpdate; try for I : 1 to 10 do cxGrid1DBTableView1.DataController.AppendRecord([I, 第 IntToStr(I) 行]); finally cxGrid1DBTableView1.DataController.EndUpdate; end; end;注意不能直接在未绑定数据源的 View 上用 AppendRecord需要先给 cxGrid 的 DataController 配置一个 cxGridDBTableView 的 DataSource或者干脆用不带数据库的 cxGrid1TableView 模式。这里的目的是验证安装完整如果连这段代码都跑不通先回到路径配置排查。3. 核心控件模块解析与实操要点3.1 cxGrid处理复杂表格的正确姿势cxGrid 是很多项目的门面也是最容易让新人迷路的控件。它不像 TDBGrid 那样一个控件直接绑数据源而是分成三个层级cxGrid 容器、View视图、DataController数据控制器。View 负责显示DataController 负责数据管理好处是同一个数据源可以用不同 View 展示比如同一个数据集同时支持表格式和卡片式浏览。在开发和维护时记住一个原则改列、改样式找 View改数据、改排序找 DataController。举个例子我要给一个主从表界面配置两个 View主表按单据编号汇总从表显示明细可以在 cxGridLevel 下挂两个 cxGridDBTableView分别指向两个 TDataSource。关键属性上主表 View 的 DataController.DataSource 指向主表数据源从表 View 的 DataController.DataSource 指向明细数据源然后设置主表 View 的 MasterDetail 相关属性指定 MasterKeyFieldName 为单号DetailKeyFieldName 为单号。配置到位后cxGrid 原生支持主从联动、展开收起不需要任何手工刷新代码。这种结构的难点是层级关系调试时使用 Structure 面板来看层级而不是在对象监视器里乱翻。新手常犯的错误是只看到显示层的网格线不知道 DataController 才是数据源入口导致列字段总是不出现。3.2 cxEdit 与 dxLayoutControl表单界面效率翻倍表单类界面我强烈建议用 dxLayoutControl 而不是手动摆 LabeledEdit。dxLayoutControl 的好处是不再需要手动计算控件坐标增加一个输入框时只需把它从 Tool Palette 拖到 LayoutControl 的一个 Item 上它会自动换行、对齐、间距统一。和它配合使用的是 cxTextEdit、cxButtonEdit、cxDateEdit 这些 cxEdit 系列控件。需要注意cxEdit 控件有公共的事件体系很多编辑框继承了同一个 TcxEditEvents 接口如果你是之后接手项目会发现所有输入框的 Properties 里都有事件容易造成误触发。我的习惯是代码里统一用 TcxCustomEdit 类型来遍历表单上的所有输入框而不是一个一个判断控件类名。procedure TForm1.ClearEdits; var I: Integer; AEdit: TcxCustomEdit; begin for I : 0 to dxLayoutControl1.Items.Count - 1 do if dxLayoutControl1.Items[I] is TcxCustomEdit then begin AEdit : TcxCustomEdit(dxLayoutControl1.Items[I].Control); AEdit.Clear; end; end;这段代码一定要用Items[I].Control而不是直接使用 Item 对象因为 dxLayoutControl 的 Item 只是布局单元真正的编辑控件挂在 Control 属性上。用这个方法来做“重置表单”比逐个控件赋空字符串要优雅得多。除了清空还能统一判断是否修改、统一保存时校验必填项维护成本会低很多。3.3 dxBarManager工具栏/菜单/停靠一体化很多项目的顶部菜单是 MainMenu ToolBar 分开维护的DevExpress 的推荐做法是用 dxBarManager 统一管理。它把菜单项、工具按钮、子菜单都抽象成 TdxBarItem你只需在同一个 BarManager 里创建然后拖到任意 Bar工具栏或 MainMenu 上即可。这样一个按钮既可以出现在菜单里也可以出现在快捷工具栏甚至出现在右键菜单里不会产生多份事件代码。实际项目中我要做一个“刷新、新增、编辑、删除”的标准按钮组用 dxBarManager 后在 BarButtonClick 事件里通过 Sender 定位到 TdxBarButton再通过其 Tag 或 Name 区分操作减少了大量重复代码。需要注意 dxBarManager 的 Image 要提前用 TcxImageList 维护图标一旦在运行时替换ImageIndex 容易错位最好做一层统一的图标管理器。另一个容易踩的坑是子菜单权限控制如果某个按钮在界面上被隐藏但它的 Visible 属性设为 False有时候子菜单项仍然会在某些皮肤下显示为灰色而不是隐藏。要让菜单项完全消失需要在 dxBarButton 的 PaintStyle 和 Visible 上同时处理或者用权限管理器来统一刷新。3.4 图表与报表给业务数据加分如果你的系统需要在几个界面上展示趋势图或经营看板dxChart 是相对容易上手的。它和 TDBChart 类似需要给 Series 绑定数据源但 DevExpress 的 API 粒度更细。一个常见做法是用 ADO 查询得到数据集然后循环把记录加入 Series或者使用它的 Pivot Grid 做数据聚合。如果你只需要一个轻量的单元格编辑型表格dxSpreadSheet 可以读入 Excel 文件并支持公式。很多用户会要求“把这个报表导出成 Excel”DevExpress 提供了 cxGrid 的 ExportToXlsx 方法几行代码就能处理不用引入 Office COM。cxGrid1DBTableView1.DataController.ExportToXlsx(D:\report.xlsx, True);注意这里的第二个参数是“是否导出样式”。如果用户没装 Excel导出纯数据用 False 速度更快如果要拿去汇报导出样式用 True。这个方法是 DevExpress 自带的高层封装比我看到网上很多用 OLE Excel 的方案稳定得多尤其是目标机器没有 Office 的环境。实际测试中几万行数据的导出基本能在几秒内完成性能足够接受。3.5 皮肤系统一个属性提升产品质感很多老项目的质感问题不是功能缺而是界面缺乏统一视觉。DevExpress VCL 的皮肤系统可以救急。你只需要在工程里放一个 TcxLookAndFeelController然后设置 SkinName 属性整个工程中所有 DevExpress 控件会自动换肤。我常用 Office 2019 Colorful 或者 Visual Studio 的皮肤用户反馈最接近现代软件。几个容易忽视的细节第一设置皮肤后非 DevExpress 原生按钮还是老样子建议通用按钮也换用 cxButton 或者配置 VCL 样式第二自定义颜色最好基于 Skin Palette 做直接在控件上写死颜色会造成换肤后界面不统一第三在 Win10/Win11 多显示器环境下要注意设置 DPI 感知否则皮肤在缩放的屏幕上会发虚。可以在项目文件的 Application.Manifest 里启用 DPI Awareness并设置 PerMonitorV2。4. 常见开发任务与DevExpress的配合4.1 数据访问层ADO/ODAC与DevExpress的对接体验DevExpress VCL 控件本身不负责数据库连接数据源仍由 Delphi 自带的 ADO、DBExpress 或第三方组件如 ODAC 提供。很多开发者的旧项目还在用 Delphi 7 时代的 ODAC 版本到了 Delphi 13.1 后旧版 ODAC 的 dcu 往往不兼容会出现“Cannot find unit ORA”的错误。这时候建议升级到当前版本的 ODAC或者干脆改用 FireDAC 统一数据访问。无论用哪种绑定方式是一样的TDataSource 连接到数据集组件然后 cxGrid 的 DataController.DataSource 指向这个数据源。这里有个容易踩的坑如果数据集使用 TFDQuery 并且 SQL 要动态拼接最好在 BeforeOpen 事件里给 SQL 赋值而不要在设计期硬编码这样 cxGrid 的字段列表才能正确刷新。用 ODAC 的 TORASession 时也同理连接参数放到单独的配置文件中避免每次换环境重新编译。数据访问层和界面层的解耦很重要尤其当你有多套数据库需要切换时。DevExpress 本身不限制你用哪种数据访问组件这既是优点也是缺点优点是灵活性高缺点是你得自己维护好数据集生命周期。很多项目报表缓慢问题往往不在 cxGrid而在数据集组件没有做条件查询所有数据一次性加载界面自然卡顿。4.2 字符串处理、MD5与DOS命令在控件应用中的辅助开发在实际开发中DevExpress 承担的是界面展示但很多业务逻辑还是需要传统 Delphi 基本功。比如从设备读到的扫码结果校验前常常要计算 MD5又比如调用外部命令行程序生成文件后需要把返回值回显到 cxMemo 或 cxListBox 里。有人问“Delphi 执行 DOS 命令获取返回值”怎么做其实很简单用 TProcess 或者 Windows API CreateProcess 重定向标准输出即可不要在界面上用 TEdit 轮询。这里给一个轻量函数适合拿到工具的输出文本uses System.Diagnostics; function RunCommandAndGetOutput(const ACmd: string): string; var AProcess: TProcess; AOutput: TStringList; begin AProcess : TProcess.Create(nil); AOutput : TStringList.Create; try AProcess.Executable : cmd.exe; AProcess.Parameters.Add(/C); AProcess.Parameters.Add(ACmd); AProcess.Options : [poWaitOnExit, poUsePipes]; AProcess.Execute; AOutput.LoadFromStream(AProcess.Output); Result : AOutput.Text; finally AOutput.Free; AProcess.Free; end; end;这段代码在 Windows 10/11 上实测过注意 TProcess 在 Delphi 自带的 System.Diagnostics 单元里需要 uses System.Diagnostics。拿到输出后自然可以用 cxTextEdit.Text 或 cxMemo.Lines.Text 来展示。MD5 计算可以用 System.Hash 单元两行代码uses System.Hash; ... ShowMessage(THashMD5.GetHashStringFromFile(AFileName));不要自己去写 MD5 算法Delphi 原生已经支持得很好。把这些基础工具函数收进公共单元配合 DevExpress 界面会让整个开发流程顺畅很多。4.3 Excel/Memo数据导入到cxGrid的实战技巧群里的热词经常出现“Delphi 将 Memo 中的数据导入 Excel”“ADO 连接 Excel”。我的建议是如果你已经在用 DevExpress先分清场景。如果只是把用户从 Excel 复制的多行内容批量导入界面用 TStringList 读取 Memo.Lines再循环写入内存数据集最后让 cxGrid 显示不需要真的和 Excel 建立连接。如果一定要读剪贴板里的表格内容可以用 DevExpress 的 dxSpreadSheet 或者剪贴板对象。直接操作 ADO 连接 Excel 也算一种方案但要求目标机器装有对应驱动在某些精简版 Windows 上会报“Microsoft ACE OLEDB 12.0 not registered”维护成本很高。所以我更倾向在业务入口让用户粘贴到 cxMemo然后再做文本解析。比如把每一行按 Tab 分隔写入 TClientDataSet再绑定到 cxGrid这样既稳定又统一还能在导入界面即时校验数据格式。使用内存数据集的好处是导入过程中发现格式错误可以直接回滚不用操作真实数据库。对于熟悉原生 Delphi 的开发者来说这是个非常实用的“旁路”技巧能绕开大量 Office 环境依赖问题。5. 常见问题与排查技巧实录5.1 安装后工具箱找不到控件或编译报“File not found”这可能是安装中最常见的问题。工具面板找不到控件多半是设计期包没有成功注册可以进入 Components Install Packages 查看是否包含 DevExpress 相关的*.bpl。如果没有用 Add 手动添加 DevExpress 安装目录下 Bin 里的相应 bpl。编译报 “File not found: cxClasses.dcu” 则不是包的问题而是 IDE 的 Library path 缺少源码或 DCU 路径按前面 2.3 的步骤补全即可。还有一种比较隐蔽的情况项目文件里引用了旧版本的 DevExpress 路径比如工程之前是在 Delphi 10.4 上创建的打开 Delphi 13.1 后编译器仍在找旧版本 dcu。解决方法很简单在项目选项里把 Search path 中所有旧版本 DevExpress 路径删除让 IDE 从全局 Library path 自动解析。5.2 打开窗体时出现“Class TcxGrid not found”出现这个错误表示 IDE 试图读取窗体文件的类名但设计期包没有加载。最常见原因是升级 DevExpress 后旧窗体中保存的类名和版本号与新版包不一致或者窗体仍引用了已卸载的旧包。优先试两种处理一是把原来的窗体文件备份然后在.dfm文件中搜索 Tcx 开头控件确认类名没有拼错二是用文本方式手动打开 dfm把标识符后的版本号去掉。如果工程内有多个窗体可以在项目右键用“Add to Project”重新添加相关单元让 IDE 重新分析。这类问题在版本迁移时特别频繁别急着重装先检查包加载顺序。5.3 多版本Delphi共存时的控件注册冲突不少开发者机器上装了 Delphi 10.4、11、12 和 13.1 多个版本于是安装了多套 DevExpress 版本。它们之间有冲突吗有但可以通过隔离避免。首先不同版本安装时选不同的安装目录不要覆盖其次一个 IDE 版本只对应一套 DevExpress 版本号不能把 26.1.3 的 dcu 给 10.4 用最后注册表里的 ActiveX 项可能会被后安装版本覆盖尤其如果旧项目还用了某些独立 ActiveX 控件建议在项目组文件.groupproj中明确 IDE 版本。还有一种做法是给每个 IDE 版本建独立的虚拟桌面或虚拟机开发环境互相隔离虽然笨但在同时维护多个老项目时最省心。我在接外包项目时就是这么处理的避免改完新版后还得回头给旧版重新编译的痛苦。5.4 运行时提示缺少 bpl 运行库开发机编译通过拷到客户机器上却报“缺少 VCLxxx.bpl”或“此应用程序无法启动因为找不到 dxBarEditorsD26.bpl”。这是因为 DevExpress 的运行时包默认是动态链接 bpl不是静态编进 exe 的。解决方案有三种第一把所需的 bpl 文件复制到 exe 同目录最简单但会暴露一堆文件第二使用 IDE 的 Project Deployment 将需要的运行库打包第三在工程选项里把 DevExpress 相关运行时包改为静态编译Runtime Packages 里取消勾选 Build with runtime packages。静态编译的效果是 exe 会变大但部署方便。注意如果是 64 位工程需要复制 x64 版本的 bpl不是从 Win32 Bin 里复制这一点经常被忽略。5.5 控件使用误区和许可证问题最后说一个容易被忽略的点。标题里的“EN.rar”只是英文安装包的压缩形态不等于可以免费分发或随意使用。DevExpress 是有商业授权的控件产品团队商用前要确认已购买相应版本的授权。网上流传的所谓“激活补丁”“绿色版”不建议碰一是版本不完整容易埋雷二是控件包更新频繁后续升级会崩溃。一个项目如果在基础控件层上用了盗版后期遇到 bug 想找官方技术支持都没有入口。如果只是个人学习DevExpress 官方也提供试用版功能不阉割只是会有试用提示。我的建议是如果是公司采购直接在项目成本里算上控件授权如果只是个人研究先用试用版把功能链路跑通再决定是否购买。5.6 性能与稳定性的个人经验使用这套控件几年后我的体会是它确实强但也很“重”。一个空窗口放了一堆 cxGrid 和 dxLayoutControl 后启动速度和内存占用都比原生工程高。为了平衡我通常会做三件事一是只在确实需要的界面用 cxGrid简单列表用原生 TListView 或者轻量字符串列表避免一个面板几十个 DevExpress 控件二是合理使用 ViewInfo 缓存和样式仓库用 cxStyleRepository 集中管理样式而不是在每个控件里分别写死颜色三是大数据量下先做服务器端分页不要把所有记录一次性拉到客户端哪怕 cxGrid 能扛住十万行网络和内存也扛不住。其实用户要的不是一次显示十万行而是快速看到第一页。6. 一些我踩过坑之后才明白的事这里不写总结了只分享三个小习惯。第一在项目目录里单独建一个 Dependencies 文件夹把 DevExpress 版本号、安装日期、授权信息记录在 README 里避免三个月后自己都忘了用的是哪个版本第二每次升级控件前先把整个工程复制一份用 SVN/Git 打标签因为 DevExpress 的大版本升级会产生大量 dfm 变化回滚成本很高第三遇到奇怪的显示问题先试试换一个皮肤很多时候不是代码问题而是皮肤对某些场景支持不好。个人经验里最值钱的一条是不要把 DevExpress 当成“万能控件堆”它不是装得越多越好。真正高效的做法是把项目中反复出现的那十个组件用得滚瓜烂熟配合自己的公共函数库剩下的边缘需求用原生控件或写自绘解决。这套 DevExpress VCL Controls 26.1.3 EN 装一次、配好路径后面就只是一个工具能不能把项目做成“有质感”的产品最终还是取决于你对 Windows 桌面业务交互的理解。希望这篇记录能帮你少走一些弯路。本文还有配套的精品资源点击获取
返回列表