当用户单击固定表单上的“x”时,将调用 OnClose。
当用户在未固定的表单上单击“x”时,调用 OnHide
当用户在固定表单上单击“取消固定”时,调用 OnHide。
我正在尝试将可见表单与菜单系统同步,但我不知道如何确定用户单击“x”和用户单击“UnPin”之间的 OnHide 事件的差异。我想拦截'x'并改为调用 Close 。
每个孩子都是 TManagerPanel 的后代,而 TManagerPanel 又是 TForm 的后代,边框样式设置为 bsSizeToolWin,拖动种类设置为 dkDock,拖动模式为 dmAutomatic。
type
TPanelManager = class(TForm)
...
private
...
Panels: TManagerPanelList;
Settings: TSettings; //User Settings
...
end;
...
function TPanelManager.InitChild(ChildClass: TManagerPanelClass): TManagerPanel;
var
Child: TManagerPanel;
begin
Child := ChildClass.Create(Self);
Child.Connection := MSConnection1;
Child.Settings := Settings;
Child.Styles := Styles;
...
Child.OnPanelClosed := PanelClosed;
Child.OnPercentChanged := PercentChanged;
...
Child.OnPanelHide := PanelHide;
Child.Font := Font;
Child.Initialise;
Child.ManualDock(DockTarget);
Panels.AddPanel(Child);
Result := Child;
end;
procedure TPanelManager.PanelClosed(Sender: TObject; var Action: TCloseAction);
var
MenuItem: TMenuItem;
Child: TManagerPanel;
begin
if Sender is TManagerPanel then
begin
Child := TManagerPanel(Sender);
Action := caFree;
MenuItem := MenuItemFromChild(Child);
MenuItem.Checked := False;
Settings[RemoveAmpersand(MenuItem.Caption)] := MenuItem.Checked;
Panels.Remove(Child);
end;
end;
编辑:我所说的“固定”表格是什么意思:带有固定针的停靠表格,使其始终可见。
我所说的“UnPinned”表单是什么意思:一个固定的表单,其中释放了 pin,使得一个选项卡出现在停靠选项卡集中,并且在选择选项卡时出现表单。
德尔福版本是2007