Una pregunta: ¿Hay alguna propiedad que nos permita diferenciar los formularios? El nombre, la clase, etc ...
Si es así puedes usar un bucle como este:
Código Delphi
[-]
function Existe(Nombre: String): Boolean;
var
i: integer;
begin
for i:= 0 to Screen.FormCount - 1 Do
if Screen.Forms[i].Name = Nombre then
begin
Result:= TRUE;
Exit;
end;
Result:= FALSE;
end;
Y cuando crees o llames al formulario, podrías comprobar si existe. Yo no lo haría dentro del create del formulario.
Código Delphi
[-]
if not Existe('Form1') then
begin
end;