Создаем две формы

Рассмотрим вариант создания двух форм, на одной из которых нам необходимо разместить кнопку, нажатие на которую даст нам возможность открыть вторую форму...Так как одна форма в данном случае в нас выступит основной, вторую форму можно спокойно сделать модальной (второй формы BorderStyle: = bsDialog).
Правильным решением для модальной формы в этом случае является именно то, что она образуется не при самом запуске выполнения программы, либо же отображения, а именно при нажатии кнопки!
Поэтому на событии кнопки первой формы для модального отображения второй формы должно быть написано примерно такое:
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2 := TForm2.Create(Application);
try
Form2.ShowModal;
finally
Form2.Free;
end;
end;
Во втором варианте решения, можно вместо Form2 := TForm2.Create(Application); написать TForm2.Create(nil), без аппликейшена владельцем. Ведь Nil — более в данном случае «правильное», ибо мы задекларировали, что собственноручно уничтожим экземпляр обьекта в секции finally в любом случае.
+0