Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Kontrolle ob ein Fenster bereits geöffnet ist

  Alt 13. Mai 2010, 19:52
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;
  Mit Zitat antworten Zitat