|
06.12.2012, 14:21 | #1 |
Участник
|
Как вариант, в ClassDeclaration формы добавляется какой-либо флаг, например, переменная isSelected
В методе mouseDblClick (или прочих) дерева анализируем, выбрана ли конечная запись или родительская. Если выбрана конечная, то isSelected устанавливаем в true и closeSelect А в closeSelect вызываем супер только если isSelected установлена в true. Кроме того, в canClose так же анализируем эту переменную. В качестве примера: Это в дереве: X++: public int mouseDblClick(int _x, int _y, int _button, boolean _Ctrl, boolean _Shift) { int ret; ret = super(_x, _y, _button, _Ctrl, _Shift); element.selectItem(); return ret; } X++: void selectItem() { str ret; ; ret = this.selectedItem(); if (isSelected) { this.closeSelect(ret); } } X++: str selectedItem() { FormTreeItem item; TMTable_OVK locTMTable; AssLevelType_OVK levelType; str result = ''; ; if (tree.visible()) { item = tree.getItem(tree.getSelection()); locTMTable = TMTable_OVK::find(item.data()); } else { locTMTable.data(TMTable); } levelType = locTMTable.TMLevelType; if (levelType == AssLevelType_OVK::Children || (levelType == AssLevelType_OVK::ParentGroup && allowSelectGroup)) { isSelected = true; result = locTMTable.TMId; } return result; } X++: public void closeSelect(str _selectString) { ; if (isSelected) { super(_selectString); } } X++: public boolean canClose() { boolean ret; ; ret = super(); return ret && isSelected; } X++: public int task(int _taskId) { #TASK int ret; ret = super(_taskId); if (_taskId == #TASKENTER) { this.selectItem(); } return ret; } |
|