ドッキングバーが閉じられたイベントを取得する
(Delphi 4 以降) ドッキング可能な Panelは便利ですが、フローティング中に「X」(閉じるボタン)を押されると消えて無くなってしまいます。そこで閉じられたイベントを拾い、閉じられたら元のドックサイトに戻すようにしてみましょう。閉じられたイベントはパネルのメッセージ (CM_VISIBLECHANGED) をサブクラス化して横取りすればいいと思いますがどうでしょう、、、
| ■ フローティングバーが閉じられたら元に戻す例 |
type
TForm1 = class(TForm)
ControlBar1: TControlBar;
Panel1: TPanel;
private
{ Private 宣言 }
//TPanelの元の処理
OrgProc : TWndMethod;
//TPanelのメッセージ横取り処理
procedure NewWndProc(var Msg : TMessage);
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
//初期処理
procedure TForm1.FormCreate(Sender: TObject);
begin
//TPanelの元の処理を退避
OrgProc := Panel1.WindowProc;
//TPanelの新しい処理の割り当て
Panel1.WindowProc := NewWndProc;
end;
//パネルのメッセージ横取り処理
procedure TForm1.NewWndProc(var Msg: TMessage);
begin
//メッセージ確認
if Msg.Msg = CM_VISIBLECHANGED then begin
//ドックサイトへ戻す
Panel1.ManualDock(ControlBar1);
//表示する
Panel1.Visible := True;
end;
//元の処理
OrgProc(Msg);
end;
|