Unable to unload within this context Кто знает, как победить?
For I = UA.UBound To UA.LBound + 1 Step (-1)
Unload UA(UA.UBound)
Next
Получаю сообщение:
Unable to unload within this context
Номер ошибки 365.
Что не так может быть? Может, нужно что-то для самого контрола описать, чтобы он выгружался? Как с этим бороться?
Кстати, он у тебя при первом проходе цикла вылетает, или при последующих?
Скорее всего, это не имеет значения, но мне режет глаз, когда внутри цикла for...next меняются значения переменных, определяющих его начало и конец. На такой случай есть ведь всякие do...loop.
Кстати, он у тебя при первом проходе цикла вылетает, или при последующих?
Ну тут верхняя граница цикла не критична - счётчику параллельно, чему она становится равно при последующих проходах - просто я так уже много лет, как привык писать.
Программа валится при 1 проходе цикла.
Тут, подозреваю, сабака зарыта в том, что я выгружаю не стандартные контролы, а те, которые сам разрабатывал. Боюсь, что что-то в них не описал, либо не правильно описал.:{
P.S. Сейчас поменял цикл на:
While UA.UBound > 0
Unload UA(UA.UBound)
Wend
Всё равно валиться :{
Проверь ка для начала: Unload UA(0) или UA(1), если и так будет вылетать, значит дело в контроле...
Валится, гад :{ . Что в контроле может быть не так? Какие свойства, события, процедуры нужно описывать для него для корректной выгрузки.
Подробне, что есть на контроле:
Текстбокс, 2 лабела (не в массиве), комбобокс, календарь (DateTimePicer, или как он там пишется), лайн (линия для рисования), 1 мой контрол, который сам состоит из массива текстбоксов, меток и 2 (в мсааиве) кнопок CommandButton.
Валится, гад :{ . Что в контроле может быть не так? Какие свойства, события, процедуры нужно описывать для него для корректной выгрузки.
Подробне, что есть на контроле:
Текстбокс, 2 лабела (не в массиве), комбобокс, календарь (DateTimePicer, или как он там пишется), лайн (линия для рисования), 1 мой контрол, который сам состоит из массива текстбоксов, меток и 2 (в мсааиве) кнопок CommandButton.
Может это окажется важным, но Unload производится в процедуре, котороая вызывается по клику и чейнджу комбобокса. Может быть, на это есть какие-либо ограничения?
Может это окажется важным, но Unload производится в процедуре, котороая вызывается по клику и чейнджу комбобокса. Может быть, на это есть какие-либо ограничения?
Народ! Решил! Это прикол!!! Оказывается, правда, нельзя выгружать контролы по событию Change и Click по комбобоксу!!! Я на эти события вешаю таймер в 100 милисекунд и по его срабатыванию перерисовываю всё, вернее, выгружаю контролы!!! и всё работает!!!:D Я балдею!!!
Народ! Решил! Это прикол!!! Оказывается, правда, нельзя выгружать контролы по событию Change и Click по комбобоксу!!! Я на эти события вешаю таймер в 100 милисекунд и по его срабатыванию перерисовываю всё, вернее, выгружаю контролы!!! и всё работает!!!:D Я балдею!!!
Ты смотри поокуратнее! Я в свое время на этом "собау съел" %) Вообще с таймером лучше в ВБ дела не иметь. Во-первых, он сильно грузит систему, причем не понятно, почему! Во-вторых, кто знает, что юзер успеет сделать за эти 0.1 секунды (я успевал много гадостей сделать %).
У меня была задержка на обновление листа после клика на дереве (программа Agava CD Catalog), так там пришлось столько всего учитывать, что было бы проще отказаться от этой идеи.
Ты смотри поокуратнее! Я в свое время на этом "собау съел" %) Вообще с таймером лучше в ВБ дела не иметь. Во-первых, он сильно грузит систему, причем не понятно, почему! Во-вторых, кто знает, что юзер успеет сделать за эти 0.1 секунды (я успевал много гадостей сделать %).
У меня была задержка на обновление листа после клика на дереве (программа Agava CD Catalog), так там пришлось столько всего учитывать, что было бы проще отказаться от этой идеи.
Да нет, я таймеры раньше часто применял. Один раз даже сделал при помощи таймера грамотный ресайз кулбара, несмотря на то, что народ у нас заявлял, что без API не обойтись. А потом ведь схема работы у таймера такова: событие - таймер активирован - событие срабатывания таймера - отключение таймера - событие, которое вызывается по его срабатыванию. При такой схеме и задежке в 0.1 секунды, во-первых, система не успевает особо нагрузиться, а во-вторых, вряд ли кто-то из пользователей за десятую секунды успеет что-то отмочить. К тому же. задежку можно даже уменьшить - тут главное, чтобы событие, активирующее таймер, успело отработать, а то могут глюки пойти.
Да нет, я таймеры раньше часто применял. Один раз даже сделал при помощи таймера грамотный ресайз кулбара, несмотря на то, что народ у нас заявлял, что без API не обойтись. А потом ведь схема работы у таймера такова: событие - таймер активирован - событие срабатывания таймера - отключение таймера - событие, которое вызывается по его срабатыванию. При такой схеме и задежке в 0.1 секунды, во-первых, система не успевает особо нагрузиться, а во-вторых, вряд ли кто-то из пользователей за десятую секунды успеет что-то отмочить. К тому же. задежку можно даже уменьшить - тут главное, чтобы событие, активирующее таймер, успело отработать, а то могут глюки пойти.
Это тебе ВБ может писать про 1/1000 секунды! на самом деле там частота будет не больше 25-50 событий в секунду. все-равно будь осторожен %))
Это тебе ВБ может писать про 1/1000 секунды! на самом деле там частота будет не больше 25-50 событий в секунду. все-равно будь осторожен %))
Спасибо. Приму во внимание.
While UA.UBound >0
Unload UA(UA.UBound)
wend
Попробуй так.
While UA.UBound >0
Unload UA(UA.UBound)
wend
Да эту проблему я уже решил (см. выше). Тут дело было в моменте вызова выгрузки контролов.:)