Ich weiss zwar nicht mehr, wo die Idee her ist, aber bei mir funktioniert das so: das bewusste Fenster bekommt einen wohldefinierten Namen - am Besten in einer Konstanten hinterlegt.
Diese Funktion findet ein Fenster mit einem bestimmten Namen:
Delphi-Quellcode:
function FindFormByName(AFormName: string): TForm;
var
li: integer;
begin
Result := nil;
for li:= 0 to Screen.FormCount-1 do
begin
if (Screen.Forms[li].Name = AFormName) then
begin
Result := Screen.Forms[li];
break;
end;
end;
end;
Diese Funktion aktiviert das Fenster, wenn bereits vorhanden, ansonsten wird es erzeugt:
Delphi-Quellcode:
const
FORMNAME = 'MeinSuperFenster';
var
lfrm : TMyForm; // das zu zeigende Fenster
begin
lfrm := TMyForm(FindFormByName(FORMNAME));
if Assigned(lfrm) then
begin
lfrm.Show;
lfrm.BringToFront;
end
else
begin
lfrm := TMyForm.Create(Application);
lfrm.Name := FORMNAME;
lfrm.Show;
end;
Hoffe, das hilft.