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");
}
}
|
|
 |