Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Suche nach einem Formtyp in einer ObjectListe von Forms (https://www.delphipraxis.net/208969-suche-nach-einem-formtyp-einer-objectliste-von-forms.html)

bernhard_LA 6. Okt 2021 14:02


Suche nach einem Formtyp in einer ObjectListe von Forms
 
unsere App erzeugt diverse Forms zur Laufzeit, jedes Form wird in einer Liste abgelegt um später wieder darauf zugreifen zu können

funktionalercode geht wie z.B. folgt:


Delphi-Quellcode:
 
  AFormList: TObjectList;
  for i := 0 to AFormList.Count - 1 do
  begin
    ///
    /// check if correct Form type
    ///
    if (AFormList.Items[i] is TProjectIForm) then
        begin
        ...
        MySelectedForm := (AFormList.Items[i] as TProjectIForm);
        ....
        end;
ich benötige nun eine Funktion welche mir true/false zurück gibt je nachdem of ein
bestimmter Formtype in der Liste vorhanden ist


Delphi-Quellcode:
function TPForm.FormtypeExisits(anyForm: TObject): boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to AFormList.Count - 1 do
  begin
    if (AFormList.Items[i] is anyForm) then
      Result := True;
  end;

end;

Problem
wie Übergebe ich einen Typen als Parameter an die Funktion FormtypeExisits ?

Klaus01 6. Okt 2021 14:21

AW: Suche nach einem Formtyp in einer ObjectListe von Forms
 
Delphi-Quellcode:
type
  TFormClass = class of TForm;


function TForm1.formExists(form: TFormClass): Boolean;
begin
 for var i := 0 to fFormList.Count - 1 do
 begin
   result := false;
   if (AFormList[i] is form) then
   begin
     result := true;
     break;
   end;
 end;
end;
vielleicht so?

Grüße
Klaus

hoika 6. Okt 2021 14:23

AW: Suche nach einem Formtyp in einer ObjectListe von Forms
 
Hallo,
da deine Forms ja idR von TForm abgeleitet sind,
wäre ClassName eine Möglichkeit der Unterscheidung.

Delphi.Narium 6. Okt 2021 14:25

AW: Suche nach einem Formtyp in einer ObjectListe von Forms
 
Funktioniert sowas:
Delphi-Quellcode:
function TPForm.FormtypeExisits(anyForm: TObject): boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to AFormList.Count - 1 do
  begin
    if (AFormList.Items[i].ClassType = anyForm.ClassType) then
      Result := True;
  end;
end;

bernhard_LA 6. Okt 2021 14:34

AW: Suche nach einem Formtyp in einer ObjectListe von Forms
 
Danke, funktioniert

DeddyH 6. Okt 2021 14:38

AW: Suche nach einem Formtyp in einer ObjectListe von Forms
 
Spontan würde ich auch versuchen, eine Delphi-Referenz durchsuchenTFormClass zu übergeben und einfach mit dem is-Operator dagegen zu prüfen. In der Prüf-Unit müssen dann aber auch alle in Frage kommenden Klassen bekannt sein, d.h. die Uses-Klausel kann u.U. recht lang werden.

TiGü 6. Okt 2021 15:11

AW: Suche nach einem Formtyp in einer ObjectListe von Forms
 
Spontan hätte ich hier ein
Delphi-Quellcode:
TDictionary/TObjectDictionary<TFormClass, TForm>
vorgeschlagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz