Load & Unload пунктов меню, Палундра

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

Load & Unload пунктов меню, Палундра

Сообщение Selektor » 12.04.2007 (Чт) 9:50

Ситация следующая:
После того как пользователь выбирает населенный пункт, нужно создать меню в котором будут улицы этого населенного пункта.
Создаю руками меню, делаю там один пункт с индексом 0, название mH
Затем заполняю из рекордсета.

Do While Recorset.EOF = False
Load mH(mH.Count)
mH(mH.Count - 1).Caption = Recordset![Name]
mH(mH.Count - 1).Tag = Recordset![ID]
mH(mH.Count - 1).Enabled = True
Recordset.MoveNext
Loop

С этим проблем не возникает, все впорядке. При следующем выборе населенного пункта мне нужно опять сгенерить менюшку с улицами, для этого мне нужно сначало отчистить меню от старых улиц, чтобы записть в них новые и тут:...

For c = 1 To mH.Count - 1
Unload mH(c)
Next

собственно и возникает ошибка, на унлоаде пункта меню.
Помогите решить задачу.
Вернее объясните почему Load работает а Unload нет. Если предложите начинать с конца массива пунктов меню, то это не работает, я пробовал.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.04.2007 (Чт) 9:59

вообще то у меня в тестовом примере все работает в любом порядке
Весь мир матрица, а мы в нем потоки байтов!

Selektor
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.12.2006 (Вт) 13:01

Сообщение Selektor » 12.04.2007 (Чт) 10:05

А у меня при попытке унлоада говорит "Unable to unload within this context" :(. Почему?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.04.2007 (Чт) 10:14

больше кода давай
Весь мир матрица, а мы в нем потоки байтов!

Selektor
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.12.2006 (Вт) 13:01

Сообщение Selektor » 12.04.2007 (Чт) 10:19

Впринципе
Private Sub Combo1_Click()
Dim c As Long
AD.OpenRecordset "SELECT ID,NAME from STREET WHERE ID_TOWN=" & Combo1.ItemData(Combo1.ListIndex) & ";", 5
'On Error Resume Next
For c = 1 To mHFile.Count - 1
mHFile(c).Enabled = False
Unload mHFile(c)
Next

Do While AD.GetRS(5).EOF = False
'MsgBox mStreets.Count
Load mHFile(mHFile.Count)
mHFile(mHFile.Count - 1).Caption = AD.GetRS(5)![Name]
'mHFile(mHFile.Count - 1).Tag = AD.GetRS(5)![ID]
mHFile(mHFile.Count - 1).Enabled = True
AD.GetRS(5).MoveNext
Loop
AD.CloseRecordset 5

ReConnectStreet
End Sub

Вот вообще весь код той процедурки, больше в программе нигде не упомянаеться эта менюшка.

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

Сообщение alibek » 12.04.2007 (Чт) 10:20

В каком событии выгружаешь?
Lasciate ogni speranza, voi ch'entrate.

Selektor
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.12.2006 (Вт) 13:01

Сообщение Selektor » 12.04.2007 (Чт) 10:25

Когда пользователь выбирает в комбобоксе пункт, соответственно Combo1_click.
Унлоадим все пункты меню кроме первого опорного.
Потом заполняем, соответсвенно из открытого рекордсета.
Закрываем реордсет.
Причем у меня прога есть в ней есть пункт история файлов, там у меня все работает нормально. Пользователь открыл файл, списочек переписался. Пользователь опять открыл файл, списочек опять переписался. Там тоже самое используеться, только тут не работает, а там работает.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.04.2007 (Чт) 10:29

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

Посмотри на стек вызовов при получении ошибки
Весь мир матрица, а мы в нем потоки байтов!

Selektor
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.12.2006 (Вт) 13:01

Сообщение Selektor » 12.04.2007 (Чт) 10:29

Так. Так. Сейчас создал кнопку. Рядом с комбо. После того как комбо выбрал. Нажимаю кнопку с этим кодом. РАботает. Потом следующий пункт, опять кнопку. Работает. Почему?
Теперь буду изворачиваться. Всем спасибо. Решение найдено :).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.04.2007 (Чт) 10:38

Ещё один :neutral:
А ведь было достаточно ввести в поиск (выделенный красным) номер ошибки. Но это ж сложно дюже...
http://bbs.vbstreets.ru/viewtopic.php?p=53822#53822
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Selektor
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 26.12.2006 (Вт) 13:01

Сообщение Selektor » 12.04.2007 (Чт) 11:06

GSerg писал(а):Ещё один :neutral:
А ведь было достаточно ввести в поиск (выделенный красным) номер ошибки. Но это ж сложно дюже...
http://bbs.vbstreets.ru/viewtopic.php?p=53822#53822


Извинияюсь, в следующий раз именно так и поступлю :)


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

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

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

    TopList  
cron