unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,TypInfo;
type
TForm1 = class(TForm)
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
{$M+} //如果不用 {$M+} 则需要继承TPersistent
TTest = class(TObject)
public
FName,FSex,FScholl:string;
published
property Name :string read FName write FName;
property Sex :string read FSex write FSex;
property Scholl :string read FScholl write FScholl;
end;
{$M-}
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var
PropCount, I: SmallInt;
PropList: PPropList;
PropStr,sValues: string;
AClass:TTest;
AStrings:TStrings;
begin
AStrings:=TStrings.Create;
AClass:=TTest.Create;
AClass.Name:='MyTest';
AClass.Sex:='Male';
AClass.Scholl:='Scholl';
PropCount := GetTypeData(AClass.ClassInfo).PropCount;
GetPropList(AClass.ClassInfo, PropList);
for I := 0 to PropCount - 1 do
begin
case PropList[I]^.PropType^.Kind of
tkClass : PropStr := '[Class] ';
tkMethod : PropStr := '[Method]';
tkSet : PropStr := '[Set] ';
tkEnumeration: PropStr := '[Enum] ';
else
PropStr := '[Field] ';
end;
PropStr := PropStr + PropList[I]^.Name;
PropStr := PropStr + ': ' + PropList[I]^.PropType^.Name;
sValues:=GetPropValue(AClass,PropList[I].Name,True);
ShowMessage(sValues);
ShowMessage(PropStr);
end;
FreeMem(PropList);
end;
end.
Delphi 遍历类中的属性
最新推荐文章于 2024-08-20 08:50:26 发布