Ein freundlices Hallo a, alle,
ich dachte inzwischen wäre mir klar wie die Dinge zu handhaben sind, aber mein Programm stürzt beim Beenden ab.
Zunächst zum Verständnis: Wenn ich zur Laufzeit Objekte erzeuge, muß ich selbst aufräumen (free), wenn es keinen Owner gibt, sonst macht der das. So dachte ich bisher. Oder macht das der Parent? Kann mich da jemand auf die Spur bringen?
Der aktuelle Fall, der mich ins Grübeln bringt:
Ich habe ein TStringGrid um einige Methoden und Properties erweitert. Dazu gehört auch ein Kontextmenu. Im Constructor des Grid wird das Menu erzeugt:
Delphi-Quelltext
1: 2: 3: 4: 5:
| PopupMenu := TPopupMenu.Create ( Self ); PopupMenu.OnPopup := OnPopup ; PopupMenu.AutoPopup := true ; PopupMenu.Items.Create( PopupMenu ) ; for I := 0 to Men - 1 do PopupMenu.Items.Add( TMenuItem.Create( PopupMenu ) ); |
Wird das PopupMenu ausgeklammert, gibt es beim Beenden keinen Fehler, ist es jedoch aktiv, so kommt ein Zugriffsfehler.
Entweder habe ich hier etwas noch nicht richtig verstanden, oder jemand muss das Brett entfernen.
Grüße von der wolkigen Nordsee
Peter
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 02.10.2017 um 22:36