Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Мини-чат
Пожертвование сайту
Опрос
Переход на домен .com
Всего ответов: 1515
Главная » 2009 » Июнь » 16 » Невидимые формы в EXE и DLL (Delphi)
Невидимые формы в EXE и DLL (Delphi)
14:06
К примеру, требуется, чтобы в EXE- или в DLL-проекте отсутствовали какие-либо формы или компоненты, хотя и так большинство компонентов (windows UI-элементов управления) не имеют смысла вне формы.

Единственная функциональность, которую вы теряете без использования форм - невозможность визуальной работы с компонентами и их характеристиками.

Для примера, процесс создания компонента TDatabase в DLL или EXE "ручками" выглядит примерно таким образом:

Code

procedure XYZ;
var
DB: TDatabase;
begin
DB := TDatabase.Create( nil);
{ теперь используем это }
DB.Alias := 'test';
DB.Active := true;
DB.DoSomething
DB.DosomethingElse
{ теперь освобождаем экземпляр TDatabase }
DB.Free
end;  

Для не-визуальных компонентов форма, сама по себе, не имеет никакого значения. Поскольку TForm является дальным наследником TComponent, то она может быть владельцем других компонентов, тем не менее эта характеристика не добавляет функциональности расположенным на ней компонентам. Так какое преимущество существует у компонентов, расположенных на форме? Удобное, но небольшое: при разрушении формы (или компонента), предварительно автоматически освобождаются все компоненты, владельцем которых она является (ссылки на них содержатся во внутреннем списке).

Какое преимущество дает форма для не-визуальных компонентов (TDatabase, TTable и пр.) кроме их автоматического освобождения при освобождении формы? Никакого. Только то, что при использовании визуального конструирования все компоненты, располагаемые на форме, становятся принадлежащими этой форме и позволяют изменить их свойства по умолчанию.

Флаг видимости, как и ожидалось, работает и в dll, и в exe, тем не менее вы должны знать, что некоторые функции, например, Application.Run, устанавливают для главной формы visible := true. Вы не сможете это корректно обойти, поскольку эта форма является главной формой приложения, а для запуска приложения вы вызываете Application.Run.

Если вы хотите сделать главную форму невидимой, замените строку Application.Run следующей конструкцией:

Code

repeat
Application.HandleMessage;
until Application.Terminated;
Application.Destroying;
Application.DestroyComponents;

Если вы все еще имеете проблемы с невидимыми формами в DLL, дайте мне знать как вы это делаете.

Категория: Исходники | Просмотров: 1011 | Добавил: -=FoBoS=- | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Гость

Сообщения:

Группа:
Гости
Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Поиск по сайту
Календарь
«  Июнь 2009  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Друзья сайта
3dnews daily digital digest
Наш баннер
[ Получить код баннера]
Облакто тегов

Для красивого отображения этого блока требуетсяFlash Player 9 или выше.

Кто сегодя был на сайте
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Зарегистрировано на сайте: 14962

Новых сегодня: 0

Новых вчера: 0

Новых за неделю: 0

Новых за месяц: 0

Из них:

Новоприбывших: 14923

Проверенных: 0

Модераторов: 1

Помошник администратора: 1

Администраторов: 1

Из них:

Парней 14327

Девушек 634

1

Каталог webplus.info Проверить PR ТИЦ
Все материалы которые находятся на этом сайте могут быть использованы исключительно в ознакомительных целях! За любое нелегальное использования данных материалов ни администрация сайта ни хостинг-провайдер ответственности не несут! При копировании материала обязательно указывать рабочую ссылку на alltopc.ucoz.ru! Created by -=FoBoS=- © 2008-2024