5

Delphi 表单设计器非常好,但我们需要直接从源代码工作。是否有工具或脚本可以获取一批 DFM 文件并将它们转换为 Delphi 源代码?

4

2 回答 2

15

您可以使用GExpertsComponentsToCode中的功能

于 2011-09-07T11:10:53.253 回答
0

这很难,但我已经做了一个解决方案

首先,您在 Delphi 中使用表单编辑器设计表单模板,然后编写代码以生成与您设计的布局相同的 .dfm。

例如,我们可以导出带有我们在模板中创建的标签的编辑。

var Component: integer;
For Component := 0 to Form1.ComponentCount -1 do
begin
  if Form1.Component[Component] is TEdit then 
       ExportEditToMemo
  else 
  if Form1.Component[Component] is TLabel then 
       ExportLabelToMemo

...
//all components kind you want
end;

我只是展示一段代码来瞄准这个布局

class procedure TTemplateFormatter.ExportLabel(ALabel: TLabel; ALines: TStrings);
begin
  ALines.add(format('  object %s: %s', [ALabel.Name, ALabel.ClassName]));
  ALines.add(format('    Left = %d', [ALabel.Left]));
  ALines.add(format('    Top = %d', [ALabel.Top]));
  ALines.add(format('    Width = %d', [ALabel.Width]));
  ALines.add(format('    Height = %d', [ALabel.Height]));
  ALines.add(format('    Caption = ''%s''', [ALabel.Caption]));

  if Not ALabel.ParentFont then
  begin
    ALines.add(format('    Font.Charset = DEFAULT_CHARSET', []));
    ALines.add(format('    Font.Color = clWindowText', []));
    ALines.add(format('    Font.Height = %d', [ALabel.Font.Height]));
    ALines.add(format('    Font.Name = ''%s', [ALabel.Font.Name]));
    ALines.add(format('    Font.Style = []', []));
    ALines.add(format('    ParentFont = False', []));
  end;
  ALines.add(format('  end', []));
于 2022-01-08T17:35:48.030 回答