Delphi 2010新機能之:Rttiユニット(5):取得方法の詳細

1348 ワード

メソッドの詳細は、メソッドタイプ、戻り値、パラメータなどを指す.


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Memo1: TMemo;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



uses Rtti,TypInfo;



procedure TForm1.Button1Click(Sender: TObject);

var

  ms: TArray<TRttiMethod>;

  m: TRttiMethod;

  mps: TArray<TRttiParameter>;

  mp: TRttiParameter;

begin

  Memo1.Clear;



  { ,   TButton  }

  ms := TRttiContext.Create.GetType(TButton).GetMethods;

  for m in ms do

  begin

    { }

    Memo1.Lines.Add(' : ' + m.Name);



    { : proceedure、function  }

    Memo1.Lines.Add(' : ' + GetEnumName(TypeInfo(TMethodKind), Ord(m.MethodKind)));



    { }

    if Assigned(m.ReturnType) then

      Memo1.Lines.Add(' : ' + GetEnumName(TypeInfo(TTypeKind), Ord(m.ReturnType.TypeKind)));



    { }

    mps := m.GetParameters;

    if Length(mps) > 0 then

    begin

      Memo1.Lines.Add(' :');

      for mp in mps do Memo1.Lines.Add(mp.ToString);

      //  mp.ParamType  

      //  mp.Flags  (  var、const  )

    end;



    Memo1.Lines.Add(EmptyStr);

  end;

end;



end.