我想在过程中编辑形状的属性。 但是,如果我创建自己的程序,我会收到“未完成的标识符”错误。
我尝试在我的表单的OnCreate事件过程中编辑属性,这样就可以了。
为什么会这样,我该如何解决?
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
type
Tfrm_main = class(TForm)
shp_wheelLeftInside: TShape;
shp_wheelRightInside: TShape;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_main: Tfrm_main;
implementation
{$R *.dfm}
procedure addWheelInsides();
begin
shp_wheelRightInside.Height := 42; //this is where the error occurs
end;
procedure Tfrm_main.FormCreate(Sender: TObject);
begin
shp_wheelLeftInside.Height := 42;
shp_wheelRightInside.Height := 42;
addWheelInsides();
end;
end.
答案 0 :(得分:4)
问题在于shp_wheelRightInside
是属于您的Tfrm_main
类的字段,而addWheelInsides()
方法是您声明为裸露的普通方法,不属于任何内容。因此,该方法无权访问属于表单的字段。
一种解决方案是将打算对表单所拥有的对象进行操作的方法移动到表单本身。
Tfrm_main = class(TForm)
shp_wheelLeftInside: TShape;
shp_wheelRightInside: TShape;
procedure FormCreate(Sender: TObject);
private
procedure addWheelInsides(); {declare it here}
public
{ Public declarations }
end;
然后,您将其作为表单类的方法实现为:
procedure Tfrm_main.addWheelInsides();
begin
shp_wheelRightInside.Height := 42;
end;
答案 1 :(得分:2)
您的程序中看不到shp_wheelRightInside
字段。
将表单中的过程addWheelInsides()
声明为方法,而不是解析shp_wheelRightInside
范围。
type
Tfrm_main = class(TForm)
shp_wheelLeftInside: TShape;
shp_wheelRightInside: TShape;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure addWheelInsides;
public
{ Public declarations }
end;
如果要将过程扩展到多个单位,请将TShape
作为参数传递。