Mr.Dan |
Отправлено: 15.02.2004, 13:55 |
|
Не зарегистрирован
|
Есть код:
CODE |
for(int i=0; i < Main->ComponentCount; i++)
if(Main->Components[i]->ClassNameIs("TEdit") ||
Main->Components[i]->ClassNameIs("TComboBox") ||
Main->Components[i]->ClassNameIs("TDateTimePicker"))
{((TWinControl*)Main->Components[i])->BevelInner = bvRaised;
((TWinControl*)Main->Components[i])->BevelKind = bkSoft;
((TWinControl*)Main->Components[i])->BevelOuter = bvLowered;
}
|
Дык вот компилятор ругается:
QUOTE |
[C++ Error] MainCode.cpp(105): E2247 'TWinControl::BevelInner' is not accessible
|
Вопрос: Как все-таки можно изменить свойство производного класса, через базовый? |
|
Pirs |
Отправлено: 15.02.2004, 17:06 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
А ты открой Help найди класс TWinControl и посмотри в Hierarchy есть ли у него вообще такое свойство |
|
** pasha |
Отправлено: 15.02.2004, 17:55 |
|
Не зарегистрирован
|
TWinControl — абстрактный базовый класс всех оконных компонентов.
Свойство то эти у TWinControl есть, но оно только для чтения
и переопределяются в производных от него классах.
|
|
Asher |
Отправлено: 16.02.2004, 10:41 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Сделай "прокладочный" класс — наследника от TWinControl где опубликуешь необходимое тебе свойство.
Что-то вроде CODE |
class TMyPublicWinControl :public TWinControl
{
public:
__property TBevelCut BevelInner = {read=FBevelInner, write=SetBevelCut, index=0, default=2};
void __fastcall SetBevelCut(int index, const TBevelCut value){;};//
};
((TMyPublicTWinControl *)Main->Components[i])->BevelInner = bvRaised;
|
Отредактировано Asher — 16/02/2004, 12:44
|
|
xTrim |
Отправлено: 16.02.2004, 12:02 |
|
Машинист паровоза
Группа: Участник
Сообщений: 208
|
А если неного пошаманить то можно
CODE |
#include <typinfo.hpp>
for(int i=0; i < Main->ComponentCount; i++)
{
TComponent* comp = Main->Components[i];
if(comp->ClassNameIs("TEdit") ||
comp->ClassNameIs("TComboBox") ||
comp->ClassNameIs("TDateTimePicker"))
{
if (IsPublishedProp(comp, "BevelInner"))
SetEnumProp(comp, "BevelInner", "bvRaised");
if (IsPublishedProp(comp, "BevelKind"))
SetEnumProp(comp, "BevelKind", "bkSoft");
if (IsPublishedProp(comp, "BevelOuter"))
SetEnumProp(comp, "BevelOuter", "bvLowered");
}
}
|
|
|