Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2009, 14:34   #1
("")(Э_Є)("")
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 112
По умолчанию VC++ индексация визуальних компонент.

Добрый день.

У меня есть форма на которую добавляется произвольное количество панелей. Они, панели, привязаны к верху "Dock:Top" в итоге образуется столбец панелей. Мне необходимо менять контент двух соседних панелей местами или менять их самих местами. То есть панели: 1 2 3 4 , выстроить как 1 2 4 3 и тп.
Как бы их "по грамотней" переставлять? Конечно, есть 101 косвенный метод, но хочется чего-то эффективного и простого, "элегантного" (с) Труп Страуса.

Заранее благодарен.


PS. VC++ 2008 EXP
("")(Э_Є)("") вне форума Ответить с цитированием
Старый 17.03.2009, 19:34   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Что за труп страуса? Вы наверное перепутали. Страуструп - это фамилия создателя языка С++ и автора кучи книг по этому языку.
MaTBeu вне форума Ответить с цитированием
Старый 17.03.2009, 21:29   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Попробуйте убирать обе панели, а потом заново добавлять в нужном порядке. Чисто теоретически это должно работать, если я правильно понял вопрос
pu4koff вне форума Ответить с цитированием
Старый 19.03.2009, 11:35   #4
("")(Э_Є)("")
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 112
По умолчанию

Спрятать-показать не сработает. Можно конечно их удалить-создать но это как-то... криво. Должна сработать такая вещь:
Поменять индекс элемента формы - приоритет при "док" имеют элементы добавленные первыми - в порядке добавления. Только вот как это сделать? Видимо, это тот же индекс, что и в Controls, но у Controls нет подходящих методов. Или есть ? Я мог бы использовать Controls->RemoveAt - но тогда придется все формы перестраивать, что бы добавить новую между ними. А есть что-то подходящие в WinAPI ?


Код:
             this->Controls->SetChildIndex(panel1,1);
			 this->Controls->SetChildIndex(panel2,0);
- никакой разницы.

Последний раз редактировалось ("")(Э_Є)(""); 19.03.2009 в 12:09.
("")(Э_Є)("") вне форума Ответить с цитированием
Старый 19.03.2009, 12:12   #5
("")(Э_Є)("")
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 112
По умолчанию

Я что-то "нашаманил"

Код:
             this->Controls->SetChildIndex(panel1,5);
			 this->Controls->SetChildIndex(panel2,4);
			 this->RecreateHandle();
Найдено чисто интуитивно - но эффективно работает Правда окно полностью перегружается, надо бы локализовать.
("")(Э_Є)("") вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент DBImage Randomize Компоненты Delphi 5 10.10.2008 20:29
Индексация в программе Nikolaeva БД в Delphi 1 04.03.2008 15:09
Компонент Terran Компоненты Delphi 2 16.12.2007 17:42
Индексация Nikolaeva Общие вопросы Delphi 2 29.10.2007 11:03