Hab' ich jetzt 'nen Denkfehler?
Zitat von
Wheelie:
unter anderem entscheidet er sich auch, ob das pendel einen automatischen massstab besitzen soll oder nicht (property AutoMassstab: Boolean read FAutoMassstab write SetAutoMassstab;). wenn er nun F9 drückt wird die klasse neu instanziert und delphi weist diesem neuen objekt die vom benutzer festgelegten eigenschaften nacheinander zu, und zwar genau so, wie sie im published-abschnitt vorkommen -> zuerst AutoMassstab, dann Pendellaenge etc. allerdings werden NUR die properties des published-abschnitts zugewiesen (logisch, denn nur die kann der anwender verändert haben).
Der Benutzer legt für jedes published Property fest, welchen Wert es haben soll. Das kann er nur im
OI machen. Jetzt sollen PixelInMeter und PixelLaenge nicht im
OI erscheinen, also kann sie der Anwender auch nicht mit einem bestimmten Wert vorbelegen. Dementsprechend ist es doch vollkommen egal, wann diese beiden Properties mit (ohnehin unsinnigen) Werten gefüllt werden, da sie ja nicht vom Anwender stammen, für dich also vollkommen belanglos sind. Anhand der Namen vermute ich, daß es mit dem Maßstab zusammenhängt, wie wäre es, im OnCreate bei gesetztem AutoMassstab eine passende Größe für die beiden Properties zu berechnen? Ist für mein Verständnis irgendwie egal... Allerdings weiß ich nicht, wie Properties zur Laufzeit gehandhabt werden, ob sie in OnCreate also schon mit sinnvollen Werten belegt sind und ob die entsprechenden
Access-Methods aufgerufen werden.
Ansonsten sehe ich aber kein Problem darin, die beiden Properties public zu deklarieren und beim Laden der Komponente anhand des Wertes von AutoMassstab zu berechnen, oder eben nicht.
Ansonsten solltest du auf das Gummibärchen hören, und dafür sorgen, daß es deine Komponente nicht interessiert, welches Property nun zuerst gesetzt wird, zum Bleistift durch On-Demand-Abfrage der Werte (sprich beim Zeichnen auf den Bildschirm, wenn sich nichts mehr ändert).