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

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

Мысль понятна, но как ваши модели (EXE) взаимодействуют с хостом, в котором они работают. Например на C++ мне все понятно как сделать (там крутить можно как угодно), но с VFP до конца неясно.
...
Рейтинг: 0 / 0
27.12.2007, 16:55
    #35038379
fox_vik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программа с плагинами под Fox Pro
Какое взаимодействие Вы имеете в виду? Пример приведите.
...
Рейтинг: 0 / 0
28.12.2007, 08:45
    #35039085
Программа с плагинами под Fox Pro
Попробовал сделать пример. Создал класс 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
28.12.2007, 09:52
    #35039187
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программа с плагинами под Fox Pro
Каша, какая-то.

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

1. Сам класс создан как OLEPUBLIC
2. Где и как создается goApp
3. Как пытаешься достучаться до обьекта через GetCurrentPath(),
...
Рейтинг: 0 / 0
28.12.2007, 14:27
    #35040172
fox_vik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программа с плагинами под Fox Pro
Иван КрамерgoApp - создается при инициализации хоста, но в классе он не виден получается или я ошибаюсь?
Если goApp - переменная Public и объект ей присвоен до обращения в классе interface, то должен быть виден.
Иначе нужны подробности.
...
Рейтинг: 0 / 0
28.12.2007, 15:31
    #35040376
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программа с плагинами под Fox Pro
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
09.01.2008, 11:50
    #35049508
Программа с плагинами под Fox Pro
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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Программа с плагинами под Fox Pro / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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