Delphi WriteComponentResFile不包括动态添加到TTabSheet的组件
我正在尝试将使用自定义工具创建的一组表单转换为Delphi表单。我试图在运行时添加所有必要的组件,然后使用WriteComponentResFile创建DFM文件 在我尝试添加TPageControl和TabSheets之前,我的所有初始测试看起来都不错。当前表单可以有多个页面,所以我打算使用PageControl来镜像它。问题是,我添加到选项卡中的任何组件都不会流式输出到DFM。如果我显示表单看起来不错,但是WriteComponentResFile缺少一些内容 我正在写一个对应的pas文件,这样我可以在IDE中打开它们。我们的目标是离开定制表单设计器,开始为表单设计器使用DelphiIDE 下面是一些示例代码,显示了我是如何创建组件的:Delphi WriteComponentResFile不包括动态添加到TTabSheet的组件,delphi,delphi-2007,Delphi,Delphi 2007,我正在尝试将使用自定义工具创建的一组表单转换为Delphi表单。我试图在运行时添加所有必要的组件,然后使用WriteComponentResFile创建DFM文件 在我尝试添加TPageControl和TabSheets之前,我的所有初始测试看起来都不错。当前表单可以有多个页面,所以我打算使用PageControl来镜像它。问题是,我添加到选项卡中的任何组件都不会流式输出到DFM。如果我显示表单看起来不错,但是WriteComponentResFile缺少一些内容 我正在写一个对应的pas文件,
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)