> Leonid
Спасибо за "болванку" кода:), самому писать с нуля было лень (шутка).
Нет задержек, потому что у вас добавление 10 (а не 9, кстати) пунктов меню исполняется только 1 раз, и кажется, что всё происходит быстро.
А вот если повторить его хотя бы 5 раз (цикл по j в нижеприведённом листинге), то тормозит ещё как, вот попробуйте-ка:
Public Sub MenuAddBad()
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)
Dim ShortcutMenu As IAcadPopupMenu
Set ShortcutMenu = currMenuGroup.Menus("Context menu for default mode")
' Create the new menu
Dim newMenu As AcadPopupMenu
Dim MenuName As String
' Add a menu item to the new menu
Dim newMenuItem As AcadPopupMenuItem
Dim MacroName As String
Dim MenuLabel As String
Dim i As Integer, j As Integer
' Assign the macro string the VB equivalent of "ESC ESC _open "
MacroName = Chr(3) & Chr(3) & Chr(95) & "Test_Item" & Chr(32)
For j = 1 To 5
For i = 1 To 10
'MenuName = "TestMenu" & i
'Set newMenu = currMenuGroup.Menus.Add(MenuName)
MenuLabel = "Test_Item" & i
Set newMenuItem = ShortcutMenu.AddMenuItem(i, MenuLabel, MacroName)
Next i
For i = 1 To 10
ShortcutMenu.Item(1).Delete 'удаляем добавленные пункты
Next i
Next j 'и так 5 раз
End Sub
Как видите, я немного изменил ваш код, а именно:
1. Вычисляю объект "контекстное меню" в теле процедуры (4-я строка кода), а не передаю его извне, как у вас;
2. Я закомментировал совершенно ненужную (и даже лишнюю) строку Set newMenu = currMenuGroup.Menus.Add(MenuName), находящуюся в цикле добавления пунктов, и соответственно парой строк ниже поставил вместо newMenu.Count + 1 просто i (также, границы цикла по i я изменил с 3..12 на 1..10 из чисто эстетских соображений:) ).
3. Добавил удаление 10ти новых пунктов, иначе нельзя прогонять по j более одного раза, это очевидно.
По-моему, эти изменения абсолютно непринципиальны (п.1) и даже увеличивают быстродействие (п.2). Насчёт п.3 - он, конечно, отнимает некоторое время, но уж поверьте, тот мой код, с которого всё обсуждение началось, тормозил и БЕЗ delete. Тормозил ненамного, около 1 секунды (как и ваше творение:), кстати), но этого оказалось достаточно, чтобы разъярённые пользователи закидали меня клавиатурами (шутка).
Что скажете ?