这是Delphi的一个Bug。我读了它的源程序,确实调用了FOnMove两次。在它的MouseUp
事件中调用了两个方法:
private UpdateControlSize; protected StopSizing; 他们的里面都有
If Assigned(FOnMove) then FOnMove(self);语句只是UpdateControlSize是判断
相关控件尺寸改变才执行后边语句。而StopSize则无条件执行。
你可已试验出来,如果鼠标点击Splitter后不拖动就抬起来,则事件执行一次。拖动
后则执行两次。
解决办法,在源码中去掉StopSizing中的If Assigned(FOnMove) then ...一句;
将ExtCtrls.pas加入到你的工程中去,编译后,将ExtCtrls.dcu复制到lib目录。