RaulA,
Los formularios en Delphi son objetos, para poder usar los métodos Free, Close o Show el correspondiente formulario debe estar instanciado, de lo contrario se visualizara un mensaje de excepción:
Access violation at address x. Read of address x
Revisa este código:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
try
Form2.Free;
except
MessageDlg('El Formulario No Esta Instanciado', mtinformation, [mbok], 0);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
try
Form2.Close;
except
MessageDlg('El Formulario No Esta Instanciado', mtinformation, [mbok], 0);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
try
Form2.Show;
except
MessageDlg('El Formulario No Esta Instanciado', mtinformation, [mbok], 0);
end;
end;
El código anterior controla las excepciones de los métodos Free, Close y Show de un formulario que no este instanciado, te sugiero revisar la lógica de tu aplicación y verificar si este tipo de controles son necesarios en tu proyecto.
Espero sea útil
Nelson.