В приведенном ниже модуле у меня есть переменная, объявленная в разделе РЕАЛИЗАЦИЯ - локальная для модуля. У меня также есть процедура, объявленная в разделе TYPE, которая принимает аргумент и назначает этот аргумент соответствующей локальной переменной. Каждому экземпляру этого TFrame передается уникальная переменная через passMeTheVar
.
Я хочу, чтобы каждый экземпляр кадра сохранял свою собственную версию этой переменной, отличную от других, и использовал ее для определения того, как она работает. Однако, похоже, происходит то, что все экземпляры используют одно и то же значение, даже если я явно передаю каждому экземпляру другую переменную.
ie:
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
разделяют раздел реализации модуля.