Delphi 如何在继承的调用后停止执行?
我使用TMS中的Delphi 如何在继承的调用后停止执行?,delphi,delphi-xe7,onmousedown,inherited,Delphi,Delphi Xe7,Onmousedown,Inherited,我使用TMS中的TAdvGlowButton按钮控件,在MouseDown上默认设置Down属性为true。我希望能够在需要时阻止将此属性设置为True。 MouseDown上的执行流在类的MouseDown过程中启动: procedure TAdvCustomGlowButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); ... begin inherited; // Calls my loc
TAdvGlowButton
按钮控件,在MouseDown
上默认设置Down
属性为true。我希望能够在需要时阻止将此属性设置为True。
MouseDown上的执行流在类的MouseDown过程中启动:
procedure TAdvCustomGlowButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
...
begin
inherited; // Calls my local OnMouseDown method
... // <- I would like to skip/cancel/stop execution after inherited call, so it never gets to Down := True line
Down = True;
...
end;
程序TAdvCustomGlowButton.MouseDown(按钮:TMouseButton;Shift:TShiftState;X,
Y:整数);
...
开始
继承的;//调用我的本地OnMouseDown方法
... // 您可以引发异常。@SertacAkyuz,如果我“引发异常。创建('Stop flow…');”异常是在最初的MouseDown过程中处理的,我无法控制如何处理该异常。这就是您的想法吗?抛出异常是执行您要求的操作的唯一方法(尝试通过SysUtils.Abort()
引发EAbort
,较低级别的VCL处理程序默认情况下将忽略它),而无需修改TAdvCustomGlowButton
本身,也无需派生覆盖MouseDown()的自定义类
方法使用您自己的逻辑,并且从不调用继承的方法。如果我派生自己的自定义类并重写MouseDown方法,我是否仍然可以调用原始类,因为它包含大部分时间都应该执行的代码,但不是所有时间都执行?这感觉不是正确的解决方案。根本问题是什么。您可以引发异常。@SertacAkyuz,如果我“引发异常。创建('Stop flow…');”异常是在最初的MouseDown过程中处理的,我无法控制如何处理该异常。这就是您的想法吗?抛出异常是执行您要求的操作的唯一方法(尝试通过SysUtils.Abort()
引发EAbort
,较低级别的VCL处理程序默认情况下将忽略它),而无需修改TAdvCustomGlowButton
本身,也无需派生覆盖MouseDown()的自定义类
方法使用您自己的逻辑,并且从不调用继承的方法。如果我派生自己的自定义类并重写MouseDown方法,我是否仍然可以调用原始类,因为它包含大部分时间都应该执行的代码,但不是所有时间都执行?这感觉不是正确的解决方案。根本问题是什么。
procedure TForm1.AdvGlowButton1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ShowMessage('Local Mouse Down');
if True then
AdvGlowButton1.OnMouseDown:=nil; //<- I would like to stop execution
end;