tb0577a.pp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. {$mode delphi}
  2. const
  3. cdefaulthandler = 1;
  4. cinheritedhandler = 2;
  5. cunsupportedhandler = 3;
  6. type
  7. tc = class
  8. procedure defaulthandler(var message); override;
  9. procedure handler(var message:longint); message cinheritedhandler;
  10. end;
  11. tc2 = class(tc)
  12. procedure handler(var message: longint);
  13. end;
  14. tc3 = class(tc2)
  15. procedure someproc(var message:tc3); message cinheritedhandler;
  16. procedure handler(var message:tc3); message cunsupportedhandler;
  17. end;
  18. var
  19. glob: longint;
  20. procedure tc.defaulthandler(var message);
  21. begin
  22. glob:=cdefaulthandler;
  23. end;
  24. procedure tc.handler(var message: longint);
  25. begin
  26. glob:=cinheritedhandler;
  27. end;
  28. procedure tc2.handler(var message: longint);
  29. begin
  30. halt(1);
  31. end;
  32. procedure tc3.someproc(var message: tc3);
  33. begin
  34. inherited;
  35. end;
  36. procedure tc3.handler(var message: tc3);
  37. begin
  38. glob:=cunsupportedhandler;
  39. inherited
  40. end;
  41. var
  42. c: tc3;
  43. begin
  44. c:=tc3.create;
  45. c.someproc(c);
  46. if glob<>cinheritedhandler then
  47. halt(2);
  48. c.handler(c);
  49. if glob<>cdefaulthandler then
  50. halt(3);
  51. end.