Вообщем на досуге посидел, надеюсь, что поможет.
В классе 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;
}
единственное, что не смог победить - это при компиляции метода выскакивает окошко сообщений компилятора...
Вдохновило
это