06.12.2012, 13:37 | #1 |
MCTS
|
Выбор родительских веток в Tree в лукап-форме
Подскажите, пожалуйста, как сделать выбор родительских веток дерева, но при этом оставляя возможность раскрывать узлы мышкой. А то получается, что мышкой тыкаешь на крестик и, вместо того, чтобы раскрыться, лукап закрывается и выбирается этот узел...
|
|
06.12.2012, 14:21 | #2 |
Участник
|
Как вариант, в 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; } |
|
06.12.2012, 14:44 | #3 |
MCTS
|
Это позволяет выбирать родительские ветки? То есть кликаем на родительскую ветку и лукап закрывается, возвращая данные этой ветки
|
|
06.12.2012, 15:28 | #4 |
Участник
|
Посмотрите как сделана форма smmSalesUnitLookup
|
|
06.12.2012, 15:29 | #5 |
Участник
|
Не, это как раз запрещает выбор родительских веток
Но, в принципе, подход будет таким-же: выбор переводим на ручное управление по определенному признаку, без этого признака не обрабатываем выбор и не закрываем форму. Например, только по двойному щелчку или нажатии Enter. |
|