Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как перебрать все пункты MainMenu самым простым способом ? [D6, 2000, XP]


etrado ©   (2006-06-19 15:27:00) 

конструкция вида
for ... 0 to (Items.Count - 1) do
... Items[i] ...

дает только пункты верхнего уровня иерархии. получается, нужно рекурсивно для каждого пункта меню проверять наличие подпунктов. это единственный возможный вариант или есть что-то проще ?


novill   (2006-06-19 15:50:00) [1]

вот например тут http://www.codenet.ru/progr/alg/btree.php
Правда Си,  но тоже понятно


нерекурсивная функция для обхода дерева может выглядеть так:

template
void walkNotRec(TNode* tree) {
  if (tree) {
     TNode temp;
     TNode* ptemp = &temp;
     TNode* p = ptemp, *c = tree, *w;
     while (c != ptemp) {
        cout value;
        w = c->pleft;
        c->pleft = c->pright;
        if(c == p)
            c->pright = 0;
        else
            c->pright = p;
                 p = c;
        if (w) c = w;
              }
  }}


novill   (2006-06-19 15:33:00) [2]

Что может быть проще рекурсивного перебора?


Наверх

Титульная страница Поиск, карта сайта Написать письмо