Es gibt also nur eine Formularklasse (mit dem nichtssagenden Namen TForm3 - bitte ändern!) aber davon mehrere Instanzen?
Dann mach's doch so:
Delphi-Quellcode:
// suche Formular
function TForm1.FindMyForm(const value:string):TForm;
var
i : integer;
f : TForm3;
begin
for i := ComponentCount-1 to 0 do // Suche von "hinten" beginnen,höhere Wahrscheinlichkeit die Formulare schnell zu finden
begin
if Components[i] is TForm3 then
begin
f := TForm3(Components[i]);
if f.Caption = Value then
begin
Result := f;
exit;
end;
end;
end;
Result := nil;
end;
procedure TForm1.FindOrCreateForm(const value:string);
var
detail : TForm3;
begin
detail := FindMyForm(value) as TForm3;
if Assigned(detail) then
detail.BringToFront // Formular schon vorhanden -> anzeigen
else
begin
// Formular nicht vorhanden -> erzeugen
detail := TForm3.Create(self);
detail.load(value); // hier String statt Index übergeben
detail.Caption := value;
detail.Show;
end;
end;