我在这里看到了一些非常相似的线程,但我找不到解决问题的方法。
我从TStringList
获取值并将其用作笔样式(psDot
,psSolid
等等),但编译失败并显示Incompatible types: 'TPenStyle' and 'String'
错误消息。
以下是代码:
Image1.Canvas.Pen.Style := myList.ValueFromIndex[j];
如何将myList.ValueFromIndex[j]
转换为TPenStyle
?
答案 0 :(得分:8)
如果存储为psDot,则psSolid否则你必须适应
uses TypInfo;
Image1.Canvas.Pen.Style := TPenStyle(GetEnumValue(TypeInfo(TPenStyle),myList.ValueFromIndex[j]));
David Heffernan建议
Function PenStyleFromName(const Name: string):TPenStyle;
begin
Result := TPenStyle(GetEnumValue(TypeInfo(TPenStyle),Name));
end;
//....
Image1.Canvas.Pen.Style := PenStyleFromName(myList.ValueFromIndex[j]);