【发布时间】:2011-02-18 19:26:45
【问题描述】:
在下面的单元中,我在 IMPLEMENTATION 部分声明了一个变量 - 单元的本地变量。我还有一个过程,在 TYPE 部分中声明,它接受一个参数并将该参数分配给相关的局部变量。此 TFrame 的每个实例都通过 passMeTheVar 传递一个唯一变量。
我希望它为框架的每个实例保留自己的变量版本,与其他变量不同,并使用它来定义它的操作方式。然而,似乎正在发生的是所有实例都使用相同的值,即使我明确地为每个实例传递了不同的变量。
即:
Unit FlexibleUnit;
interface
uses
//the uses stuff
type
TFlexibleUnit=class(TFrame)
//declarations including
procedure makeThisInstanceX(passMeTheVar:integer);
private
//
public
//
end;
implementation
uses //the uses
var myLocalVar;
procedure makeThisInstanceX(passMeTheVar:integer);
begin
myLocalVar:=passMeTheVar;
end;
//other procedures using myLocalVar
//etc to the
end;
现在在另一个窗体中的某个地方,我已将此框架拖放到设计窗格中,有时在一个窗体上放置两个框架,并在适当的位置声明它,等等。每个都是独一无二的:
ThisFlexibleUnit : TFlexibleUnit;
ThatFlexibleUnit : TFlexibleUnit;
当我这样做时:
ThisFlexibleUnit.makeThisInstanceX(var1); //want to behave in way "var1"
ThatFlexibleUnit.makeThisInstanceX(var2); //want to behave in way "var2"
似乎它们都共享同一个变量“myLocalVar”。
原则上我做错了吗?如果这是正确的方法,那么就是调试我所拥有的东西(太大而无法发布),但如果这在原则上不正确,那么有没有办法按照我的建议去做?
编辑:
好的,所以这里学到的教训是类定义就是这样。许多类可以放在一个单元中,Type 部分中所有类的所有实例共享该单元的实现部分。
【问题讨论】:
标签: delphi variables local instances delphi-units