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

Вниз

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

 
REA ©   (2003-09-24 21:34) [0]

Существуют различные компоненты, унаследовать которые от одного класса нет возможности (см. ниже). У них есть (или их нет; точнее есть только у некоторых) общие свойства (цвет, шрифт, выравнивание и т.п.). Необходимо узнать есть ли у компонента данное свойство и иметь возможность его поменять (Не используя case и прямые преобразования типов).
Как бы это лучше сделать? Использовать TypInfo или интерфейсы прикрутить?


 
Zergling ©   (2003-09-25 06:11) [1]

На мой взгляд RTTI

uses TypInfo;

Function HasProperty(AComponent: TObject; APropertyName: String): Boolean;
var PropInfo: PPropInfo;
Begin
PropInfo := GetPropInfo(AComponent.ClassInfo, APropertyName);
Result := PropInfo <> Nil;
End;

*****

var
PropInfo: PPropInfo;
begin
if not HasProperty(SelObj, ValueListProperty.Keys[ARow]) then EXIT;
PropInfo := GetPropInfo(SelObj, ValueListProperty.Keys[ARow]);
if PropInfo <> nil then
case PropInfo^.PropType^.Kind of
tkInteger: ... ;
tkEnumeration: ... ;
tkLString: ... ;
// и т.д.
end;
end;


 
REA ©   (2003-09-25 09:51) [2]

Ну я типа так и хотел. Ну маленько не так, но смысл тот же.
Сенкс.



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

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

Наверх




Память: 0.47 MB
Время: 0.029 c
8-18483
nevalex
2003-05-24 11:28
2003.10.06
Левый звук!!!!


14-18633
Knight
2003-09-17 10:46
2003.10.06
Как вы относитесь к попапам?


1-18305
dima_shapkin
2003-09-23 11:19
2003.10.06
Такой хитрый грид


4-18682
abc
2003-07-31 13:03
2003.10.06
как с помощью winAPI получить сетевое имя компа?


1-18310
DDS
2003-09-23 20:03
2003.10.06
Как запустить Dos-программу во внутреннем окне своей проги?