AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi wieso löst SetParent de OnResize Event des Parents aus?!?
Thema durchsuchen
Ansicht
Themen-Optionen

wieso löst SetParent de OnResize Event des Parents aus?!?

Ein Thema von hboy · begonnen am 26. Mai 2006 · letzter Beitrag vom 26. Mai 2006
Antwort Antwort
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#1

wieso löst SetParent de OnResize Event des Parents aus?!?

  Alt 26. Mai 2006, 20:09
Konkret:

Ich habe ein TPanel, dem zur Laufzeit ein TLabel hinzugefügt wird.
in TConrol.Setparent werden zwei Aufrufe getätigt...
Delphi-Quellcode:
  AParent.InsertControl(Self);
  UpdateAnchorRules;
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.

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
Power is nothing without TControl
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#2

Re: wieso löst SetParent de OnResize Event des Parents aus?!

  Alt 26. Mai 2006, 22:29
okay, habs jetzt umgangen:

anstelle

Delphi-Quellcode:
setlength(self.Entries,length(self.Entries)+1);
self.Entries[high(self.Entries)] := TExtendedStringValueEntry.Create(subpanel);
verwende ich

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.
Power is nothing without TControl
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.
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