Текущий архив: 2004.05.16;
Скачать: CL | DM;
ВнизТип объекта неизвестен, а имя свойство точно известно Найти похожие ветки
← →
SerKom (2004-04-20 07:52) [0]Может быть кто-нибудь знает, как обратиться к св-ву объекта, не указывая тип объекта, у которого это свойство имеется?
Подробнее: большинство компонентов (Data Controls) имеют св-во DataField, но у них нет общего наследника с этим свойсвом, т.е., например, я точно знаю, что у меня на форме все контролы имеют св-во DataField, но они все разного типа, как обойти громоздкую констукцию перечисления всех возможных типов:
if Контрол is Тип1 then
s:=(Контрол as Тип1).DataField;
if Контрол is Тип2 then
s:=(Контрол as Тип2).DataField;
и т.д.
← →
sniknik © (2004-04-20 07:59) [1]приводи к тому типу наследником которого они все являются и где впервые описано нужное свойство.
(если оно описана в каждом на последнем уровне то так не пойдет)
← →
SerKom (2004-04-20 08:05) [2]
> sniknik © (20.04.04 07:59) [1]
>(если оно описана в каждом на последнем уровне то так не пойдет)
cв-во DataField как раз так и описано
← →
SerKom (2004-04-20 08:09) [3]Всем спасибо, тема закрыта.
uses TypInfo;
......................
const
strPropName = "DataField";
var
I: Integer;
S: String;
begin
S := "";
for I := 0 to ComponentCount - 1 do
begin
if IsPublishedProp(Components[I], strPropName) then
begin
if PropIsType(Components[I], strPropName, tkLString) then
begin
S := GetStrProp(Components[I], strPropName);
end;//if
end;//if
end;//for
end;
Страницы: 1 вся ветка
Текущий архив: 2004.05.16;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.035 c