![]() |
Properties im Published-Abschnitt für den OI "unsichtba
Hi!
Habe im Published-Abschnitt meiner Pendelkomponente einige Properties. Zwei davon sollen im Objektinspektor nicht sichtbar sein. Unter "private" kann ich sie allerdings nicht deklarieren, da dann die Zuweisungsreihenfolge der unterschiedlichen Parameter beim Compilieren nicht mehr eingehalten wird.
Delphi-Quellcode:
published
{ Published-Deklarationen } property AutoMassstab: Boolean read FAutoMassstab write SetAutoMassstab; property Pendellaenge: Double read l write SetPendellaenge; property PixelInMeter: Double read FMassstab write SetMassstab; // Unsichtbar im OI property PixelLaenge: Integer read Laenge write SetPixelLaenge; // Unsichtbar im OI property Fallbeschleunigung: Double read g write SetFallbeschl; property Koerperradius: Byte read radius write SetRadius; property Amplitude: Byte read FAmplitude write SetAmplitude; property Startposition: TStartposition read FStartposition write SetStartposition; property Aktiv: Boolean read FAktiv write FAktiv; property Masse: Double read m write SetMasse; property Ansicht: TAnsicht read FAnsicht write SetAnsicht; |
Re: Properties im Published-Abschnitt für den OI "unsic
ich versteh dein problem ehrlich gesagt nicht, was meinst du mit :
Zitat:
|
Re: Properties im Published-Abschnitt für den OI "unsic
Zitat:
Es gibt auch den public Abschnitt. Diese sind öffentlich, werden aber nicht im OI angezeigt. |
Re: Properties im Published-Abschnitt für den OI "unsic
also das mit der "zuweisungsreihenfolge" ist echt nicht so einfach zu erklären. grundsätzlich legt der anwender meiner komponente zur entwurfszeit verschiedene eigenschaften fest. 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). properties im private-abschnitt werden erst gar nicht zugewiesen und selbst wenn, dann würde die von mir erwähnte zuweisungsreihenfolge nicht mehr stimmen, denn bevor der komponente die PixelLaenge übergeben wird, muss sie wissen, ob sie auch auf den AutoMassstab achten muss.
|
Re: Properties im Published-Abschnitt für den OI "unsic
Moin!
Ist doch auch ganz klar warum: Properties die in der DFM vermerkt werden und von Delphi gesetzt werden anhand der DFM Werte müssen published sein - alle anderen beachtet der OI eh nicht. Daher ist auch eine property im published Bereich die nicht öffentlich sein soll (also im OI) sinnlos, weil du sie eh nicht verändern kannst im OI und somit kommen die Veränderungen an diesen Properties (wie auch immer du diese zur Designzeit bewerkstelligen willst) auch nicht in die DFM... MfG Muetze1 |
Re: Properties im Published-Abschnitt für den OI "unsic
@Muetze: Ich muss dich leider enttäuschen, du kannst dich nicht darauf verlassen das die Properties dann in alphabeticher Reihenfolge gesetzt werden, du solltest deine Komponenten so schreiben das es egal ist welches Property zuerst gesetzt wird.
|
Re: Properties im Published-Abschnitt für den OI "unsic
Hallo überschreibe doch einfach folgende Procedure von TComponent:
Delphi-Quellcode:
überschreiben:
procedure Loaded; virtual;
Delphi-Quellcode:
damit kannst du die abhängigkeiten lösen !TYourComp = class(TComponent) protected procedure Loaded; override; end; |
Re: Properties im Published-Abschnitt für den OI "unsic
Zitat:
|
Re: Properties im Published-Abschnitt für den OI "unsic
hmm... wenn man ein Ereignis OnCreate hat geht das vielleicht auch ansonsten wenns nur ne TComponent ist sollte man loaded nehmen,
ist vor allem mit OldCreateOrder usw. sicherer da Loaded vom Streaming system gerufen wird ... |
Re: Properties im Published-Abschnitt für den OI "unsic
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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