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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
8-13329
Alexandr B.
2003-02-21 17:14
2003.06.05
Зменение размера окна без отображения его содержимого.


3-13023
Брат
2003-05-16 12:41
2003.06.05
Округление в запросе значений DOUBLE до 2х знаков


14-13373
Mike Kouzmine
2003-05-19 17:15
2003.06.05
Новые виды вооружений. Готова ли Россия к современной войне?


14-13456
Дмитрий К.К.
2003-05-20 06:37
2003.06.05
Именинники 20 мая


1-13169
super_alex
2003-05-26 15:38
2003.06.05
Как очистить TPainBox