Delphi中停靠技术的实现想必Delphi用的熟的大虾都知道在Delphi的可停靠窗体间可以相互停靠,而且花样还很多,可以停靠成并排的,也可以停靠成PageControl样式的,两个可停靠窗体合并后的窗体又可以再和别的可停靠窗体合并,形成树状。下面来介绍这方面的技术: 说道这里,我们不得不介绍一下CM_DOCKCLIENT消息和TCMDockClient结构, CM_DOCKCLIENT消息和TCMDockClient结构是相互对应的,TCMDockClient的结构是: TCMDockClient = packed record Msg: Cardinal; DockSource: TDragDockObject; MousePos: TSmallPoint; Result: Integer; end; 其中DockSource包含了停靠―拖动操作的信息,前面已经提到过;MousePos是鼠标的位置。CM_DOCKCLIENT事件在停靠和被停靠控件都可以捕获,因为它是TWinControl类发出的, 代码如下: procedure TWinControl.DockDrop(Source: TDragDockObject; X, Y: Integer); begin if (Perform(CM_DOCKCLIENT, Integer(Source), Integer(SmallPoint(X, Y))) >= 0) and Assigned(FOnDockDrop) then FOnDockDrop(Self, Source, X, Y); end; 可以看出,TWinControl是先发送DOCKCLIENT消息,再触发 更多相关文章
|
推荐文章
精彩文章
|