Спасибо. Кое что началось прояснятся.

1. А в чем смысл в таком определении:

TYPE MyRec = POINTER TO ABSTRACT RECORD END;

И в таком:

TYPE MyRec = ABSTRACT RECORD END;

То что первая, это указатель на запись это понятно.
Но не понятен смысл такого определения.

2. Когда описываешь метод записи TYPE MyRec = EXTENSIBLE RECORD END;
нада писать PROCEDURE (VAR m: MyRec) ......
А когда описываешь метод указателя на запись: TYPE MyRec = POINTER TO EXTENSIBLE RECORD END;
надо писать PROCEDURE (m: MyRec) ......
Иначе компилятор ругается.

3. И наконец
Чем такое:

TYPE MyRec = ABSTRACT RECORD
MyProp-:INTEGER;
END;
PROCEDURE (VAR m: MyRec)MyProc*(), NEW, ABSTRACT;

Отличается от такого:

TYPE MyRec = EXTENSIBLE RECORD
MyProp-:INTEGER;
END;
PROCEDURE (VAR m: MyRec)MyProc*(), NEW, EMPTY;

PS: Иногда кажется вот, наконец, понял компонентный паскаль, а потом оказывается, что ничего и не понял.