Главная страница
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
3-13052
Fuelfire
2003-05-16 09:10
2003.06.05
Как сделать, чтобы данные с формы редактирования сохранялись?


14-13369
cyborg
2003-05-19 14:35
2003.06.05
Нашёл ошибку компилятора Delphi 6


1-13249
aldan
2003-05-16 09:24
2003.06.05
Как программно из Делфи в Ехеле перейти на другой лист


8-13341
real_dimedrol
2003-02-18 16:24
2003.06.05
Form Shape Aka Bitmap


3-13045
Silver_
2003-05-16 16:46
2003.06.05
нельзя редактировать Detail5ADODataSet 5-го(!) уровня почему?