Как загрузить Delphi Tframe из DLL в приложение Delphi - PullRequest
1 голос
/ 21 октября 2010

Я создал DLL с Tframe. как я могу загрузить его в мое приложение, я не люблю использовать bpls, я только хочу распределить exe и dll с моим приложением

Ответы [ 2 ]

5 голосов
/ 21 октября 2010

Поскольку BPL - это DLL, переходите на BPL: намного проще.

0 голосов
/ 26 октября 2010

Это можно сделать, но это адская работа, чтобы заставить его работать без ошибок или проблем с памятью.Что еще хуже, вы будете использовать два VCL в вашем приложении, один в исполняемом файле, а другой в DLL.Ваш фрейм будет пытаться ссылаться на DLL VCL, который будет предоставлять информацию, отличную от EXE VCL.Особенно при проверке глобальных переменных экрана и приложения.Тем не менее, фрейм - это не что иное, как специальный оконный элемент управления, как и формы.Вы можете экспортировать функцию из вашей DLL, которая будет возвращать значение типа TFrame.Ваше приложение сможет вызывать эту функцию и, таким образом, создавать фрейм, использовать его любым способом, каким он использует все остальные фреймы.Однако в нем не будет никакой конкретной информации о дополнительных функциях.Следующее, над чем вам нужно поработать, это синхронизировать данные между EXE и DLL, связанной с VCL.Это не очень красиво.Кроме того, у вас, вероятно, будут некоторые проблемы при использовании клавиши табуляции для перемещения по элементам управления на экране, поскольку клавиша табуляции не сможет перемещаться за пределы рамки.И вы заметите еще несколько странностей, подобных этой.Я работал над простым приложением, которое использовало фреймы таким образом.Я и двое других потратили два месяца на то, чтобы получить какое-то рабочее решение, которое работало разумно, без утечек памяти и других проблем.До того, как мы начали этот проект, это казалось хорошей идеей.После этого мы решили, что это не то решение, которое нам нужно, поэтому мы объединили код DLL с кодом исполняемого файла, чтобы создать один исполняемый файл.Так было лучше.Мы использовали другую альтернативу.Мы начали использовать компонент веб-браузера в основной форме.DLL будет содержать HTML-страницу в хорошем формате и набор методов, которые будут вызываться при использовании определенных функций.У нас это работало в простом тестовом приложении с хорошими результатами, но затем компания перешла к главе 11 ... Мой работодатель обанкротился, поскольку сделка с каким-то клиентом потерпела неудачу, оставив компании огромные долги.И вот интересный проект закончился ...

...