System.TypInfo.SetPropValue

From Appmethod Libraries
Jump to: navigation, search

Object Pascal

procedure SetPropValue(Instance: TObject; const PropName: string; const Value: Variant);
procedure SetPropValue(Instance: TObject; PropInfo: PPropInfo; const Value: Variant);

C++

extern DELPHI_PACKAGE void __fastcall SetPropValue(System::TObject* Instance, const System::UnicodeString PropName, const System::Variant &Value)/* overload */;

Properties

Type Visibility Source Unit Parent
procedure
function
public
System.TypInfo.pas
System.TypInfo.hpp
System.TypInfo System.TypInfo

Description

Sets the value of a component property using a variant value.

SetPropValue utilises Object Pascal's RTTI (Run Time Type Information) to set the value of a component's property using a variant value.

In one form of this function, the object Instance's property is defined by a PropInfo record. GetPropInfo and GetPropList can be used to obtain such a record.

In the other form of this function, the name of the property, PropName, is explicitly given.

In both forms of the function, the new property value is defined by Value.

Typically, the Value parameter is the return value of GetPropValue. If you use any other variant value, you have to check both the Variant data and the property type.

Typically, the Variant type cannot keep the types TObject, set, method pointer, and class. But GetPropValue and SetPropValue can handle these types. In these cases, SetPropValue can change the properties of the types TObject, set, method pointer, and class.

If the Value parameter is not the return value of GetPropValue and the property type is TObject, set, method pointer, or class, the result is not defined.

The intrinsic value of this function is to allow the setting of component properties without the need to hard code the property name. This allows mass visual component processing at run time.

Notes:

  • If the specified property does not exist or is not a published property, an EPropertyError exception is raised.
  • To set a Variant type property, you have to use SetVariantProp.

See Also