Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форма и ДЛЛ [D7, WinXP]


Страницы:   1 2

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]

Загружай динамически.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо