Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi erzeugte Images löschen. (https://www.delphipraxis.net/97542-erzeugte-images-loeschen.html)

smart 12. Aug 2007 14:56


erzeugte Images löschen.
 
Hallo Alle!

In einem Projekt erzeuge ich auf einer Form ganz viele Images. Nun möchte ich alle auf einmal löschen. Ich lösche sie mit diesem Code. Das Problem ist, wenn ich jetzt alle Images gelöscht habe und wieder neue erzeugen möchte, hängt sich das Programm auf. Erst bei einem Neustart des Programms klappt es wieder. Was mache ich da falsch?
Delphi-Quellcode:
var temp : TComponent;
    Halter : Integer;
begin
  for Halter := ComponentCount - 1 downto 0 do
  begin
    Temp := Components[Halter];
    if (Temp is TImage) then
    begin
      Temp.Free ;
    end;
  end;
und so erzeuge ich die Images:
Delphi-Quellcode:
Var Mein_Bild : array [0 .. 100] of TImage;
........
Var
A: Integer;
begin
for A := 0 to FileListBox1.Items.Count - 1 do
begin
Nr := Nr + 1;
Mein_Bild[Nr] := TImage.Create(Form1);
  With Mein_Bild[Nr] do
    begin
      Parent := Form1;
      Left := Links;
      Top := Oben;
      Tag := Nr;
      ShowHint := True;
      Hint := 'Nr.: ' + IntToStr(Nr);
      Width := 340;
      Height := 240;
      Stretch := True;
      Proportional := True;
    end;
  end;
Gruß
Heike

Apollonius 12. Aug 2007 14:58

Re: erzeugte Images löschen.
 
Der Code zum erzeugen wäre auch ganz interessant. Und wo hängts denn (Debugger)?

SirThornberry 12. Aug 2007 15:11

Re: erzeugte Images löschen.
 
warum arbeitest du mit ComponentCount? Du hast doch dein Array of TImage. Gehe dieses einfach durch
erzeugen:
Delphi-Quellcode:
var
  Mein_Bild : array of TImage;
[...]
Var
A: Integer;
begin
  SetLength(Mein_Bild, FileListBox1.Items.Count);
  for A := 0 to FileListBox1.Items.Count - 1 do
  begin
    Mein_Bild[A] := TImage.Create(Form1);
    With Mein_Bild[Nr] do
    begin
      Parent := Form1;
      Left := Links;
      Top := Oben;
      Tag := Nr;
      ShowHint := True;
      Hint := 'Nr.: ' + IntToStr(Nr);
      Width := 340;
      Height := 240;
      Stretch := True;
      Proportional := True;
    end;
  end;
frei geben:
Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 0 to Length(Mein_Bild) - 1 do
    Mein_Bild[i].Free;
  SetLength(Mein_Bild, 0);

dajuhsa 12. Aug 2007 15:37

Re: erzeugte Images löschen.
 
warum setlength? is doch statisch das array oder? :gruebel:

Alien426 12. Aug 2007 16:31

Re: erzeugte Images löschen.
 
Nein.
Delphi-Quellcode:
var
  Array[0..20] of TImage; // statisch
  Array of TImage;        // dynamisch

dajuhsa 12. Aug 2007 20:40

Re: erzeugte Images löschen.
 
das is mir klar...

bei SirThornberry is dynamisch das hab ich nich gesehen :oops:
das andere von smart is statisch :mrgreen:


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