Toolbar关闭时所触发的消息(100分)

  • 主题发起人 主题发起人 first
  • 开始时间 开始时间
F

first

Unregistered / Unconfirmed
GUEST, unregistred user!
我用了几个Toolbar控件,当把Toolbar拖出主窗体关闭时请问触发那个WINDOWS消息。
 
用TOOLBAR的UNDOCK应该可以判断

procedure TForm1.ToolBar1EndDock(Sender, Target: TObject; X, Y: Integer);
begin
if Target.ClassType<>TForm1 then
ShowMessage('undocked');
end;
 
to mexin:
这只Toolbar被拖出主窗体时所触发的事件,而不是关闭Toolbar时所触发的事件.
 
关闭?你要FREE这个TOOLBAR?
 
to menxin:
当把Toolbar拖出主窗口时,Toolbar将成为一个浮动窗口,
我所要知道的是当点了次浮动窗口上的关闭键时所触发的事件。
 
在ToolBar的EndDock中可以知道目标,可以设置目标窗口的OnClosed事件,
可以知道是否关闭。
 
to jiangxiancheng:
Toolbar没有OnClose事件。
 
嘿嘿,早说呀.没明白你的意思。那个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;
 
to menxin:
非常棒,谢了。
 
to menxin:
我还有一个问题在这http://www.delphibbs.com/delphibbs/dispq.asp?lid=735413
好久没有回答。
 

Similar threads

D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
747
DelphiTeacher的专栏
D
D
回复
0
查看
696
DelphiTeacher的专栏
D
D
回复
0
查看
825
DelphiTeacher的专栏
D
后退
顶部