有没有办法改变存储在变量中的TImage
的属性?
我有一个函数在Name
变量中写入TImage
的{{1}}属性,并在FigureSelectedName
变量中写入字段名称。
现在我的问题是:
FieldSelected
这在Delphi中出现错误(非法限定符)
FieldSelectedName.top
FieldSelectedName.left
答案 0 :(得分:0)
将系统从变量中的TImage
名称更改为变量中有TImage
指针就可以了。
FigureSelectedImage: TImage;
FieldSelectedImage: TImage;
然后使用变量和普通标识符可以正常工作。
FigureSelectedImage.Top := ...
答案 1 :(得分:-1)
System.Classes.TComponent.FindComponent可用于查找表格中知道其名称的组件。
检查找到的内容是否真的是TImage
使用TImage
属性和方法
procedure TForm1.Button1Click(Sender: TObject);
var
comp: TComponent;
img: TImage;
begin
comp := FindComponent('Image1');
if comp is TImage then begin
img := TImage(comp);
img.Left := 0;
img.Top := 0;
end;
end;
您的方法应该像这样编写,以使FindComponent
方法起作用。
function moveFigure(FigName:String; FieldName:String): Boolean;
var
x:Integer;
y:Integer;
comp: TComponent;
img: TImage;
begin
//Result := False;
if FigureSelected and FieldSelected then
begin
x := strtoint(FieldSelectedName[2]);
y := Ord(FieldSelectedName[1])-64;
comp := Form1.FindComponent(FieldSelectedName);
if comp is TImage then begin
img := TImage(comp);
img.Left := 80 + (y * 70);
img.Top := 80 + (x * 70);
//Result := True;
end;
end;
end;
但该方法存在许多问题:
方法主体FigName:String
和FieldName:String
从未在方法正文中使用
你确定你在图片名称中寻找的坐标只有一位数吗?
Ord(FieldSelectedName[1])
:Char
的序数看起来像Y轴的奇怪值
声明该方法返回Boolean
但未提供Result