powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
16 сообщений из 16, страница 1 из 1
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683162
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем, Товарищи.

Есть форма. На форме есть кнопка cmdCancel .
Код: plaintext
1.
2.
Private Sub cmdCancel_Click()
  Unload Me
End Sub
При клике на кнопку видим вышеназванную ошибку (пробовал выгружать форму через таймер, запускаемый кнопкой выхода - результат тот же).

Главное то, что на форме также присутствует фрейм fraWCO с индексом 0 (внутри фрейма еще несколько контроллов - все с индексом 0 ), используемый для динамического построения копий себя в массив фреймов.

Если этому фрейму в дизайнере поставить пустое место вместо Index, то ошибка исчезает.

Ошибка возникает даже если ни один элемент массива, кроме нулевого еще не был загружен. fraWCO.Count=1

Если попытаться загружать элементы в массив, то ошибка возникнет при первом же проходе первого цикла очищения элементов фрейма:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
'ОЧИСТКА
While fraWCO.Count >  1 

  For Each CTL In Controls
    If StrComp(TypeName$(CTL), "Menu") Then If CTL.Container Is fraWCO(fraWCO.Count -  1 ) Then Unload CTL
  Next

  Unload fraWCO(fraWCO.Count -  1 )
Wend
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683257
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h7h2vC,

Что-то у вас причинно-следственная связь, мне кажется, неверна.

Ну-ка дайте сюда вашу форму, желательно очищенную от постороннего кода. Там явно есть что-то еще. То, что вы описали не может приводить к вышеописанной ошибке.
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683269
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
'ОЧИСТКА
For i= 1  To fraWCO.Count- 1 
  Unload fraWCO(i)
Next

Так не проще? Единственное, предполагаются, что индексы идут подряд...
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683310
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, разве перед выгрузкой фрейма не нужно выгружать все контролы, для которых он - Container?
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683316
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h7h2vCShocker.Pro, разве перед выгрузкой фрейма не нужно выгружать все контролы, для которых он - Container?

НУ сначала внутренние, потом внешний....

Другой вопрос, вы не хотите грузить контролы через Controls.Add?
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683323
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, подскажите, пожалуйста, какие это дает преимущества.

Мне необходимо загружать элементы, которые по геометрии, параметрам и т.д. идентичны образцовому.
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683328
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h7h2vCShocker.Pro, подскажите, пожалуйста, какие это дает преимущества.

Мне необходимо загружать элементы, которые по геометрии, параметрам и т.д. идентичны образцовому.

Ну, нет, так нет...
В любом случае, это, по вашим словам, не связано с загрузкой новых контролов, так как глюк возникает до их загрузки.
Так что жду форму для экспериментов.
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683342
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, я был не прав с предположением причины ошибки.

В форме используются функции:
Код: plaintext
1.
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As MSG, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
для перехвата события MouseScroll:
Код: plaintext
1.
2.
Private Sub Form_Activate()
ProcessMessages
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub ProcessMessages()
'Exit Sub

On Error Resume Next

Dim Message As MSG
Do While Not bCancel
    
    WaitMessage 'Wait For message and...
    If PeekMessage(Message, Me.hWnd, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_REMOVE) Then '...when the mousewheel is used...
        If Message.wParam <  0  Then '...scroll up...
            vsbWave.VALUE = IIF_L(vsbWave.VALUE +  1  > vsbWave.Max, vsbWave.Max, vsbWave.VALUE +  1 )
        Else '... or scroll down
            vsbWave.VALUE = IIF_L(vsbWave.VALUE -  1  < vsbWave.Min, vsbWave.Min, vsbWave.VALUE -  1 )
        End If
    End If
    DoEvents
Loop
End Sub

Если это убрать - ошибки исчезают. Подскажите, пожалуйста, как можно решить проблему..
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683349
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего потому, что у вас непрерывно работает ProcessMessages.

Заставьте ее выключиться перед Unload Me
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683357
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, как это сделать? =)
Код: plaintext
1.
2.
3.
Private Sub cmdCancel_Click()
  bCancel = True
  Unload Me
End Sub
Не помогает
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683362
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разумеется

Код: plaintext
1.
2.
3.
4.
Private Sub cmdCancel_Click()
  bCancel = True
  DoEvents
  Unload Me
End Sub
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683364
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
4.
Private Sub cmdCancel_Click()
  bCancel = True
  DoEvents
  Unload Me
End Sub
Не помогает
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683365
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда у меня предположения закончились, в API я не спец
Либо дайте урезанную форму поиграться, либо Antonariy что-нить умное скажет, если уже на дачу не уехал :)
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683375
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, что у вас в Form_Unload? Может там чего мешает?
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683380
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Form_Unload(Cancel As Integer)
  mblnFormActivated = False
  mblnFormPainted = False
  bCancel = True
  m_COPRID = False
  m_CODID =  0 
End Sub
...
Рейтинг: 0 / 0
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
    #36683385
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась, в Form_Load нужно было написать: AutoRedraw = True
Shocker.Pro, спасибо за внимание =)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]