Delphi WriteComponentResFile不包括动态添加到TTabSheet的组件

Delphi WriteComponentResFile不包括动态添加到TTabSheet的组件,delphi,delphi-2007,Delphi,Delphi 2007,我正在尝试将使用自定义工具创建的一组表单转换为Delphi表单。我试图在运行时添加所有必要的组件,然后使用WriteComponentResFile创建DFM文件 在我尝试添加TPageControl和TabSheets之前,我的所有初始测试看起来都不错。当前表单可以有多个页面,所以我打算使用PageControl来镜像它。问题是,我添加到选项卡中的任何组件都不会流式输出到DFM。如果我显示表单看起来不错,但是WriteComponentResFile缺少一些内容 我正在写一个对应的pas文件,

我正在尝试将使用自定义工具创建的一组表单转换为Delphi表单。我试图在运行时添加所有必要的组件,然后使用WriteComponentResFile创建DFM文件

在我尝试添加TPageControl和TabSheets之前,我的所有初始测试看起来都不错。当前表单可以有多个页面,所以我打算使用PageControl来镜像它。问题是,我添加到选项卡中的任何组件都不会流式输出到DFM。如果我显示表单看起来不错,但是WriteComponentResFile缺少一些内容

我正在写一个对应的pas文件,这样我可以在IDE中打开它们。我们的目标是离开定制表单设计器,开始为表单设计器使用DelphiIDE

下面是一些示例代码,显示了我是如何创建组件的:

procedure WriteFormAsDFM(OutputFileName: string);
var
  PageIndex: integer;
  PageCount: Integer;
  OutputForm: TForm;
  Pages: TPageControl;
  NewPage: TTabSheet;
  NewLabel: TLabel;
begin

  OutputForm := TForm.Create(nil);
  OutputForm.Name := ChangeFileExt(ExtractFileName(OutputFileName), '');
  OutputForm.Caption := OutputForm.Name;
  OutputForm.Height := 300;
  OutputForm.Width := 300;

  Pages := TPageControl.Create(OutputForm);
  Pages.Parent := OutputForm;
  Pages.Top := 50;
  Pages.Left := 0;
  Pages.Height := 200;
  Pages.Width := 200;

  NewLabel := TLabel.Create(OutputForm);
  NewLabel.Parent := OutputForm;
  NewLabel.Caption := 'Label on Form';

  //write pages
  PageCount := 2;

  for PageIndex := 0 to PageCount - 1 do
  begin
    NewPage := TTabSheet.Create(Pages);
    NewPage.Parent := Pages;
    NewPage.PageControl := Pages;
    NewPage.Caption := 'Page ' + IntToStr(PageIndex);
    NewPage.Name := 'tsPage' + IntToStr(PageIndex);

    NewLabel := TLabel.Create(NewPage);
    NewLabel.Parent := NewPage;
    NewLabel.Caption := 'Label on ' + NewPage.Caption;
  end;

  WriteComponentResFile(OutputFileName, OutputForm);
  //WritePasFile(OutputFileName, OutputForm);

  OutputForm.ShowModal;

  FreeAndNil(OutputForm);
end;
这是输出的DFM文件。您可以看到表单上的标签已创建,但无法看到添加到选项卡中的标签

object Form123: TForm
  Left = 69
  Top = 69
  Caption = 'Form123'
  ClientHeight = 264
  ClientWidth = 284
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object TLabel
    Left = 0
    Top = 0
    Width = 67
    Height = 13
    Caption = 'Label on Form'
  end
  object TPageControl
    Left = 0
    Top = 50
    Width = 200
    Height = 200
    ActivePage = tsPage0.Owner
    TabOrder = 0
    object tsPage0: TTabSheet
      Caption = 'Page 0'
      ExplicitLeft = 0
      ExplicitTop = 0
      ExplicitWidth = 0
      ExplicitHeight = 0
    end
    object tsPage1: TTabSheet
      Caption = 'Page 1'
      ExplicitLeft = 0
      ExplicitTop = 0
      ExplicitWidth = 0
      ExplicitHeight = 0
    end
  end
end

尝试将表单用作组件的所有者

新建页面:=TTabSheet.Create(OutputForm)


NewLabel:=TLabel.Create(OutputForm)

尝试将表单用作组件的所有者

新建页面:=TTabSheet.Create(OutputForm)

NewLabel:=TLabel.Create(OutputForm)