![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Доброго времени суток. Есть такой вопрос - есть массив контролов на форме. Создается пользователем в режиме работы программы (отрабатыет команда "Load <object(Index)>"). Соответственно, пользователь может элементы массива удалять. Но тогда в последовательности элементов возникают разрывы. Например, есть массив из элементов с индексами 1, 2, 3. Удаляем второй элемент и имеем тогда массив из 1 и 3 элементов. Хотелось бы теперь для ликвидации дискретности 3-ий элемент переназначить как 2-ой. Вопрос, как это сделать? Свойство контрола Object.Index существует только для чтения. Вот и спрашивается, можно ли как-то переназначить элементу массива его индекс уже в режиме выполнения программы?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
А смысл?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Если в цикле идет перебор всех элементов массива, то при обработке уже несуществующего элемента, программа вывалится с ошибкой.
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Да, это понятно. Но вот, например, заводится новый элемент. Какой индекс ему указать? Следующий по старшинству, несмотря на наличие свободных номеров внутри последовательности элементов? Тогда получается, что счетчик элементов массива будет постоянно расти. А если операций добавления-удаления элементов много, то в итоге величина счетчика будет запредельна. Как это все разрешить я знаю, но это пути изобретательства. Просто возник вопрос, нельзя ли это все сделать просто. Я так понял, что в VB нельзя запросто так менять индекс контролу в режиме выполнения приложения.
|
|||
|
||||
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Конечно.
Если количество ВИЗУАЛЬНЫХ элементов превышает размерность индекса - следует пересмотреть идеологию. Что-то запроектировано неверно. В качестве же паллиативного решения, например, можно выбрать замену удаления на деактивацию и сокрытие контрола. А когда понадобится - реактивировать его. Новые же добавлять лишь в случае, когда все контролы активны. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Все верно. Есть и другие решения, как, например, создание массива, содержащего номера освободившихся ячеек, но, как я уже сказал, это придумывание выхода из ситуации. В общем, вопросов по данной теме у меня больше нет. Спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |