Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Properties im Published-Abschnitt für den OI "unsichtbar" (https://www.delphipraxis.net/35471-properties-im-published-abschnitt-fuer-den-oi-unsichtbar.html)

Wheelie 7. Dez 2004 18:19


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;

Pseudemys Nelsoni 7. Dez 2004 18:24

Re: Properties im Published-Abschnitt für den OI "unsic
 
ich versteh dein problem ehrlich gesagt nicht, was meinst du mit :

Zitat:

Unter "private" kann ich sie allerdings nicht deklarieren, da dann die Zuweisungsreihenfolge der unterschiedlichen Parameter beim Compilieren nicht mehr eingehalten wird.
welche zuweisungsreihenfolge?

jim_raynor 7. Dez 2004 18:25

Re: Properties im Published-Abschnitt für den OI "unsic
 
Zitat:

Zitat von Wheelie
Unter "private" kann ich sie allerdings nicht deklarieren, da dann die Zuweisungsreihenfolge der unterschiedlichen Parameter beim Compilieren nicht mehr eingehalten wird.

:wiejetzt: das verstehe ich irgendwie nicht.

Es gibt auch den public Abschnitt. Diese sind öffentlich, werden aber nicht im OI angezeigt.

Wheelie 7. Dez 2004 19:59

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.

Muetze1 7. Dez 2004 20:06

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

SirThornberry 7. Dez 2004 20:29

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.

iCode4You 7. Dez 2004 20:39

Re: Properties im Published-Abschnitt für den OI "unsic
 
Hallo überschreibe doch einfach folgende Procedure von TComponent:

Delphi-Quellcode:
    procedure Loaded; virtual;
überschreiben:

Delphi-Quellcode:
 
TYourComp = class(TComponent)
protected
  procedure Loaded; override;
end;
damit kannst du die abhängigkeiten lösen !

Pseudemys Nelsoni 7. Dez 2004 20:41

Re: Properties im Published-Abschnitt für den OI "unsic
 
Zitat:

properties im private-abschnitt werden erst gar nicht zugewiesen
kannst doch im OnCreate deiner Kompo machen, oder?

iCode4You 7. Dez 2004 21:09

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 ...

SirThornberry 7. Dez 2004 21:29

Re: Properties im Published-Abschnitt für den OI "unsic
 
Zitat:

Zitat von iCode4You
hmm... wenn man ein Ereignis OnCreate hat geht das vielleicht

Wer redet von OnCreate? Man kann doch auch einfach den Constructor überschreiben, so ist es zumindest üblich und sowas gehört ja auch in den Constructor.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Seite 1 von 2  1 2      

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