powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Программа с плагинами под Fox Pro
9 сообщений из 9, страница 1 из 1
Программа с плагинами под Fox Pro
    #35031407
Необходимо организовать программу, к которой можно было бы подключать плагины. Т.е. есть основная программа - хост, и есть папочка plugins, в которой лежат app, подключаемые к хосту. Вот только кроме как общих принципов больше не имею представления как это все сделать. Может есть где-нибудь живой пример по этому поводу?
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35031428
fox_vik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван КрамерНеобходимо организовать программу, к которой можно было бы подключать плагины. Т.е. есть основная программа - хост, и есть папочка plugins, в которой лежат app, подключаемые к хосту. Вот только кроме как общих принципов больше не имею представления как это все сделать. Может есть где-нибудь живой пример по этому поводу?
1. Есть таблица с перечнем всех модулей (плагинов). У меня это EXE, а не APP. Таблица содержит идентификаторы модулей, и описание возможных параметров прав доступа к модулю.
2. Есть таблица с перечнем рабочих мест с идентификаторами рабочих мест и прочими мелочами.
3. Есть связка этих таблиц, в которой перечисляются модули, подключаемые к каждому рабочему месту с соответствующими правами.
4. Есть модуль оболочки, который является общим для всех рабочих мест.
5. В каждом модуле, кроме оболочки, есть метод module_init, в котором написан код встраивания модуля в оболочку: добавление необходимых пунктов в общее меню, добавление кнопок в общую панель инструментов, создание глобальных переменных для данного модуля и т.д.
При старте оболочка сканирует таблицу связки модулей, выбирает модули для данного рабочего места и в каждом из этих модулей запускает метод module_init.

В первом приближении так.
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35037297
2 fox_vik

Мысль понятна, но как ваши модели (EXE) взаимодействуют с хостом, в котором они работают. Например на C++ мне все понятно как сделать (там крутить можно как угодно), но с VFP до конца неясно.
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35038379
fox_vik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое взаимодействие Вы имеете в виду? Пример приведите.
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35039085
Попробовал сделать пример. Создал класс interface в vcx

Способ подключения в хосте следующий
Код: plaintext
1.
2.
SET CLASSLIB TO Plugin IN (lcPath) ADDITIVE
oInterface = CREATEOBJ('Plugin.Interface')

В интерфейсе определил метод GetCurrentPath(), в котором попытался использовать объект goApp.
goApp - создается при инициализации хоста, но в классе interface он не виден получается или я ошибаюсь?
Также сделал метод InitEnvironment(LPARAMETERS oApp) в классе interface, где oApp присваивается Interface.oApp, чтобы потом использовать данный объект, но тоже его не видно почему-то 8(
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35039187
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каша, какая-то.

Код: plaintext
1.
SET CLASSLIB TO Plugin IN (lcPath) ADDITIVE
oInterface = CREATEOBJ('Plugin.Interface')

1. Сам класс создан как OLEPUBLIC
2. Где и как создается goApp
3. Как пытаешься достучаться до обьекта через GetCurrentPath(),
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35040172
fox_vik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван КрамерgoApp - создается при инициализации хоста, но в классе он не виден получается или я ошибаюсь?
Если goApp - переменная Public и объект ей присвоен до обращения в классе interface, то должен быть виден.
Иначе нужны подробности.
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35040376
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HELPNEWOBJECT(cClassName [, cModule [, cInApplication
[, eParameter1, eParameter2, ...]]])
...
cInApplication

Specifies the Visual FoxPro application (.exe, or .app) containing the .vcx visual class library you specify with cClassLibName. You must include an extension for the application. CInApplication is ignored if cModule is omitted, or if cInApplication is the empty string or the null value.


Допустим у тебя в PlugIn\MyPlugin.app есть PlugLib.vcx а в ней класс Interface
Код: plaintext
loInterface = NeObject('Interface', 'PlugLib', 'PlugIn\MyPlugin.app')
...
Рейтинг: 0 / 0
Программа с плагинами под Fox Pro
    #35049508
2 Dima T

Сделал, как вы сказали, и все заработало. Похоже различие между NewObject и CREATEOBJ сыграло свою роль. Еще раз почитаю документацию, чтобы понять в чем дело. Спасибо.

Код: plaintext
1.
2.
3.
4.
5.
6.
lcPath = ALLTRIM(.LocalPath) + ADDBS(DIROFPLUGINS)
lcPath = ADDBS(lcPath) + "project.app"
SET CLASSLIB TO Plugin IN (lcPath) ADDITIVE

loInterface = NewObject('Interface', 'PlugLib', lcPath)

...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Программа с плагинами под Fox Pro
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]