![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выбор Published свойств, определенных в конкретном классе [D6]
Almaz © (2004-08-03 04:09:00)Уважаемые Господа,
Используя GetPropList, получаю список Published свойст класса, при этом мне необходимо выбрать только те свойства, которые были объявлены как Published в данном конкретном классе, а не в его предках. Возможно ли такое с учетом того, что понизить видимость свойства Delphi не позволяет ?
Almaz (2004-08-03 13:09:00) [1]
> Юрий Зотов © (03.08.04 08:46) [1]
> Polevi © (03.08.04 11:25) [2]
Большое спасибо, как все логично оказалось, даже стыдно стало :)))
Удачи.
Polevi (2004-08-03 11:25:00) [2]function Z(AClass: TPersistentClass; ANeedPropClass: TClass; var s: string): integer;
var
Props: PPropList;
TypeData: PTypeData;
i:integer;
begin
Result:=1;
if AClass=TPersistent then exit;
TypeData := GetTypeData(AClass.ClassInfo);
Result:=TypeData^.PropCount;
GetMem(Props, Result * sizeof(Pointer));
try
GetPropInfos(AClass.ClassInfo, Props);
for i := Z(TPersistentClass(AClass.ClassParent),ANeedPropClass,s) to Result-1 do
if AClass=ANeedPropClass then
s:=s+Format('%s::%s'#13#10,[AClass.ClassName,PPropInfo(Props^[I]).Name]);
finally
Freemem(Props);
end;
end;
Юрий Зотов (2004-08-03 08:46:00) [3]Сделать то же самое для ClassParent и из первого списка вычесть второй.