Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: VB6 подвисает при Unload Добавлено: 06.02.04 15:30  

Автор вопроса:  sYstEmiZer | ICQ: 280647023 

VB круто виснет на Unload . Из-за чего такое может быть?

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 06.02.04 23:05
Ты было уменя что-то типа. Нажмаешь на Unload и VB вылитает, вообщем я VB переустановил и всё ОК!

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 06.02.04 23:10

А что именно ты выгружаешь !?

Ответить

Номер ответа: 3
Автор ответа:
 sYstEmiZer



ICQ: 280647023 

Вопросов: 16
Ответов: 45
 Профиль | | #3 Добавлено: 09.02.04 10:26

Из одной формы открывается вторая - модальная. Так вот при закрытии модальной (крестиком) нужно, чтобы первая тоже выгружалась. Код такой:

Private Sub Form_Unload(Cancel As Integer)

Unload UF_Nakl 'модальная форма(вторая)

Set UF_Nakl = Nothing

Unload Terminal 'основная форма(первая) - на этом месте круто подвисает

Set Terminal = Nothing

End Sub

Ответить

Номер ответа: 4
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #4
Добавлено: 09.02.04 10:44

sYstEmiZer , MSDN сказал VB будет висеть, а именно

"SYMPTOMS
In Visual Basic, if one form shows another form modally, and the second form tries to unload the first form in either its Unload or Query_Unload event, Visual Basic hangs.

CAUSE
When unloading a modal form's parent form, Visual Basic enters an infinite loop. "

Решай свою проблему по другому.

К примеру, при вызове модальной формы:

ModalForm.Show vbModal 'показ модальной формы

Unload Me   'выгрузка родительсокй формы

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 09.02.04 11:37

Попробуй Nothing не присваивать... должно помочь! Сам с такой же проблеммой встречался (на какой-то версии msvbvm именно такая вот хрень...)

Ответить

Номер ответа: 6
Автор ответа:
 sYstEmiZer



ICQ: 280647023 

Вопросов: 16
Ответов: 45
 Профиль | | #6 Добавлено: 09.02.04 11:43

Привет, boevik! Выгрузить родительскую при закрытии дочерней модальной не могу - на ней данные находятся!!!!! Че делать?

Nothing убирал - по фигу, все равно виснет!!!

Ответить

Номер ответа: 7
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #7
Добавлено: 09.02.04 12:50

<Выгрузить родительскую при закрытии дочерней модальной не могу - на ней данные находятся>

А как же ты собирался из дочерней выгружать родительскую форму? Или я что то не так понял?

Ответить

Номер ответа: 8
Автор ответа:
 sYstEmiZer



ICQ: 280647023 

Вопросов: 16
Ответов: 45
 Профиль | | #8 Добавлено: 09.02.04 13:02

boevik, да не, у меня во как:

1. Основная форма (Terminal) открывается и на ней вводятся данные

2. Затем при нажатии на кнопку появляется дочерняя (UF_Nakl) модальная форма

3. Так вот закрываю я модальную (Х)

4. И хочу чтобы выгрузилась основная и модальная, а выполнение кода прекратилось.

Ответить

Номер ответа: 9
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #9
Добавлено: 09.02.04 13:18

Так в чем проблема с таким кодом?

в форме Terminal на кнопке открытия формы:

UF_Nakl.Show vbModal   'загрузка модальной формы и ОЖИДАНИЕ ее завершения

Unload Me 'выгрузка формы Terminal

Ответить

Номер ответа: 10
Автор ответа:
 sYstEmiZer



ICQ: 280647023 

Вопросов: 16
Ответов: 45
 Профиль | | #10 Добавлено: 09.02.04 13:32

ОК! Понял, спасибо!

А как определить, что модальная форма закрылась именно (Х), чтобы толко в этом случае выгружать основную?

Ответить

Номер ответа: 11
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #11
Добавлено: 09.02.04 13:45

А как ты еще закрываешь форму? И какая разница?

Если к примеру есть кнопки OK and Cancel, то сделай public флаг и проверяй через что произошло закрытие и действуй соотвествуеще

Ответить

Номер ответа: 12
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 09.02.04 13:46

Думаю вот тут уже без сабклассинга модальной формы не обойтись :(

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 09.02.04 15:09

Обрабатывай Query_Unload

Ответить

Номер ответа: 14
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #14
Добавлено: 09.02.04 17:01

А, ну да, тоже верно :) , на худой конец можно завести глобальную переменную... И по ней смотреть, как пользователь выходит... крестиком, аль кнопочкой...

Ответить

Номер ответа: 15
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #15 Добавлено: 10.02.04 09:39

Немного поясню:

пример содержит модуль и две формы, по одной кнопке на каждой

'код модуля

Option Explicit

Public ExitType As Byte

'код основной формы

Option Explicit

Private Sub Command1_Click()

Form2.Show 1

If ExitType = vbFormControlMenu Then Unload Me

End Sub

'код модальной формы

Option Explicit

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

ExitType = UnloadMode

End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам