Er zijn vast legio andere mensen die dit gevraagd hebben, maar een werkende oplossing heb ik nog niet gevonden. Vandaar deze post. Stel, ik heb een component met een string property. Deze property wil ik by default de waarde "aap" geven. Dat kan natuurlijk zo:
En dan nog FProp in de constructor op "aap" zetten natuurlijk.
Dit werkt op zich erg goed. Want als je nu "aap" in de object inspector voor deze property invoert, is ie niet meer vet, en wordt ie ook niet meer onterecht in de DFM opgeslagen. Hence, default
Het probleem is nu dat een lege string ook niet opgeslagen wordt, waardoor ie weer op "aap" wordt gezet bij het inladen van het form.
Moet ik dit nu met DefineProperties op gaan lossen, of is er een standaard manier voor?
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| type TMyComponent = class(TComponent) private FProp: string; function IsDefault: Boolean; published property Prop: string read FProp write FProp stored IsDefault; end; implementation function TMyComponent.IsDefault: Boolean; begin Result := FProp <> 'aap'; end; |
En dan nog FProp in de constructor op "aap" zetten natuurlijk.
Dit werkt op zich erg goed. Want als je nu "aap" in de object inspector voor deze property invoert, is ie niet meer vet, en wordt ie ook niet meer onterecht in de DFM opgeslagen. Hence, default
Het probleem is nu dat een lege string ook niet opgeslagen wordt, waardoor ie weer op "aap" wordt gezet bij het inladen van het form.
Moet ik dit nu met DefineProperties op gaan lossen, of is er een standaard manier voor?
日本!🎌