Форма не выгружается

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Форма не выгружается

Сообщение Alexanbar » 19.02.2006 (Вс) 1:00

Есть на форма этот ..й DHTMLEdit. В определённых случаях форма категорически отказывается выгружаться, т.е., жмёшь на крестик, и ничего не происходит.
:!: Событие Form_queryunload НЕ ПРОИСХОДИТ.

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 19.02.2006 (Вс) 1:17

>> этот ..й DHTMLEdit

Какой конкретно DHTML Edit?
Помню, у меня был похожий случай, так вся беда оказалась от того, что контрол был shareware и я его не зарегил... Так эта гадость крепко заседала в раму =(
Может, у тебя тоже самое?

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.02.2006 (Вс) 2:00

Версия 6.1.0.9102.

Есть у меня ещё процедура Navigate1, загружающая код страницы в Textbox, а затем из него - в DHTMLEdit.

Свинство происходит тогда, когда я хотя бы раз воспользовался кнопками на Toolbar-e. Кнопки есть Refresh, Back, Forward. В частности, для кнопки Refresh выполняется код Navigate1 url. ИЛи ввожу текст в Combobox. Если просто кликаю по ссылкам - всё выгружается.

Т.е, если я ввожу адрес любым способом, кроме, как кликаньем по документу в DHTMLEDit - выгрузка прекращается. Сейчас чуть подправил код . Сама форма выгружается, а чего-то в памяти висит.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.02.2006 (Вс) 2:27

Ну, вроде чуть-чутьт полегчало. Одну строковую переменную нужно очищать. Не разобрался пока, где из-за этого клинит. Но когда есть ошибки в адресной строке , всё равно что-то клинит.

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 19.02.2006 (Вс) 3:55

Афигеть! +_+
И после этого ты продолжаешь юзать этот контрол?
Я бы на твоем месте из принципа выкинул... Ну... тебе виднее.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.02.2006 (Вс) 11:03

AjaxVS писал(а):Афигеть! +_+
И после этого ты продолжаешь юзать этот контрол?
Я бы на твоем месте из принципа выкинул... Ну... тебе виднее.

Другого нет

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 19.02.2006 (Вс) 17:38

Просто совет, из опыта.

Возможно, где-то выполяется цикл с DoEvents. Ещё бывает форма не выгружается при таком коде

Код: Выделить всё
Unload SomeForm
Set SomeForm = Nothing


ЗЫ. Не выгружается - значит остаётся в памяти, в твоём случае это называется "не закрывается".
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 19.02.2006 (Вс) 23:15

Просмотрел все циклы DO и While. Ввёл даже спец. переменную

Код: Выделить всё
Public cmdUnload As Boolean
....

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

....
cmdUnload = True

....
end sub


private sub xxxx

....
do
...
if cmdUnload then exit sub
loop

end sub


Ксатати, обнаружил похожую неприятность и с Webbrowser.

Если он не хочет или не может отображать документ, происходит событие Filedownload.

И там не удаётся отменить вывод диалога загрузки и замена его на свой. Всё либо виснет, либо при закрытии окна всё идёт хорошо, но при закрытии приложения вылазит окошко с сообщением об аварийном завершении.

Код после Cancel вообще не выполняется, а если Cancel ставить после собственного кода, то, естественно, идёт и мой диалог, и встроенный.

Код: Выделить всё
Private Sub brwWebBrowser_FileDownload(Cancel As Boolean)
.....

'этот код выполняется, но успевает выйти и встроенный диалог

Cancel=True

'мой код, который вообще никогда не выполняется

end sub

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 20.02.2006 (Пн) 1:09

Unload SomeForm
Set SomeForm = Nothing

Хм... А по-моему, наоборот - это и есть единственно правильное решение для выгрузки формы из памяти. Разве нет?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.02.2006 (Пн) 7:11

Неа...предполагаю что так

Код: Выделить всё

Class Form


  Private Sub Form_Inititalize
     'Конструктор
      Set Me = New Form
  End Sub
  Private Sub Form_Terminate
     'Деструктор
      Set Me = Nothing
  End Sub
End Class


Так вот когда мы вот второй строчке сбрасываем в Nothing нашу форму она перед этим создаётся (т.е. происходит _Initialize - event). И теперь мы уже имеем New форму, а форма созданная до New на самом деле и сбрасывается в Nothing.

Вот такие предполажения :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 21.02.2006 (Вт) 1:11

Дурдом какой-то...
Если честно, не верится, что столько справочников и MS Help-ов ошибаются...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.02.2006 (Вт) 6:14

По моему нужно делать либо то, либо другое. А то получается "масло масленное". А я, если честно, нигде не видел в справочниках, чтоб объект удаляли сразу двумя способами одновременно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList