В приведенном ниже блоке у меня есть переменная, объявленная в разделе РЕАЛИЗАЦИЯ - локальная для блока. У меня также есть процедура, объявленная в разделе 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".
Я делаю это неправильно, в принципе? Если это правильный метод, то это вопрос отладки того, что у меня есть (что слишком велико для публикации), но если это не правильно в принципе, то есть ли способ сделать то, что я предлагаю?
EDIT:
Хорошо, урок, полученный здесь, заключается в том, что определение класса это именно то. Многие классы могут идти в одном модуле, и все экземпляры всех классов в разделе Type
разделяют раздел реализации модуля.