DelphiSpeed 低代码框架

demaSpeed 得码速

得码速(demaSpeed),为 AI 编程而生:充分利用 AI 编程能力,利用 AI 而不受限于 AI。

JSON 配置化低代码框架:界面 → 入参 → API,把重复性工作降到最低;摆脱 build 桎梏,像网页编程一样高速调试、快速冒烟。

📖 查看完整示例:AI 开发工作流 · 数量单位模块 从需求描述 → 数据表 → 存储过程/中间件 → 界面,端到端展示 AI 如何参与 →
🖼️ 查看成果展示:五大核心能力实景截图 业务代码 · 数据展示 · 数据交互 · 定制化打印 · 布局记忆,真实运行界面 →

主要框架

框架图
得码速主框架架构图
一条线
功能导航菜单 -- 菜单条目
→
配置文件.fdat
→
UI 业务界面获得数据
→
数据入参+ 交互录入数据
→
API 数据提交spcall / aicall

功能导航(菜单 -- 菜单条目)定位业务入口,配置文件决定界面形态;UI 承载两条动作——读:获得数据并展示;写:数据入参 + 交互录入 → API 数据提交。配置文件穿针引线,全链路统一。

JSON 全局化 · 配置驱动

JSON 配置.fdat
→
数据界面UI 业务界面
→
挂载对话框 / 挂载 APIadd_dlg / upd_dlg · list / add / upd / del

JSON 配置决定数据界面形态,界面上挂载对话框与 API——配置穿针引线,界面与交互全部由配置驱动。

框架要点

⚙️

底层技术栈

Delphi XE10.2,原生VCL,可对接FastReport报表、SQLServer

🧩

JSON 配置驱动

JSON 配置驱动界面、表单、数据表映射

🏢

企业级定位

企业内部业务系统,替代大量重复CRUD手写代码

AI 全面介入 · 高逃逸设计

利用 AI 而不受限于 AI

AI 全面介入底层开发
存储过程CRUD
→
APICRUD
→
UI 对话框CRUD
高逃逸设计 · 所有环节都有逃逸点
🚪

存储过程逃逸

处理不了的业务 → 切换非 spcall,走正规三层 API

🔧

窗体逃逸

个性化窗体 → 字符串参数挂载到浏览窗体,不写死

🤖

对话框逃逸

高度定制对话框 → 同样可由 AI 生成,人工兜底

价值:AI 高度参与,人工兜底——避免"编程把自己编死",兼顾运行性能与迭代效率。

AI 开发工作流 · 从需求到界面

① 需求整理AI + 人工(源头)
→
② 数据表设计CREATE TABLE
→
③ 业务代码存储过程 + 中间件
→
④ 界面实现unit_dlg_edit
示例:数量单位模块

② 数据表

T003数量单位
ID · 名称 · 单位类型 · 默认
转换率 · 备注 · 简拼

③ 存储过程

sp_数量单位_add
sp_数量单位_upd
sp_数量单位_list
sp_数量单位_del

③ 中间件 · ④ 界面

T数量单位 = class

unit_dlg_数量单位_edit

需求是源头(AI 整理 + 人工确认,关键步骤);此后数据表、存储过程、中间件、界面,AI 均可高参与度生成——人工只做架构兜底与关键确认。

菜单驱动 · 两种接入方式

方式一JSON 菜单文件(格式A)直接驱动
JSON菜单文件格式A
→
菜单
→
JSON配置文件
→
业务界面

菜单直接由 JSON 菜单文件(格式A)生成,无需数据库;适合固定菜单、快速部署,配置随工程走,便于 Git 版本管理。

方式二菜单表 → JSON 菜单文件(格式B)驱动
菜单表数据库
→
JSON菜单文件格式B
→
菜单
→
JSON配置文件
→
业务界面

菜单先维护在数据库菜单表中,再导出为 JSON 菜单文件(格式B)交给框架生成菜单;适合菜单需后台维护、动态调整与权限联动的场景。

说明:两种方式的差异只在菜单来源——格式A 由 JSON 菜单文件直接提供,格式B 由菜单表导出生成;二者汇入同一链路:菜单 → JSON配置文件 → 业务界面。

配置驱动 · 数据动作调用链

配置存储过程名 → 调用API(spcall / aicall)→ 数据库存储过程

.fdat 配置存储过程名
→
API 调用层spcall / aicall
→
数据库存储过程列表 / 增 / 改 / 删

配置里写的是存储过程名,而不是直接调用的对象——存储过程本身也是一个"API":框架通过 API 层(DBCall / DbInfo)访问服务端,由 API 实现真正的存储过程执行。框架与数据库之间永远隔着一层 API。

通用维护框架 · 内建机制

📋

界面自动生成

list 接口返回字段元数据 → 自动生成表格与列

🔌

对话框挂载

add_dlg / upd_dlg 注册名 → FProxy 路由到编辑对话框

🛡️

删除保护

增删改查 + 删除确认文案可配置(%s 动态取值),防误删

🖨️

定制化打印

按模块名挂载报表模板(DPrint / QPrint / QPreview)

💾

布局记忆

保存 / 加载表格布局,按用户 + 模块隔离

🎯

参数生成器

对话框 = 参数生成器:生成 Input → 经 API 调用配置的存储过程

同一内核 · 三种应用等级

一个 exe + 一份 .fdat + DBCall = 一个可运行的应用

🪶

等级一 · 极瘦

简单几个 pas 单文件运行:界面与功能全由 .fdat 描述,配上 DBCall 就是一个完整应用,低配环境可用

🧱

等级二 · 标准客户端

叠加通用查询 / 通用维护窗体:功能由「配置 + 通用框架」承载,业务模块三件套接入,不改框架代码

🏢

等级三 · 全体系

云端配置中心(窗体配置 / 查询模板)+ 权限体系 + 定制实现:配置云端集中管理,客户端按需拉取

菜单入口ShowFunc 统一分发
→
代码级实现窗体类 / M 方法
→
本地 .fdat预留槽位
→
云端 .fdat按「窗体类型」分发

三种等级共用同一条分发链、同一个内核(FProxy 方法代理 + DBCall 服务调用 + 配置分发)。.fdat 是契约:客户端不关心功能由哪种方式实现,按窗体类型路由到对应实现(得码查询 / 得码维护 / 可继续扩展);权限按菜单名称锚定,与实现方式无关,新增实现不影响鉴权模型。另设独立运行入口:窗体可脱离主程序、凭本地配置单独运行。

价值:内核不变,形态从瘦到胖伸缩——极简单文件可跑,全体系也跑在同一条链上;规模生长靠「加配置、加注册」,不靠改内核。

框架组成

组件职责
TForm_维护通用浏览主窗体:列表 + 工具栏 + 查询条件,通用逻辑全在此
.fdat 配置文件行为参数:存储过程名、对话框注册名、交互规则
API 调用层spcall / aicall,框架与数据库之间唯一的访问通道
数据库存储过程列表、增、改、删、查询回填,由 API 层执行
对话框窗体参数生成器:界面输入 → Input JSON → 经 API 调存储过程
FProxy 注册表对话框路由:配置中的注册名 → 已注册对话框类方法

三步接入一个新业务模块

① 写存储过程list / add / upd / del
→
② 写编辑对话框注册到 FProxy
→
③ 写 .fdat 配置服务器 窗体配置\ 目录

完成——不需要修改框架代码。新增业务模块只需提供"存储过程 + 对话框 + 配置"三件套,框架自动生成浏览界面与全部交互。