Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Prüfen ob ein TImage existiert ? (https://www.delphipraxis.net/168304-pruefen-ob-ein-timage-existiert.html)

Premaider 14. Mai 2012 17:20

Prüfen ob ein TImage existiert ?
 
Hey Leute.
Wie überprüft man ob ein TImage existiert ?
Bei mir wird während das Programm läuft so ein TImage erstellt:
Delphi-Quellcode:
Bild:=TImage.create(nil);
Der Timer erstellt erst in einer IF-Schleife das Image. Doch
der Timer soll auch wenn es dieses Image schon existiert ihm eine Positionen zuweisen.
Etwa so: (Image1 existiert schon vorher ;D)
Delphi-Quellcode:
  Bild.Top:=Image1.Top;
  Bild.Left:=Image1.Left
Wie mache ich das unter Delphi7 ?

DeddyH 14. Mai 2012 17:22

AW: Prüfen ob ein TImage existiert ?
 
If-Schleife. Und was für ein Timer? Zeig doch mal Code.

Premaider 14. Mai 2012 17:27

AW: Prüfen ob ein TImage existiert ?
 
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  r:Trect;
begin
  Bild2.Top:=Image1.Top+(Image1.tag * 16); // Soll nur ausgeführt werden, wenn es das Image gibt, da sonst ein Fehler kommt.
  Bild2.Left:=Image1.Left+(Image1.tag * 16); // Soll nur ausgeführt werden, wenn es das Image gibt, da sonst ein Fehler kommt.
  if InterSectRect(r,image1.BoundsRect,Bild.BoundsRect) then
    Begin
      Image1.tag:=Image1.Tag+1;
      Bild.Left:=Random(Form1.Width-Bild.Left);
      Bild.Top:=Random(Form1.Height-Bild.Top);
      Bild2:=TImage.create(nil);
      bild2.parent := self;
      Bild2.picture.LoadFromFile('Spiel.jpg');
      Bild2.autosize:=true;
      Bild2.Visible:=true;
end;
end;
Vllt erkennt ihr ja, dass es Snake werden soll :D

DeddyH 14. Mai 2012 17:28

AW: Prüfen ob ein TImage existiert ?
 
Was ist denn Bild2, eine globale Variable?

Premaider 14. Mai 2012 17:34

AW: Prüfen ob ein TImage existiert ?
 
ja, es ist aber in den { Private-Deklarationen } :D

DeddyH 14. Mai 2012 17:40

AW: Prüfen ob ein TImage existiert ?
 
OK, dann ist es mit nil initialisiert, also sollte das hier funktionieren.
Delphi-Quellcode:
if not Assigned(Bild2) then
  Bild2 := TImage.create(nil);

Premaider 14. Mai 2012 17:51

AW: Prüfen ob ein TImage existiert ?
 
€dit: Gelöst

Danke für deine Hilfe :D

Dalai 15. Mai 2012 00:09

AW: Prüfen ob ein TImage existiert ?
 
Und nicht vergessen, das TImage (hier Bild2) nach dem Benutzen wieder zu zerstören, spätestens im TForm.FormClose oder TForm.FormDestroy, sonst gibt es Speicherlecks.

MfG Dalai

DeddyH 15. Mai 2012 06:59

AW: Prüfen ob ein TImage existiert ?
 
Es würde schon genügen, statt nil einen existierenden Owner anzugeben, dann geschieht die Freigabe automatisch.


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