Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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




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




Наверх





Память: 0.73 MB
Время: 0.02 c
1-46384           VBill                 2002-04-01 13:11  2002.04.15  
Как определить какая прога


3-46267           zks                   2002-03-26 09:24  2002.04.15  
Мастера мне нужно ваше мнение.


3-46251           harismatik            2002-03-25 16:57  2002.04.15  
Настройка клиента базы данных


14-46512          Knight                2002-03-06 19:52  2002.04.15  
вопрос в общем-то банальный... Где скачать фильмы? Естессно на русском...


14-46507          --Reporter--          2002-03-07 21:16  2002.04.15  
Как переустановить шрифт Arial?