Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dynamisch erzeugte objekte ansprechen (https://www.delphipraxis.net/10004-dynamisch-erzeugte-objekte-ansprechen.html)

KoRn117 9. Okt 2003 13:36


dynamisch erzeugte objekte ansprechen
 
hilfe ein problem :?

mit diesen code erzeuge ich shapes und dem namen Shape0, Shape1,Shape2,...

Delphi-Quellcode:
for reihen:=0 to AICs-1 do
begin
  for i := 1 to 8 do//ALEDs do
    begin
    // SHAPE ERZEUGEN
    ShapeX := TShape.Create(form1);
    ShapeX.Name :='Shape'+inttostr(AnzahlShapes+1); // plus eins weil nur wenn es 8 leds sind dann nur eine 7 darin steht
    ShapeX.Parent := form1;
    // und INITALISIEREN
    shapex.Width := 16;
    shapex.Height := 16;
    shapex.Top := (i*16);
    shapex.Left := 179+(reihen*16);
    shapex.Shape := stCircle;
    shapex.Brush.Color := clMaroon;
    //shapex.FreeOnRelease;
    inc(AnzahlShapes);
  end; // ende der for 1 to ALEDs
end; // for reihen 1 to AICs
und ich will sie in einer anderen procedure ansprechen, einzeln.

aber ich weiß nicht wie das geht ist mein erstes projekt mit dyn. erzeugten objekten.

hatte es versucht mit
ShapeX.Shape0.brush.color
und
Shape0.brush.color

aber es geht nicht - helft mir biiiitte

korn117

kiar 9. Okt 2003 13:38

Re: dynamisch erzeugte objekte ansprechen
 
versuche mal activeControl: blödsinn
findcomponent müßte es sein

Robert Marquardt 9. Okt 2003 13:46

Re: dynamisch erzeugte objekte ansprechen
 
Es ist nicht noetig den Shapes Namen zu geben. Die Komponentennamen sind eher in der IDE wichtig.
Dort legt dir die IDE gleich noch eine Variable in der Klasse an und benutzt dabei den Namen.
Fuer selbst erzeugte Komponenten musst du dir selbst Variablen anlegen.

Delphi-Quellcode:
  TMyForm = class(TForm)
  ....
  public
    ShapeList: array [1..8] of TShape;
  .....
  end;

....

begin
  for i := 1 to 8 do//ALEDs do
    begin
    // SHAPE ERZEUGEN
    ShapeList[I] := TShape.Create(form1);
    ShapeList[I].Parent := form1;
Das ist jetzt ein bischen vereinfacht. Du brauchst wahrscheinlich ein 2 dimensionales Array.
Jetzt kannst du mit ShapeList[1] auf die 1. Komponente zugreifen usw.

kiar 9. Okt 2003 13:49

Re: dynamisch erzeugte objekte ansprechen
 
das ist die weitaus elegantere variante :oops:

IronEddie 9. Okt 2003 13:49

Re: dynamisch erzeugte objekte ansprechen
 
du solltest deine dynamischen objekte in einem array of TShape (oder of pointer) speichern...

also z.B.

var shapes : array [0..7] of TShape;

und dann mit

shapes[0] := TShape.Create(form1);
shapes[0].Parent := form1;

erzeugen.

dann kannst du über das array auf die shapes zugreifen

IronEddie 9. Okt 2003 13:50

Re: dynamisch erzeugte objekte ansprechen
 
ok, war jemand schneller!

KoRn117 9. Okt 2003 14:15

Re: dynamisch erzeugte objekte ansprechen
 
vielen dank leute das war der richtige denkanschub/wissen den/was ich brauchte.

danke!!!

:-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 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