Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Shapes an Arrays hängen
christian_m - Di 17.04.07 13:26
Titel: Shapes an Arrays hängen
Ich möchte ein 2D-Spielfeld mit arrays erstellen und dann an verschiedene Positionen shapes(später evt. images)erzeugen. Wie kann ich einem array ein shape anhängen und dieses dann in der Unit anzeigen lassen???
Spielfeld :array[0..13, 0 .. 13] of TForm;
//besteht das Feld dann aus x/y Koordinaten?
Shapes:array[1..10] of TForm;
// die shapes im array
-> anzeigen lassen
Marc. - Di 17.04.07 13:38
Titel: Re: Shapes an Arrays hängen
christian_m hat folgendes geschrieben: |
Spielfeld :array[0..13, 0 .. 13] of TForm;
//besteht das Feld dann aus x/y Koordinaten?
Shapes:array[1..10] of TForm;
// die shapes im array |
Warum denn "of TForm" und nicht "of TShape" ?
Übersetz es dir doch mal: Kette[1 bis 10] von TForm - aber du willst doch Shapes in deinem Array haben oder nicht? ;)
christian_m - Di 17.04.07 14:14
ok ich hab jetzt
Spielfeld: array [1..10] : of TShape; ,
also 10 Felder in einem Array gespeichert.
Wie kann ich jetzt den Shapes "vorgelegte"/feste Positionen geben
Marc. - Di 17.04.07 14:32
Instanz erzeugen -> Position festlegen mit Left / Top -> Fertig
Kleines Beispiel (hier werden 10 Shapes nebeneinander gereit):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure shape; var ashape: array [1..10] of TShape; i: integer; begin for i := 1 to 10 do begin ashape[i] := TShape.Create(nil); ashape[i].Parent := form1; ashape[i].Left := i*(ashape[i].Width + 1); end; end; |
Parent gibt die Komponente an, auf denen die Shapes später liegen - in diesem Falle auf der Form selbst.
christian_m - Di 17.04.07 16:11
Hi @ all!
[quote="
Marc."](hier werden 10 Shapes nebeneinander gereit):
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure shape; ... ashape[i].Left := i*(ashape[i].Width + 1); end; end; |
was ist mit
<ashape[i].Left := i*(ashape[i].Width + 1);>
gemeint?
christian_m - Di 17.04.07 16:13
muss ich vorher noch shapes als Objekte einfügen, damit position gespeichert werden kann?
Marc. - Di 17.04.07 16:24
christian_m hat folgendes geschrieben: |
was ist mit
<ashape[i].Left := i*(ashape[i].Width + 1);>
gemeint? |
Das war nur ein Beispiel. Du kannst natürlich jeden anderen Integer-Wert einsetzen. ;)
Left gibt an, wie weit das Objekt von der linken Seite (der Name verräts eigentlich schon) entfernt liegt und Top gibt die Höhe auf der Form an.
Achtung: Top <> Height & Left <> Width ;)
Was meinst du mit "als Objekte einfügen"?
christian_m - Di 17.04.07 16:49
"als Objekte einfügen":
-> das Shape als grafisches Objekt aus der Bibliothek in das Formular einfügen
kann ich z.B. ein Shape an eine selbstgewählte Position platzieren(soll dort bleiben) und diese Position dann in einem Array speichern//MUSS ICH DAS ÜBERHAUPT MACHEN ODER KANN ICH AUCH DIE POSITION EINES SHAPES MIT shape1.position abrufen
z.B. figur1.top:= shape1.top;
...
...damit ich später wieder auf die Koordinaten zugreifen kann, um ein zweites Objekt(z.B. ein Image/ eine Figur) an diese Stelle zu platzieren;
mfg christian_m
JayEff - Di 17.04.07 16:53
christian_m hat folgendes geschrieben: |
| "kann ich z.B. ein Shape an eine selbstgewählte Position platzieren(soll dort bleiben) und diese Position dann in einem Array speichern ... |
was hindert dich daran...? :roll: Ich meine, wo hast du dabei Probleme? (Aber eigentlich ... Neue Frage => Neuer Thread ... :/ )
christian_m - Di 17.04.07 17:12
k danke für die antworten mach dann einen neuen thread auf
mfg christian_m
JayEff - Di 17.04.07 20:28
christian_m hat folgendes geschrieben: |
MUSS ICH DAS ÜBERHAUPT MACHEN ODER KANN ICH AUCH DIE POSITION EINES SHAPES MIT shape1.position abrufen
z.B. figur1.top:= shape1.top; |
Nun, da du deine Shapes (wenn du meinem Link gefolgt bist) in einem Array verwaltest, kannst du so auf die Position zugreifen:
Image1.Left := myShapeArray[1].Left;
Wenn's das nicht löst, mach einen neuen Thread und poste den Code den du schon hast^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!