Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];

Вниз

Как из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
3-64917
Dimaiv
2002-05-25 16:40
2002.06.20
Когда работаешь через TTable Delphi,


1-65012
ROM'zone
2002-06-03 18:33
2002.06.20
Автоматическая замена слов в тексте - по своему словарю.


1-65141
allrussia
2002-06-06 14:37
2002.06.20
Назначаю браш для ListBox - тект рисуется с белым фоном.


1-65074
garry
2002-06-10 14:08
2002.06.20
Как в строку добавить символ абзаца?


3-64984
vasilly
2002-05-28 10:10
2002.06.20
проблема с BLOB через БДЕ только для MS SQL, для других баз нет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский