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