4

我为 Delphi 编写了一个小的 IDE 扩展。我的表单来自 TDockableToolbarForm。我已经弄清楚如何让 IDE 将表单的位置保存在 .dst 和 .dsk 文件中。

表单的注册如下所示:

procedure Register;
begin
  RegisterFieldAddress('MyForm', @MyForm);
  RegisterDesktopFormClass(TMyForm, 'My Form', 'MyForm');
  MyForm := TMyForm.Create(nil);
  MyForm.Show;
end;

我在表单中添加了以下 OnCreate 处理程序:

procedure TMyForm.FormCreate(Sender: TObject);
begin
  inherited;
  AutoSave :=True;
  SaveStateNecessary := True;
  DeskSection := 'My Form';
end;

这导致以下内容被写入 dst/dsk 文件:

[My Form]
PercentageSizes=1
Create=1
Visible=0
Docked=1
State=0
Left=0
Top=0
Width=1193
Height=4115
MaxLeft=-1
MaxTop=-1
ClientWidth=1109
ClientHeight=3788
TBDockHeight=4115
LRDockWidth=1193
Dockable=1
StayOnTop=0

这允许表单的布局在 IDE 的一次运行和下一次运行之间保持不变。但是我有两个问题:

  1. 当包第一次注册到 IDE 时,我希望表单默认停靠在左侧(假设用户没有使用“经典未停靠”布局)。现在它只是显示取消停靠的表单。
  2. 当软件包被卸载/重新安装时,表单不使用以前保存的布局设置。它再次显示为未停靠。

我怀疑这两个问题都是由于错过了一步,但我不知道那一步是什么。

对于我发现的第一个问题TControl.ManualDock,在有关对接的讨论中经常提到,但它总是与您可以访问源代码的应用程序有关。我不知道如何从 IDE 中检索必要的参数来调用它。

对于第二个问题,我唯一确定的是,卸载软件包后 dst 文件中的设置仍然存在,所以我认为使用现有设置重新安装软件包会很简单,但这似乎不是案子。

4

0 回答 0