Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Instanzen vom gleichen Typ finden (https://www.delphipraxis.net/94743-instanzen-vom-gleichen-typ-finden.html)

guidobrose 26. Jun 2007 12:09


Instanzen vom gleichen Typ finden
 
Hallo

wie kann ich in einer Instanz alle anderen Instanzen vom gleichen Typ finden? Mein Versuch haut leider nicht hin.

Delphi-Quellcode:
const
  NumberOfBirds=20;

type

  TBirds = class(TGraphicControl)
  private
  protected
    procedure Paint; override;
    procedure Find;
  public
  end;

procedure TBird.Find;
var i: Integer;
begin
  for i:=0 to Parent.ComponentCount do
    if Parent.Components[i]=TBird then //Funktioniert leider nicht
    begin
    //Hier kommt noch was
    end;
end;


//Im Hauptformular
procedure TFrmEBirds.FormCreate(Sender: TObject);
var i,x,y: Integer;
begin
  Randomize;
  for i := 0 to NumberOfBirds do
  begin
    Birds[i]:=TBird.Create(self);
    Birds[i].Parent:=self;
    x:=Random(self.Width);
    y:=Random(self.Height);
    Birds[i].Left:=x;
    Birds[i].Top:=y;
  end;
end;
Über Components kann ich dann auch auf die Eigenschaften der anderen Instanzen zugreifen, oder seh ich das falsch?

Guido

cruiser 26. Jun 2007 12:11

Re: Instanzen vom gleichen Typ finden
 
So evtl? ;)

Delphi-Quellcode:
if (Parent.Components[i] is TBird) then
Und zugreifen mit:

Delphi-Quellcode:
with (Parent.Components[i] as TBird) do
begin
  // mache was mit den Eigenschaften
end;
oder du legst dir einen temporären Bird an *g*

Delphi-Quellcode:
var
  tmp: TBird;

{...}

tmp := (Parent.Components[i] as TBird);
tmp.SomeProperty := irgendwas;
tmp.SomeMethod(SomeArgument);

guidobrose 26. Jun 2007 12:16

Re: Instanzen vom gleichen Typ finden
 
:wall:

SirThornberry 26. Jun 2007 12:18

Re: Instanzen vom gleichen Typ finden
 
anstelle des Parents solltest du lieber den Owner abfragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.

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