Разделитель группы меню второго и третьего уровня?

Программирование на Visual Basic for Applications
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Разделитель группы меню второго и третьего уровня?

Сообщение Vitaly1 » 20.06.2003 (Пт) 9:56

Господа, все могу в меню сделать, а вот этого не как:

Как задать разделитель в группы (т.е. разделяющую линию пункты меню) второго и третьего уровня?


За рание всем спасибо! :)

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

Сообщение GSerg » 20.06.2003 (Пт) 9:59

А это вообще как? :shock:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 20.06.2003 (Пт) 10:07

Ровно также как и любой другой разделитель. Создаем menu item с caption - (весь капшен просто один дефис) и все.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 20.06.2003 (Пт) 12:13

Set n = Application.CommandBars.ActiveMenuBar.Controls("Мой")
With n.Controls.Add(Type:=msoControlMenuitem)
.Caption = "-"
End With

Не выходит! Дает ошибку! :(

Пытался задать тип MenuItem, то-же не выходит, с типом msoControlButton в меню кэпшен "-" а не сквозная черта.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 20.06.2003 (Пт) 12:14

Блин! Я не понял что речь про Офисное меню :) Это так делается в VBшном Menu Editor :)

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 20.06.2003 (Пт) 13:45

Господа, да как же задать разделитель в группы (т.е. разделяющую линию пункты меню) второго и третьего уровня?
В VBA а не в обычном VB!

Ведь в приложении такой разделитель есть!
:( :!:


Помогите, пожалуйсто!

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 20.06.2003 (Пт) 15:01

Ну попробуй метод BeginGroup:
Код: Выделить всё
Set fff = Application.CommandBars("Панель_Инструментов")
  fff.Controls(1).Controls(2).BeginGroup = True

если конечно я правильно понял :roll:

sergmagunov
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 01.11.2002 (Пт) 5:58
Откуда: Ukraine

Сообщение sergmagunov » 20.06.2003 (Пт) 15:04

Ты это имел в виду?

Sub test()
Set MyMenuBar = CommandBars.ActiveMenuBar
Set NewMenu = MyMenuBar.Controls.Add(Type:=msoControlPopup, _
Before:=8, temporary:=True)
NewMenu.Caption = "Sample"
Set Ctrl1 = NewMenu.Controls.Add(Type:=msoControlButton)
Ctrl1.FaceId = 41
Ctrl1.Caption = "123"
Set Ctrl2 = NewMenu.Controls.Add(Type:=msoControlButton)
Ctrl2.FaceId = 200
Ctrl2.Caption = "234"

Ctrl2.BeginGroup = True 'вот он разделитель

End Sub

Сергей
Banker

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 20.06.2003 (Пт) 15:16

Calvin
Я говорил не про панель инструментов, а про меню, и не про вертикальное разделение, а про горизонтальное, в меню первого уровня выходит:
Application.CommandBars.ActiveMenuBar.Controls("Мой").BeginGroup = True
появляется вертикальный разделитель группы.

а мне нужен горизонтальный, так не выходит:
Application.CommandBars.ActiveMenuBar.Controls("Мой").Controls("Два").BeginGroup = True
сбой и ничего не происходит в меню

так тоже не выходит:
Set fff = Application.CommandBars.ActiveMenuBar.Controls("Мой")
fff.Controls(1).Controls(2).BeginGroup = True
сбоев нет, но и в меню ничего нет.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 20.06.2003 (Пт) 15:29

sergmagunov

Спасибо, через указатель получилось!

Set f = Application.CommandBars.ActiveMenuBar.Controls("Мой").Controls("Два")
f.BeginGroup = True


п.с.
sergmagunov - какое значение свойства .FaceId для того что бы в меню галочка была, а то я ее делаю такими окольными путями, а оказывается все так посто! :) , спасибо.
Последний раз редактировалось Vitaly1 20.06.2003 (Пт) 15:35, всего редактировалось 1 раз.

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 20.06.2003 (Пт) 15:31

Application.CommandBars.ActiveMenuBar.Controls("Мой").BeginGroup = True

ActiveMenuBar - это какое меню в данном случае?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 20.06.2003 (Пт) 15:38

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

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 20.06.2003 (Пт) 16:25

Да, тема конечно же интересная, хочу дополнить немного (да заодно что-нибудь и услышать):
А на счет панелей инструментов и меню, то там одно и то же в данном случае
Единственное, относительно вышесказанного я не совсем понимаю, как можно в меню сделать "вертикальное" разделение групп (чтобы не путаться, то я имею ввиду "вертикальную палочку разделителя"). Вот, допустим на панели инструментов это можно сделать.

Тот пример, который я написал в первом посте, то там fff.Controls(1).Controls(2).BeginGroup = True (вот то, что жирным, то это новое меню, которых на панели инструментов может быть даже больше, чем один - вот их можно разделять по группам ВЕРТИКАЛЬНО - fff.Controls(2).BeginGroup = True), а вот fff.Controls(1).Controls(2).BeginGroup = True --- внутри меню контролы объединяются в группы только горизонтально (т.е. горизонтальным разделителем группы) :roll:

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 23.06.2003 (Пн) 11:18

Corgi:
Да совершенно верно, в первом уроне разделитель групп вертикальный, а во втором и далее горизонтальный, я вроде, ничего другого не говорил. :wink:

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 23.06.2003 (Пн) 11:25

Господа, как это бывает часто в программировании, думаешь на одно, а происходит из-за другого, данный пример может работать и без указателя:
Set f = Application.CommandBars.ActiveMenuBar.Controls("Мой").Controls("Два")
f.BeginGroup = True

Application.CommandBars.ActiveMenuBar.Controls("Мой").Controls("Два").BeginGroup = True

А не работало из-за того, в других случаях, что в объекте Controls надо использовать не имя OnAction, соответствующего пункта меня, а его Caption, вот оно как, кто бы мог подумать что так!

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 23.06.2003 (Пн) 12:57

2Vitaly1 ты верно хотел сказать Calvin :D :wink: :wink: :roll:
Ничто так не ограничивает полёт мысли программиста, как компилятор

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 23.06.2003 (Пн) 14:04

Да Corgi, я хотел сказать Calvin :lol:


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот и гости: 3

    TopList