![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
ninja |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Добрый день!
Необходимо заполниль дерево с помощью компонента TreeView, имя элемента дерева должно состоять из номеров и имен, т.е. например дерево должно выглядеть следующим образом: Код 1имя1 2имя2 3имя3 3.1имя4 3.2имя5 3.2.1имя6 4имя7 4.1имя8 таким образом чтобы и дочерние и родительские элементы имели порядковый номер. Столкнулся с такой проблемой что нумерация при добавлении дочернего элемента начинается с 0 Родительские элементы нумеруются нормально, а вот с дочерними проблема void __fastcall TForm1::Button1Click(TObject *Sender) Спасибо за помощь. |
Client |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
name = IntToStr(selected2)+":"; |
ninja |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Да действительно опечатка, но это всего лишь добаляет имя, тоесть у меня имя берется их 2х компонентов Edit и ComboBox, я просто уже поразному пробывал, текст был закоментирован, я не заметил, если исправить все равно не работает.
Сообщение отредактировано: ninja - 22.07.2010 18:29 |
Client |
![]()
Сообщение
#4
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
присоедини весь проект, а то лень создавать самому
![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
А дочерние можно нумеровать, используя не selected2 (непонятно где и как описанный), а:
if (RadioGroup1->ItemIndex == 1) /// добавление дочерних элементов TreeView1->Selected->Count вернет тебе количество дочерних элементов у Selected, не надо ничего считать вручную, все уже посчитано... Получить из Selected строку до двоеточия и добавить ее в начало нового элемента - не самая большая проблема, правда? |
ninja |
![]()
Сообщение
#6
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Вот проект:
![]() Владимир спасибо Вам огромное все прекрасно работает, как то я проглядел этот свойство у TreeView Сообщение отредактировано: ninja - 22.07.2010 19:07 |
ninja |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Еще такой вопрос: как реализовать создание пунктов меню на основе полученного дерева? т.е Мне необходимо создать, используя компонент MainMenu, пункты меню, учитывая все уровни вложенности полученного дерева, не могу понять как мне это сделать.
получилось пока следующее: TMenuItem *Menu; |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Так лень мне Билдер запускать... Дельфи открытая, поэтому сделаю здесь (переносится на Билдер практически один в один)
procedure BuildMenu(node: TTreeNode; menu: TMenuItem);Вот и все... Проверял до 5-го уровня вложенности - работает нормально... |
ninja |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Владимир спасибо, на делфи все отлично работает, я в Билдер перенес, но почему-то ничего не создается, вроде все проверил, по нажатию на кнопку никакой реакции....
void BuildMenu (TTreeNode *node, TMenuItem *menu) |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Значит, плохо перевел:
void BuildMenu(TTreeNode *node, TMenuItem *menu)только что у меня отработало прекрасно... Только не надо говорить, что это то же самое, хорошо? Это совсем не то же самое ![]() |
ninja |
![]()
Сообщение
#11
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Да действительно не тоже самое, Вы при объявлении переменный сразу присваиваете ей начальное значение, т.е выделяете память для нового объекта, Владимир не могли бы Вы мне объяснить почему именно так работает, а как у меня нет? Спасибо за помощь.
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Цитата не могли бы Вы мне объяснить почему именно так работает, а как у меня нет? Могли бы... ![]() Цитата else |
ninja |
![]()
Сообщение
#13
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
мде) что-то я совсем невнимательный ((( спасибо еще раз.
|
ninja |
![]()
Сообщение
#14
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Возникла еще такая проблема: необходимо сделать так, чтобы при выделении определенной ветки дерева TreeView менялся значок выделенной ветки. Когда добавляю только родительские ветки все работает нормально, а с дочерними проблема, причем если добавить дочерние ветки, а затем выделить родительские которые находятся по уровню ниже, значок меняется совсем в друном месте.
Пробывал сделать таким образом, работает неверно void __fastcall TForm1::TreeView1Click(TObject *Sender) и так тоже не верно... void __fastcall TForm1::TreeView1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата таким образом, работает неверно Цитата и так тоже не верно... Глупостями не занимайся... Тебе достаточно только в самом начале назначить для ВСЕХ узлов ImageIndex и SelectedIndex, а дальше - это уже забота TreeView, как при изменении выбранного элемента его правильно отобразить... Смотри:void __fastcall TForm1::FormCreate(TObject *Sender) Магия, правда? Теперь запускаешь программу, и все работает (все остальные обработчики, которыми ты пытался колдовать с SelectedItem/ImageIndex надо убрать, они не нужны теперь...) Кстати, можно каждому узлу вообще назначить свою картинку прямо там же, еще до отображения дерева, можно сказать, что картинку отображать не надо (ImageIndex = -1), все, что угодно... |
ninja |
![]()
Сообщение
#16
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
В том то и дело, что я хотел сделать чтобы пользователь мог сам выбрать картинку, т.е. кликнув по ветке, затем выбрав картинку, она должна появиться в выбранной ветке. Прошу прощения за неверно поставленный вопрос.
|
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
И все равно - не вижу проблемы: Ну, выбрал элемент. Назначил ему какую-то картинку (откуда - это я сам должен догадаться? Тогда все просто: с диска, да, выбрал и записал в ImageList, тут же последний индекс из ImageList-а присвоил в TreeView1->Selected->SelectedIndex). Дальше что? Хоть засоздавайся потом новыми узлами - те, что ужа были назначены (если правильно создавать новые) менять свои изображения не будут. Не веришь?
![]() Сначала было добавлено изображение на узел с текстом "12", потом к лежащему выше узлу "11" было добавлено 6 потомков ("adding"), одному из них я опять же сменил картинку, и ПЕРЕД ним опять добавил 3 потомка узлу... Как видишь - ничего не сбилось... |
ninja |
![]()
Сообщение
#18
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Владимир очередной раз говорю Вам огромное спасибо, все отлично работает, я как обычно не внимательный, сам себе все усложняю.
|
![]() ![]() |
![]() |
Текстовая версия | 25.06.2025 15:31 |