![]() |
TpopupMenu macht faxen !
Hi,
ich erstelle Dynamisch ein PopupMenu, in späteren Zeitpunkt wird es Wieder gelöscht und zwar so :
Delphi-Quellcode:
TPopupMenu(FindComponent('_POP_10')).Free;
TPopupMenu(FindComponent('_POP_10')).PopupComponent := nil; Und wenn ich noch ein mal erstelle ein PopupMenu mit dem gleichen Namen wie in diesem Beispiel '_POP_10', Bekomme ich eine Fehler meldung das dieses Componente ist bereits vorhanden. Was habe ich falsch gemach bei entfernen von dem PopupMenu ? Danke für eure Hilfe gruss Seba |
Re: TpopupMenu macht faxen !
Ich würde mal schauen, ob du das Menü nicht auch noch aus der Components-Auflistung entfernen musst. Davon abgesehen hab ich deinen Thread doch schonmal eben gesehen...
![]() |
Re: TpopupMenu macht faxen !
Hi,
was meinst du mit Componenten Auflistung ? Ja das Stimmt mit dem Therad, nimand hat sich gemeldet also dachte ich bin in falschen "film" :) gruss seba |
Re: TpopupMenu macht faxen !
Du führst Free auf eine Instanz aus bevor du eine ihrer Eigenschaften besetzt? :gruebel:
Ich bin nicht mehr so fit in der VCL wie ich es mal war, aber die Komponente nicht wird dank des Ownership-Konzeptes der VCL autom. aus dem Parent geworfen wenn du sie freigibst? Wenn du also direkt danach FindComponent mit dem gleichen Namen aufrufst[1], was erwartest du zu finden? Ich kann hier falsch liegen und das Freigeben des Child wird es nicht aus dem Owner entfernen, aber immernoch besetzt du eine Property einer Instanz die schon freigegeben wurde. [1]elegant unnötige Verschewendung es zweimal direkt nacheinander auszuführen anstatt den Wert zwischenzuspeichern, btw. :zwinker: |
Re: TpopupMenu macht faxen !
Ja Du hast 100%-ig recht, ich kann doch das nicht ansprechen wenn ich es Freigegeben Habe.
Jetzt habe ich es nur mit Free bahandelt aber es kommt bei nächstem mal wieder das gleiche, von wegen das es bereits vorhanden ist. Ich mach es genau so mit Panels oder anderen Componenten, da kommt es zu keinen Fehler. Nur bei dem TPopupMenu, ich komm einfach nicht weiter ! |
Re: TpopupMenu macht faxen !
Vieleicht Liegt das bei Erstellen ???
Delphi-Quellcode:
So wird es erstellt.
Function CREATE_POPUP( Nr : Word ) : TPopupMenu;
Var mi : Array [0..1] of TMenuItem; Begin Result := TPopupMenu.Create( self ); Result.Name := '_POP_'+IntToStr(UA[Nr].Panel); mi[0] := TMenuItem.Create( result ); mi[0].Caption := 'Vorschau'; mi[0].OnClick := ON_CLICK_POPUP_VORSCHAU; Result.Items.Add( mi[0] ); mi[1] := TMenuItem.Create( result ); mi[1].Caption := 'Detalierte Bearbeitung'; mi[1].OnClick := ON_CLICK_POPUP_DETALIERTE; Result.Items.Add( mi[1] ); End; gruss seba |
Re: TpopupMenu macht faxen !
Hallo Sebastian,
mir scheint der Wurm steckt schon im Konzept - warum erzeugst du das PopupMenu überhaupt dynamisch? Du kannst es doch schon zur Entwurfszeit bereitstellen. Wenn nötig kannst du es zur Laufzeit mit den dynamisch erzeugten Komponenten verbinden, indem du es der Eigenschaft PopupMenu der jeweiligen Komponente zuweist. Das PopupMenu selbst muss nie freigegeben werden und bleibt auch erhalten, wenn die dynamisch erzeugten Komponenten zerstört werden. Grüße vom marabu PS: schöne Bilder ... |
Re: TpopupMenu macht faxen !
:shock: :roll:
SELTEN SO GELACHT marabu !!!!! DAS IST ES. Warum einfach wenn es komplitzert geht ( oder auch nicht ) Ich könnte micht tot lachen, warum ich so bl... bin. Du hast vollkomen Recht, ich kann mir es nicht erklähren warum ich so eine sch... mir ausgedacht habe. Bestimmt wollte ich besonder Cool sein :tongue: ! Danke für dei beitrag, natörlich werde ich so machen wie Du mir das gesagt hast. DANKE Nochmal. gruss seba |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 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