
简介面向Delphi 12.1/12.3开发者的KonopkaControls 7.0控件包提供一套成熟的VCL界面组件常用于增强桌面应用界面交互与视觉表现。压缩包约13.32MB共876个文件主体为pas源代码、dcu编译单元、hpp头文件和dfm窗体设计文件附带bpl运行时包、bpi/dcp导入库以及bmp位图资源便于在IDE中直接安装并查看控件内部实现。目前已有51人学习下载适合正在使用新版Delphi、希望集成或二次开发Konopka控件的程序员。资源内除了完整控件源码外还包含res/inc辅助文件、示例图标与若干说明文档可帮助理解各控件的属性、事件与绘图逻辑对于需要定制界面或排查兼容性问题的场景这套文件结构也能提供清晰的参考依据。1. 在 Delphi 12.3 里装 KonopkaControls先别急着解压 7z看到KonopkaControls-290-7.0-For12.1.7z这个文件名第一反应是解压找个 setup.exe。这类开源 VCL 控件集基本没有安装向导包里是 dpk 工程、pas 源码、bpl 运行库的松散组合双击的结果通常是 IDE 弹 cannot load package或者控件面板里输入 tv 什么都搜不到。真正的安装动作在 IDE 内部编译包、注册设计期包、配 Library Path。KonopkaControls又称 Konopka Signature VCL Controls提供 TtvButton、TtvPageControl、TtvObjectInspector 这批自绘控件做内部工具界面、属性面板、文件列表场景很常见。注意文件名里的 For12.1包内预编译的 bpl/dcp 是按 Delphi 12.1 生成的装到 12.3 会撞上编译器版本校验解决办法是先走源码重编。刚入门 Delphi 的人可按步骤装完老手重点看 12.3 与 12.1 的差异点和高分屏参数装一次能少踩一半的坑。2. 从 7z 到控件面板KonopkaControls 在 Delphi 12.3 的完整安装路径2.1 拆包前先看懂文件名290、7.0、For12.1 与 Delphi 12.3 的关系这类第三方打包的控件集没有统一的版本命名规范常见做法是把 290 看作发布序列号或源码快照编号7.0 是控件集内部主版本真正有用的信息是最后一段 For12.1——它告诉你预编译产物对应的 Delphi 版本。Delphi 12 系列在注册表和安装路径上统一使用 BDS 23.012.1、12.2、12.3 是同一 IDE 主版本下的小版本更新但小版本之间编译出来的 bpl 会写入不同的版本校验标记不能混装。网上流传的 delphi 12.3 绿色版、精简版也是同一个道理先确认你的实际构建号再决定要不要重编。(Get-Item C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\bds.exe).VersionInfo | Select-Object FileVersion, ProductVersion这段 PowerShell 读取 IDE 主程序的文件版本。FileVersion 显示精确构建号例如 12.3.x 的某个 Patch 版本只要它不是 12.1 对应的构建就把包内 Precompiled 目录当成参考而不是安装目标。表里列了包内常见文件的用途方便拆包后对号入座后缀在安装流程里的作用什么时候要关心它.7z压缩容器不是安装包解压阶段.dpk / .dproj包工程文件设计期包在这里点 Install编译安装.bpl编译后的包分运行期与设计期两种加载报错、发布程序.dcp包的导入元数据编译工程时链接.dcu已编译单元Library Path 查找.pas控件源码重编、调试、改行为2.2 用 7-Zip 解压并确认包内文件结构Windows 下解压 7z 最可靠的工具是 7-ZipWinRAR 也能开但对个别 7z 特性的兼容性不如原版。Linux 上装 p7zip 后命令一样适合把组件源码丢到 CI 或者 WSL 里做批量构建的环境。# -o 后面紧跟输出目录不要加空格-y 表示覆盖已存在文件 7z x D:\Downloads\KonopkaControls-290-7.0-For12.1.7z -oD:\Components\KonopkaControls -yx表示按完整路径解压并保留目录结构-o指定输出根目录-y跳过交互确认。解压完成后先看目录布局常见的结构是 Source 放控件源码Packages 或 DPK 放包工程Lib 或 Precompiled 放按 12.1 预编译好的 bpl 和 dcu。 判断准则是一条第一遍安装不要抄近路把 Precompiled 目录直接加进 Library Path先让源码编译一次保证后续 12.3 的工程用的都是本机生成的产物。2.3 在 IDE 里编译并安装设计期包用 Delphi 12.3 打开包工程入口是 View → Project ManagerCtrlAltF11在树里找到后缀为 .dpk 或 .dproj 的节点。右键包节点先确认 Config 下拉切到 ReleasePlatform 默认 Win32右键 → Build看 Messages 窗口是否出现错误编译通过后在包含 Design 或 DSGN 字样的包节点上右键选择 Install看到 Package ... installed 的提示控件面板里搜索 tv 就应该出现 TtvButton 等条目如果 Install 菜单是灰色说明这个包是运行期包回去找设计期配套包。提示Install 是灰色不代表失败。KonopkaControls 这类控件集通常拆成运行期包和设计期包两个工程运行期包负责把类编进 bpl设计期包负责注册到 IDE 的工具面板只有后者能执行 Install。设计期包只在 IDE 进程里加载用于提供属性编辑器和控件面板图标运行期包在编译后的 exe 启动时加载二者缺一不可。Delphi Community Edition 的安装流程完全相同只是不能连接商业组件源不影响本地包编译。2.4 配置 Library Path 让它同时支持 Win32 与 Win64安装完包编译自己的工程时常见报错是找不到 dcu根因往往是 Library Path 没配。路径在 Tools → Options → Language → Delphi → Library顶部的 Platform 下拉框要分别切到 Win32 和 Win64 各加一次 Source 目录。# 把运行期 bpl 复制到工程输出目录避免客户机没有 Delphi 环境时报加载不到包 copy /Y D:\Components\KonopkaControls\Source\Lib\Win64\Release\*.bpl C:\Projects\MyApp\Win64\Release\copy的源目录名以你解压后的实际布局为准先执行dir /b D:\Components\KonopkaControls\Source\Lib\Win64\Release看一眼文件名。运行期包在 IDE 里能加载不代表编译出的 exe 也能加载发布时把 bpl 放在 exe 同目录是最省事的方案。Library Path 是 IDE 级的全局查找路径工程级 Search Path 只对当前工程生效遇到我这个工程能找到、新工程找不到的情况优先检查是不是只配了工程级路径。3. 上手 TtvButton、TtvPageControl 与 TtvObjectInspector 的高频用法安装完成后不用把几十个控件全拖一遍挑高频的四五个用起来即可。KonopkaControls 的控件以 Ttv 开头多数是自绘控件行为比原生 VCL 控件更接近现代界面鼠标悬浮、按下状态由控件自己渲染不依赖系统主题。下表是高频控件和它们的核心差异控件常用属性相比原生 VCL 的体验差异TtvButtonCaption, Glyph, Layout自绘按钮状态切换不闪烁TtvPageControlTabPosition, TabHeight, HotTrack页签可多行、可换边TtvObjectInspectorSelectedObject, Attributes运行期可编辑的属性网格TtvFileNameListBoxDirectory, Mask, MultiSelect文件列表自带过滤与多选3.1 用 TtvButton 和 TtvPageControl 搭一个带反馈的主界面下面的代码演示在 FormCreate 里动态创建按钮和页签。动态创建的好处是能脱离 DFM 观察控件行为适合验证控件是否安装成功。unit MainUnit; interface uses Winapi.Windows, System.SysUtils, System.Classes, Vcl.Controls, Vcl.Forms, KSVCButtons, KSVCPageControl; // 具体单元名以解压后的 Source 目录为准 type TMainForm class(TForm) procedure FormCreate(Sender: TObject); private FBtnApply: TtvButton; FPages: TtvPageControl; procedure ApplySettings(Sender: TObject); end; implementation {$R *.dfm} procedure TMainForm.FormCreate(Sender: TObject); begin FBtnApply : TtvButton.Create(Self); FBtnApply.Parent : Self; FBtnApply.Caption : 应用配置; FBtnApply.Left : 16; FBtnApply.Top : 16; FBtnApply.OnClick : ApplySettings; FPages : TtvPageControl.Create(Self); FPages.Parent : Self; FPages.Align : alClient; FPages.TabPosition : tpTop; end; procedure TMainForm.ApplySettings(Sender: TObject); begin // 在这里写配置落盘逻辑 end; end.代码里只用了三个必要步骤先 Create再指定 Parent最后设置位置和事件。TtvPageControl 的Align : alClient让页签占满剩余客户区TabPosition控制页签栏方位Konopka 版本普遍支持 tpTop、tpLeft、tpRight、tpBottom。如果 IDE 提示找不到 KSVCButtons说明单元名在不同发布版里有差异直接在 Source 目录里搜TtvButton class就能定位到正确的 uses 单元。3.2 TtvObjectInspector运行期属性网格的两个关键参数TtvObjectInspector 是这套控件集最值得用的部分外观和 IDE 自己的对象监视器一致可以把它嵌在窗体侧面做一个运行期调整配置的面板省掉一排 TEdit 和 TComboBox。procedure TForm1.FormShow(Sender: TObject); begin // SelectedObject 传入任意 TPersistent 实例网格会自动列出可发布属性 tvInspector1.SelectedObject : FBtnApply; // iaGrouped 按分类显示属性多的时候可读性明显更好 tvInspector1.Attributes : [iaGrouped]; end;SelectedObject是网格的数据源传进去的对象可以是窗体、控件也可以是一个专门写出来的配置类TPersistent 子类运行期改动属性值会直接写回对象。Attributes控制显示行为iaGrouped 让属性按分类折叠展示iaReadOnly 让网格变成只读适合做诊断界面而不是配置界面。新版控件在网格顶部自带属性名过滤输入框输入 Name 就能把属性列表过滤到只剩相关项这个搜索是控件内置行为不需要自己写代码。3.3 TtvFileNameListBox 与目录联动顺带处理文件名乱码文件类控件适合做工程资源管理器之类的侧边栏。下面这段把目录切换和文件加载串起来procedure TForm1.FormCreate(Sender: TObject); begin tvFileList.Directory : C:\Projects\MyApp\Source; tvFileList.Mask : *.pas;*.dpr; tvFileList.MultiSelect : True; end; procedure TForm1.tvFileListDblClick(Sender: TObject); var LEncoding: TEncoding; begin // 旧项目日志多是 GBK 编码直接 LoadFromFile 会按 UTF-8 探测导致乱码 LEncoding : TEncoding.GetEncoding(936); try Memo1.Lines.LoadFromFile(tvFileList.FileName, LEncoding); finally LEncoding.Free; end; end;Directory指定根目录Mask支持分号分隔的多组通配符MultiSelect打开后配合 SelectedFiles 属性可以拿到选中列表。FileName返回当前选中项的完整路径双击时直接喂给 LoadFromFile。乱码是中文系统下的高频问题默认 LoadFromFile 按 UTF-8 探测读 GBK 编码的旧日志或 SQLite 导出文本会显示成乱码显式传TEncoding.GetEncoding(936)是通用解法和 SQLite 中文显示乱码是同一类编码问题。4. Delphi 12.3 安装 KonopkaControls 的常见报错与排查顺序安装报错时先看错误发生在哪个阶段加载包阶段、打开窗体阶段、还是编译工程阶段。三个阶段对应的问题来源完全不同按下面的顺序排查能省时间。4.1 平台不匹配For12.1 的 BPL 直接加载 12.3 报版本冲突直接 Add 包内 Precompiled 目录下的 bpl 到 Install Packages最常见的错误是 Package ... was compiled with a different version of ... 或者 IDE 直接弹 cannot load package。原因是 12.1 和 12.3 的编译器在包内写入了不同的版本标记加载器按精确版本校验不允许混用。处理动作只有一个放弃预编译 bpl回到 2.3 用源码重建。报错信息节选常见原因处理动作Package ... cannot be loadedFor12.1 的 BPL 被 12.3 加载从 .dpk 重新 Build 再 InstallFile not found: KSVCxxx.dcuLibrary Path 没加 Source 目录按 Win32/Win64 分别补路径EClassNotFound: TtvButton设计期包没装就打开旧 DFM先装包再开窗体控件面板搜不到 tv 开头控件装了运行期包而不是设计期包找 Design 后缀包重新 Install注意报错弹窗的 Details 里如果出现具体单元名先在源码里搜这个单元的声明。多数情况是包内源码引用了较新的 RTL 行为在 12.3 下重编会自动适配不需要手工改代码。4.2 装上后控件面板没有图标Install 提示成功但控件面板搜不到排查顺序是先确认安装的是设计期包还是运行期包Component → Install Packages 列表里如果只有运行期条目面板当然不显示。设计期包通常带 Design 或 DSGN 字样右键该包节点再 Install 一次。其次检查平台设计期包必须编成 Win32IDE 本身是 32 位进程无法加载 64 位设计期包。最后清掉面板过滤器在搜索框删掉可能残留的文字再输入 tv。仍不行就重启 IDE设计期包的注册表项写入 HKCU注销当前用户或切换 Windows 用户都会让注册失效。4.3 高分屏下字体虚、子控件间距错位KonopkaControls 的控件是自绘的字体渲染依赖窗体当前的 DPI 上下文。在 125% 或 150% 缩放下默认主题字体经常发虚自绘控件按 Font.Height 计算的子控件间距也会和窗体缩放比例对不上。修改位置在 Project → Options → Application → Runtime Themes勾选启用并在 manifest 里选 PerMonitorV2窗体保持Scaled : True不要手动改设计时的 PixelsPerInch。字体统一设成 Segoe UI 9pt 或微软雅黑 9pt避免 Tahoma 在 ClearType 下的渲染问题。常见做法是做一个 BaseForm在 FormCreate 里按PixelsPerInch重新计算关键控件的 Margins所有用 Konopka 控件的窗体继承它比在每个窗体里单独调间距可靠。4.4 编译期找不到 dcu先查 Library Path 顺序提示File not found: KSVCButtons.dcu时九成是 Library Path 没配或者配到了错误的平台分支。IDE 的 Library 页面按平台分节只给 Win32 加了路径编译 Win64 工程照样报错。还有一类隐蔽问题机器上装过旧版控件集旧 dcu 残留在别的目录且排在前面编译器命中旧单元出现明明有源码却行为不对。排查时先Tools → Options → Library逐平台核对路径再删掉工程目录下所有*.dcu和__history目录重新编译。如果打开旧工程直接报 EClassNotFound那是 4.2 的未安装问题先回上一节装好设计期包。5. 快速验证用一条命令行和一个小示例确认控件可用5.1 用注册表快速确认包已注册设计期包安装成功后IDE 会在当前用户的注册表里留下条目用 PowerShell 直接读比肉眼翻 Install Packages 对话框更快Get-ChildItem HKCU:\Software\Embarcadero\BDS\23.0\Known IDE Packages | ForEach-Object { $_.PSChildName }输出里应该看到包含 Konopka 或 KSVC 字样的 bpl 名称。这个键是 HKCU 级别的换 Windows 用户登录后 IDE 不认备份时导出这个键就能在新用户下恢复注册。注意 BDS 目录的 23.0 对应 Delphi 12 系列如果你的绿色版改了注册表根路径先Get-ChildItem HKCU:\Software\Embarcadero\BDS看真实键名。5.2 命令行构建最小示例做端到端验收建一个空工程在 FormCreate 里把 TtvObjectInspector 指向 Edit1然后关掉 IDE 用命令行走一遍编译能确认设计期注册和运行期链接都没问题procedure TForm1.FormCreate(Sender: TObject); begin tvInspector1.SelectedObject : Edit1; tvInspector1.Attributes : [iaGrouped]; end;在 RAD Studio 自带的命令行窗口执行rsvars.bat msbuild KonopkaDemo.dproj /p:ConfigRelease /p:PlatformWin64 /t:Build /v:mrsvars.bat设置 BDS、Delphi 环境变量不执行它在普通 cmd 里 msbuild 找不到编译任务/t:Build表示只构建不部署/v:m把日志控制在 minimal 级别。构建通过后到输出目录确认 ksvc 开头的 bpl 已就位整个安装链路就算验收完成。源码包需要分发时习惯上用命令行加密码压缩避免接收方误改源码后无法定位版本差异7z a -t7z -p你的密码 -mhe Sources.7z D:\Components\KonopkaControls\Source加-mhe连文件头一起加密解压时必须先输密码才能看到目录列表适合给源码做版本归档。本文还有配套的精品资源点击获取