Надо закрыть дочернюю форму, оставив родительскую в покое ..

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

Надо закрыть дочернюю форму, оставив родительскую в покое ..

Сообщение Slavicos » 16.11.2005 (Ср) 17:19

Предположим

if a=1 then
<что-то там>
else if a=2 then
<что-то там>
<выгрузить дочернюю форму>
else
<что-то там>
end if

<еще какие-то строки>

Вопрос, собственно, про <выгрузить дочернюю форму>:
- если использовать unload me - форма выгружается, но продолжает работать (выполняются <еще какие-то строки>).
- если использовать end - закрывается даже родительская форма - а не надо.
Так что делать-то? Надо дочернюю форму закрыть и удалить все, что было с ней связано (то есть переменные), а родительскую оставить.

Заранее благодарен за умные мысли.
Больно не бить!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 16.11.2005 (Ср) 17:22

Что значит
продолжает работать (выполняются <еще какие-то строки>).
:?:
Какой-то цикл гоняется?
И что значит дочерняя? MDI?
Лучший способ понять что-то самому — объяснить это другому.

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Сообщение Slavicos » 16.11.2005 (Ср) 17:27

Antonariy писал(а):Что значит
продолжает работать (выполняются <еще какие-то строки>).
:?:
Какой-то цикл гоняется?
И что значит дочерняя? MDI?


Да, в еще <каких-то строках> есть пара-другая циклов.
Именно MDI.
Больно не бить!

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 16.11.2005 (Ср) 17:40

А MDI формам Unload не подходит?

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Re: Надо закрыть дочернюю форму, оставив родительскую в поко

Сообщение Slavicos » 16.11.2005 (Ср) 17:50

Slavicos писал(а):- если использовать unload me - форма выгружается, но продолжает работать (выполняются <еще какие-то строки>).


Конечно чушь, я согласен, но почему-то именно так:-(
Где я не прав?
Больно не бить!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.11.2005 (Ср) 17:57

Поискать на форме таймеры, места с DoEvents, циклы с задержкой и все потенциально рекурсивные события (типа TextBox_Change) и искать баги в них.
Lasciate ogni speranza, voi ch'entrate.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 16.11.2005 (Ср) 18:33

Господа, а вы не перемудрили? Когда это Unload me останавливал выполнение процедуры?

На всякий случай еще вопрос: Этот код "if a=1 then " - в дочерней форме?

Если код не должен дальше выполняться, то должно быть
Код: Выделить всё
else if a=2 then
    <что-то там>
    Unload me
    Exit sub
else
    ....
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Сообщение Slavicos » 17.11.2005 (Чт) 9:15

Всем спасибо за поддержку.
Попробую вариант с exit sub
Можно еще попробовать с goto
Больно не бить!

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Сообщение Slavicos » 17.11.2005 (Чт) 10:07

Rainbow писал(а):Этот код "if a=1 then " - в дочерней форме?


Yes!

Rainbow писал(а):Если код не должен дальше выполняться, то должно быть
Код: Выделить всё
else if a=2 then
    <что-то там>
    Unload me
    Exit sub
else
    ....


Если так сделать появится сообщение об ошибке типа if без endif.
Пришлось воспользоваться goto (а как не хотелось:-(
Больно не бить!

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 17.11.2005 (Чт) 11:50

Если так сделать появится сообщение об ошибке типа if без endif.
Пришлось воспользоваться goto (а как не хотелось

Чего? Не в этом дело. У тебя где-то ошибка в другм. Покажи свой оператор целиком.

Предположение:
Нельзя писать "else if" - есть оператор elseif

if (a > 2) then
elseif (b > 1)
end if

Правда, если ты оставил "else if" - то и goto не должно было скомпилиться.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Slavicos
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 16.11.2005 (Ср) 17:04

Сообщение Slavicos » 17.11.2005 (Чт) 15:05

Ну да, конечно, пишеться слитно - elseif.
А ошибка в "еще какие-то строки" появляется именно потому, что кое-какие переменные не существуют, если форма выгружается (точнее они пропадают, т.к. выгружается еще три дочерние формы).
Ох, как там все запущено.
В любом случае, подошла конструкция

.................
.................
GoTo END_WORK
.................
.................
.................
END_WORK:
End Sub

Хотя лично мне этот вариант не нравится (эстет, млин), поэтому еще не полностью закончил поиски, хотя уже и делаю дальше.

"Нет предела совершенству" и в тоже время "Лучшее враг хорошего"
Больно не бить!


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

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

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

    TopList