DELPHI更改存储在Variable中的Object的属性

时间:2015-12-03 20:28:16

标签: delphi variables properties timage

有没有办法改变存储在变量中的TImage的属性?

我有一个函数在Name变量中写入TImage的{​​{1}}属性,并在FigureSelectedName变量中写入字段名称。

现在我的问题是:

FieldSelected

这在Delphi中出现错误(非法限定符

FieldSelectedName.top
FieldSelectedName.left

2 个答案:

答案 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:StringFieldName:String从未在方法正文中使用

  • 你确定你在图片名称中寻找的坐标只有一位数吗?

  • Ord(FieldSelectedName[1])Char的序数看起来像Y轴的奇怪值

  • 声明该方法返回Boolean但未提供Result

  • 的值