Страница 1 из 1
Передача параметров в Plug-in Вадима Синявского
Добавлено: 20 Июнь 2008, 14:28
NewUser
Пожалуйста, подскажите, кто сталкивался – как в данном шаблоне передать (ну а затем и отловить) хоть какой-нибудь параметр.
В шаблоне подготовки плагинов поле ввода «String-параметр/!Переменная» - задизэйблено.
(С6.3 ABC)
Пробовал написать Вадиму по мылу, указанному в шаблонах – письма не доходят.
• Ссылка на шаблон с классами -
http://www.clarionlife.net/component/op ... 304/Itemid,/
Re: Передача параметров в Plug-in Вадима Синявского
Добавлено: 20 Июнь 2008, 16:56
Vorchun
мне можно написать на адрес
vadim@softcreator.com
не видя приложения моуг предположить, что неверно указано имя внешней процедруры
Re: Передача параметров в Plug-in Вадима Синявского
Добавлено: 20 Июнь 2008, 19:09
NewUser
Vorchun писал(а):не видя приложения моуг предположить, что неверно указано имя внешней процедруры
Не в этом было дело - не разобрался с механизмом передачи параметров. Не заполнил поля: Prototype и Parameters.
Скорее всего мне было бы интересно узнать: можно ли передать параметры из процедур плагина в очередь дерева или меню, а там их отлавливать еще до запуска этих процедур пользователем?
Задача в следующем:
Есть плагин с процедурами разных категорий. Требуется отобразить в списке-дереве основной программы только определенной категории процедуры данного плагина. Категории нужно «навешивать» в самом плагине.
Как реализовать?
Re: Передача параметров в Plug-in Вадима Синявского
Добавлено: 20 Июнь 2008, 19:44
Vorchun
В данной реализации классов загрузки такое сделать нельзя.
Для того, чтобы плагины могли управлять процессом показа информации о себе (хотя бы по принципу показать что-то из своих процедур или нет) необходимо иметь предопределенную процедуру в каждом модуле (предопределенность во внешнем имени и, возможно, в параметрах), которая бы могла сообщить загрузчику информацию о своих процедурах (например по переданному имени процедуры вернуть значение "показать или нет в дереве"), модифицировать класс загрузки (PluginLoaderClassType) так, чтобы он вызывал для каждой процедуры каждого модуля эту "стандартную" процедуру-информатора, сохранять эту информацию в очереди процедур и в процедуре-наследнике данного класса (PluginsTreeClassType) показывать или нет соответствующие ветки дерева. Более того - можно в данной процедуре-информаторе хранить и выдавать внаружу всею информацию о доступных в данном модуле процедурах. Т.е. обойтись без определения в глобальном шаблоне списка доступных для запуска процедур вообще - и даже управлять процессом загрузки одних модулей из тела других.
Могу добавить, что данный механизм был реализован - идейным вдохновителем создания такого механизма и хозяином этого набора шаблонов и классов является Владимир Якимченко и по вопросам ознакомления с этими механизмами нужно обращаться к нему (я писал под заказ и распространять этот код не имею права).
Re: Передача параметров в Plug-in Вадима Синявского
Добавлено: 20 Июнь 2008, 19:46
NewUser
«В лоб» удалось решить проблему следующим образом:
В плагине, в шаблоне подготовки плагинов, в поле «Текст пункта меню» наименовываю процедуры следующим образом:
- в названия процедур категории первой пишу: 1.MyProcedureX
- в названия процедур категории второй пишу: 2.MyProcedureX
В окне загрузки процедур плагинов в дерево:
Loop i# = 1 TO Records(PluginsQueue)
Get(PluginsQueue,i#)
IF Sub(PQ:Text,1,2) = «1.» Then Delete(PluginsQueue).
END
Все! В дереве только процедуры второй категории плагинов!!!
Только вот как тоже самое сделать при загрузке процедур плагинов в меню?
Ведь там, при данном "лобовом" подходе, надо будет поудалять все эти "1.", "2." и т.д.
Не могли бы Вы, Вадим, указать в каком месте классов и как надо произвести отлавливание помещения наименования процедуры плагина в меню?
Re: Передача параметров в Plug-in Вадима Синявского
Добавлено: 21 Июнь 2008, 14:02
NewUser
После того, как Вадим приватным образом любезно проконсультировал меня, было принято решение решить данную задачу путем простой правки классов.
Получилось следующее:
1. Можно работать с процедурами 2х типов (категорий).
2. Можно в ПРОИЗВОЛЬНОМ (а не в алфавитном) порядке загружать процедуры.
3. В меню загружаются процедуры 1-й категории.
4. В дерево загружаются процедуры 2-й категории.
Все, всем спасибо! – тему закрываю.