Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Komponente entfernen (https://www.delphipraxis.net/68692-problem-mit-komponente-entfernen.html)

made in Germany 3. Mai 2006 22:21


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:
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;
Das Image, das das Popupmenü geöffnet hat, soll entfernt werden.

Zumindest hab ich mir das so vorgestellt :(

Hawkeye219 3. Mai 2006 22:25

Re: Problem mit Komponente entfernen
 
Hallo,

die Eigenschaft Delphi-Referenz durchsuchenTPopupMenu.PopupComponent ist wohl das, was du suchst.

Gruß Hawkeye

made in Germany 3. Mai 2006 22:32

Re: Problem mit Komponente entfernen
 
genau das hab ich gebraucht

danke :!:

Muetze1 4. Mai 2006 08:49

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.

made in Germany 4. Mai 2006 17:02

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:

himitsu 4. Mai 2006 17:34

Re: Problem mit Komponente entfernen
 
Probier mal
Delphi-Quellcode:
FreeAndNil(PopupMenu.PopupComponent);
oder
Delphi-Quellcode:
PopupMenu.PopupComponent.Free;
PopupMenu.PopupComponent := nil;

Hawkeye219 4. Mai 2006 17:41

Re: Problem mit Komponente entfernen
 
Zitat:

Zitat von himitsu
Delphi-Quellcode:
FreeAndNil(PopupMenu.PopupComponent);

Damit wird der Compiler wohl nicht einverstanden sein. "PopupComponent" ist ein Property. :wink:

Gruß Hawkeye

himitsu 4. Mai 2006 18:19

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 ^^

made in Germany 4. Mai 2006 20:11

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?

made in Germany 4. Mai 2006 20:19

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 21:09 Uhr.
Seite 1 von 2  1 2      

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