|
![]() |
#1 |
MCTS
|
Вообщем на досуге посидел, надеюсь, что поможет.
В классе 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). |
![]() |
#2 |
Участник
|
Цитата:
чуток переделал код: в описании переменных добавил: X++: //--> TreeNode gridNode, controlNode, methodsNode; MemberFunction newMethod; str source = 'public int sort(SortOrder _sortDirection){; return 0;}'; TreeNodeIterator iterator; //<-- ... X++: //--> gridNode = _form.AOTfindChild('Designs'); gridNode = gridNode.AOTfindChild('Design'); gridNode = gridNode.AOTfirstChild(); iterator = gridNode.AOTiterator(); controlNode = iterator.next(); //methods of the grid control! controlNode = iterator.next(); for (i = 1; i <= conlen(lookupItems); i++) { methodsNode = controlNode.AOTfindChild('Methods'); newMethod = methodsNode.AOTadd('sort'); newMethod.AOTsetSource(source, false); newMethod.AOTcompile(1); controlNode = iterator.next(); } //<-- return _formBuildGridControl; }
__________________
Felix nihil admirari |
|
![]() |
#3 |
Участник
|
Цитата:
X++: ... this.setCompilerWarningsOff(); for (i = 1; i <= conlen(lookupItems); i++) { //override sort method methodsNode = controlNode.AOTfindChild('Methods'); newMethod = methodsNode.AOTadd('sort'); newMethod.AOTsetSource(source, false); //compile the method newMethod.AOTcompile(); controlNode = iterator.next(); } this.setCompilerWarningsOn(); ... X++: class SysTableLookupWithoutSort extends SysTableLookup { SysCompilerTarget target; } public void setCompilerWarningsOff() { ; target = SysUserInfo::compilerTarget(); SysUserInfo::compilerTarget(sysCompilerTarget::MessageWindow); SysCompilerOutput::setCompilerTarget(sysCompilerTarget::MessageWindow); SysCompilerOutput::updateParm(); } public void setCompilerWarningsOn() { ; SysUserInfo::compilerTarget(target); SysCompilerOutput::setCompilerTarget(target); SysCompilerOutput::updateParm(); }
__________________
Felix nihil admirari |
|
|
За это сообщение автора поблагодарили: AlGol (2). |
Теги |
ax4.0 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|