Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Timages löschen. (https://www.delphipraxis.net/49916-timages-loeschen.html)

simonko 18. Jul 2005 12:02


Timages löschen.
 
Wie kann man dynamisch erstellte images löschen?

ich hab
Delphi-Quellcode:
   for i:=1 to anzahl do
      bild[i].free

krieg aber damit immer ein laufzeitfehler.

ich will alle bilder einfach vom form löschen, dass ich sie im nächsten zyklus wieder erstellen kann.


MFG

freak4fun 18. Jul 2005 12:04

Re: Timages löschen.
 
Hallo :hi:,
vesuch mal

Delphi-Quellcode:
  for i := 0 to anzahl - 1 do
     bild[i].free
MfG
freak

simonko 18. Jul 2005 13:46

Re: Timages löschen.
 
ich krieg ketzt zwar keine fehlermeldung mehr aber
die bilder verschwinden nicht vom form.

hab folgende prozedur:

Delphi-Quellcode:
procedure cleanup;
var
   i : integer;
begin
 for i:=0 to st-1 do
   begin
     form1.bild[i].free;
   end;
end;

freak4fun 18. Jul 2005 13:51

Re: Timages löschen.
 
Hallo :hi:,
kannst du vielleicht mal posten, wie du deine bilder erstellst?

Delphi-Quellcode:
Bild: Array[0..10] of TImage;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Image1.Free;
  for i := 0 to 10 do
    Bild[i].Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to 10 do
    begin
      Bild[i] := TImage.Create(Form1);
      Bild[i].Parent := Form1;
      Bild[i].Left := i*50;
      Bild[i].Top := 10;
      Bild[i].Picture := Image1.Picture;
    end;
end;
MfG
freak

simonko 18. Jul 2005 14:46

Re: Timages löschen.
 
Delphi-Quellcode:
  while (p<>nil) do
    begin
      s:=stacktostring(p,i);
      pfad:=s;
      form1.kortn[i]:= TImage.Create(form1);
      with form1.kortn[i] do
        begin
          Parent:=form1;
          Left:=100+(i*30);
          Top:=300;
          Width:=75;
          Height:=130;
          Picture.LoadFromFile('C:\'+pfad+'.JPG');
          knr:=strtoint(s);
          Tag:=knr;
          proportional:=true;
          onClick:=form1.myonclick;
        end;
      p:=p^.next;
      i:=i+1;
    end;

....

procedure cleanup;
var
   i : integer;
begin
 for i:=0 to st-1 do
   begin
     form1.kortn[i].free;
   end;
end;
cleanup ruf ich dann von einer anderen prozedur auf.

Manne 18. Jul 2005 14:52

Re: Timages löschen.
 
Servus,
muss das nicht
Delphi-Quellcode:
for i:=st-1 downto 0 do
      bild[i].free
heißen?

Robert Marquardt 18. Jul 2005 14:55

Re: Timages löschen.
 
Wo wird Cleanup aufgerufen?
Wenn es nur darum geht bei Programmende die Komponenten abzuraeumen, so erledigt das Delphi automatisch.
Dafuer ist der bei TImage.Create angegebene Owner zustaendig.

sniper_w 18. Jul 2005 15:06

Re: Timages löschen.
 
Also bei mir geht es wunderbaer. Ein Beispiel:
Delphi-Quellcode:
var
  Form1: TForm1;
  img:TImage;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Assigned(img) then
   FreeAndNil(img)
   else
   begin
     img := TImage.Create(nil);
     with img do
     begin
       Visible := False;
       Parent := Self;
       Picture.LoadFromFile('c:\test1.bmp');
       AutoSize := True;
       Top := 100;
       Left := 100;
       Visible := true;
     end;
   end;
end;


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