123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- program tw1331;
- {$mode objfpc}
- uses Classes, SysUtils, TypInfo, uw1331;
- type
- DummyEnum1 = (tr1,tr2);
- DummyEnum2 = tr1..tr2;
- DummyClass = class(TPersistent)
- private
- FMyDummyEnum1:DummyEnum1;
- FMyDummyEnum2:DummyEnum2;
- FMyDummyEnum3:DummyEnum3;
- FMyDummyEnum4:DummyEnum4;
- published
- property MyDummyEnum1:DummyEnum1 read FMyDummyEnum1 write FMyDummyEnum1;
- property MyDummyEnum2:DummyEnum2 read FMyDummyEnum2 write FMyDummyEnum2;
- property MyDummyEnum3:DummyEnum3 read FMyDummyEnum3 write FMyDummyEnum3;
- property MyDummyEnum4:DummyEnum4 read FMyDummyEnum4 write FMyDummyEnum4;
- end;
- var Dummy1:DummyClass;
- List:PPropList;
- Count,Index,I:integer;
- EnumType:PTypeInfo;
- begin
- // create a dummyclass instance
- Dummy1:=DummyClass.Create;
- // get property list
- Count:=GetTypeData(DummyClass.ClassInfo)^.Propcount;
- GetMem(List,Count * SizeOf(Pointer));
- GetPropInfos(DummyClass.ClassInfo,List);
- Index:=Count-1;
- while (Index>=0) do begin
- EnumType:=List^[Index]^.PropType;
- if EnumType^.Kind=tkEnumeration then begin
- // print all enumeration types
- writeln('PropertyName=',EnumType^.Name);
- with GetTypeData(EnumType)^ do
- // write all possible values for this type
- for I := MinValue to MaxValue do
- writeln(I,': ''',GetEnumName(EnumType, I),'''');
- end;
- dec(Index);
- end;
- FreeMem(List);
- Dummy1.Free;
- end.
|