嘿嘿,早说呀.没明白你的意思。那个floating的form 其实是一个ttooldockform,是从
tcustomform继承而来。虽然ttooldockform没有onclose,但tcustomform一定是有的,只不
过是个protected的事件,所以要自己声明一个类
type myForm=class(TCustomForm)
end;
这样就要以使用被保护的方法和事件了,代码如下
type
TForm1 = class(TForm)
......
public
procedure ToolbarClose(Sender: TObject; var Action: TCloseAction);//声明一个过程,用做tooldockform的ONCLOSE事件
{ Public declarations }
end;
var
Form1: TForm1;
implementation
type myForm=class(TCustomForm)
end;
{$R *.dfm}
procedure TForm1.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
if toolbar1.floating then //如果浮动了,就赋值,其实这里还可以判断事件句柄是否已经赋值
myForm(ToolBar1.HostDockSite).Onclose:=ToolbarClose;
end;
procedure TForm1.ToolbarClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone; //不关闭这个form
ShowMessage('you press the close button! ;-)');
end;