Зі святом панове!
Torbins написав:В батьківському класі зробіть віртуальний конструктор. В дочірніх класах ви зможете його розширювати, якщо буде треба. В конструкторі можна створити усі об'єкти, які потім зможуть використовувати дочірні класи. А в деструкторі, відповідно, їх треба буде видалити. І ще раджу замінити TImage на TBitmap. Буде щось таке:
 Пане Torbins для мене це нова тема і я вже геть заплутався. Якщо маєте час поясніть докладніше.
1) В батьківському класі зробіть віртуальний конструктор.  Так це я зрозумів 
constructor Create; virtual;
2) В дочірніх класах ви зможете його розширювати, якщо буде треба. 
Constructor Create; Override;
 Тут в мене питання: А як тоді в описі дочірнього конструктора там якось Inherited; потрібно використовувати? Який взагалі там синтаксис коду буде?
3) В конструкторі можна створити усі об'єкти, які потім зможуть використовувати дочірні класи.  От я і запитую як мені прописати код щоб з цього модуля можна було створити об'єкт на формі?
4) І ще раджу замінити TImage на TBitmap. Тут взагалі не зрозумів для чого це робити. Мені просто потрібно в об'єкті TImage ввести текст (літеру чи декілька) по заданих координатах, який візуально позначає фізичну величину.
З того що я зрозумів з літератури та відео в Ютуб, я створив об'єкт на формі методом CreateObject, хоча не розумію як це працює:
Procedure TPhysicalPhenomenon.CreateObject (Letter: String; Owner: TWinControl);
Begin
  fObjectContainer := Timage.Create(Owner);
  fObjectContainer.Parent := Owner;
  fObjectContainer.Width := 25;
  fObjectContainer.Height := 25;
  fObjectContainer.Top := 120;
  fObjectContainer.Left := 0;
  fObjectContainer.Canvas.Brush.Color := clWhite;
  fObjectContainer.Canvas.Font.Name := 'Monotype Corsiva';
  fObjectContainer.Canvas.Font.Style := [fsBold,  fsItalic];
  fObjectContainer.Canvas.Font.Size := 20;
  fObjectContainer.Canvas.TextOut(6, -6, Letter);
  fObjectContainer.ShowHint := True;
  fObjectContainer.Hint := 'Час';
End;
 
 
Та мені прийшлось поміняти дочірні конструктори. Вони стали з параметрами, чого дуже не хочеться але я не знаю як ще передати параметр власника.
  {Клас Час}
  TPhysicalTime = Class (TPhysicalPhenomenon)
    Private
     // fGeneralRowObject: String;
    Protected
    Public
    //  Тут будуть відповідні методи класу Час!
      constructor CreateTime (Owner: TWinControl);
    Published
  End;
  {Клас Шлях - l.}
  TPhysicalPath = Class (TPhysicalPhenomenon)
    Private
    Protected
    Public
    //  Тут будуть відповідні методи класу Шлях!
      constructor CreatePath (Owner: TWinControl);
    Published
  End;
  {Клас Переміщення - s.}
  TPhysicalMoving = Class (TPhysicalPhenomenon)
    Private
    Protected
    Public
    //  Тут будуть відповідні методи класу Переміщення!
      constructor CreateMoving (Owner: TWinControl);
    Published
  End;
  {Клас Швидкість - v.}
  TPhysicalSpeed = Class (TPhysicalPhenomenon)
    Private
    Protected
    Public
    //  Тут будуть відповідні методи класу Швидкість!
      constructor CreateSpeed (Owner: TWinControl);
    Published
  End;
Constructor TPhysicalTime.CreateTime (Owner: TWinControl);
Const
  DEFINITION_TIME =
  'Час визначає тривалiсть iснування об’єктiв i послiдовнiсть змiн, якi в ' +
  'них вiдбуваються. ' + #13#10 + 'Час позначають лiтерою t.' + #13#10;
Begin
  CreateObject('t',Owner);
  fDefinitionPhysicalPhenomenon := DEFINITION_TIME;
  fNamePhysicalPhenomenon := 'Час - t';
End;
{ TPhysicalPath }
Constructor TPhysicalPath.CreatePath (Owner: TWinControl);
Const
  DEFINITION_PATH =
  'Шлях — фiзична величина, що дорiвнює довжинi траєкторiї, яку описує тiло ' +
  'за час руху.' + #13#10 + 'Шлях позначають малою латинською лiтерою l.' +
  #13#10;
Begin
  CreateObject('l',Owner);
  fDefinitionPhysicalPhenomenon := DEFINITION_PATH;
  fNamePhysicalPhenomenon := 'Шлях - l';
End;
{ TPhysicalMoving }
Constructor TPhysicalMoving.CreateMoving (Owner: TWinControl);
Const
  DEFINITION_MOVING =
  'Перемiщення  — фiзична величина, що характеризує змiну положення тіла у ' +
  'просторi та визначається напрямленим вiдрiзком, який сполучає положення ' +
  'рухомого тiла на початку i в кiнцi певного iнтервалу часу.' + #13#10 +
  'Переміщення s  — це вектор, що сполучає початкове положення тіла з його ' +
  'положенням у вибраний момент часу.' + #13#10;
Begin
  CreateObject('s',Owner);
  fDefinitionPhysicalPhenomenon := DEFINITION_MOVING;
  fNamePhysicalPhenomenon := 'Переміщення - s';
End;
{ TPhysicalSpeed }
Constructor TPhysicalSpeed.CreateSpeed (Owner: TWinControl);
Const
  DEFINITION_SPEED = 'Швиидкість — фізична величина, що відповідає ' +
  'відношенню переміщення тіла до проміжку часу, за який це переміщення ' +
  'відбувалось.' + #13#10 + 'Швидкість — величина векторна, тобто вона має ' +
  'абсолютну величину і ' + 'напрямок.' + #13#10 + 'Швидкість позначають ' +
  'малою латинською лiтерою v.' + #13#10;
Begin
  CreateObject('v',Owner);
  fDefinitionPhysicalPhenomenon := DEFINITION_SPEED;
  fNamePhysicalPhenomenon := 'Швидкість - v';
End;
І створив я його в модулі програми на головній формі так (Нижній об'єкт на малюнку з літерою t) :
procedure TForm1.FormCreate(Sender: TObject);
var
  CHAS: TPhysicalTime;
begin
  CHAS := TPhysicalTime.CreateTime(Form1);
В наступному повідомленні скину весь код модуля. Дякую за ваш затрачений час панове!
P.S. Якщо пан koala запитає для чого це все робиться: це робиться для того щоб я зміг запрограмувати подію (Клік) на створеному об'єкті. Якщо це взагалі можливо зробити програмно (Хоча я десь читав що там якимось чином через клас TNotyfiEvent потрібно це робити, хоча можливо я і помиляюсь)! А після цього я вже буду проводити всі необхідні маніпуляції.