|
@@ -0,0 +1,54 @@
|
|
|
+{$ifdef fpc}
|
|
|
+ {$mode delphi}
|
|
|
+{$endif}
|
|
|
+
|
|
|
+type
|
|
|
+ tClassA=class
|
|
|
+ procedure DefaultHandler(var Message);override;
|
|
|
+ end;
|
|
|
+
|
|
|
+ tClassB=class(tClassA)
|
|
|
+ procedure test(var m);message 1;
|
|
|
+ end;
|
|
|
+
|
|
|
+ tClassC=class(tClassB)
|
|
|
+ procedure test00(var m);message 1;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ counter : longint;
|
|
|
+
|
|
|
+procedure tClassA.DefaultHandler(var Message);
|
|
|
+ begin
|
|
|
+ writeln('DDDDDDDDDD');
|
|
|
+ inc(counter);
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure tClassB.test(var m);
|
|
|
+ begin
|
|
|
+ writeln('BBBBBBBBBB');
|
|
|
+ inc(counter);
|
|
|
+ inherited;
|
|
|
+ end;
|
|
|
+
|
|
|
+procedure tClassC.test00(var m);
|
|
|
+ begin
|
|
|
+ writeln('CCCCCCCCCC');
|
|
|
+ inc(counter);
|
|
|
+ inherited;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ C:tObject;
|
|
|
+ One:longint;
|
|
|
+begin
|
|
|
+ One:=1;
|
|
|
+ C:=tClassC.Create;
|
|
|
+ C.Dispatch(One);
|
|
|
+ C.Destroy;
|
|
|
+ if counter<>3 then
|
|
|
+ begin
|
|
|
+ writeln('Error!');
|
|
|
+ halt(1);
|
|
|
+ end;
|
|
|
+end.
|