Download Delphi BX Quick start manual
Transcript
Properties Properties are defined by their access specifiers. Unlike fields, properties cannot be passed as var parameters, nor can the @ operator be applied to a property. The reason is that a property doesn’t necessarily exist in memory. It could, for instance, have a read method that retrieves a value from a database or generates a random value. Property access Every property has a read specifier, a write specifier, or both. These are called access specifiers and they have the form read fieldOrMethod write fieldOrMethod where fieldOrMethod is the name of a field or method declared in the same class as the property or in an ancestor class. • If fieldOrMethod is declared in the same class, it must occur before the property declaration. If it is declared in an ancestor class, it must be visible from the descendant; that is, it cannot be a private field or method of an ancestor class declared in a different unit. • If fieldOrMethod is a field, it must be of the same type as the property. • If fieldOrMethod is a method, it cannot be dynamic and, if virtual, cannot be overloaded. Moreover, access methods for a published property must use the default register calling convention. • In a read specifier, if fieldOrMethod is a method, it must be a parameterless function whose result type is the same as the property’s type. (An exception is the access method for an indexed property or an array property. See “Index specifiers” on page 7-21 and “Array properties” on page 7-20.) • In a write specifier, if fieldOrMethod is a method, it must be a procedure that takes a single value or const parameter of the same type as the property (or more, if it is an array property or indexed property). For example, given the declaration property Color: TColor read GetColor write SetColor; the GetColor method must be declared as function GetColor: TColor; and the SetColor method must be declared as one of these: procedure SetColor(Value: TColor); procedure SetColor(const Value: TColor); (The name of SetColor‘s parameter, of course, doesn’t have to be Value.) 7-18 Delphi Language Guide