Trwałe usuwanie komponentów

0

Tworzę dynamicznie jakiś komponent, powiedzmy TButton daje mu oprócz innych parametrów Nazwę:

Button1.Name:= 'nazwa'

. Gdy komponent nie jest mi już potrzebny usuwam go:

Button1.Free;

. Tu się pojawia problem, bo gdy tworzę kolejny komponent dynamicznie i chcę mu nadać taką samą nazwę jak miał tamten to mi wywala, że komponent o takiej nazwie już istnieje.
Jak w takim razie trwale usunąć z pamięci Obiekt?

0

Obiekt usuwasz poprzez .Free

Tyle że nie usuwasz jego instancję a nie zmienną. Poza tym, jak już usunąłeś tego Buttona, to co za problem pod ten nieużywany wskaźnik podpiąć innego.

0

A co za problem podczas niszczenia dać

Obiekt.Name := '';
Obiekt.Free();
0

Podepnę się pod temat żeby nie zakładać nowego.

Jak to w końcu jest?
Jest możliwość usunięcia stworzonego komponentu (i wszystkich jego "dzieci") tak aby zwolniły się również nazwy ?

3

Problem jest jakiś wydumany:

var Edit1:TEdit;
procedure TForm1.Button1Click(Sender: TObject);
var T:Integer;
begin
  T:=Tag+1;
  Tag:=T;
  if Edit1<>nil then Edit1.Free;
  Edit1:=TEdit.Create(Self);
  Edit1.Text:='Nr '+IntToStr(T);
  Edit1.Left:=4;
  Edit1.Top:=4;
  Edit1.Name:='NAME';
  Edit1.Parent:=Self;
end;

działa bez problemów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1