GetEnumName 枚举名称 字符串

 

System.TypInfo.pas
System.TypInfo.hpp
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TypInfo.GetEnumName
 http://docwiki.embarcadero.com/CodeExamples/Berlin/en/TypInfoGetEnumName_(C%2B%2B)
http://docwiki.embarcadero.com/CodeExamples/Berlin/en/TypInfoGetEnumName_(Delphi)
http://docwiki.embarcadero.com/CodeExamples/Berlin/en/RuntimeErrors_(Delphi)
 
两个枚举函数
GetEnumName
GetEnumNameValue
其他函数参考
GetTypeName
GetPropInfo
GetPropName
GetEnumProp
SetToString
 StringToSet
GetSetElementName
GetSetElementValue

获得枚举字符EnumName

String kindName;

kindName = System::Typinfo::GetEnumName(__delphirtti(TFieldType), curGrid->SelectedField->DataType);

 SubName = System::Typinfo::GetEnumName(__delphirtti(TOrdType),                Data->OrdType);

KindName := System.TypInfo.GetEnumName(System.TypeInfo(TTypeKind), Ord(Info^.Kind));
根据枚举字符串获得枚举值
字符串转为枚举值
    ft := TFieldType(GetEnumValue(TypeInfo(TFieldType),'ft'+SubJson.S[cstFieldType]));

 atype := TFieldType(GetEnumValue(TypeInfo(TFieldType),'ftInteger'));
枚举集合Anchors
Anchors: [akLeft,akTop]
tkSet:
          begin
            List.Add(Tmp + prop.Name + ' (' + string(prop.GetValue(Obj).TypeInfo.Name) + '): ' + prop.GetValue(Obj).ToString);
          end;

枚举集合得到全部
Anchors:
    akLeft
    akTop
    akRight
    akBottom


tkSet:
          begin
            List.Add(Tmp + prop.Name + ' (' + string(prop.GetValue(Obj).TypeInfo.Name) + '): ');
            GetSetInformation(prop.GetValue(Obj).TypeInfo, Tmp);
          end;
下面3个tkSet属性的参考
 http://stackoverflow.com/questions/38192934/know-selected-tkenumeration-from-a-tkset
https://github.com/synopse/mORMot/blob/master/SQLite3/Samples/ThirdPartyDemos/AntonE/ORMCDS/ORMCDS.pas
https://github.com/VSoftTechnologies/Delphi-Mocks/blob/master/Delphi.Mocks.Utils.pas

tkSet: result := TValue.FromOrdinal(rttiType.Handle,rttiType.AsOrdinal.MinValue);


GetSetProp / SetSetProp 函数
GetSetProp 函数用于获取集合类型属性的字符串值,它也是调用 GetOrdProp 获得属性值,然后调用 SetToString 函数把数值转换成字符串。
SetSetProp 函数用于通过字符串设置集合类型属性的值。它先调用 StringToSet 函数把字符串转换为整数值,然后使用 SetOrdProp 函数设置属性值
例如
Memo1.Lines.Add(GetSetProp(self, 'Anchors', True));
SetSetProp(self.Button8, 'Anchors', '[akLeft,akRight]');

http://stackoverflow.com/questions/38192934/know-selected-tkenumeration-from-a-tkset
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值