Otra forma más:
Código Delphi
[-]
function FormExists(NombreClase:String):TForm;
var i:integer;
begin
Result:= nil;
for i:= 0 to Screen.FormCount - 1 do
if Screen.Forms[i].ClassName = NombreClase then
begin
Result := TForm(Screen.Forms[i]);
Break;
end;
end;
var F:TForm;
begin
F:= FormExits('TForm1');
if Assigned(F) then
F.BringToFront
else
begin
F := TClaseVentana.Create(Application);
F.Show;
end;
El nombre del Formulario no es seguro, si creas tres ventanas de tipo TForm1, se llamarán Form1, Form1_1, Form1_2 y al tiempo de buscar se complican las cosas, es mejor usar su tipo o usar fábrica de clases (busca en el foro) pero ya se empieza a complicar las cosas.
Saludos