1

我在这里看到了一些非常相似的线程,但我找不到解决问题的方法。我从中获取值TStringList并将其用作笔样式(psDotpsSolid),但编译失败并Incompatible types: 'TPenStyle' and 'String'显示错误消息。

这是代码:

Image1.Canvas.Pen.Style := myList.ValueFromIndex[j];

我怎样才能转换myList.ValueFromIndex[j]TPenStyle

4

1 回答 1

8

如果存储为 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]);
于 2012-11-22T18:17:16.163 回答