Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Вниз

ПРИВЕТ ВСЕМ! Как создать форму внутрях DLL - все ясно,   Найти похожие ветки 

 
@andrew   (2002-04-03 11:36) [0]

А вот можно ли создать MDIChild DLL-кой? Я попытался, а он мне пишет, что мол нет ни одного MDIForm окошка туда-сюда. Спасибо!


 
Zaktus   (2002-04-03 12:23) [1]

Такая же фигня и у меня. Может быть надо какое-нибудь Run-Time связывание типов, если такое есть. Такое ощушение, что это происходит из-за того, что в родительской форме в uses нет MDIChild. Что делать я пока не знаю.


 
Alx2   (2002-04-03 12:27) [2]

В DLL надо переприсвоить SCREEN и APPLICATION.
Вообще, поищите на форуме - много раз поднимался вопрос.


 
Zaktus   (2002-04-03 12:29) [3]

Вот здесь http://lib.mipt.ru/citforum/programming/digest/dlldelphi.shtml нашел следующее:
В тот момент, когда вы пытаетесь показать ваше дочернее окно, VCL проверяет корректность свойства FormStyle главной формы приложения. Однако в нашем случае все вроде бы верно. Так в чем же дело? Проблема в том, что при проведении такой проверки, рассматривается объект Application, принадлежащий не вызывающему приложению, а собственно динамической библиотеке. Ну, и естественно, поскольку в DLL нет главной формы, проверка выдает ошибку. Для того чтобы избежать такой ситуации, надо назначить объекту Application динамической библиотеки объект Application вызывающего приложения. Естественно, это заработает только в том случае, когда вызывающая программа - VCL-приложение. Кроме того, перед выгрузкой библиотеки из памяти необходимо вернуть значение объекта Application библиотеки в первоначальное состояние. Это позволит менеджеру памяти очистить оперативную память, занимаемую библиотекой. Следовательно, вам нужно сохранить указатель на "родной" для библиотеки объект Application в глобальной переменной, которая может быть использована при восстановлении его значения.



 
@andrew   (2002-04-03 12:50) [4]

Ну о чем-то таком я догадывался, поэтому решил, что процедуру в DLL-ке надо прописать что-то вроде:
procedure(.......; A:TApplication); туда-сюда....
и из проги вызывать соответственно от Application проги, а в DLL генерить форму TForm.Create(A). Думал прокатит :о)) - не прокатило :о((


 
Alx2   (2002-04-03 13:12) [5]

Устанавливай контекст
Application := A;
Screen := ...
Только потом их восстановить надо


 
@andrew   (2002-04-03 14:01) [6]

А зачем Screen? Вроде и так все работает. Или это не хорошо по каким-то причинам?


 
Alx2   (2002-04-03 14:20) [7]

Формы, которые в данный момент показаны, храняться в Screen.Forms. Кроме того, бывает нужно узнать сколько у нас mdi-детей получилось, для этого тоже нужен Screen



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-46455
Glonia Zbanov
2002-04-03 13:37
2002.04.15
Размер форм


4-46542
slym
2002-02-12 17:23
2002.04.15
Как из массива байтов сделать битмап?


1-46326
Rooman
2002-03-22 19:39
2002.04.15
Как обмануть хакера-крякера?


1-46323
dymka
2002-04-03 08:06
2002.04.15
Нужен совет по проектированию компонент


14-46482
_Oleg
2002-03-06 00:02
2002.04.15
COM-port





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский