Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Unable to unload within this context Кто знает, как победить?

266
17 ноября 2003 года
mhaturov
901 / / 23.10.2003
Ситуация следующая. Есть мой собственный контрол. При загрузке формы я загружаю массив из этих контролов. При изменении некоторых свойств формы я выгружаю этот массив контролов (кроме того, что с индексом 0) и загружаю другое уже количество контролов. Но при выгрузке:

For I = UA.UBound To UA.LBound + 1 Step (-1)
Unload UA(UA.UBound)
Next

Получаю сообщение:
Unable to unload within this context
Номер ошибки 365.
Что не так может быть? Может, нужно что-то для самого контрола описать, чтобы он выгружался? Как с этим бороться?
267
17 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Скорее всего, это не имеет значения, но мне режет глаз, когда внутри цикла for...next меняются значения переменных, определяющих его начало и конец. На такой случай есть ведь всякие do...loop.

Кстати, он у тебя при первом проходе цикла вылетает, или при последующих?
266
17 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Cutty Sark
Скорее всего, это не имеет значения, но мне режет глаз, когда внутри цикла for...next меняются значения переменных, определяющих его начало и конец. На такой случай есть ведь всякие do...loop.

Кстати, он у тебя при первом проходе цикла вылетает, или при последующих?



Ну тут верхняя граница цикла не критична - счётчику параллельно, чему она становится равно при последующих проходах - просто я так уже много лет, как привык писать.
Программа валится при 1 проходе цикла.
Тут, подозреваю, сабака зарыта в том, что я выгружаю не стандартные контролы, а те, которые сам разрабатывал. Боюсь, что что-то в них не описал, либо не правильно описал.:{
P.S. Сейчас поменял цикл на:

While UA.UBound > 0
Unload UA(UA.UBound)
Wend

Всё равно валиться :{

258
17 ноября 2003 года
SergeySV
1.5K / / 19.03.2003
Проверь ка для начала: Unload UA(0) или UA(1), если и так будет вылетать, значит дело в контроле...
266
17 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
Проверь ка для начала: Unload UA(0) или UA(1), если и так будет вылетать, значит дело в контроле...



Валится, гад :{ . Что в контроле может быть не так? Какие свойства, события, процедуры нужно описывать для него для корректной выгрузки.
Подробне, что есть на контроле:
Текстбокс, 2 лабела (не в массиве), комбобокс, календарь (DateTimePicer, или как он там пишется), лайн (линия для рисования), 1 мой контрол, который сам состоит из массива текстбоксов, меток и 2 (в мсааиве) кнопок CommandButton.

266
17 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


Валится, гад :{ . Что в контроле может быть не так? Какие свойства, события, процедуры нужно описывать для него для корректной выгрузки.
Подробне, что есть на контроле:
Текстбокс, 2 лабела (не в массиве), комбобокс, календарь (DateTimePicer, или как он там пишется), лайн (линия для рисования), 1 мой контрол, который сам состоит из массива текстбоксов, меток и 2 (в мсааиве) кнопок CommandButton.



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

266
17 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov


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



Народ! Решил! Это прикол!!! Оказывается, правда, нельзя выгружать контролы по событию Change и Click по комбобоксу!!! Я на эти события вешаю таймер в 100 милисекунд и по его срабатыванию перерисовываю всё, вернее, выгружаю контролы!!! и всё работает!!!:D Я балдею!!!

239
17 ноября 2003 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by mhaturov


Народ! Решил! Это прикол!!! Оказывается, правда, нельзя выгружать контролы по событию Change и Click по комбобоксу!!! Я на эти события вешаю таймер в 100 милисекунд и по его срабатыванию перерисовываю всё, вернее, выгружаю контролы!!! и всё работает!!!:D Я балдею!!!



Ты смотри поокуратнее! Я в свое время на этом "собау съел" %) Вообще с таймером лучше в ВБ дела не иметь. Во-первых, он сильно грузит систему, причем не понятно, почему! Во-вторых, кто знает, что юзер успеет сделать за эти 0.1 секунды (я успевал много гадостей сделать %).

У меня была задержка на обновление листа после клика на дереве (программа Agava CD Catalog), так там пришлось столько всего учитывать, что было бы проще отказаться от этой идеи.

266
18 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Dolonet


Ты смотри поокуратнее! Я в свое время на этом "собау съел" %) Вообще с таймером лучше в ВБ дела не иметь. Во-первых, он сильно грузит систему, причем не понятно, почему! Во-вторых, кто знает, что юзер успеет сделать за эти 0.1 секунды (я успевал много гадостей сделать %).

У меня была задержка на обновление листа после клика на дереве (программа Agava CD Catalog), так там пришлось столько всего учитывать, что было бы проще отказаться от этой идеи.



Да нет, я таймеры раньше часто применял. Один раз даже сделал при помощи таймера грамотный ресайз кулбара, несмотря на то, что народ у нас заявлял, что без API не обойтись. А потом ведь схема работы у таймера такова: событие - таймер активирован - событие срабатывания таймера - отключение таймера - событие, которое вызывается по его срабатыванию. При такой схеме и задежке в 0.1 секунды, во-первых, система не успевает особо нагрузиться, а во-вторых, вряд ли кто-то из пользователей за десятую секунды успеет что-то отмочить. К тому же. задежку можно даже уменьшить - тут главное, чтобы событие, активирующее таймер, успело отработать, а то могут глюки пойти.

239
18 ноября 2003 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by mhaturov


Да нет, я таймеры раньше часто применял. Один раз даже сделал при помощи таймера грамотный ресайз кулбара, несмотря на то, что народ у нас заявлял, что без API не обойтись. А потом ведь схема работы у таймера такова: событие - таймер активирован - событие срабатывания таймера - отключение таймера - событие, которое вызывается по его срабатыванию. При такой схеме и задежке в 0.1 секунды, во-первых, система не успевает особо нагрузиться, а во-вторых, вряд ли кто-то из пользователей за десятую секунды успеет что-то отмочить. К тому же. задежку можно даже уменьшить - тут главное, чтобы событие, активирующее таймер, успело отработать, а то могут глюки пойти.



Это тебе ВБ может писать про 1/1000 секунды! на самом деле там частота будет не больше 25-50 событий в секунду. все-равно будь осторожен %))

266
19 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Dolonet


Это тебе ВБ может писать про 1/1000 секунды! на самом деле там частота будет не больше 25-50 событий в секунду. все-равно будь осторожен %))


Спасибо. Приму во внимание.

648
20 ноября 2003 года
Tiraspolsky
220 / / 23.07.2003
Попробуй так.

While UA.UBound >0
Unload UA(UA.UBound)
wend
266
20 ноября 2003 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Tiraspolsky
Попробуй так.

While UA.UBound >0
Unload UA(UA.UBound)
wend


Да эту проблему я уже решил (см. выше). Тут дело было в моменте вызова выгрузки контролов.:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог