DELPHI 更改 属性 存储在变量中的对象
DELPHI Change Property of Object stored in Variable
有没有办法改变存储在变量中的 TImage
的 属性?
我有一个函数,它在 FigureSelectedName
变量中写入 TImage
的 Name
属性,并将字段名称写入 FieldSelected
变量。
现在我的问题是:
FieldSelectedName.top
FieldSelectedName.left
这在 Delphi 中给出了错误(非法限定符)
function moveFigure(FigName:String; FieldName:String):boolean;
var
x:Integer;
y:Integer;
begin
if (FigureSelected=true) and (FieldSelected=true) then
begin
x := strtoint(FieldSelectedName[2]);
y := Ord(FieldSelectedName[1])-64;
FigureSelectedName.top := 80 + (x * 70);
FigureSelectedName.left := 80 + (y * 70);
end;
end;
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
提供值
将系统从在变量中使用 TImage
名称更改为在变量中使用 TImage
指针就成功了。
FigureSelectedImage: TImage;
FieldSelectedImage: TImage;
然后使用变量和普通标识符工作正常。
FigureSelectedImage.Top := ...
有没有办法改变存储在变量中的 TImage
的 属性?
我有一个函数,它在 FigureSelectedName
变量中写入 TImage
的 Name
属性,并将字段名称写入 FieldSelected
变量。
现在我的问题是:
FieldSelectedName.top
FieldSelectedName.left
这在 Delphi 中给出了错误(非法限定符)
function moveFigure(FigName:String; FieldName:String):boolean;
var
x:Integer;
y:Integer;
begin
if (FigureSelected=true) and (FieldSelected=true) then
begin
x := strtoint(FieldSelectedName[2]);
y := Ord(FieldSelectedName[1])-64;
FigureSelectedName.top := 80 + (x * 70);
FigureSelectedName.left := 80 + (y * 70);
end;
end;
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
提供值
将系统从在变量中使用 TImage
名称更改为在变量中使用 TImage
指针就成功了。
FigureSelectedImage: TImage;
FieldSelectedImage: TImage;
然后使用变量和普通标识符工作正常。
FigureSelectedImage.Top := ...