Die Fehlermeldung kommt, weil du das Formular jetzt nicht mehr automatisch beim Programmstart erstellst. Das Anzeigen über Form.Show geht nur, wenn das Formular auch existiert.
Also entweder läßt du das Formular beim Programmstart erstellen (was eigentlich kein guter Programmstil ist!), dann kannst du auch einfach ein Show bzw. Hide machen.
Oder du erstellst es selber, bevor du es benutzt...
Delphi-Quellcode:
procedure FormMain.ButtonClick(Sender:TObject);
var Form2:TForm2;
begin
Form2:=TForm.create(Self);
try
if Form2.showmodal = mrOK then begin
...
end;
finally
Form2.release
end;
end;