Delphi DockManager LoadFromStream不工作

Delphi DockManager LoadFromStream不工作,delphi,layout,docking,Delphi,Layout,Docking,我正在创建5个表单,并在运行时将它们停靠到名为DockTarget的面板上 procedure TManager.InitChild; begin Child := TChildWindow.Create(Self); Child.ManualDock(DockTarget); end; 在所有五个孩子都被创建和对接后,我会打电话给你 Settings.DockSettings.Seek(0,soBeginning); DockTarget.DockManager.LoadFr

我正在创建5个表单,并在运行时将它们停靠到名为DockTarget的面板上

procedure TManager.InitChild;
begin
    Child := TChildWindow.Create(Self);
    Child.ManualDock(DockTarget);
end;
在所有五个孩子都被创建和对接后,我会打电话给你

Settings.DockSettings.Seek(0,soBeginning);
DockTarget.DockManager.LoadFromStream(Settings.DockSettings);
但它似乎没有做任何事情,所有的子项都是dock,无论我在关闭表单之前对布局做了什么,它都会打开,就像不存在
LoadFromStream
一样

Settings.DockSettings是先前创建设置时从文件加载的TMemoryStream

我已经很接近了

DockTarget.DockManager.SaveToStream(Settings.DockSettings);
Settings.Save;

知道为什么没有恢复布局吗?或者我可以使用另一种方法来保存/加载停靠布局?

只需在保存之前清除内存中的流,否则,我将得到两组停靠数据,其中只有第一组数据被加载。

在读取之前,您是否已将流位置设置为流的开头?我以前没有设置,但现在仍然无法工作。您可能需要设置。DockSettings.Seek(0,soBeginning);在DockTarget.DockManager.SaveToStream(Settings.DockSettings)之前;这就解决了。内存流仍然具有第一次布置屏幕时最初加载的设置。我想要读取的设置是文件中的第二组设置。Caling Settings.DockSettings.Clear在保存之前解决了该问题。