尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Delphi 12.3 下 Ehlib 111015 表格控件安装与实战指南

发布时间:2026/9/26 14:15:04

资讯中心
01
ARTICLE

Delphi 12.3 下 Ehlib 111015 表格控件安装与实战指南

Delphi 12.3 下 Ehlib 111015 表格控件安装与实战指南
简介本资源为 Delphi 12.3 环境下的 EhLib 控件包面向使用 Delphi 进行桌面应用开发的程序员尤其适合需要为 VCL 项目快速添加专业数据表格、报表与数据库感知网格的开发者。压缩包共约 2000 个文件整体 32.7MB以 470 个 dfm 窗体文件、469 个 pas 源码单元、245 个 res 资源、189 个 dproj 工程文件、170 个 dpk 包文件为主并包含 ico、png、lfm、gif 等界面素材以及 doc、docx、chm、hlp 等帮助文档覆盖源码、示例工程与说明资料。已有 60 人学习下载。读者可获得完整的 EhLib 源码与组件包便于在 Delphi 12.3 中安装、编译并集成到实际项目借助示例窗体与帮助文档理解网格、报表等控件的用法同时可参考工程结构组织自己的 VCL 应用适合需要提升数据展示与报表开发效率的中高级开发者。1. Delphi 12.3 下拿到 Ehlib 111015 这个包先搞清楚它能干什么如果你正在用 Delphi 12.3 做数据库桌面端尤其是那种表格要显示几十列、还要支持分组、合计、下拉编辑、树形展开的后台系统那你大概率绕不开 Ehlib 这个控件包。这次拆的Ehlib 111015.rar就是一套面向 Delphi 12.3 的第三方表格控件资源解压后能看到EhLibHelp.chm、EHLIB.CNT、Project1.bpr、Project2.cfg这些文件还有几张 bmp 位图。它解决的核心问题很直接VCL 自带的TDBGrid在复杂报表场景下太单薄而 Ehlib 把TDBGridEh、TDBSumList、TDBLookupComboBoxEh这一整套增强控件补齐了让你不用从零去画表格。适合谁适合手上已经有 Delphi 12.3 环境、正在做数据密集型桌面应用、又不想被第三方商业控件授权绑死的从业者。下面我按「这是什么 → 怎么装进去 → 怎么用起来 → 坑在哪」的顺序把这份资源拆开讲透。2. 包内文件与 Delphi 12.3 的对接方式从 bpr 到 IDE 控件面板2.1 先看清压缩包里到底有什么解压Ehlib 111015.rar之后目录里混着几类东西别急着双击。Project1.bpr和Project2.cfg是 Borland 时代的工程文件格式.bpr是 CBuilder 的工程描述.cfg是编译配置EhLibHelp.chm和EHLIB.CNT是帮助文档和目录索引几张.bmp是控件图标或示例位图Project1.cpp是示例源码。这里有个反直觉的点.bpr和.cpp并不代表这套包只能给 CBuilder 用Ehlib 本身是 Pascal 写的 VCL 控件Delphi 12.3 才是它的主战场这些 C 文件只是历史遗留的示例工程。常见做法是先把压缩包解到一个不带中文、不带空格的路径比如D:\Components\EhLib111015。路径带空格或中文在 Delphi 12.3 的包编译阶段容易出玄学错误这是血泪经验。2.2 在 Delphi 12.3 里安装设计期包Delphi 12.3 的 IDE 对老式.dpk包依然兼容Ehlib 的安装走的是经典流程。打开 Delphi菜单File → Open定位到解压目录下的包源文件通常是EhLib.dpk或按版本分的EhLib120.dpk之类。打开后不要直接 Build先确认Project → Options → Delphi Compiler → Target里平台选的是Windows 32-bit或64-bitEhlib 是纯 VCL不支持 FMX选错平台会报一堆找不到单元。// 安装前先确认包引用路径避免单元找不到 // 在 IDE 的 Tools → Options → Language → Delphi → Library 里 // 把解压目录下的 Source 子目录加进 Library Path // 例如 // D:\Components\EhLib111015\Source // D:\Components\EhLib111015\Source\EhLibVCL上面这段不是可执行代码而是路径配置的示意。逻辑说明Delphi 编译包时靠 Library Path 找.pas单元Ehlib 的源文件分散在Source和Source\EhLibVCL下只加一层会漏单元。参数说明32 位和 64 位要分别加Delphi 12.3 的 Library Path 按平台隔离只配一个平台另一个平台编译就翻车。配好路径后在包工程里右键Build再右键Install。安装成功后IDE 的控件面板会多出一个EhLib页签里面能看到TDBGridEh、TDBSumList、TPrintDBGridEh等。如果面板没出现先看Component → Install Packages里有没有勾上再看包的Requires里是不是引用了rtl、vcl、vclx这些基础包。2.3 帮助文档怎么用才不浪费时间EhLibHelp.chm是 CHM 格式Windows 上双击能开但如果文件是从压缩包直接运行可能被系统标记为「来自网络」而内容空白。解决方式是右键文件 → 属性 → 勾选「解除锁定」。EHLIB.CNT是旧式帮助目录文件配合 CHM 用的单独打不开不用管它。真正有用的是 CHM 里的TDBGridEh属性列表和TDBSumList的用法示例遇到属性不生效时先查这里比在网上乱搜快。3. TDBGridEh 的核心用法从绑定数据到分组合计3.1 把 TDBGridEh 接到数据集上Ehlib 的灵魂控件是TDBGridEh它继承自 VCL 的TCustomDBGrid所以用法和TDBGrid一脉相承但多了大量属性。最小可用流程放一个TADOQuery或TFDQuery连好数据库再放TDataSource指向查询最后放TDBGridEh把DataSource属性指过去。此时表格就能显示数据了但还只是「能看」没发挥 Ehlib 的价值。// 最小绑定示例查询 → 数据源 → 表格 procedure TForm1.FormCreate(Sender: TObject); begin ADOQuery1.Connection : ADOConnection1; ADOQuery1.SQL.Text : SELECT OrderNo, Customer, Amount, OrderDate FROM Orders; ADOQuery1.Open; DataSource1.DataSet : ADOQuery1; DBGridEh1.DataSource : DataSource1; DBGridEh1.AutoFitColWidths : True; // 列宽自适应内容 DBGridEh1.FooterRowCount : 1; // 底部合计行 end;逻辑说明AutoFitColWidths让列宽按内容自动撑开省去手工调FooterRowCount设为 1 会在表格底部留出一行合计区。参数说明FooterRowCount可以大于 1做多级合计时用但设了之后必须配合TDBSumList或列的Footer.ValueType才有数字否则就是一行空白。3.2 用 TDBSumList 做合计与分组TDBSumList是 Ehlib 里专门管合计的组件挂在TDBGridEh的SumList属性上。它的工作方式是你为每个需要合计的列建一个TDBSumList项指定字段名和合计类型sum、count、min、max、avg表格底部或分组头就会自动算。// 给 Amount 列加合计给 OrderNo 列加计数 procedure TForm1.SetupSumList; var SumItem: TDBSum; begin DBGridEh1.SumList.Active : True; SumItem : DBGridEh1.SumList.SumCollection.Add; SumItem.FieldName : Amount; SumItem.SumType : stSum; // 求和 SumItem : DBGridEh1.SumList.SumCollection.Add; SumItem.FieldName : OrderNo; SumItem.SumType : stCount; // 计数 end;逻辑说明SumList.Active必须先置 True否则集合加了也不生效这是最常见的「合计不出来」原因。参数说明SumType的取值里stSum求和、stCount计数、stAvg平均、stMin/stMax取极值FieldName必须和查询返回的字段名完全一致大小写敏感。分组是 Ehlib 的另一个强项。在TDBGridEh上启用STFilter或Group相关属性可以按某列分组显示组头自动带小计。常见做法是把DBGridEh1.STFilter.Visible : True然后用户点列头就能筛选分组则通过DBGridEh1.GroupPanel.Visible : True打开分组面板把列拖进去即可。这两块在EhLibHelp.chm里有属性清单建议对照着调。3.3 下拉编辑与查找字段Ehlib 提供了TDBLookupComboBoxEh和列级别的Lookup支持让表格里的外键列直接显示成可读文本而不是 ID。做法是在TDBGridEh的列编辑器里为外键列设置LookupDisplayFields和LookupKeyFields再指定LookupDataSet。// 为 CustomerID 列配置查找显示 procedure TForm1.SetupLookupColumn; var Col: TColumnEh; begin Col : DBGridEh1.Columns.Items[1]; // 假设第 2 列是 CustomerID Col.FieldName : CustomerID; Col.LookupDisplayFields : CustomerName; Col.LookupKeyFields : CustomerID; Col.LookupDataSet : LookupQuery; // 指向客户表的查询 Col.LookupDisplayField : CustomerName; end;逻辑说明这样表格里显示的是客户名底层存的还是 ID编辑时下拉可选。参数说明LookupDataSet必须已经 Open否则下拉是空的LookupKeyFields和LookupDisplayFields要对应查找数据集里的字段名写错就显示空白。4. 避坑与排查Ehlib 在 Delphi 12.3 上最容易翻车的五件事4.1 安装后控件面板没有 EhLib 页签现象包 Build 成功、Install 也点了但控件面板找不到TDBGridEh。原因通常是包安装到了错误的 IDE 版本或者Install Packages里没勾选。解决打开Component → Install Packages在列表里找EhLib相关项勾上如果列表里根本没有说明包没编译成功回去看 Build 输出里的第一个错误通常是 Library Path 漏了某个子目录。4.2 编译时报「Unit EhLibConsts not found」现象自己的工程里用了TDBGridEh编译时提示找不到 Ehlib 的单元。原因工程级的 Search Path 没加 Ehlib 源目录只有 IDE 全局 Library Path 加了不够。解决在Project → Options → Delphi Compiler → Search Path里补上 Ehlib 的Source和Source\EhLibVCL32/64 位分别配。4.3 合计行显示为空白或 0现象FooterRowCount设了SumList也加了项但底部合计是空的。原因有三SumList.Active没置 TrueFieldName和实际字段名大小写或拼写不一致数据集是TFDQuery且字段是计算字段Ehlib 拿不到值。解决先确认SumList.Active再逐字核对字段名计算字段改用TDBSumList的OnCalcSum事件手工算。4.4 中文列头显示成乱码现象列标题写中文运行时显示问号或方块。原因Ehlib 的列标题默认走TCaption如果工程没启用 Unicode 或字体不支持中文就会乱。Delphi 12.3 默认 Unicode问题多半出在字体。解决把TDBGridEh的Font.Name设成「微软雅黑」或「宋体」Font.Charset设GB2312_CHARSET再检查列Title.Caption是不是在 DFM 里存成了乱码。4.5 64 位下安装成功但运行崩溃现象32 位编译运行正常切到 64 位后一打开带TDBGridEh的窗体就崩。原因Ehlib 的某些版本对 64 位支持不完整或者包只装了 32 位。解决确认Install Packages里 64 位平台也装了对应包如果该版本确实不支持 64 位就锁定 32 位编译别硬上。这一点在下载前最好先确认Ehlib 111015这个版本号对应的具体支持情况以EhLibHelp.chm里的说明为准。5. 进阶技巧用 TPrintDBGridEh 把表格直接送进打印预览5.1 打印组件的接入方式Ehlib 除了屏幕表格还带TPrintDBGridEh能把TDBGridEh的内容直接排版打印省去自己画报表。用法是放一个TPrintDBGridEh把它的DBGridEh属性指向你的表格然后调Preview或Print。// 打印预览当前表格 procedure TForm1.btnPreviewClick(Sender: TObject); begin PrintDBGridEh1.DBGridEh : DBGridEh1; PrintDBGridEh1.Options : PrintDBGridEh1.Options [pghFitGridToPageWidth]; PrintDBGridEh1.Preview; // 打开预览窗口 end;逻辑说明DBGridEh属性建立打印组件和屏幕表格的关联pghFitGridToPageWidth让列宽自动缩放到页宽避免打印出来右边被截断。参数说明Options是集合类型常用还有pghColored彩色打印、pghFitingByColWidths按列宽适配Preview走内置预览Print直接送打印机。5.2 打印前的列宽与分页控制打印翻车最多的是列太多导致分页混乱。常见做法是打印前临时调整列宽或者用TPrintDBGridEh的PageBreaks属性手工指定分页列。另一个技巧是把DBGridEh1.Options里的dgTitles保持开启打印时列头会重复出现在每页顶部。// 打印前按页宽压缩列并让列头每页重复 procedure TForm1.PreparePrint; begin DBGridEh1.Options : DBGridEh1.Options [dgTitles]; PrintDBGridEh1.Options : PrintDBGridEh1.Options [pghFitGridToPageWidth]; PrintDBGridEh1.PageBreaks.Clear; // 清掉旧分页避免残留 end;逻辑说明dgTitles控制屏幕列头打印组件会沿用PageBreaks.Clear防止上一次打印的分页设置残留导致这次排版错乱。参数说明PageBreaks是集合可以Add指定在某列后分页适合固定列数的报表。5.3 一个我踩过的坑和现在的习惯早些年我在一个订单系统里用 Ehlib 做打印预览时列宽正常实际打印出来右边两列被切掉查了半天才发现是打印机驱动的最小边距和pghFitGridToPageWidth冲突。后来我养成的习惯是任何打印功能先在预览里量一下页宽再把TPrintDBGridEh的FitToPageWidth和打印机边距一起调不迷信默认值。从那以后我每次接 Ehlib 打印都强制走一遍「预览 → 量宽 → 调边距 → 再预览」的流程省得在客户现场翻车。希望帮到你。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。