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

Есть форма. На форме есть кнопка 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
11.06.2010, 16:05
    #36683257
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
h7h2vC,

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

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

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

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

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

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

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

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

В форме используются функции:
Код: 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
11.06.2010, 16:37
    #36683349
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 'Unable to unload within this context' при команде "Unload me" в CancelButton_Click
Скорее всего потому, что у вас непрерывно работает ProcessMessages.

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

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


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