Цитата:
Сообщение от
sukhanchik
Можно (по идее) попробовать обойтись и без правки класса Info.
Основная задача - послать окну Editora сообщение (окно найти через WinAPI) Alt+M (ну или какое другое) для того, чтобы ядро запустило метод showScripts.
Далее - задача передать из Tabax информацию о том, какой метод запускать и задача определить в showScripts что его вызвали из Tabax.
Передать можно через Infolog.globalcache, а определить - опять-таки - по наличию команды в globalcache.
По крайней мере такой способ не затронет системные классы.
На днях поковыряю. Посмотрю.
Есть новая кнопочка которую можно при желании повесить в tabax.
Стоим в коде на каком-нибудь поле таблицы, жмём кнопку "Справка по полю".
Открывается форма с help-ом по полю и с путями в каких формах используется это поле для ввода данных или для просмотра.
Если жмём на этот путь открывается в новом окне эта форма.
В классе SysHelpBook изменить construct
Добавить
X++:
case 'a':
return new SysHelpBookField(sysHelp, url);
Метод кнопки
X++:
void clicked()
{
EditorScripts es;
Editor e;
;
super();
e = infolog.editor();
es = new EditorScripts();
es.helpField(e);
}
Как editor получить писал выше.
Метод в класс Editor
X++:
void helpField(Editor e)
{
TreeNode treeNode = TreeNode::findNode(e.path());
TmpxRefReferences tmpxRefReferences;
Column nCol = e.columnNo() + 1;
Line nLine = e.currentLineNo() + 1;
;
treeNode.AOTmakeXref(1);
tmpxRefReferences = xRefCreate::makeTmp(infolog.lastxRef());
select firstonly tmpxRefReferences
order by Column desc
where tmpxRefReferences.line == nLine &&
tmpxRefReferences.Column <= nCol;
if (!tmpxRefReferences)
return;
treeNode = TreeNode::findNode(tmpxRefReferences.path());
if (treeNode && tmpxRefReferences.Kind == xRefKind::TableField)
{
HelpField::checkPost(tmpxRefReferences.parentName, tmpxRefReferences.name);
}
}