Показать сообщение отдельно
Старый 08.08.2008, 15:01   #2  
altap is offline
altap
MCTS
MCBMSS
 
26 / 18 (1) ++
Регистрация: 28.09.2005
Вообщем на досуге посидел, надеюсь, что поможет.
В классе SysTableLookup модифицировал метод buildGrid к такому виду:
X++:
protected FormBuildGridControl buildGrid(FormBuildGridControl _formBuildGridControl,
                                         FormBuildDataSource  _formBuildDataSource,
                                         Form                   form) //передаем форму в метод для поиска ее ноды
{
    FormBuildControl                formBuildControl;
    Object                          obj;
    boolean                         returnItem;
    boolean                         method;
    int                             fieldId;
    int                             i, j;
    //-->
    TreeNode                        gridNode, controlNode, methodsNode;
    MemberFunction                  newMethod;
    str                             source;
    TreeNodeIterator                iterator;
    //<--
    ;

    for (i = 1; i <= conlen(lookupItems); i++)
    {
        [fieldId, returnItem, method] = conpeek(lookupItems, i);

        if (!method)
        {
            formBuildControl = _formBuildGridControl.addDataField(_formBuildDataSource.id(), fieldId);

            if (i == 1 || returnItem)
            {
                controlIdx = formBuildControl.id();
                lookupField = fieldId;
            }

            obj = formBuildControl;

            if (labels[i])
            {
                obj = formBuildControl;
                obj.label(labels[i]);
            }

            //Дойдем до созданного контрола
            gridNode = form.AOTfindChild('Designs');
            gridNode = gridNode.AOTfindChild('Design');
            gridNode = gridNode.AOTfirstChild();

            iterator = gridNode.AOTiterator();
            controlNode = iterator.next();
            while (controlNode)
            {
                If (controlNode.AOTname() == obj.name()) break;
                controlNode = iterator.next();
            }

            //Перекроем метод sort
            methodsNode = controlNode.AOTfindChild('Methods');
            methodsNode.AOTadd('sort');
            newMethod   = methodsNode.aotfindChild('sort');

            source      = 'public int sort(SortOrder _sortDirection) ' +
                            '{ ' +
                            '    ; ' +
                            '    return 0; ' +
                            '}';

            newMethod.AOTsetSource(source, false);
            //Откомпилируем новый метод
            newMethod.AOTcompile(1);
        }
    }

    return _formBuildGridControl;
}
единственное, что не смог победить - это при компиляции метода выскакивает окошко сообщений компилятора...
Вдохновило это

Последний раз редактировалось altap; 08.08.2008 в 16:13.
За это сообщение автора поблагодарили: wojzeh (1).