我怎样才能动态值,我的组件的属性变量德尔福组件属性动态值
在我的部分,我有一个名为ColorDefault领域,我希望能够在程序中动态设置它的值。
原始代码
var // global
_V_TB_DefaultColor: TColor
type
TMyClass = class
...
property ColorDefault: tcolor read _V_TB_DefaultColor write FDefaultColor;
//[dcc32 Error] MyButton.pas(85): E2168 Field or method identifier expected
...
end;
编辑:
我照下面所描述的汤姆但颜色没有改变根据全局变量,颜色停留当它遵守作为例如我的全球颜色是clyellow,我遵守我的组件,并将其放在窗体上,之后我将全局颜色变量更改为clwhite,当我运行该程序时,它仍然是clyellow
type
TTestClass = class(TPanel)
private
{ Private declarations }
protected
{ Protected declarations }
FColorDefault:tcolor;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetGlobalColorVariable:TColor;
published
{ Published declarations }
property DefaultColor:TColor read GetGlobalColorVariable write FColorDefault;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyComponents', [TTestClass]);
end;
constructor TTestClass.Create(AOwner: TComponent);
begin
ColorInitiate;
inherited;
color:=DefaultColor;
end;
destructor TTestClass.Destroy;
begin
inherited;
end;
function TTestClass.GetGlobalColorVariable: TColor;
begin
result:=_V_TB_DefaultColor;
end;
end.
没有多大意义在'FDefaultColor'字段中,如果你想从另一个变量 – MBo
中读取属性值,我看不到'ColorDefault'的任何属性声明,也没有'_V_TB_DefaultColor'的任何声明。请与您的标识符一致。这个问题与你最初提出的问题不同,并且变得一团糟。你读过关于房产的文档吗?如果你想改变一个属性,你必须为它分配一个新的值。 –
如果您希望'ColorDefault'属性发生变化,只需更改'_V_TB_DefaultColor',答案是否定的,否则不会发生,不存在这样的automagic。我在我的回答中添加了一段关于此的内容。 –