mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 20:48:12 +02:00
64 lines
1.0 KiB
ObjectPascal
64 lines
1.0 KiB
ObjectPascal
{$mode delphi}
|
|
|
|
const
|
|
cdefaulthandler = 1;
|
|
cinheritedhandler = 2;
|
|
cunsupportedhandler = 3;
|
|
|
|
type
|
|
tc = class
|
|
procedure defaulthandler(var message); override;
|
|
procedure handler(var message:longint); message cinheritedhandler;
|
|
end;
|
|
|
|
tc2 = class(tc)
|
|
procedure handler(var message: longint);
|
|
end;
|
|
|
|
tc3 = class(tc2)
|
|
procedure someproc(var message:tc3); message cinheritedhandler;
|
|
procedure handler(var message:tc3); message cunsupportedhandler;
|
|
end;
|
|
|
|
var
|
|
glob: longint;
|
|
|
|
procedure tc.defaulthandler(var message);
|
|
begin
|
|
glob:=cdefaulthandler;
|
|
end;
|
|
|
|
procedure tc.handler(var message: longint);
|
|
begin
|
|
glob:=cinheritedhandler;
|
|
end;
|
|
|
|
|
|
procedure tc2.handler(var message: longint);
|
|
begin
|
|
halt(1);
|
|
end;
|
|
|
|
procedure tc3.someproc(var message: tc3);
|
|
begin
|
|
inherited;
|
|
end;
|
|
|
|
procedure tc3.handler(var message: tc3);
|
|
begin
|
|
glob:=cunsupportedhandler;
|
|
inherited
|
|
end;
|
|
|
|
var
|
|
c: tc3;
|
|
begin
|
|
c:=tc3.create;
|
|
c.someproc(c);
|
|
if glob<>cinheritedhandler then
|
|
halt(2);
|
|
c.handler(c);
|
|
if glob<>cdefaulthandler then
|
|
halt(3);
|
|
end.
|