Delphi XE----Rtti单元一(TRttiContext)

Posted redhat588

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi XE----Rtti单元一(TRttiContext)相关的知识,希望对你有一定的参考价值。

技术图片

 

 

通过 Rtti 单元的 TRttiContext(是个 record), 可以方便地获取类的方法、属性、字段的列表.

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

uses
  System.Rtti;

//TRttiContext.GetTypes
procedure TForm1.Button1Click(Sender: TObject);
var
  ctx: TRttiContext;
  t: TRttiType;
begin
  Memo1.Clear;
  for t in ctx.GetTypes do
    Memo1.Lines.Add(t.Name);
end;

//获取 TButton 类的方法
procedure TForm1.Button2Click(Sender: TObject);
var
  ctx: TRttiContext;
  t: TRttiType;
  m: TRttiMethod;
begin
  Memo1.Clear;
  t := ctx.GetType(TButton);
  //for m in t.GetMethods do Memo1.Lines.Add(m.Name);
  for m in t.GetMethods do
    Memo1.Lines.Add(m.ToString);
end;

//获取 TButton 类的属性
procedure TForm1.Button3Click(Sender: TObject);
var
  ctx: TRttiContext;
  t: TRttiType;
  p: TRttiProperty;
begin
  Memo1.Clear;
  t := ctx.GetType(TButton);
  //for p in t.GetProperties do Memo1.Lines.Add(p.Name);
  for p in t.GetProperties do
    Memo1.Lines.Add(p.ToString);

end;


//获取 TButton 类的字段
procedure TForm1.Button4Click(Sender: TObject);
var
  ctx: TRttiContext;
  t: TRttiType;
  f: TRttiField;
begin
  Memo1.Clear;
  t := ctx.GetType(TButton);
  //for f in t.GetFields do Memo1.Lines.Add(f.Name);
  for f in t.GetFields do
    Memo1.Lines.Add(f.ToString);
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  ctx: TRttiContext;
  t: TRttiType;
  ms: TArray<TRttiMethod>;
  ps: TArray<TRttiProperty>;
  fs: TArray<TRttiField>;
begin
  Memo1.Clear;
  t := ctx.GetType(TButton);

  ms := t.GetMethods;
  ps := t.GetProperties;
  fs := t.GetFields;

  Memo1.Lines.Add(Format(%s 类共有 %d 个方法, [t.Name, Length(ms)]));
  Memo1.Lines.Add(Format(%s 类共有 %d 个属性, [t.Name, Length(ps)]));
  Memo1.Lines.Add(Format(%s 类共有 %d 个字段, [t.Name, Length(fs)]));
end;

 

以上是关于Delphi XE----Rtti单元一(TRttiContext)的主要内容,如果未能解决你的问题,请参考以下文章

在Delphi的窗口单元中,如何调用其它窗口的单元。

怎样用DELPHI控制EXCEL中某一单元格的某一边框是不是显示

delphi dbgrid

Delphi中点击DBGrid中某一单元格时,后面出现个按钮可以点进去,出现一个新窗体,进行选择。

delphi怎样从一个界面跳转到另一界面

delphi6,能否在DBGrid组件中,对某一列的单元格,添加下拉菜单,实现多选功能