Tak k poslednímu článku, tématika: rozdělení BitView na design-time a run-time. Ptal jsem se na zahraničním foru a přišla mi odpověď, kterou sem chci zkopírovat. Zatím se nedá říct, že bych rozuměl každé větě. Budu nad tím ještě dumat a kouknu na tu ukázku kodu. Díky Jaro.
Následuje copy/paste citace:
Pro Boolean (AutoSize/Centre/Stretch/Active) již existuje standardní editor vlastností, který umí MultiSelection.
viz TCheckBox.Checked a mnoho dalšího.
Stejně tak pro celá čísla (Colours/BitmapHeigh/BitmapWidth).
Závěr: Pro zobrazené vlastnosti nebude potřeba žádný samostatný editor vlastností.Runtime balíček :* Vyžaduje:
* * RTL , VCL a co dalšího je nutné
* je součástí:
* * komponenta (váš BITVIEW.PAS)
design-time balíček *
Vyžaduje:
** runtime balíček (takže zde máte Přístup ke všemu v BITVIEW.PAS)
* přichází v:
* * komponenty designu a podobně
* * RegisterComponent
* * editor vlastností
Pokud aplikace není nikdy zkompilována s balíčky, tj. nikdy nepoužívá balíček , můžete také dát vše do jednoho balíčku zabalit do balení /package/ , protože pak by se stejně použilo jen PAS / DCU a designové věci by neskončily v EXE, ale stejně je lepší něco takového nedělat.
Pokud jde o příklad Borland/Embarcadero, myslel bych si, že již existuje hotový editor vlastností pro (Prohledat referenci)
Delphi TFileName ,
property FileName : TFileName čtení FFileName zápis FFileName;
ale TMediaPlayer.Filename má editor, ale TOpenDialog.Filename nemá. Existuje tedy editor, ale záleží nejen na typu, ale i na třídě
KONEC CITACE ODPOVĚDI
DALŠÍ ODPOVĚĎ OHLEDNĚ BITVIEW
Není zde žádná komponenta DesignTime a komponenta Runtime. Je to stejná komponenta.
Funkce DesignTime přistupují ke "správné" komponentě.
Vlastnosti nejsou znovu deklarovány v žádné jiné třídě.
TMixedComponent je součástí balíčku Runtime (MixedComponent)
a TMixedFileNameProperty je součástí balíčku DesignTime (MixedComponentReg).
... takže vše ve stejném balení / jednotce.
KONEC CITACE.
OTÁZKA: Jak to ale nadeklarovat?
private procedure SetActive (Value : boolean);
DALŠÍ ODPOVĚĎ:
Ani to není sdílené.
To vše je součástí komponenty. Tedy ne v balíčku DesignTime .
V PropertyEditoru se k vlastnosti/getter/setter/objekt/třída „normálně“ nepřistupuje přímo, ale využívá dané funkce pro přístup k vlastnosti. (např. SetStrValue/SetStrValueAt/GetStrValue/GetStrValueAt ... interně přes RTTI )
Alternativně PropertyEditor nabízí metodu, jak získat objekt a poté jej zadat sami přes RTTI nebo s přetypováním a pak můžete objekt také přímo pracovat.
KONEC CITACE/ODPOVĚDÍ.