Показать сообщение отдельно
Старый 11.07.2008, 09:14   #254  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от 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);
    }
}
Миниатюры
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 217
Размер:	39.9 Кб
ID:	3565   Нажмите на изображение для увеличения
Название: 2.JPG
Просмотров: 348
Размер:	61.7 Кб
ID:	3566  

Нажмите на изображение для увеличения
Название: 3.JPG
Просмотров: 474
Размер:	68.0 Кб
ID:	3567  
Вложения
Тип файла: xpo HelpFieldEditor.xpo (12.3 Кб, 231 просмотров)

Последний раз редактировалось miklenew; 21.07.2008 в 13:21.