![]() |
zur laufzeit erstellte Items löschen und Name zuweisen
Hi, habe wiedermal ein Problem, ich möchte Sachen vom Himmel rieseln lassen,
per zufall also zB Bombe/Herz/Banane. wenn diese zur Laufzeit erzeugten Images den unteren Rand der Form erreicht haben, sollen sie gelöscht werden. (das habe ich mit visible gelöst aber das ist glaube auch nicht resourcenschonend) Nur bekomm ich das nicht hin, folgende Probleme: - sobald ein neues Bild erzugt wurde ist der Name createitem ja an das neuerzeugte Bild vergeben. - ich möchte auch abfragen was für ein Bild den boden erreicht hat zB showmessage('Banane hat gerade den Boden erreicht'); hier mal mein derzeitiger Code:
Delphi-Quellcode:
LG
procedure TForm1.itemfabrikTimer(Sender: TObject);
begin itemcount:=itemcount+1; createitem:= TImage.Create(self); createitem.Name:='item' + inttostr (itemcount); createitem.Parent := Form1; createitem.Left:=baloon.left+74; createitem.Top:=baloon.Top+baloon.Height; createitem.picture.LoadFromFile('img/bomb.gif'); createitem.AutoSize:=true; createitem.show; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if itemcount>=1 then createitem.Top:=createitem.Top+1; if ((itemcount>=1) and (createitem.top>=spielfeld.top+spielfeld.Height-30)) then createitem.Visible:=False; end; Detrox |
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Schau mal nach
![]() |
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Und zum 2. Problem: Du könntest die Klasse TImage ja um ein Feld erweitern. Mal aus dem Kopf:
Delphi-Quellcode:
Nun solltest Du nach dem Erzeugen des TImage die Eigenschaft ItemKind setzen und auswerten können.
type
TItemKind = (ikBanana, ikBomb, ikHeart); TImage = class(ExtCtrls.TImage) private FItemKind: TItemKind; public property ItemKind: TItemKind read FItemKind write FItemKind; end; TForm1 = class(TForm) ... |
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Zur Antwort von Uwe Raabe
das mache ich doch schon mit:
Delphi-Quellcode:
Mein Problem ist eigentlich, das sich die erzeugten Items mit einem Timer nach unten bewegen.
createitem.Name:='item' + inttostr (itemcount);
Nur wen ein neues Item erzeugt wird bewegt sich dieses nach unten solange bis ein neues erzeugt wird usw... |
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Damit setzt Du den Namen, Uwes Tipp ging in die Richtung "Image zur Freigabe wiederfinden" ;)
|
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal das Spiel mit Source hochgeladen, ich versteh nur noch Bahnhof, villeicht kann mir wer meinen Denkfehler eklären
LG Detrox |
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Was verstehst Du denn nicht?
|
Re: zur laufzeit erstellte Items löschen und Name zuweisen
DeddyH
Der Timer der die Erzeugten Bilder nach unten bewegt, muss jedes erzeugte bild nach unten bewegen bis ein ereigniss eintritt (am boden angekommen). Das versteh ich nicht, denn wie soll ich dem Timer die Namen von allen Bildern sagen er weis ja auch nie wieviele Bilder erzeugt wurden. |
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Dann speichere die Objekte doch in einem Array/einer TObjectList ab, das/die kannst Du dann einfach durchlaufen.
|
Re: zur laufzeit erstellte Items löschen und Name zuweisen
Ganz dumme Frage, bin noch Anfänger hab die Objecktlist nie benutzt, hab mir das mal auf Delphi-Treff angeschaut, nur kann mein Delphi nix mit TObjecktlist anfangen, ist das eine Komponente? Ich kann sie im Reiter nirgends finden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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 by Thomas Breitkreuz