IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Проблема с компонентом TreeView, C++ builder
ninja
сообщение 22.07.2010 17:10
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Добрый день!

Необходимо заполниль дерево с помощью компонента 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)
{
AnsiString name, roditelb;
TTreeNode *node;

if (TreeView1->Items->Count == 0) // добавление первого элемента
{
name = "1:";
name += Edit1->Text+":";
name += ComboBox1->Items->Strings[ComboBox1->ItemIndex];
TreeView1->Items->Add(NULL,name);
}
else
{
if (RadioGroup1->ItemIndex == 0) /// добавление родительских элементов
{
name = IntToStr(TreeView1->Items->Count+1)+":";
name += Edit1->Text+":";
name += ComboBox1->Items->Strings[ComboBox1->ItemIndex];
TreeView1->Items->Add(NULL,name);
}

if (RadioGroup1->ItemIndex == 1) /// добавление дочерних элементов
{
selected2++;
name = IntToStr(selected2)+":";
name = Edit1->Text+":";
name += ComboBox1->Items->Strings[ComboBox1->ItemIndex];
TreeView1->Items->AddChild(TreeView1->Selected,name);
}
}
}




Спасибо за помощь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 23.07.2010 0:28
Сообщение #2


Гость






Так лень мне Билдер запускать... Дельфи открытая, поэтому сделаю здесь (переносится на Билдер практически один в один)

procedure BuildMenu(node: TTreeNode; menu: TMenuItem);
var
NewMenu, NewSubMenu: TMenuItem;
TVnode: TTreeNode;
begin
TVnode := node;
while TVnode <> nil do
begin
if TVnode.HasChildren then
begin
NewSubMenu := TMenuItem.Create(menu);
NewSubMenu.Caption := TVnode.Text;
BuildMenu(TVnode.GetFirstChild, NewSubMenu);
menu.Add(NewSubMenu);
end
else
begin
NewMenu := TMenuItem.Create(menu);
NewMenu.Caption := TVnode.Text;
menu.Add(NewMenu);
end;
TVnode := TVnode.GetNextSibling;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var CurrMenu: TMainMenu;
begin
CurrMenu := TMainMenu.Create(Form1);
BuildMenu(TreeView1.Items.GetFirstNode, CurrMenu.Items);
Form1.Menu := CurrMenu;
end;
Вот и все...

Проверял до 5-го уровня вложенности - работает нормально...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
ninja   Проблема с компонентом TreeView   22.07.2010 17:10
Client   name = IntToStr(selected2)+":"; name = E...   22.07.2010 18:23
ninja   Да действительно опечатка, но это всего лишь добал...   22.07.2010 18:26
Client   присоедини весь проект, а то лень создавать самому...   22.07.2010 18:42
volvo   А дочерние можно нумеровать, используя не selected...   22.07.2010 18:53
ninja   Вот проект: Владимир спасибо Вам огромное все п...   22.07.2010 18:53
ninja   Еще такой вопрос: как реализовать создание пунктов...   22.07.2010 20:00
volvo   Так лень мне Билдер запускать... Дельфи открытая, ...   23.07.2010 0:28
ninja   Владимир спасибо, на делфи все отлично работает, я...   25.07.2010 21:02
volvo   Значит, плохо перевел: void BuildMenu(TTreeNode *...   25.07.2010 21:30
ninja   Да действительно не тоже самое, Вы при объявлении ...   25.07.2010 21:46
volvo   Могли бы... :) Внимательнее надо быть:   25.07.2010 22:37
ninja   мде) что-то я совсем невнимательный ((( спасибо е...   25.07.2010 22:42
ninja   Возникла еще такая проблема: необходимо сделать та...   30.07.2010 19:50
volvo   Глупостями не занимайся... Тебе достаточно только...   31.07.2010 11:34
ninja   В том то и дело, что я хотел сделать чтобы пользов...   31.07.2010 18:23
volvo   И все равно - не вижу проблемы: Ну, выбрал элемент...   31.07.2010 19:27
ninja   Владимир очередной раз говорю Вам огромное спасибо...   31.07.2010 20:01


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.06.2025 15:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"