[Lazarus] Check if an abstract method is implemented or not

xrfang xrfang at gmail.com
Thu Jan 24 09:11:09 CET 2013


Hi All,

I wrote a TPainter abstract class, and a TPaintRect class.  In the TPaintRect class I have this code:

procedure TPaintRect.OnMouseEnter(Sender: TObject);
var
  i: Integer;
  p: TPainter;
begin
  for i := 0 to painters.Count - 1 do begin
    p := TPainter(painters.Objects[i]);
    try
      p.OnMouseEnter(Sender);
    except on EAbstractError do ; end;
  end;
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Sender);
end;

While running in IDE, the program will crash because OnMouseEnter is abstract.

My problems are:

1) As I already wrapped it with try-except, I hope it won't trigger IDE exception. But even I turn off "Notify on Lazarus Exception" in debugger options it still pops up, and the popup said RunError(211), NOT EAbstractError.  The program runs well outside of IDE.

2) Is there a way to detect if an abstract method is implemented or not, without trying to call it and try...except?

Thanks,
Shannon


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20130124/91a44110/attachment-0002.html>


More information about the Lazarus mailing list