![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из TCommandClass вытянуть реальный класс [D6, Win95/98]
Igorek © (2002-06-08 23:38:00)Уважаемые мастаки, прошу помощи.
Значит так, есть:
TControlClass = class of TControl (из VCL)
var ControlClass: TControlClass
потом напр. ControlClass := TButton
потом где-то есть
var Button1: TButton
надо Button1 создать по ControlClass
т.е. Button1 := ControlClass.Create(Self)
но ControlClass - это class of TControl
так что компилятор ругается Incompatible Types - TButton и TControl
конструктор то виртуальный, вызваться должен какой надо, и возвратить что надо, но компилятор ругаеться
Можно напр. преобразовать:
Button1 := TButton(ControlClass.Create(Self)), но мы же не знаем, что это именно TButton?
Может где ошибка в рассуждениях?
Igorek (2002-06-09 11:23:00) [1]2Anatoly Podgoretsky
Да, там все таки приводить TControl к TButton надо. Кроме того у меня еще в другом месте ошибка была.
Действительно, раз мы создаем TButton, а возвращается TControl, хотя реально создается TButton, то надо приводить. Ведь мы то знаем, что реально создается. Вообще-то оно может быть немного неясно без дополн. исходников.
Но еще раз спасибо.
Удачи.
Anatoly Podgoretsky (2002-06-09 09:51:00) [2]TButton знает про TControl, а вот TControl про TButton ничего, вот тебе второе противоречие.
Igorek (2002-06-09 02:42:00) [3]Разобрался. Всем спасибо.
Igorek (2002-06-09 00:53:00) [4]Как бы обьяснить...
Я создаю TButton, но для вызова конструктора использую ControlClass: TControlClass, где
TControlClass = class of TControl
А TButton - это наследник от TControl
Я не буду говорить, почему именно из переменной типа TControlClass я вызываю конструктор TButton, но по сути там вроде я достаточно обьяснил...
Anatoly Podgoretsky (2002-06-09 00:35:00) [5]Ошибка в рассуждении следующая, ты говоришь, что не знаешь,что это TButton и в тоже время создаешь переменную этого класса, наличо логическое противоречие.