Добавление узлов с помощью кнопок
Добавление лиги в дерево - это просто добавление корневого узла. Поскольку приложение для добавление лиг будет использовать несколько способов (кнопка, перетаскивание, всплывающее меню), лучше поместить код в отдельную функцию. Обработчики событий по кнопке и всплывающему меню показаны в секциях 3 и 4. В итоге вызывается функция AddLeague (секция 5).
В теле функции AddLeague с помощью ActiveControl фокус передается дереву, если этого не делать, то фокус останется на том элементе управления, который был активизирован в последний раз, в данном случае на кнопке League (для эксперимента попробуйте заремить ActiveControl). Метод Add добавляет новый корневой узел (в 1-й части статьи мы говорили, что если параметр функции Add будет NULL, то создается корневой узел). Затем вызывается метод EditText(), который позволяет пользователю редактировать наименование узла.
После того как пользователь введет наименование узла и нажмет кнопку Enter, то по умолчанию фокус передастся в дерево, но на самый верхний корневой узел. На практике такое решение не совсем удобно, т.к. выделяться должен не верхний узел, а тот узел, который только что был создан. Для решения этой проблемы используется событие Edit, которое генерируется каждый раз, когда изменяется наименование узла. Добавив одну строчку в обработчик событий можно гарантировать, что выделенным останется именно создаваемый новый узел (секция 6).
Добавление узлов-дивизионов не представляет труда - для этого достаточно выделить нужный узел-лигу и через кнопку Division или аналогичный пункт всплывающего контекстного меню вызвать функцию: AddDivision (секции 7, 8, 9).
Перед вызовом функции AddDivision надо убедиться, что узел выбран и что выбранный узел есть лига, в противном случае получим сообщение об ошибке. Для проверки последнего, используется перечисление enum entryValue (секция 1 модуля Unit1.h). Поэтому если уровень выбранного узла будет не равен 0, а именно на этом уровне лежит корневой узел, то появится сообщение "Дивизион добавляется только к лиге!". Если всё нормально, то вызывается функция AddDivision. В этой функции