удаление ToolBar.Buttons.ButtonMenu

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

удаление ToolBar.Buttons.ButtonMenu

Сообщение Lord207 » 25.08.2006 (Пт) 16:16

в вб65 сталкнулся с таким забавным глюком:
на форму бросаем тулбар, делаем в нем одну кнопку стиля tbrDropdown
закидываем на форму эти 3 строки кода

Private Sub Form_Load()
Dim i&

For i = 1 To 20
Toolbar1.Buttons(1).ButtonMenus.Add , "Table " & i, "Table " & i
Next

End Sub

Private Sub Toolbar1_ButtonMenuClick(ByVal ButtonMenu As MSComctlLib.ButtonMenu)

MsgBox ButtonMenu.Key
Toolbar1.Buttons(1).ButtonMenus.Remove ButtonMenu.Key

End Sub


и наслаждаемся багом:
клацаем на "Table 1", видим соотв мессагу "Table 1", пункт меню удаляется.
клацаем на "Table 3", видим НЕСООТВЕТСТВУЮЩУЮ мессагу "Table 4"!
в общем случае это выглядит так: после удаления N-го п.меню и выбора
N+iго п.меню в событие Toolbar1_ButtonMenuClick передается N+i+1й п.меню

что это за лажа и как с этим бороться?
жизнь.ехе /?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 25.08.2006 (Пт) 16:32

Непонятно, зачем такое на практике может понадобиться.

Решается тривиально, вставкой следующей строки:
Код: Выделить всё
Call Me.Toolbar1.Refresh
непосредственно после удаления элемента меню кнопки.

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

Lord207
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 25.08.2006 (Пт) 15:39

Сообщение Lord207 » 25.08.2006 (Пт) 16:54

Понадобиться может, например, когда в этом списке набор объектов(имен) - по клику он втыкается на форму, но больше одного раза на ней присутствовать не может. т.е. его из списка надобно снести.

Нерешается оно тривиально. Если б было все так просто я бы сюда не постился )

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

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 25.08.2006 (Пт) 16:59

Lord207 писал(а):Нерешается оно тривиально.

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

Кстати, какой у тебя сервис-пак на Студии?

Lord207
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 25.08.2006 (Пт) 15:39

Сообщение Lord207 » 28.08.2006 (Пн) 13:25

Ennor писал(а):
Lord207 писал(а):Нерешается оно тривиально.

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

Кстати, какой у тебя сервис-пак на Студии?


vb60 (sp6)
mscomctl.ocx - 6.1.97.82

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


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

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

Сейчас этот форум просматривают: Mail.ru [бот], Yandex-бот и гости: 44

    TopList