Как в delphi писать процедуры для динамических объектов?
Если вы создаете окна одного класса, то все функции, принадлежащие этому классу будут имплементированы во все копии. Пример:type
 TNotepad = class(TForm) //Предок всех классов для записи блокнота
public
  class var OnAfterCreate: TNotifyEvent; //событие, для реакции после создания 
  constructor Create(AOwner: TComponent); override; //второй возможный 
                                    //вариатнвариант
end;

TMainForm = class(TForm)
   procedure FormCreate(Sender: TObject);
public
   procedure DoAfterCreate1(Sender:TObject); //вариант 1
   procedure  DoAfterCreate2(Sender:TObject); //вариант 2
end;

constructor TNotepad.Create(AOwner: TComponent);
begin
 inherited;
  //варант 1
 if Assigned(OnAfterCreate) then
      OnAfterCreate(Self);
//*1
//вариант 2
if Assigned(Screen.MainForm ) then
  if Screen.MainForm is TMainForm then
    TMainForm(Screen.MainForm).DoAfterCreate2(Self);
//*2
end;

procedute TMainForm.FormCreate(Sender:TObject);
begin
  TNotepad.OnAfterCreate := Self.DoAfterCreate1; //вариант 1
end;
Событие компонентов устанавливается определенного типа, поэтому нужно смотреть в первую очередь какой тип имеет событие. Под него создается процедура или функция объекта. Например реализация для кнопки и для формы на одну единственную процедуру, если известно, что она есть:procedure TForm1.OnCklickFrom2(Sender: TObject);
begin
  Caption := TComponent(Sender).Name;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Frm2 : TForm2;
begin
  Frm2 := TForm2.Crete(Application);
  Frm2.OnClick := Self.OnCklickFrom2;
  Frm2.Button1.OnClick := Self.OnCklickFrom2;
end;