ユーザーが固定フォームで「x」をクリックすると、OnClose が呼び出されます。
ユーザーが固定されていないフォームで「x」をクリックすると、OnHide が呼び出されます
ユーザーが固定フォームで「固定解除」をクリックすると、OnHide が呼び出されます。
表示されているフォームをメニュー システムと同期させようとしていますが、ユーザーが [x] をクリックしたときと [UnPin] をクリックしたときの OnHide イベントの違いを判断する方法がわかりません。「x」をインターセプトして、代わりに Close を呼び出したいと思います。
各子は TManagerPanel の子孫であり、これは TForm の子孫であり、border スタイルが bsSizeToolWin に設定され、Drag Kind が dkDock に設定され、Drag Mode が 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」フォームの意味: タブがドッキング タブ セットに表示され、タブが選択されたときにフォームが表示されるようにピンが解放されたドッキング フォーム。
Delphi のバージョンは 2007 年です