Delphi 如何将字符串转换为TPenStyle?

Delphi 如何将字符串转换为TPenStyle?,delphi,Delphi,我在这里看到了一些非常相似的线程,但我找不到解决问题的方法。 我从TStringList中获取值,并将其用作钢笔样式(psDot,psSolid等等),但编译失败,类型不兼容:“TPenStyle”和“String”错误消息 代码如下: Image1.Canvas.Pen.Style := myList.ValueFromIndex[j]; 如何将myList.ValueFromIndex[j]转换为TPenStyle?如果存储为psDot,则psSolid必须进行调整 uses TypInf

我在这里看到了一些非常相似的线程,但我找不到解决问题的方法。 我从
TStringList
中获取值,并将其用作钢笔样式(
psDot
psSolid
等等),但编译失败,类型不兼容:“TPenStyle”和“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]));
正如David Heffernan所建议的

Function PenStyleFromName(const Name: string):TPenStyle;
begin
  Result := TPenStyle(GetEnumValue(TypeInfo(TPenStyle),Name));
end;

//....
Image1.Canvas.Pen.Style := PenStyleFromName(myList.ValueFromIndex[j]);

如果存储为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]);

这些绳子看起来怎么样?你有
“psDot”
等等吗?如果是这种情况,您可以从
TypInfo
单元中使用
GetEnumValue
。将其放在mylist中的代码在哪里?Style=psSolid Rectangle=201319485209 Style=psDash Rectangle=13,15181,78 Rectangle=206,12403,75 Rectangle=446,9639,74 Rectangle=28,95247190类似的内容在myList@Borlv:不需要更改标题问题解决了。这是由一个可接受答案的存在所暗示的。字符串看起来如何?你有
“psDot”
等等吗?如果是这种情况,您可以从
TypInfo
单元中使用
GetEnumValue
。将其放在mylist中的代码在哪里?Style=psSolid Rectangle=201319485209 Style=psDash Rectangle=13,15181,78 Rectangle=206,12403,75 Rectangle=446,9639,74 Rectangle=28,95247190类似的内容在myList@Borlv:不需要更改标题问题解决了。这意味着存在一个可接受的答案。+1但是如果你把它作为一个函数写出来,答案会更好。你不会想在真正的代码中这样写的。太多的担忧交织在一起。我会编写
函数PenStyleFromName(const Name:string):TPenStyle
并将该实现放在+1中,但如果将其作为函数编写,答案会更好。你不会想在真正的代码中这样写的。太多的担忧交织在一起。我将编写
函数PenStyleFromName(const Name:string):TPenStyle
,并将该实现放入其中。