Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi einzelne Komponenten während der Laufzeit löschen? (https://www.delphipraxis.net/79627-einzelne-komponenten-waehrend-der-laufzeit-loeschen.html)

smart 25. Okt 2006 15:26


einzelne Komponenten während der Laufzeit löschen?
 
Hallo.

Wie kann ich einzelne Komponenten während der Laufzeit löschen?
Zum Beispiel soll während der Laufzeit Image1 gelöscht werden.
Ich bekomme es nur hin, alle Images zu löschen.

Meine Versuche mit
Delphi-Quellcode:
var temp : TComponent;
    A: Integer;
begin
  for A:= ComponentCount - 1 downto 0 do
  begin
    Temp := Components[A];
    if (Temp is Image[A]) then
    begin
      Temp.Free ;
    end;
  end;
klappen nicht.:-(

Gruß
Heike

SirThornberry 25. Okt 2006 15:29

Re: einzelne Komponenten während der Laufzeit löschen?
 
Das einfachste wäre
Delphi-Quellcode:
Image1.Free;

smart 25. Okt 2006 15:34

Re: einzelne Komponenten während der Laufzeit löschen?
 
Zitat:

Zitat von SirThornberry
Das einfachste wäre
Delphi-Quellcode:
Image1.Free;

Entschuldigung, ich hatte verssen zu schreiben, dass mir der Name 'Image1' nicht bekannt ist. Mir ist nur 'Image' bekannt die '1 ... 100' errechnet sich erst wenn die Sache läuft.

Gruß
Heike

mkinzler 25. Okt 2006 15:39

Re: einzelne Komponenten während der Laufzeit löschen?
 
Delphi-Quellcode:
Form.FindComponent ('Image'+IntToStr(i)).Free;

smart 25. Okt 2006 15:51

Re: einzelne Komponenten während der Laufzeit löschen?
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
Form.FindComponent ('Image'+IntToStr(i)).Free;

Ist so schön einfach, klappt aber nicht. Und mit
Delphi-Quellcode:
Form1.FindComponent ('Image'+IntToStr(A)).Destroy;
bekomme ich eine 'Zugriffsverletzung'.

Gruß
Heike

mkinzler 25. Okt 2006 16:01

Re: einzelne Komponenten während der Laufzeit löschen?
 
Versuch mal die Referenz vor dem Freigeben lokal zwischenzuspeichern

Delphi-Quellcode:
obj: TComponent;
...
obj := Form1.FindComponent(...);
obj.Free;
.Free ist dem .Destroy eindeutig vorzuziehen.

Sunlight7 25. Okt 2006 16:06

Re: einzelne Komponenten während der Laufzeit löschen?
 
Wie erstellst Du das Image?

Wenn Du es dynamisch erstellst, weis beim erstellen einen Namen zu.

SirThornberry 25. Okt 2006 16:18

Re: einzelne Komponenten während der Laufzeit löschen?
 
Zitat:

Zitat von smart
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
Form.FindComponent ('Image'+IntToStr(i)).Free;

Ist so schön einfach, klappt aber nicht.

Also mir hat weder der Compiler noch das Programm jemals den Fehler "klappt nicht" ausgegeben. :wink:

smart 25. Okt 2006 16:32

Re: einzelne Komponenten während der Laufzeit löschen?
 
Zitat:

Zitat von SirThornberry
[Also mir hat weder der Compiler noch das Programm jemals den Fehler "klappt nicht" ausgegeben. :wink:

Hi.

Es kommt ja auch keine Fehlermeldung! Es wird nur nicht gelöscht.

Gruß
Heike

smart 25. Okt 2006 16:42

Re: einzelne Komponenten während der Laufzeit löschen?
 
Zitat:

Zitat von Sunlight7
Wie erstellst Du das Image?
Wenn Du es dynamisch erstellst, weis beim erstellen einen Namen zu.

Ich erzeuge die Images so
Delphi-Quellcode:
...
Bild[I] := TFigur.Create(Self);
Bild[I].Parent := Form1;
...
Das geht von 0 bis 100. Im laufe einer Berechnung soll eins von den Images gelöscht werden.
Wenn ich jetzt mit lösche
Delphi-Quellcode:
Form.FindComponent ('Bild'+IntToStr(i)).Free;
kommt keine Fehlermeldung, aber es wird nicht gelöscht.

Gruß
Heike


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 Uhr.
Seite 1 von 3  1 23      

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