RTTI é uma das técnicas mais interessantes que podemos usar com o Delphi. E isso não se limita a typecasts com "as" e "is".

Em algumas situações que já passei, precisei configurar uma propriedade de um objeto sem que pudesse conhecer o seu tipo. Existe uma rotina da unit TypInfo muito interessante, que permite configurar o valor de qualquer propriedade de qualquer objeto (que suporte RTTI, ou seja, TPersistent pra baixo ou com a diretiva $M ativada). Com isso, conseguimos ter uma menor dependência e acoplamento entre classes. Uma unit "util.pas", por exemplo, não precisaria depender de vários tipos de objetos, sendo mais reutilizável, nem fazer uso de classes mais ancestrais como TComponent, TControl ou mesmo TObject. Abaixo um exemplo, onde configuro o Width de um TEdit sem conhecer o seu tipo.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses TypInfo;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetPropValue(Edit1,'Width',400);
end;

end.

Guinther Pauli
guintherpauli.blogspot.com
twitter.com/guintherpauli
My Delphi Projects: http://cc.embarcadero.com/Author/222668