Главная страница
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.022 c
1-13226
vv
2003-05-16 14:05
2003.06.05
Спрятать прогу в Tray


1-13312
Кен
2003-05-23 03:25
2003.06.05
А нет ли такой функции, чтобы преобрзовывать class в string ?


7-13484
3asys
2003-03-28 14:11
2003.06.05
Работа с COM-портом


14-13454
cyborg
2003-05-17 18:27
2003.06.05
Сценайри RPG игры


1-13283
Navi
2003-05-24 09:01
2003.06.05
Взаимодействие с потоками