我为 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 的一次运行和下一次运行之间保持不变。但是我有两个问题:
- 当包第一次注册到 IDE 时,我希望表单默认停靠在左侧(假设用户没有使用“经典未停靠”布局)。现在它只是显示取消停靠的表单。
- 当软件包被卸载/重新安装时,表单不使用以前保存的布局设置。它再次显示为未停靠。
我怀疑这两个问题都是由于错过了一步,但我不知道那一步是什么。
对于我发现的第一个问题TControl.ManualDock
,在有关对接的讨论中经常提到,但它总是与您可以访问源代码的应用程序有关。我不知道如何从 IDE 中检索必要的参数来调用它。
对于第二个问题,我唯一确定的是,卸载软件包后 dst 文件中的设置仍然存在,所以我认为使用现有设置重新安装软件包会很简单,但这似乎不是案子。