Properties, Methods, and Events in Delphi

Both the VCL and CLX form hierarchies of classes that are tied to the IDE, where you can develop applications quickly. The classes in both component libraries are based on properties, methods, and events.

Each class includes data members (properties), functions that operate on the data (methods), and a way to interact with users of the class (events). The component library is written in the Delphi language, although the VCL is based on the Windows API and CLX is based on the Qt widget library.

Properties are characteristics of an object that influence either the visible behavior or the operations of the object. For example, the Visible property determines whether an object can be seen in an application interface. Well-designed properties make your components easier for others to use and easier for you to maintain.

Here are some of the useful features of properties:

  • Unlike methods, which are only available at runtime, you can see and change some properties at design time and get immediate feedback as the components change in the IDE.
  • You can access some properties in the Object Inspector, where you can modify the values of your object visually. Setting properties at design time is easier than writing code and makes your code easier to maintain.
  • Because the data is encapsulated, it is protected and private to the actual object.
  • The calls to get and set the values of properties can be methods, so special processing can be done that is invisible to the user of the object. For example, data could reside in a table, but could appear as a normal data member to the programmer.
  • You can implement logic that triggers events or modifies other data during the access of a property. For example, changing the value of one property may require you to modify another. You can change the methods created for the property.
  • Properties can be virtual.
  • A property is not restricted to a single object. Changing one property on one object can affect several objects. For example, setting the Checked property on a radio button affects all of the radio buttons in the group.

A method is a procedure that is always associated with a class. Methods define the behavior of an object. Class methods can access all the public, protected, and privateproperties and fields of the class and are commonly referred to as member functions. Although most methods belong to an instance of a class, some methods belong instead to the class type. These are called class methods.

An event is an action or occurrence detected by a program. Most modern applications are said to be event-driven, because they are designed to respond to events. In a program, the programmer has no way of predicting the exact sequence of actions a user will perform.

For example, the user may choose a menu item, click a button, or mark some text. You can write code to handle the events in which you are interested, rather than writing code that always executes in the same restricted order.

Regardless of how an event is triggered, VCL objects look to see if you have written any code to handle that event. If you have, that code is executed; otherwise, the default event handling behavior takes place. The kinds of events that can occur can be divided into two main categories:

  • User events are actions that the user initiates. Examples of user events are OnClick (the user clicked the mouse), OnKeyPress (the user pressed a key on the keyboard), and OnDblClick (the user double-clicked a mouse button).
  • System events are events that the operating system fires for you. For example, the OnTimer event (which the Timer component issues whenever a predefined interval has elapsed), the OnPaint event (a component or window needs to be redrawn), and so on. Usually, system events are not directly initiated by a user action.
  • Internal events are events that are generated by the objects in your application. An example of an internal event is the OnPost event that a dataset generates when your application tells it to post the current record.