Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
|
blackbox:noappwin [2017/05/01 23:14] иван_денисов |
blackbox:noappwin [2020/10/30 13:26] (текущий) iadenisov |
====== Приложение без главного окна Блэкбокса ====== | ====== Приложение без главного окна Блэкбокса ====== |
| |
Иногда возникает необходимость сделать приложение, состоящее из одной диалоговой формы. Главное окно Блэкбокса при этом необходимо каким-то образом спрятать. С одной стороны для этого предусмотрен специальный ключ ''/NOAPPWIN'', однако его возможно прописать только в ярлыке, что не подходит для распространения приложения в виде простого архива или непосредственно исполняемого файла ''exe''. | Иногда возникает необходимость сделать приложение, состоящее из одной диалоговой формы. Главное окно [[:blackbox|Блэкбокса]] при этом необходимо каким-то образом спрятать. С одной стороны для этого предусмотрен специальный ключ ''/NOAPPWIN'', однако его возможно прописать только в ярлыке, что не подходит для распространения приложения в виде простого архива или непосредственно исполняемого файла ''exe''. |
| |
В этой заметке рассмотрен способ комфортной разработки таких приложений путем модификации модуля ''HostMenus''. | В этой заметке рассмотрен способ разработки приложений без главного окна путем модификации модуля ''HostMenus''. |
| |
===== 1. Подготовка Config ===== | ===== 1. Подготовка Config ===== |
Первым делом необходимо подготовить ваш файл ''Config'', который определяет, что будет происходить сразу после запуска Блэкбокса. Этот модуль вызывается из модуля ''Init'', который загружает ''StdLoader'' сразу после загрузки ядра Блэкбокса. | Первым делом необходимо подготовить ваш файл ''Config'', который определяет, что будет происходить сразу после запуска Блэкбокса. Этот модуль вызывается из модуля ''Init'', который загружает ''StdLoader'' сразу после загрузки ядра Блэкбокса. |
| |
- В корневом каталоге Блэкбокса создайте папку ''My'' (а в ней ''My/Mode'', ''My/Code'', ''My/Rsrc''). | |
- Создайте новый документ, и добавьте в него код: | - Создайте новый документ, и добавьте в него код: |
| |
| |
Вместо 'Obx/Rsrc/Dialog.odc' укажите путь к форме своего модуля, а вместо 'ObxDialog Demo' заголовок формы. | Вместо 'Obx/Rsrc/Dialog.odc' укажите путь к форме своего модуля, а вместо 'ObxDialog Demo' заголовок формы. |
| - В корневом каталоге Блэкбокса создайте папку ''My'' (а в ней ''My/Mod'' и ''My/Code''). |
- Сохраните файл ''Config.odс'' в папке ''My/Mod''. | - Сохраните файл ''Config.odс'' в папке ''My/Mod''. |
- Скомпилируйте модуль. | - Скомпилируйте модуль. |
| |
- Откройте файл ''Host/Mod/Menus.odc''. | - Откройте файл ''Host/Mod/Menus.odc''. |
- Добавьте в конец процедуры ''ReadCommandLine'' следующую строку: <code componentpascal>IF ~open THEN state := noAppWin; HostWindows.noAppWin := TRUE END</code> эта модификация устанавливает значения переменных как при ключе ''/NOAPPWIN''. | - Добавьте в конец процедуры ''ReadCommandLine'' следующую строку: ''IF ~open THEN state := noAppWin; HostWindows.noAppWin := TRUE END'' эта модификация устанавливает значения переменных как при ключе ''/NOAPPWIN''. |
- Скомпилируйте модуль ''HostMenus''. | - Скомпилируйте модуль ''HostMenus''. |
- Переместите файл ''Host/Code/Menus.ocf'' в папку ''My/Code/Menus.ocf''. | - Переместите файл ''Host/Code/Menus.ocf'' в папку ''My/Code/Menus.ocf''. |