ARTICLE DETAIL

资讯详情

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

DevExpress VCL 25.2.7在Delphi 13.1中的安装与集成

DevExpress VCL 25.2.7在Delphi 13.1中的安装与集成 简介在Delphi桌面应用开发中VCLVisual Component Library是经典的可视化组件框架而DevExpress VCL Controls作为商业控件集提供了从网格、编辑器到皮肤的一整套增强组件能显著提升界面开发效率。其安装过程涉及IDE版本匹配、组件包选择、编译平台配置等多个环节正确完成注册与库路径设置才能让控件集在IDE中正常显示并调用。掌握这一流程不仅能为新项目快速搭建统一界面也能帮助开发者将传统DBGrid迁移至功能更强的cxGrid实现数据展示、排序分组、导出等高级能力从而在复杂桌面应用开发中节省大量时间。以Delphi 13.1为环境详解DevExpress VCL Controls 25.2.7的安装集成与常见问题排查。 上周同事扔给我一个压缩包文件名写得很直白Delphi 13.1控件之DevExpress VCL Controls 25.2.7.rar。当时新项目刚立项统一界面方案定的就是DevExpress所以这份控件包必须尽快在Delphi 13.1环境里装好、跑通、接进现有代码。我花了一下午把这个过程完整过了一遍包括解压、安装、集成、验证以及把老项目里的普通网格替换成cxGrid的实操。今天把这套流程整理出来正在用Delphi做桌面应用、想引入DevExpress VCL Controls但还没配过环境的朋友可以直接照着做能少走不少弯路。1. 安装前的环境准备先把版本和框架理清楚1.1 确认Delphi版本和组件包适用范围拿到压缩包后别急着双击第一件事是确认本地Delphi版本是不是够新。DevExpress VCL Controls的版本号跟Delphi版本是强关联的25.2.7这个版本官方对IDE版本有明确要求太老的Delphi装不上装上了也会在编译期报一堆dcu版本不匹配的问题。我这边用的是Delphi 13.1打开IDE后从Help About里能看到完整版本号。这里有个容易踩的坑Delphi的版本号体系和年份命名混着用很多人会把13.1当成XE系列或者早期版本实际上13.1是较新的大版本对应的组件支持已经比较完善。如果IDE版本低于要求建议要么升级IDE要么换一个旧版DevExpress控件包硬装是在给自己挖坑。组件包的名字里写了VCL Controls这就点明了它的适用范围只能用在经典VCL窗口应用里。最近社区里越来越多人在搜Delphi FireMonkey PDA扫码、FireMonkey Android扫码这类话题如果你打算做跨平台移动端的界面需要的是DevExpress的另一条产品线而不是这套VCL Controls。两个框架不能混装也别想把VCL控件直接拖到FMX窗体上类型体系完全不一样。1.2 解压与目录规划的正确姿势rar文件不是什么神秘东西WinRAR或7-Zip都能解压。我习惯新建一个专门的目录用来放第三方组件比如D:\Components\DevExpressVCL不放在桌面也不放在C盘系统目录更不要放在带中文或空格的路径下。这一条看着啰嗦但每次有人编译报错我第一个怀疑对象就是路径问题。解压之后看一眼文件结构。官方安装包一般是exe格式但是这个rar里装的是安装程序加一部分组件文件。常见的结构是setup.exe或dxVCL 25.2.7.exe然后附带Source源码目录、Lib编译产物目录、Packages工程目录。如果没有看到exe说明拿到的是绿色版或手动注册版那种情况需要手动把目录配置进IDE的Library路径然后逐个编译package流程更繁琐我后面会专门讲手动方式。解压完成后右键以管理员身份运行安装程序。这一步很重要Win10/Win11的UAC权限控制很严格不升权限可能导致安装程序写不到Program Files或注册表后面IDE就扫不到控件。2. 一步步把DevExpress 25.2.7装进Delphi 13.12.1 安装程序里的几个关键选择安装过程中有几个界面不是一路Next就完事的选错了后面会很麻烦。第一个关键点是IDE版本选择。安装程序会自动扫描本机已经安装的RAD Studio / Delphi版本Detected项里会出现Delphi 13.1勾选它。如果你机器上同时装了多个Delphi版本这里可以一起勾但我建议只勾当前要用的版本省得组件包在多个IDE里各自编译一遍浪费时间也容易搞乱。第二个关键点是组件套件的选择。DevExpress VCL并不是一个单独控件而是几十个子套件的集合比如ExpressQuantumGrid、ExpressPageControl、ExpressEditors、ExpressSkins、ExpressPrinting等。安装界面里会列出所有子套件第一次安装我建议全选。理由很简单现在省事不选等做项目做到一半发现需要某个套件又要回头重跑一遍安装和编译更耽误时间。硬盘不缺这几百兆空间全选一次到位。第三个关键点是编译平台。默认只编译Win32如果你项目以后有可能切64位把Win64也勾上。我当时没勾后来项目要求出64位版本结果又花了半小时重新编译所有包这事一定要提前做。安装程序运行时会有Build Packages的阶段这个阶段实际是在调用Delphi的编译器编译运行期包和设计期包时间长短取决于机器配置一般10到30分钟都正常。期间不要开很多IDE实例避免编译器锁冲突更不要中途取消否则安装状态是残缺的很难修复。2.2 安装后的IDE集成验证安装完成后先别急着写代码重启一次Delphi。重启后打开一个VCL窗体左侧工具面板里往下翻能看到一大片cx开头的控件比如cxGrid、cxButton、cxDateEdit、cxLookupComboBox等。看到这些就说明控件集已经装进IDE了。如果工具面板里没有还有一种可能控件已经编译好了但设计期包没有注册。这时候手动打开Component Install Packages菜单在弹出的对话框里找找有没有Express相关的design time package找到后勾选它如果列表里根本没有就在对话框里点Install按钮去安装目录的bin文件夹里选对应的.bpl设计期包文件然后重新编译并注册。注册完设计期包之后建议再做一步验证新建一个VCL项目拖一个cxButton到窗体上按F12查看dfm文件能看到cxButton的类名说明注册成功再编译运行一次运行期包也正常基本就稳了。2.3 手动注册流程的原理说明我前面提到有些rar包里可能没有exe安装程序只有纯源码和编译好的dcu文件。这种情况需要手动注册原理跟exe安装是一样的只是把每一步拆开做。手动注册的基本步骤是把几个关键目录加入IDE的Library路径Sources目录、Lib目录里面按Win32/Win64分成子目录和Packages目录。路径加入后在IDE里打开包工程文件比如dxVCL.dproj或对应的package工程逐个右键Build然后在Installed Packages里手动添加编译产生的.bpl文件。手动方式耗时更长而且版本和路径写错一个就编译失败。我的建议是优先找完整安装包实在只有源码再说。如果你不确定手头文件是不是完整的先看有没有.dproj或.dpk文件一个都没有就说明包不全别浪费时间。3. 装完先干这三件事验证控件、熟悉核心组件、替换网格3.1 从普通DBGrid迁移到cxGrid很多老Delphi项目都是从TDBGrid迁移过来的这也是DevExpress最核心的使用场景之一。装好组件后我建议先在测试项目里做一个最简单的替换把逻辑跑通再动真实业务窗体。替换的第一步是拖一个cxGrid和cxGridDBTableView到窗体上。cxGrid跟TDBGrid最大的不同在于它分了两层结构外层是View的容器内层才是真正显示数据的TableView。数据源连接方式不变还是DataSource组件但DataSource要挂在TableView的DataController上。下面这个示例是把FDQuery查出来的数据直接绑定到cxGridFDQuery1.Connection : FDConnection1; FDQuery1.SQL.Text : SELECT order_no, order_date, customer_name, total_amount FROM orders WHERE order_date :startDate ORDER BY order_date DESC; FDQuery1.ParamByName(startDate).AsDateTime : cxDateEdit1.Date; FDQuery1.Open; DataSource1.DataSet : FDQuery1; cxGrid1DBTableView1.DataController.DataSource : DataSource1; // 手动创建列设置列标题和宽度 var colId : cxGrid1DBTableView1.CreateColumn; colId.Caption : 订单号; colId.FieldName : order_no; colId.Width : 120; var colDate : cxGrid1DBTableView1.CreateColumn; colDate.Caption : 下单日期; colDate.FieldName : order_date; colDate.Width : 100;这段代码里要注意CreateColumn需要赋值给一个变量因为新创建的列如果不保存引用后续调整属性会非常麻烦。cxGrid的列和字段是分离的FieldName指示绑定哪个字段Caption才是界面显示的名称这一点和TDBGrid不太一样新手容易搞混。3.2 了解常用的几个核心控件cxGrid虽然是最容易感知到价值的控件但DevExpress的日常使用从来不是靠一个控件撑起来的。我刚接触这套组件时最先熟悉的是下面这几个投入产出比最高。cxTextEdit和cxDateEdit属于输入类控件看起来像普通Edit但多了很多细节能力比如日期控件自带日历下拉、文本控件支持空值提示符NullText。最典型的用法是配合查询参数全局资源里放一个cxDateEdit让用户选日期点击查询后把Date值传给FDQuery的Param就是我上面示例里的写法。cxLookupComboBox是下拉框的进阶版本它不维护自己的数据集而是通过Properties.ListSource指向一个查找数据集显示字段和值字段可以分开。比如员工下拉框下拉列表显示“张三”但Value存的是员工ID这对后面的查询和保存都方便。用的时候勾选Properties.DropDownListStyle为lsEditFixedList避免用户随手输入脏数据。cxButton虽然是按钮但跟普通TButton比起来绘图层是完全接管了的配合皮肤系统能做到界面风格高度统一。cxNavigator则是把增删改保存按钮集成在一个细长条里在网格下方放一个用户就能直接导航和编辑数据不用自己画按钮、写Click事件。还有一个容易忽略但非常实用的组件TcxLookAndFeelController。把它放在主窗体上设置Kind为Office11或Windows11整个项目里所有DevExpress控件都会统一使用这个视觉风格。这样就不用每个窗体单独去设置控件的颜色和字体对老项目改造特别友好。3.3 在代码层面做一次替换演练新项目直接从头拖控件当然轻松但如果要把已有窗体里的TDBGrid换掉就需要一点技巧。我的做法是先用上文例子做一个查询功能跑通再接一个带主从表结构的示例。主从表在TDBGrid时代很麻烦要布置两个Grid、两个DataSet、两个DataSource还要设置MasterSource和MasterFields代码很容易乱。cxGrid对主从表的处理方式不同一个cxGrid里可以建多个Level主TableView下面挂子View数据层依然用MasterSource和DetailKeyField关联但界面布局由cxGrid统一管理。如果你以后维护的窗体是主从结构强烈建议直接按这个思路重构不要继续用两个独立的TDBGrid去硬拼。在一个cxGrid里显示主从数据用户体验和开发体验都会好很多。4. 实战中常踩的坑与排查清单4.1 安装后IDE里找不到控件这个问题的出现频率最高。先别怀疑安装失败按顺序排查打开Component Install Packages看设计期包是否被勾选如果包路径没注册到Tool Options Environment Options Delphi Options Library里确认安装目录的几个子目录是否出现在搜索路径里如果路径没问题但就是看不到控件可能是编译平台不对比如你Delphi跑的是64位但包的bpl只编译了32位。库路径设置的常见问题是同时装了多个版本DevExpress后装的把老版本的路径覆盖了。我看到过有人问“Delphi控件版本问题导致每次进入IDE都丢失控件重新放置后还是那样”这类问题多半就是路径冲突。解决方法是把Library搜索路径里所有DevExpress相关目录清空只保留当前25.2.7的路径保证最后打开的是新版本文件。4.2 编译报File not found或dcu/dcp版本不一致刚装完DevExpress后第一次编译老项目最常见的就是“File not found: dxPSGlbl.dcu”之类的报错。这不是代码问题是Delphi找不到对应dcu。发生这种情况说明Library路径没有把DevExpress的Lib目录排进去或者排进去了但顺序不对。Delphi搜索路径是按顺序来的如果前面有其他目录里有同名dcu就会优先加载旧版本然后出现版本错乱。版本不一致的问题在dcp文件上体现得特别明显打开老项目IDE提示“无法打开某package.dcp”。这通常是因为安装包之前被重新编译过dcp文件名或路径变了。解决办法是不要自己手动动包工程直接用安装程序自带的重新编译功能或者手动把旧pdc/dcp文件全部清理掉再统一编译一次。4.3 64位与32位平台兼容问题DevExpress VCL的包分32位和64位编译一个平台要花不少时间所以很多人习惯只装32位结果项目切到Win64平台编译时链接器开始报一堆无法解析的外部引用。解决思路很粗暴回到安装程序补上Win64的包或者在已装的包工程里切换目标平台为Win64重新Build然后把bin\Win64目录也加进Library搜索路径。一个实用经验一个项目从头到尾只用一个目标平台。项目和容器都设置成Win32或Win64二选一不要混用。如果你主项目是Win32但公司有人改成Win64试了一把编译结果文件混在同一个输出目录里很容易把原来的dcu覆盖掉下次编译会莫名奇妙报错。4.4 安装过程中失败的处理建议安装程序Build Packages阶段如果报错先看错误信息是编译器报的还是安装程序报的。编译器报错说明Delphi环境本身有问题比如IDE还开着、另一个Delphi进程锁定了dcu、或者杀毒软件在后台扫描文件。安装前退出所有IDE实例把杀毒软件对安装目录和Delphi目录的实时监控关掉再重新跑一遍。如果安装程序一直停留在某个包编译界面大概率是源码文件被占用了。重启机器保持IDE关闭再次运行安装程序往往就能过。还有一点如果你用的是专业版/社区版Delphi确认它支持第三方包编译社区版功能受限的情况偶尔也有。4.5 常见问题速查表现象原因解决方法IDE工具面板里看不到cx控件设计期包未注册Component Install Packages里勾选Express design time包编译报File not found: xxx.dcuLibrary路径缺失或顺序不对把DevExpress的Lib目录加进Library搜索路径前排启动时提示无法找到xxx.bpl运行期包路径不在系统PATH把bin目录加入系统PATH或把bpl放到exe同目录每次重启IDE控件消失多个版本DevExpress路径互相覆盖清理Library路径只保留25.2.7一个版本切换到Win64编译链接失败只编译了32位包安装时勾选Win64重新Build运行期包安装程序中途失败IDE进程占用文件或杀毒干扰关闭IDE、暂停实时监控、重启后重试5. 从安装到项目落地几条值得记住的实践建议5.1 把DevExpress和周边开发场景串起来控件装好只是第一步真正提高开发效率在于如何把DevExpress和常用的开发场景结合。比如最近社区里好多人搜Delphi用SQL查询数据、JSON解析、MD5计算、Excel导入导出。这些场景和DevExpress控件放一起操作起来很顺手。拿Excel导出来说cxGrid的TableView自带导出功能不用再装第三方报表组件。调一个方法就能把当前网格里的数据导出成xlsxcxGrid1DBTableView1.SaveToXLSX(D:\export\orders.xlsx);做查询界面时cxGrid配合FDQuery cxDateEdit cxButton就是一套完整方案日期选好后点查询拉取数据网格直接显示用户还可以在网格里做分组、排序、汇总这些能力不写一行代码就能用。JSON和Delphi的数据交互也是一样FDMemTable加载JSON数据再绑定到cxGrid前端从Web API拉数据的界面瞬间就能做出来。如果你平时主要用Delphi写工具类桌面程序这一套下来开发效率的提升非常明显。5.2 界面风格和布局持久化DevExpress控件的视觉风格和用户操作习惯的持久化是它最被人低估的功能。给主窗体放一个cxLookAndFeelController把Kind设置成某种现代风格整个应用的按钮、输入框、网格样式全变不需要一行代码。其次是布局保存。你让用户自己调了网格列宽、顺序、排序方式总不能每次关程序都重置。DevExpress提供了TcxPropertiesStore可以方便地把控件的属性持久化到ini或注册表。最常用的是在FormClose里保存FormCreate里恢复cxPropertiesStore1.StorageName : ChangeFileExt(Application.ExeName, .ini); cxPropertiesStore1.StorageType : stINIFile; cxPropertiesStore1.RestoreFromStorage;一行Save、一行Restore网格的状态就全部保存下来了。这个功能对用户体验的提升非常明显建议所有用cxGrid的项目都加上。5.3 迁移老项目的最佳顺序如果你跟我一样要面对一堆老窗口最忌一次性全替换。我的建议流程是新项目或测试窗先跑通核心场景然后在主干分支基础上开一个迁移分支一个窗体一个窗体替换替换完立刻编译测试确认没问题再提交。不要三天两头换一大片不然到时候定位问题都不知道是新控件问题还是业务逻辑问题。迁移之前先做好代码备份。DevExpress这套组件对老代码的兼容性总体不错但有些第三方控件和它重名或行为不一致迁移过程中大概率要微调事件代码。比如原来的TDBGrid双击事件、右键菜单事件迁移到cxGrid后事件参数类型不同需要逐个适配。5.4 授权和版本更新建议最后说一句跟安装无关但很重要的事DevExpress是商业控件如果是在公司项目里使用安装前务必确认采购了对应授权。公司统一采购或自备Licensing很常见个人学习可以先下试用版评估但别把未授权的控件集用在商业交付项目里。版本更新方面devExpress每年会有两到三个大版本25.2.7属于较新时间段的发布版。安装这类组件包时记下当前各项目用的Delphi版本和DevExpress版本升级前逐个项目做回归不要跟风升级。一点经验收尾装组件库这种事最怕来回折腾。我第一次配DevExpress的时候因为解压路径里有中文编译报错浪费了半小时后来把所有相关目录统一加了英文路径重新编译一遍才好。装完之后记得把Delphi里Library路径和Installed Packages的勾选状态截图保存以后环境坏了也好恢复。我个人在实际使用中的体会是DevExpress VCL Controls装的不是一两个控件而是一整套界面和数据交互的思路。装好之后别急着写业务先拿测试项目拖几个核心控件熟悉一下属性尤其是cxGrid的层级结构和cxLookupComboBox的属性配置这两样搞明白了后面写界面会顺很多。本文还有配套的精品资源点击获取
返回列表