Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
ВнизTControl.Parent и DLL Найти похожие ветки
← →
Sandman25 (2003-05-23 17:12) [0]Пытаюсь создать свою первую DLL. Загружается статически.
Научился делать в DLL отдельную форму и показывать ее в вызывающем приложении, но не могу воткнуть создаваемую в DLL кнопку в форму из вызывающего приложения.
При присваивании Button.Parent := Form1 в run-time выскакивает сообщение "Cannon assign a TFont to a TFont". Полазил по хелпу, но там ничего об этом нет. Только рекомендуют использовать DLL для создания типовых диалогов :)
В каком направлении копать? Спасибо.
PS. Если это важно, я в DLL перед созданием кнопки вызываю процедуру замены Application и Screen (где-то слышал краем уха об этом), хотя пробовал и без замены. Все равно та же ошибка.
← →
Skier (2003-05-23 17:14) [1]Button.ParentWindow := Form1.Handle
← →
Sandman25 (2003-05-23 17:24) [2]Спасибо, Skier!
Самое глупое, что у меня была такая мысль, но я ее отмел, прочитав описание ParentWindow :)
← →
Skier (2003-05-23 17:26) [3]>Sandman25 © (23.05.03 17:24)
Вообще-то объекты и DLL не очень друг с другом дружат.
Лучше в такой ситуации использовать пакеты...
← →
Sandman25 (2003-05-23 17:42) [4]Спасибо за совет. Попробую пакеты. С DLL типа разобрался :)
← →
Skier (2003-05-23 17:48) [5]
> С DLL типа разобрался :)
Если "типа", то почитай :
http://www.delphimaster.ru/articles/usedll/index.html
← →
Sandman25 (2003-05-23 17:58) [6]Спасибо!
← →
Юрий Зотов (2003-05-23 20:42) [7]> Sandman25
DLL и Exe Вы компилируете, как 2 отдельных проекта, которые ничего друг о друге не знают, верно? Верно.
Значит, у каждого класса в DLL - своя VMT, а у того же класса EXE - своя. То же относится к RTTI и прочему.
Поэтому и получается, что TFont в DLL и TFont в EXE - это два РАЗНЫХ класса. Отсюда и "Cannon assign a TFont to a TFont". И то же самое относится ко всем остальным классам.
А вот если бы EXE и DLL Вы компилили бы с run-time пакетами, то этого бы не было, потому что все общие классы сидели бы в этих общих пакетах. И были бы на самом деле общими.
Что же касается ParentWindow, то это слабо помогает, так как не обеспечивает нормального функционирования всех механизмов VCL. Например, контролы не попадут в список Controls формы - значит, нарушится работа Align, Anchors и т.п. И в список Components они тоже не попадут - значит, нарушится механизм автоуничтожения, не будут нормально работать FindComponent, Notification и пр.
← →
Sandman25 (2003-05-26 11:08) [8]Понятно... Спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c