Глядя на ваш проект, я могу уверенно сказать, что вы не знаете основ объектно-ориентированного языка Delphi. А раз так, то я вам порекомендовал бы вначале изучить основы, а потом уже писать код. После прочтения, хотя бы Программирование на языке Delphi. Учебное пособие. у вас у самого отпадут многие вопросы и думаю вы по другому взгляните на свой код.
P.S. Пара мыслей на счет вашего кода:
Ваша ошибка: Попытка обратиться изнутри класса формы к полям формы, через внешнюю глобальную переменную, которая просто не создана.
Например, здесь вы создаете форму и сохраняете ее в локальной переменной AForm
procedure TForm1.Button1Click(Sender: TObject);
var
Aform:TForm5;
begin
Aform := TForm5.Create(Application);
Aform.Parent := Form1;
Aform.Width := Form1.Width;
Aform.Height := Form1.Height;
Aform.Left := Form1.Left;
Aform.Top := Form1.Top;
Aform.ShowModal;
Aform.Destroy;
end;
А тут, почему-то считаете, что в Form5 содержит вашу форму, что и в AForm (Не верно, никакой связи между этими переменными нету).
procedure TForm5.FormCreate(Sender: TObject);
begin
Form5 := Button1.Parent as TForm5;
Form5.Height:=300;
Form5.Width:=400;
end;
Неправильно, Обращаться к форме внутри формы, через глобальную переменную по многим причинам.
var
Form5: TForm5;
procedure TForm5.FormCreate(Sender: TObject);
begin
Form5 := Button1.Parent as TForm5;
Form5.Height := 300;
Form5.Width := 400;
end;
Отсюда при обращении к Form5.Height (где Form5 = nil в вашем случае) вы получите Aсcess Voiolation
Правильно: напрямую обращаться внутри класса к полям формы:
var
Form5: TForm5;
procedure TForm5.FormCreate(Sender: TObject);
begin
Height := 300;
Width := 400;
end;