我以两种不同的方式展示表格。第一个作为页面控件选项卡的子项,如下所示:
myform := Tmyform.Create(<tab sheet of page control>);
myform.Parent := <tab sheet of page control>;
myform.Align := alClient;
myform.BorderStyle := bsNone;
myform.Visible := true;
此标签始终可见。
我第二次将它显示为这样的普通形式:
myform := Tmyform.Create(nil);
myform.ShowModal;
我这样做是因为我需要显示相同的表单,其中一些可视控件可见并且第二次隐藏。
我的问题我现在注意到,每次使用第二种方法打开表单时,应用程序会消耗更多内存,如果我在关闭事件中使用action := cafree
,当我尝试关闭应用程序时,我会获得访问冲突打开工作表,所以如何在不使用两个具有相同控件的表单的情况下解决此问题?
我使用Delphi XE5
答案 0 :(得分:3)
TForm
从未打算或旨在嵌入其他控件中。请改用TFrame
,它是专为此目的而设计的。
var
frame: TMyFrame;
begin
frame := TMyFrame.Create(TheTabSheet);
frame.Parent := TheTabSheet;
frame.Align := alClient;
frame.Visible := true;
end;
var
form: TForm;
frame: TMyFrame;
begin
form := TForm.CreateNew(nil); // yes, a blank TForm
try
form.Width := ...;
form.Height := ...;
form.Caption := ...;
frame := TMyFrame.Create(form);
frame.Parent := form;
frame.Align := alClient;
frame.Visible := true;
form.ShowModal;
finally
form.Free;
end;
end;