Using RTTI in Delphi

Other topics

Remarks:

RTTI IN DELPHI - EXPLAINED

The Run-Time Type Information In Delphi - Can It Do Anything For You? article by Brian Long provides a great introduction to the RTTI capabilities of Delphi. Brian explains that the RTTI support in Delphi has been added first and foremost to allow the design-time environment to do its job, but that developers can also take advantage of it to achieve certain code simplifications. This article also provides a great overview of the RTTI classes along with a few examples.

Examples include: Reading and writing arbitrary properties, common properties with no common ancestor, copying properties from one component to another, etc.

Basic Class Information

This example shows how to obtain the ancestry of a component using the ClassType and ClassParent properties. It uses a button Button1: TButton and a list box ListBox1: TListBox on a form TForm1.

When the user clicks the button, the name of the button’s class and the names of its parent classes are added to the list box.

procedure TForm1.Button1Click(Sender: TObject) ;
var
  ClassRef: TClass;
begin
   ListBox1.Clear;
   ClassRef := Sender.ClassType;
   while ClassRef <> nil do
   begin
     ListBox1.Items.Add(ClassRef.ClassName) ;
     ClassRef := ClassRef.ClassParent;
   end;
end;

The list box contains the following strings after the user clicks the button:

  • TButton
  • TButtonControl
  • TWinControl
  • TControl
  • TComponent
  • TPersistent
  • TObject

Contributors

Topic Id: 9578

Example Ids: 29592

This site is not affiliated with any of the contributors.