Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekte von ScrollBox löschen (https://www.delphipraxis.net/68233-objekte-von-scrollbox-loeschen.html)

meg91 26. Apr 2006 19:14


Objekte von ScrollBox löschen
 
ich hab folgendes Problem:
in einer Schleife erstelle ich Objekte auf einer ScrollBox, da das aber mehrere Male möglich sein soll
muss ich die Objekte erst alle wieder löschen bevor man wieder neu anfangen kann
da das relativ viele sind, dachte ich es sei einfacher die ganze ScrollBox zu löschen und nacher wieder zu erstellen
hat nur leider nicht ganz so funktioniert wie ich mir das vorgestellt hab
hier mal der code mit dem ichs versucht hab

Delphi-Quellcode:
var
  ScrollBox1: TScrollBox;
  lokale_suche_2: TTabControl;

begin
//ScrollBox löschen und neu erstellen
ScrollBox1.Free;

with ScrollBox1 do
begin
  ScrollBox1 := TScrollBox.Create(self);
  Parent := lokale_suche_2;
  Top := 48;
  Left := 8;
  Height := 233;
  Width := 489;
  BevelEdges := [beRight,beBottom];
  BevelInner := bvRaised;
  BevelKind := bkNone;
  BevelOuter := bvLowered;
  BevelWidth := 1;
  BorderStyle := bsNone;
end;
end;
ich steh im Moment ziemlich aufm Schlauch kann mir bitte jemand helfen

SirThornberry 26. Apr 2006 19:32

Re: Objekte von ScrollBox löschen
 
die beste Variante ist das du dir die Objecte welche du erstellst in einer Liste (TObjectList) speicherst bzw. in einem normalen Array. Alternativ kannst du noch mit Scrollbox.ControlCount und Scrollbox.Controls[] alle Controls durchlaufen und freigeben.

MrKnogge 26. Apr 2006 19:35

Re: Objekte von ScrollBox löschen
 
Du musst die Objekte die du erstellst trotzdem wieder freigeben, einfach denn parent zu löschen reicht nicht !

Was fügst du denn der Scrollbox alles hinzu ?


gruss

meg91 26. Apr 2006 21:16

Re: Objekte von ScrollBox löschen
 
Sind nur images und labels

aber die haben alles die gleichen namen weil ich sie in ner schleife erstell
und wenn ich my_label.free; mach wird immer nur das letzte gelöscht

kann man irgendwie in den namen des labels eine vaiabele einfügen die dann hochzählt, zB label1, label2,...

Hawkeye219 26. Apr 2006 21:37

Re: Objekte von ScrollBox löschen
 
Hallo,

SirThornberry hat es im Beitrag #2 bereits gesagt: du mußt dir die Zeiger auf die erstellten Objekte in einem Array merken oder auf das Controls-Array der Scrollbox zurückgreifen.

Der folgende Code gibt alle vorhandenenen Elemente in der Scrollbox wieder frei:

Delphi-Quellcode:
var ii : Integer;

for ii := Scrollbox.ControlCount - 1 downto 0 do
  ScrollBox.Controls[ii].Free;
Gruß Hawkeye

meg91 27. Apr 2006 14:25

Re: Objekte von ScrollBox löschen
 
vielen Dank
funzt super


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