Delphi - prístup k "hlavnej" vlastnosti objektu priamo
Ako urobiť, aby som mal prístupnú položku v objekte tak, ako keby tá položka bola premenná?
a = object
Items: array[0..15, 0..15] of Byte;
Vlastnost: Integer;
end;
A teraz chcem použiť takýto prístup:
a[2, 3] := 5;
a.Vlastnost := 456;
Mám na mysli niečo táketo:
TStringList.Lines[5]
TStringList.Lines.Add
Použij atribut DEFAULT u vlastnosti. (pozor, má dva významy, nutno použít ve tvaru: PROPERTY Vlastnost .... read ... write ... ; DEFAULT;)
A ako má vyzerať deklarácia štandardnej metódy read a write pre takýto prípad?
Rozumiem síce prečo je tam to read a write (ja to tam aj budem potrebovať, lebo pri zápise sa bude vykreslovať na Canvas), ale neviem ako má vyzerať deklarácia.
Slova read a write (jsou to jen syntaktické konstrukce, ne metody ale metody mohou zavolat) jsou úplně stejné, jako pro normální vlastnost (nebo můžou i chybět pro vlastnost "jen ke čtení" nebo "Jen k zápisu"). Direktiva DEFAULT jen říká kompilátoru, že volání je možno zkrátit zápis při použití vlastnosti a kompilátor to přeloží, jako kdyby se to volalo celé. Označuje defaultní (implicitní) vlastnost, ke které se přistupuje jen jménem objektu.
Příklad (jak si to asi představuješ - asi chceš vidět i jak se vlastnosti indexují ):
K vlastnosti pak můžeš přistupovat dvojím způsobem (díky frázi DEFAULT):
BTW tak jak jsi to uvedl ty, to nejsou vlastnosti (musí být uvedeny slovem PROPERTY) ale členy.
Ďakujem. Ale ešte poznámka: Ale veď tam je uvedené slovo property:
V mém příkladu ano, to je vlastnost. Ale ne jak jsi uvedl nahoře, to je jen člen :
Aha, rozumiem.
Property je vlastnost v Object Inspectore... cize to, co mozes nastavit...
Ó, ne tak docela... V object inspektoru můžeš nastavit pouze PROPERTY ze sekce PUBLISHED.