Delphi动态创建窗体 ( 积分: 100 )

  • 主题发起人 主题发起人 里斯
  • 开始时间 开始时间

里斯

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在运行时动态创建窗体,下面是窗体的一些代码,我是一条一条记录读取后再创建,有没有更好的办法呀?
代码示例:
object Form1: TForm1
Left = 192
Top = 107
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
object Label1: TLabel
Left = 88
Top = 48
Width = 32
Height = 13
Caption = 'Label1'
end
object btn1: TButton
Left = 128
Top = 112
Width = 75
Height = 25
Caption = 'btn1'
TabOrder = 0
end
end
 
我想在运行时动态创建窗体,下面是窗体的一些代码,我是一条一条记录读取后再创建,有没有更好的办法呀?
代码示例:
object Form1: TForm1
Left = 192
Top = 107
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
object Label1: TLabel
Left = 88
Top = 48
Width = 32
Height = 13
Caption = 'Label1'
end
object btn1: TButton
Left = 128
Top = 112
Width = 75
Height = 25
Caption = 'btn1'
TabOrder = 0
end
end
 
TFileStream.ReadComponent
 
好像就这法吧,灵活啊,你想创建多少?同一个组件就用循环了
 
回去试试!,。。。。。。[:D]
 
procedure TfsForm.OpenButtonClick(Sender: TObject);
var
fs: TFileStream;
NewCom: TComponent;
begin
if OpenDialog1.Execute then
begin
NewButtonClick(self);
fs:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
try
while fs.Position < fs.Size do
begin
NewCom:= fs.ReadComponent(nil);
InsertControl(NewCom as TControl);//这个地方作些处理,因为TForm是容器,其他的好说些
Inc(Count);
end;
finally
fs.Free;
end;
end;
end;

procedure TfsForm.SaveButtonClick(Sender: TObject);
var
fs:TFileStream;
i: Integer;
begin
if SaveDialog1.Execute then
begin
fs:=TFileStream.Create(SaveDialog1.FileName,fmOpenWrite or fmCreate);
try
for i:=0 to ControlCount-1 do
if Controls.ClassName<>'TToolBar' then
fs.WriteComponent(Controls);
finally
fs.Free;
end;
end;
end;


网上的示例代码,只是Form需要作些处理
 
多谢各位,测试一下[:D]
 
后退
顶部