Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zusammengesetzter Objektname (https://www.delphipraxis.net/72153-zusammengesetzter-objektname.html)

ErdNussLocke 26. Jun 2006 13:38


Zusammengesetzter Objektname
 
Hi,
kann man einen Objektnamen aus 2 Teilen zusammensetzen lassen?
Also z.B. so:

For i := 1 to 10 do
'Ball'+i.visible:=true;

also das der Ball i sichtbar wird?! Oder muss man für jeden Ball alles aufschreiben?
Falls es da eine Lösung gibt, geht das dann auch mit Variablen?
Danke im Vorraus
MfG
ErdNussLocke

TheAn00bis 26. Jun 2006 13:43

Re: Zusammengesetzter Objektname
 
Wenn es sich um ein von TObject abgeleitetes Objekt handelt, so funktioniert das so:
Delphi-Quellcode:
TBall('Ball'+inttostr(i)).visible := true;
Natürlich nur solange Ball vom Typ TBall ist.

Handelt es sich um eine Komponente auf der Form, musst du FindComponent verwenden.

Edit: Nein, mit Variablen der Typen String, Integer, Extended... funktioniert das nicht. Aber du könntest dir eine Hilfsklasse erstellen:

Delphi-Quellcode:
TInteger = class(TObject)
   public
     pInteger: TInteger;
end;

Flare 26. Jun 2006 13:46

Re: Zusammengesetzter Objektname
 
Oder du benutzt Arrays:
Delphi-Quellcode:
var Baelle: array[0..4] of TBall;
    i: integer;
begin
  for i:=0 to 4 do
    baelle[i] := TBall.create;
    baelle[i].visible := true;
  end;
end;

Flare

ErdNussLocke 26. Jun 2006 13:48

Re: Zusammengesetzter Objektname
 
Hi,
danke für deine schnelle Antwort!
Das Objekt liegt auf dem Formular Form1. Also laut deiner Beschreibung muss ich dort FindComponent verwenden. Da frag ich mich: Was ist das? Die Delphi Hilfe macht alles nur noch unverständlicher. Könntest du mir ein Beispiel posten? :)
Danke im Vorraus
MfG
ErdNussLocke

TheAn00bis 26. Jun 2006 13:54

Re: Zusammengesetzter Objektname
 
z.B.:

Delphi-Quellcode:
(FindComponent('Ball'+inttostr(i)) as TBall).visible := true;
oder
Delphi-Quellcode:
TBall(FindComponent('Ball'+inttostr(i))).visible := true;

ErdNussLocke 26. Jun 2006 14:09

Re: Zusammengesetzter Objektname
 
Hi,
danke für die Beispiele. Es funktioniert sogar fast :)
Ich mache das jetzt mit 6 Bällen die alle einfach nur sichtbar gemacht werden sollen:

Delphi-Quellcode:
var i: integer;
begin
 for i:=1 to 6 do
  TForm1(FindComponent('Ball'+inttostr(i))).visible:=true;
end;
Es werden jetzt allerdings nur Ball nr. 1,3,4 und 6 sichtbar. Die anderen bleiben verschwunden. Es sind von anfang an alle auf visible=false gestellt.
Kann wer helfen?
MfG
ErdNussLocke

Flare 26. Jun 2006 14:12

Re: Zusammengesetzter Objektname
 
Zitat:

Zitat von ErdNussLocke
Delphi-Quellcode:
var i: integer;
begin
 for i:=1 to 6 do
  TForm1(FindComponent('Ball'+inttostr(i))).visible:=true;
end;

Warum machst du die Umwandlung nach TForm1? Von was für einem Typ sind denn deine Bälle? TImages? Auf jeden Fall musst du die in dieses Format umwandeln, nicht in TForm! Warum der die 2 und 5 auslässt kann ich allerdings nicht sagen.


Flare

ErdNussLocke 26. Jun 2006 14:40

Re: Zusammengesetzter Objektname
 
Die Bälle sind Shapes auf TForm1

Edit: Ok dann geht es :) Danke nochmal!


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