Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переназначение индексов контролам 
:(
    Опции темы
Dumm
Дата 16.9.2012, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: 1
Всего: 1



Доброго времени суток. Есть такой вопрос - есть массив контролов на форме. Создается пользователем в режиме работы программы (отрабатыет команда "Load <object(Index)>"). Соответственно, пользователь может элементы массива удалять. Но тогда в последовательности элементов возникают разрывы. Например, есть массив из элементов с индексами 1, 2, 3. Удаляем второй элемент и имеем тогда массив из 1 и 3 элементов. Хотелось бы теперь для ликвидации дискретности 3-ий элемент переназначить как 2-ой. Вопрос, как это сделать? Свойство контрола Object.Index существует только для чтения. Вот и спрашивается, можно ли как-то переназначить элементу массива его индекс уже в режиме выполнения программы?
PM MAIL   Вверх
Akina
Дата 16.9.2012, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



А смысл?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dumm
Дата 16.9.2012, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: 1
Всего: 1



Если в цикле идет перебор всех элементов массива, то при обработке уже несуществующего элемента, программа вывалится с ошибкой.
PM MAIL   Вверх
Akina
Дата 16.9.2012, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Dumm @  16.9.2012,  22:44 Найти цитируемый пост)
Если в цикле идет перебор всех элементов массива

Код

For Each OneControl In ControlWithArray



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dumm
Дата 16.9.2012, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: 1
Всего: 1



Да, это понятно. Но вот, например, заводится новый элемент. Какой индекс ему указать? Следующий по старшинству, несмотря на наличие свободных номеров внутри последовательности элементов? Тогда получается, что счетчик элементов массива будет постоянно расти. А если операций добавления-удаления элементов много, то в итоге величина счетчика будет запредельна. Как это все разрешить я знаю, но это пути изобретательства. Просто возник вопрос, нельзя ли это все сделать просто. Я так понял, что в VB нельзя запросто так менять индекс контролу в режиме выполнения приложения.
PM MAIL   Вверх
Akina
Дата 17.9.2012, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Dumm @  17.9.2012,  00:19 Найти цитируемый пост)
например, заводится новый элемент. Какой индекс ему указать? Следующий по старшинству, несмотря на наличие свободных номеров внутри последовательности элементов?

Конечно.

Цитата(Dumm @  17.9.2012,  00:19 Найти цитируемый пост)
получается, что счетчик элементов массива будет постоянно расти. А если операций добавления-удаления элементов много, то в итоге величина счетчика будет запредельна.

Если количество ВИЗУАЛЬНЫХ элементов превышает размерность индекса - следует пересмотреть идеологию. Что-то запроектировано неверно.
В качестве же паллиативного решения, например, можно выбрать замену удаления на деактивацию и сокрытие контрола. А когда понадобится - реактивировать его. Новые же добавлять лишь в случае, когда все контролы активны.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dumm
Дата 17.9.2012, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.7.2010

Репутация: 1
Всего: 1



Все верно. Есть и другие решения, как, например, создание массива, содержащего номера освободившихся ячеек, но, как я уже сказал, это придумывание выхода из ситуации. В общем, вопросов по данной теме у меня больше нет. Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0877 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.