方法的更多信息是指: 方法類型、返回值、參數等.
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.