Извините за плохой титул, я новичок в ООП, поэтому я не знаю, что означает то, что мне нужно сделать.
У меня есть, скажем, 10 различных объектов, которые наследуют один объект. У них разное количество и тип членов класса, но у всех них есть одно общее свойство - Visible.
type TSObject=class(TObject);
protected
Visible:boolean;
end;
type
TObj1=class(TSObject)
private
a:integer;
...(More members)
end;
TObj2=class(TSObject)
private
b:String;
...(More members)
end;
...(Other 8 objects)
Для каждого из них у меня есть переменная.
var Obj1:TObj1;
Obj2:TObj2;
Obj3:TObj3;
....(Other 7 objects)
Правило 1: Только один объект может быть инициализирован за один раз (другие должны быть освобождены), чтобы быть видимым.
Для этого правила у меня есть глобальная переменная
var CurrentVisibleObj:TSObject; //Because they all inherit TSObject
Наконец, существует процедура, которая меняет видимость.
procedure ChangeObjVisibility(newObj:TSObject);
begin
CurrentVisibleObj.Free; //Free the old object
CurrentVisibleObj:=newObj; //assign the new object
CurrentVisibleObj:= ??? //Create new object
CurrentVisibleObj.Visible:=true; //Set visibility to new object
end;
Есть моя проблема, я не знаю, как ее инициализировать, потому что производный класс неизвестен (TObj1, TObj2, Tobj3 ... Какой?).
Как мне это сделать?
Я упростил объяснение, в проекте есть TFrames, каждый из которых имеет разные элементы управления, и я должен установить видимый / не видимый одинаково (оставив только один инициализированный кадр).
Извините за заголовок, я очень новичок в ООП.