![]() |
wieso löst SetParent de OnResize Event des Parents aus?!?
Konkret:
Ich habe ein TPanel, dem zur Laufzeit ein TLabel hinzugefügt wird. in TConrol.Setparent werden zwei Aufrufe getätigt...
Delphi-Quellcode:
Das Problem ist bei mir, dass ich in Panel.OnResize wieder indirekt auf das Label zugreifen will, jedoch die das Label besitzende Klasse das Label-parent in seinem Konstruktor setzt und zu dieser Zeit noch nicht vollständig initialisiert wurde, was zu einem Fehler read of address 0x00000000 führt.
AParent.InsertControl(Self);
UpdateAnchorRules; Wenn mir da ein schlauer VCL-Bewanderter Kopf weiterhelfen könnte wär ich sehr dankbar... weil irgendwie verliert sich die Fehlerquelle in den Tiefen von TControl oder TWinControl. Sehenswert dazu sind:
Delphi-Quellcode:
procedure TControl.SetParent(AParent: TWinControl);
procedure TWinControl.InsertControl(AControl: TControl); procedure TControl.UpdateAnchorRules; Danke schonmal.... PS: glaub das is ne harte nuss... PPS: achja es wäre möglich, dass es mit den Anchor- oder Align-Eigenschaften des Panels oder Labels zu tun hat |
Re: wieso löst SetParent de OnResize Event des Parents aus?!
okay, habs jetzt umgangen:
anstelle
Delphi-Quellcode:
verwende ich
setlength(self.Entries,length(self.Entries)+1);
self.Entries[high(self.Entries)] := TExtendedStringValueEntry.Create(subpanel);
Delphi-Quellcode:
var new_entry: TExtendedStringValueEntry;
[...] new_entry := TExtendedStringValueEntry.Create(subpanel); setlength(self.Entries,length(self.Entries)+1); self.Entries[high(self.Entries)] := nu; so wird zuerst das Objekt vollständig erzeugt und dann in die Array eingefügt. Dadurch ist es nicht schon zur Initialisierungszeit in der Array. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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-2025 by Thomas Breitkreuz