如何批量对Delphi单元中所有类执行Complete Class at Cursor操作?
批量完成Delphi单元中所有未实现的类(解决Shift+Ctrl+C光标跳转问题)
问题背景
我编写了CreateUnit函数,可从SwaggerHub导出的特殊JSON文件提取对象并生成Delphi单元,函数调用示例:
CreateUnit('d:\a.json', 'd:\MyAPI.pas');
生成的单元结构如下:
unit MyAPI; interface type TType1 = class; TType2 = class; TType3 = class; ... TType1 = class property p1: TType1; property p2: TType2; property p3: String; property p4: Integer; end; TType2 = class property p1: TType1; property p2: TType3; property p3: String; property p4: Integer; property p5: Integer; property p6: string; end; ... implementation end.
该单元包含133个类,我需要对每个类执行「Complete Class at Cursor」(快捷键Shift+Ctrl+C)生成实现代码,但每次执行后光标会跳转到单元底部,手动返回查找下一个未完成类的效率极低,求可行解决办法。
解决方案1:利用Delphi宏录制自动化操作
- 打开目标单元文件,启动宏录制:
Tools→Macro Recorder→Start Recording - 手动完成一次完整的类处理流程:
- 将光标定位到未完成的类定义行(如
TType1 = class) - 按下
Shift+Ctrl+C执行类完成操作 - 用
Ctrl+F搜索下一个= class(注意排除带分号的前向声明= class;),将光标定位到新的类定义行
- 将光标定位到未完成的类定义行(如
- 停止录制并保存宏(比如命名为
CompleteNextClass) - 重复执行该宏,直到所有类处理完成;也可设置宏循环执行,直到找不到下一个目标位置。
解决方案2:修改CreateUnit函数直接生成完整实现
既然是自定义生成单元的函数,最彻底的办法是在生成代码时直接补全类的实现部分:
- 在生成
interface的类定义后,自动在implementation区块生成每个类的空实现框架,例如:
implementation { TType1 } function TType1.Get_p1: TType1; begin end; procedure TType1.Set_p1(const Value: TType1); begin end; { TType2 } // 同理生成TType2的属性访问方法或空方法实现 ... end.
这样生成的单元无需后续手动执行类完成操作。
解决方案3:借助第三方IDE扩展工具
使用Delphi第三方插件批量处理:
- GExperts:通过「Class Explorer」批量选中所有类,一键触发生成实现的操作
- CnWizards:内置批量生成类实现的功能,可一次性处理所有未完成类,避免光标跳转问题
内容的提问来源于stack exchange,提问作者Mahan
相关产品推荐
相关产品推荐

