![]() |
Problem mit Komponente entfernen
Hi!
Ich komm wieder mal nicht weiter, ich hoffe ihr könnt mir helfen: Ich möchte die hier zur Laufzeit erstellte Kompnente wieder entfernen.
Delphi-Quellcode:
Das Image, das das Popupmenü geöffnet hat, soll entfernt werden.
var
imgnew:TImage; x1,y1,imganz: Integer; procedure TForm1.Button1Click(Sender: TObject); begin imgnew:=TImage.Create(self); imgnew.Parent:= SDIAppForm; imgnew.Show; imgnew.Canvas.Brush.Color:=clred; imgnew.PopupMenu:=Popupmenu1; imgnew.Canvas.Rectangle(x1,y1,x1+100,y1+100); imgnew.Name:='Image'+IntToStr(imganz); // Namen ändern imganz:=imganz+1; x1:=x1+5; //neue Koordinaten y1:=y1+5; end; procedure TForm1.lschen1Click(Sender: TObject); begin TImage().Free; // Hier sollte nacher die ausgewählte Kompnente irgendwie wieder entfernt werden end; Zumindest hab ich mir das so vorgestellt :( |
Re: Problem mit Komponente entfernen
|
Re: Problem mit Komponente entfernen
genau das hab ich gebraucht
danke :!: |
Re: Problem mit Komponente entfernen
Frage: Warum legst du dir eine globale Variable für die Image Instanz an? Das ist total unsinnig, da du schliesslich mehr als eine Instanz anlegst und somit die anderen, alten Instanzen verlierst.
|
Re: Problem mit Komponente entfernen
gut, okay. Hab ich geändert.
Wenn ich aber dann PopupMenu.popupcomponent.free; verwende, bekomme ich beim Schließen meines Programmes eine Fehlermeldung. Woran liegt das? :gruebel: |
Re: Problem mit Komponente entfernen
Probier mal
Delphi-Quellcode:
oder
FreeAndNil(PopupMenu.PopupComponent);
Delphi-Quellcode:
PopupMenu.PopupComponent.Free;
PopupMenu.PopupComponent := nil; |
Re: Problem mit Komponente entfernen
Zitat:
Gruß Hawkeye |
Re: Problem mit Komponente entfernen
Dann halt die zweite Variante ;)
Es ist ja nur 'ne Vermutung, aber eventuell versucht dann ja irgendwas aus das Objekt zuzugreifen, welches in PopupComponent gespeichert ist und dann wirdja ein Fehler passieren, wenn da ein nicht mehr existierened Objekt drinsteht ^^ |
Re: Problem mit Komponente entfernen
Funktioniert nicht
FEHLER: Access violation at address 00000001. Read of address 00000001. Kann mir mal jemand sagen, was das bedeutet? |
Re: Problem mit Komponente entfernen
Wenn ich jedoch bei der Prozedur TSDIAppForm.close folgendes eingebe:
Delphi-Quellcode:
imgnew:=TImage.Create(self);
Dann lässt sich das Programm ohne Fehler schließen :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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