Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Свойство Caption у компонента.   Найти похожие ветки 

 
stone ©   (2002-12-11 16:20) [0]

Как узнать есть ли у компонента свойство Caption?

var
i : integer;
C : TComponent;
begin
for i := 0 to ComponentCount-1 do
begin
C := Components[i];
- как тут узнать, есть ли у данного TComponent свойство Caption
end;
end;


 
MBo ©   (2002-12-11 16:25) [1]

см. модуль typinfo.pas


 
stone ©   (2002-12-11 16:52) [2]

Спасибо, разобрался


 
BlackTiger   (2002-12-11 17:13) [3]

Я нашел код, который проверяет наличие какого либо свойства (проверял только для Caption) в библиотеке IniLang.
Если кому надо, то вот он

function HasProperty(comp:TComponent;prop:String):boolean;
begin
result:=(getPropInfo(comp.classInfo,prop)<>nil) and comp.name<>"");
end;

Используется так

if HasProperty(Button1, "Caption") then begin
// ...
end;


 
Юрий Зотов ©   (2002-12-11 18:54) [4]

> BlackTiger (11.12.02 17:13)

Загляните в исходники модуля TypInfo - еще не то найдете. И без всяких левых библиотек.

"Левых" - это потому, что в коде ошибка (не хватает скобки). А еще потому, что проверка Comp.Name здесь совершенно не нужна. И еще потому, что стандартная функция IsPublishedProp делает то же самое - причем, для любых объектов, а не только для компонентов.

Снова велосипеды на квадратных колесах... о, боже!


> stone

RTTI дает возможность проверить только published-свойства. В Вашем случае можно сделать более общую проверку, причем очень просто. Дело в том, что свойство Caption впервые появляется в классе TControl (только оно у него protected). Поэтому проверка элементарна:
if Components[i] is TControl then ... // свойство Caption есть

А для доступа к protected-свойству можно использовать приведение класса:

type
TFriendControl = class(TControl);
...
if Components[i] is TControl then
TFriendControl(Components[i]).Caption := "Vova";



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
3-74623
Nickb hmkgfkuuyhgkl
2002-12-04 04:36
2002.12.23
Как сделать, чтобы в DBgrid при скролинге НЕ перемешался курсор Б


4-75053
RETAND
2002-11-10 22:25
2002.12.23
Как в стандартное меню добавить градиент


14-74922
Мазут Береговой
2002-12-01 06:12
2002.12.23
Я очень disapointed! Очень disapointed!


1-74669
Jony
2002-12-13 10:46
2002.12.23
Исчезает надпись.


3-74553
MaXie
2002-12-04 11:58
2002.12.23
Список свойства TableName объекта ADOTable...