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

Вниз

Как из TCommandClass вытянуть реальный класс   Найти похожие ветки 

 
Igorek ©   (2002-06-08 23:38) [0]

Уважаемые мастаки, прошу помощи.

Значит так, есть:
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?

Может где ошибка в рассуждениях?


 
Anatoly Podgoretsky ©   (2002-06-09 00:35) [1]

Ошибка в рассуждении следующая, ты говоришь, что не знаешь,что это TButton и в тоже время создаешь переменную этого класса, наличо логическое противоречие.


 
Igorek ©   (2002-06-09 00:53) [2]

Как бы обьяснить...
Я создаю TButton, но для вызова конструктора использую ControlClass: TControlClass, где
TControlClass = class of TControl

А TButton - это наследник от TControl

Я не буду говорить, почему именно из переменной типа TControlClass я вызываю конструктор TButton, но по сути там вроде я достаточно обьяснил...


 
Igorek ©   (2002-06-09 02:42) [3]

Разобрался. Всем спасибо.


 
Anatoly Podgoretsky ©   (2002-06-09 09:51) [4]

TButton знает про TControl, а вот TControl про TButton ничего, вот тебе второе противоречие.


 
Igorek ©   (2002-06-09 11:23) [5]

2Anatoly Podgoretsky
Да, там все таки приводить TControl к TButton надо. Кроме того у меня еще в другом месте ошибка была.
Действительно, раз мы создаем TButton, а возвращается TControl, хотя реально создается TButton, то надо приводить. Ведь мы то знаем, что реально создается. Вообще-то оно может быть немного неясно без дополн. исходников.
Но еще раз спасибо.

Удачи.



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

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

Наверх




Память: 0.48 MB
Время: 0.007 c
3-64893
Yuri K.
2002-05-24 18:46
2002.06.20
Подключение к SQL серверу через ADO


1-65024
Exploited
2002-06-09 11:37
2002.06.20
Как одним махом определить выполнение нескольких функций?


14-65245
indigo
2002-05-18 17:43
2002.06.20
mp3


3-64971
Sirus
2002-05-27 07:29
2002.06.20
Сервер InterBase стал слишком долго обрабатывать SQL запросы...


1-65097
mihrutka
2002-06-06 13:44
2002.06.20
сохранить файл из word с параметрами...