![]() |
Image Create Frage
Hi ;)
Habe folgendes Problem / Frage ! Hiermit erstelle ich in einem Zufallsintervall Images...
Delphi-Quellcode:
b ist in einer Ini Datei gespeichert so dass die Bilder die Namen Wolke1, Wolke2, Wolke3 etc. haben...with TImage.create(self) do begin Parent := Self; if Seite=1 then Left:=-15 else Left:=Form1.Width+15; height:=15; width:=36; Picture.LoadFromFile('wolke.bmp'); name:='Wolke'+IntToStr(b); end; Nun möchte ich in einer anderen Prozedur ALLE diese Bilder bewegen und habe es so versucht:
Delphi-Quellcode:
Ich weiß das ist grad ein sehr großer depp Fehler aber ich komm grad echt nich auf die Lösung ;))
procedure TForm1.Timer1Timer(Sender: TObject);
var b,i:integer; Wolke:TImage; begin // Bewegt alle Wolken ini:=TIniFile.Create('temp.ini'); b:=ini.ReadInteger('Wolken','Anzahl',0); if b=0 then exit; for i:=1 to b do begin Wolke[i].Left:=Wolke[i]+1; end; end; |
Re: Image Create Frage
Delphi-Quellcode:
Das geht schonmal nicht.
ini:=TIniFile.Create('temp.ini');
Du kannst nicht jedesmal diese Ini erstellen, ohne sie wieder freizugeben. Entweder, du erstellst sie einmal (OnCreate oder so) und gibst sie im OnClose/OnDestroy etc. wieder frei mittels:
Delphi-Quellcode:
ini.Free;
oder du gibst sie am Ender der Timer-Prozedur wieder frei. |
Re: Image Create Frage
Hi hOnkibOnk,
müsste das nicht Wolke[i].Left:=Wolke[i].Left+1; heißen? Tschüß Markus |
Re: Image Create Frage
Ich weiß, ehrlich gesagt, nicht, ob man das so machen kann:
Delphi-Quellcode:
Es kann sein, dass du FindComponent benutzen musst.
Wolke[i].Left:=Wolke[i]+1;
|
Re: Image Create Frage
Zitat:
Will nur wissen wie ich das alle bewege... FindComponent hab ich noch nie mit gearbeitet... Das es so nicht funktioniert weiß ich selber. Nur brauch nen Lösungsvorschlag. |
Re: Image Create Frage
Achso :angle2:
Vielleicht geht's so:
Delphi-Quellcode:
for i:=1 to b do
with TImage(FindComponent('Wolke'+IntToStr(i))) do begin Left := Left + 1; end; |
Re: Image Create Frage
geht das ganze überhaupt zu kompilieren?? ich denk mal nicht.
Nur weil irgend ne Komponente den Namen "Wolke" hat kannst du die noch lange nicht über "wolke" ansprechen. Du musst den variablen namen verwenden, und da du keinen vergeben hast geht das auch nicht. du solltest die ganzen images eventuell mal in nem array oder Tlist speichern. Also anstelle von
Delphi-Quellcode:
eher
with TImage.create(self) do
begin Parent := Self; if Seite=1 then Left:=-15 else Left:=Form1.Width+15; height:=15; width:=36; Picture.LoadFromFile('wolke.bmp'); name:='Wolke'+IntToStr(b); end;
Delphi-Quellcode:
So kannst du dann später über
myimagearray: Array of TImage;
[...] setlength(myimagearray, length(myimagearray) + 1); myimagearray[length(myimagearray)-1] := TImage.create(self); with myimagearray[length(myimagearray)-1] do begin Parent := Self; if Seite=1 then Left:=-15 else Left:=Form1.Width+15; height:=15; width:=36; Picture.LoadFromFile('wolke.bmp'); name:='Wolke'+IntToStr(b); end;
Delphi-Quellcode:
auf die Images zugreifen. Und sie auch ordentlich bei Programmende wieder freigeben
myimagearray[i]
|
Re: Image Create Frage
argh löschen mein fehler ^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 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