![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форма и ДЛЛ [D7, WinXP]
Fenix © (2006-03-08 15:14:00)Доброго времени суток.
Меня интересует такой вопрос, можно ли запихнуть форму, с всеми ее компонентами и процедурами в *.DLL. И потом уже в программу по мере надобности подгружать длл, а не форму ?
У меня просто будет очень много форм, и загружать их все статически не очень хочеться...
Fenix (2006-03-08 20:37:00) [21]Sergey Masloff
> рантайм-пакетами была так отброшена.
Можешь поподробнее про этот способ?
tesseract (2006-03-08 20:37:00) [22]ну в принципе согласен, если мне не изменяет память, то примерно так в той статье и поступали.
Да и сайт этого журнала к несчатью помер :-( А статья там была
Fenix (2006-03-08 20:35:00) [23]
> А так -то проще напиши функцию динамического создания компонет
> по заранее описанному шаблону.
> У тебя будут постоянные компоненты - кнопки OK CANCEL и
> тд. И непостоянные - там всякие Edit/combobox.
Так получаеться мне прийдеться хранить сами шаблоны в текстовых документах, и у каждого шаблона будут свой обработчик события при нажатие на кнопку OK.
Можешь поподробнее рассказать, как это реализуеться, или если не сложно приведи маленький примерчик, т.к. на примере легче разобраться :)
Sergey Masloff (2006-03-08 20:32:00) [24]Я не понимаю почему версия с рантайм-пакетами была так отброшена.
Конечно строить формы на лету тоже вполне допустимая идея тогда уже идти дальше - код для обработчиков писать в виде скриптов потому что иначе получаются полумеры - можно фактически только морду менять, сильно функционал не заменишь.
Но применение пакетов намного проще а по сравнению с dll и вообще сравнивать нечего - цитирую
Note
Packages share their global data with other modules in an application.
Добиваться этого в случае с DLL это такой напряг что...
tesseract (2006-03-08 20:25:00) [25]
> не... ты малость не понял... я говорил что я раньше создавал
> прилжения с малым количеством форм... а теперь у меня должно
> приложение быть с относительно неограниченным количеством
> форм, но подгружаемыми по очереди (они должны быть модальные,
> и после использования освобождать память). Плюс еще мне
> надо сделать возможность их изменять уже при откомпилированной
> программе, следовательно они должны быть внешними. Вот поэтому
> я и хочу использовать ДЛЛ.... Т.к. заменив одну ДЛЛ замениться
> и сама форма и ее все недочеты....
А так -то проще напиши функцию динамического создания компонет по заранее описанному шаблону.
У тебя будут постоянные компоненты - кнопки OK CANCEL и тд. И непостоянные - там всякие Edit/combobox.
Ну и всё. В журнале "Программист", кто его ещё помнит, была статья так там Dfm вообще из базы данных грузили :-)
Fenix (2006-03-08 20:09:00) [26]не... ты малость не понял... я говорил что я раньше создавал прилжения с малым количеством форм... а теперь у меня должно приложение быть с относительно неограниченным количеством форм, но подгружаемыми по очереди (они должны быть модальные, и после использования освобождать память). Плюс еще мне надо сделать возможность их изменять уже при откомпилированной программе, следовательно они должны быть внешними. Вот поэтому я и хочу использовать ДЛЛ.... Т.к. заменив одну ДЛЛ замениться и сама форма и ее все недочеты....
tesseract (2006-03-08 20:01:00) [27]
> динамические формы...
Можешь создавать их полностью динамически (не DFM).
А можешь как обыные объекты. Убери их из AutoCreateForms в свойствах проекта. Или просто удали строчку
Application.CreateForm(TMyForm, Myform); из dpr файла.
при первом вызове - MyForm:=TmyForm.Create(self) и тд.
На самом деле добавление форм ест достаточно мало памяти (в любом случае TForm - предок всех твоих форм) и все используемые VCL там находятся.
Если просто путаешься - примсотрись к TactionManager. Он для того и создан чтобы снизить кол-во геммороя.
Fenix (2006-03-08 19:53:00) [28]Просто я ими не пользовался... все мои проекты содержали небольшое количество форм... и все создавались статически... вот щас решаю как лучше реализовать динамические формы... (желательно подгрузка из отдельных файлов...).
tesseract (2006-03-08 19:28:00) [29]
> Я с этим еще пока не салкивался... Дай плз статейки какиенить
> полезные, что бы хоть основы их поизучать...
ммммм.. Нет лучше книг. Эффективнее. Это же базовая функциональность Delphi!!!!!!!!
Fenix (2006-03-08 19:27:00) [30]Только что прочитал статью
http://www.delphimaster.ru/articles/usedll/index.html
Как раз мне бы было удобно запихнуть мои формы в ДЛЛ, и потом уже динамически подключать, нужные мне ДЛЛ. Щас попробую сделать так...
Если фреймы+репозитарий более альтернативный и простой способ, то дай плз по нему статейки...
Fenix (2006-03-08 18:37:00) [31]
> фреймы+репозитарий
Я с этим еще пока не салкивался... Дай плз статейки какиенить полезные, что бы хоть основы их поизучать...
tesseract (2006-03-08 18:35:00) [32]
> Можешь дать ссылки на толковые статьи по COM технологии?
> Желательно приближенные к мойе теме...
msdn.microsoft.com - но по моему это не по твоей теме.
мой совет - фреймы+репозитарий - намного эффективней чем код разбросанный по DLL.
Fenix (2006-03-08 18:19:00) [33]
> tesseract
Можешь дать ссылки на толковые статьи по COM технологии? Желательно приближенные к мойе теме...
tesseract (2006-03-08 18:12:00) [34]
> Просто при использовании Dll можно будет легко модернезировать
> мой програмный продукт различными патчами... Вот и хочу
> попробовать через ДЛЛ сделать... Посоветуйте если есть хорошие
> статьи на тему форм и ДЛЛ
Думаешь легче будет? Лучше используй СOM - его по любому Tobject использует.
DLL таки не умеет данных хранить. Не его прерогатива.
Fenix (2006-03-08 17:57:00) [35]Просто при использовании Dll можно будет легко модернезировать мой програмный продукт различными патчами... Вот и хочу попробовать через ДЛЛ сделать... Посоветуйте если есть хорошие статьи на тему форм и ДЛЛ
tesseract (2006-03-08 17:48:00) [36]
> У меня просто будет очень много форм, и загружать их все
> статически не очень хочеться...
А почему не создавать их динамически?
Никто не заставляет тебя создавать форму при старте приложения.
Памяти ты в DLL больше кода внесешь чем памяти сэкономишь.
Хочешь реально поэкономить - используй фреймы.
Sergey Masloff (2006-03-08 17:39:00) [37]Чтобы избежать немалого числа проблем явных и неявных лучше использовать не .dll а .bpl которые хотя и те же dll только "заточеные" для работы с дельфи.
Fenix (2006-03-08 15:56:00) [38]
Запросто.Только при вызове дочерних форм из dll не забудь их создать(create). Сам долго мучался с этим пока не разобрался. :))
Можешь привести маленький примерчик.... и как потом взаимодействовать с формой загруженной из длл...
anton773 (2006-03-08 15:50:00) [39]
> Меня интересует такой вопрос, можно ли запихнуть форму,
> с всеми ее компонентами и процедурами в *.DLL
Запросто.Только при вызове дочерних форм из dll не забудь их создать(create). Сам долго мучался с этим пока не разобрался. :))
Anatoly Podgoretsky (2006-03-08 15:19:00) [40]Загружай динамически.