Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
3-13040
Caesar
2003-05-16 14:54
2003.06.05
AdoTable


1-13293
SSL
2003-05-24 15:47
2003.06.05
MDI интерфейс. Метод Cascade.


1-13170
alexus
2003-05-21 11:32
2003.06.05
мерцание Image


1-13268
Zew
2003-05-23 20:48
2003.06.05
Combobox


14-13432
race1
2003-05-17 05:38
2003.06.05
visa - wm





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский