C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TCustomEdit
joynter
Отправлено: 02.12.2004, 17:29


Станционный диспетчер

Группа: Участник
Сообщений: 137



как определить, является ли компонент наследником класса TCustomEdit?
Gedeon
Отправлено: 02.12.2004, 17:49


Ветеран

Группа: Модератор
Сообщений: 1742



У всех наследников TObject есть такой метод ClassParent(TClass cls) вот от него и пляшите.
AVC
Отправлено: 02.12.2004, 18:17


Ветеран

Группа: Модератор
Сообщений: 1583



Делал так
CODE

bool __fastcall AxIsClassNameIs (TObject* obj, const AnsiString& pname)
{
AnsiString name = pname.Trim().UpperCase();
if (!obj || name.IsEmpty()) return false;

AnsiString str = AnsiString(obj->ClassName()).UpperCase();
if (str == name) return true;

for (TClass cls = TClass(obj->ClassParent()); cls; cls = cls->ClassParent())
if (AnsiString(cls->ClassName()).UpperCase() == name) return true;

return false;
}
Георгий
Отправлено: 02.12.2004, 21:30


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



а dynamic_cast использовать нельзя?
AVC
Отправлено: 03.12.2004, 09:07


Ветеран

Группа: Модератор
Сообщений: 1583



Ага. Погорячился! biggrin.gif (понял по пути домой sad.gif )
Скорее всего его должен устроить dynamic_cast smile.gif
joynter
Отправлено: 03.12.2004, 11:00


Станционный диспетчер

Группа: Участник
Сообщений: 137



если я вас правильно понял:
CODE

char cn[256];
GetClassName(hDestWnd,cn,sizeof(cn));
if(dynamic_cast<TCustomEdit>(TClass(cn))) return true;
else return false;

но всплыват ошибка : Cannot cast from 'TMetaClass *' to 'TCustomEdit'.
поправьте меня пожалуста
AVC
Отправлено: 03.12.2004, 11:19


Ветеран

Группа: Модератор
Сообщений: 1583



CODE

//TCustomEdit *ce = dynamic_cast<TCustomEdit*>(Pointer_to_Object);
if (dynamic_cast<TCustomEdit*>(Pointer_to_Object)) Ok
else  не наследник
joynter
Отправлено: 03.12.2004, 12:15


Станционный диспетчер

Группа: Участник
Сообщений: 137



зная дескриптор объекта как получить указатель на объект?

Вернуться в Вопросы программирования в C++Builder