Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
3-13099
alxx
2003-05-19 11:34
2003.06.05
Backup Интербейзовой базы


9-12993
Jedi Knight
2002-12-26 17:33
2003.06.05
Rebellion 2


1-13119
Test
2003-05-25 18:06
2003.06.05
HOWTO WriteLn в консоле цветом сделать?


14-13384
Bosso
2003-05-16 10:45
2003.06.05
Алгоритм оптимального раскроя


1-13211
zapmax
2003-05-27 11:37
2003.06.05
Кол-во страниц в QReport-е




   Наверх