AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Suche nach einem Formtyp in einer ObjectListe von Forms
Thema durchsuchen
Ansicht
Themen-Optionen

Suche nach einem Formtyp in einer ObjectListe von Forms

Ein Thema von bernhard_LA · begonnen am 6. Okt 2021 · letzter Beitrag vom 6. Okt 2021
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 15:02
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 ?

Geändert von bernhard_LA ( 6. Okt 2021 um 15:05 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 15:21
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
Klaus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 15:23
Hallo,
da deine Forms ja idR von TForm abgeleitet sind,
wäre ClassName eine Möglichkeit der Unterscheidung.
Heiko
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 15:25
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;
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 15:34
Danke, funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 15:38
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Suche nach einem Formtyp in einer ObjectListe von Forms

  Alt 6. Okt 2021, 16:11
Spontan hätte ich hier ein TDictionary/TObjectDictionary<TFormClass, TForm> vorgeschlagen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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