Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Менюшки


Автор: Aq1982 14.1.2005, 20:44
И снова здраствуйте smile
Озадачу вас еще несколькими вопросами.
1. как добавить в менюшку в VB разделитель?

2. У меня backcolor формы белый. добавляю меню и сама строка меню серая. А если раскрыть менюшки то их основа белая. Как избавиться от серого цвета

3. Как добавить контекстное меню

Заранее огромное спасибо

Автор: korob2001 14.1.2005, 21:28
Цитата

1. как добавить в менюшку в VB разделитель?

Точно также как и любую кнопку меню, только в поле Caption укажи такой символ "-", кавычки естественно, не нужны. Кстати поле имя, не должно остаться пустым. Потому в поле Name, тоже укажи какое нибудь имя.
Цитата

3. Как добавить контекстное меню

Сначала создай обычное меню, затем убери галочку Visible раздела, который хочешь сделать в контекстном меню. Допустим мы хотим сделать раздел File в контекстном меню при щелчке правой кнопкой мыши на форме Form1.
Теперь для формы выбираем событие MouseDown и пишем такой код:
Код

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If Button = vbRightButton Then
       Form1.PopupMenu mnuFile
   End If
End Sub

Методу PopupMenu передаём имя того раздела, который хотим вывести в контекстном меню. Только обязательно нужно убрать галочку свойства Visible раздела mnuFile.

Если не понял дай знать, опишу подробнее.

Автор: -Mikle- 15.1.2005, 10:06
Цитата(korob2001 @ 15.1.2005, 00:28)
Только обязательно нужно убрать галочку свойства Visible раздела mnuFile.

Не обязательно. Это нужно сделать только если контекстное меню не должно отображаться вверху. Иногда и такое требуется, например меню Edit

Автор: korob2001 15.1.2005, 13:01
Цитата

Не обязательно. Это нужно сделать только если контекстное меню не должно отображаться вверху. Иногда и такое требуется, например меню Edit

Я вообще-то не пробовал, но в книге было написано, обязательно и даже было выделено жирным шрифтом. Когда поподу домой, обязательно попробую.
Но всё же спасибо.

Автор: -Mikle- 15.1.2005, 14:09
Приди, попробуй и все получится smile

Цитата(korob2001 @ 15.1.2005, 16:01)
Но всё же спасибо

Конечно же незачто!!! smile

Автор: Aq1982 15.1.2005, 14:53
Спасибо огромное! А вот еще вопрос. Как из кода добавить пункт меню. Главного или контекстного.

Автор: korob2001 15.1.2005, 16:31
Цитата

А вот еще вопрос. Как из кода добавить пункт меню. Главного или контекстного

Попробуй установи изначально свойство Visible=False этого пункта, а затем когда понадобится устанавливай в True.

Автор: Aq1982 15.1.2005, 17:58
не, не пойдет. Я не знаю заранее какие там будут пункты

Автор: korob2001 15.1.2005, 23:03
Цитата

не, не пойдет. Я не знаю заранее какие там будут пункты

Только что попробовал, вроде получилось:
1. Открой окно Menu Editor
2. Создай кнопку меню верхнего уровня:
Caption = File
Name = mnuFile
3. Спустись на один уровень ниже и введи ещё пару кнопок:
Caption = New
Name = mnuFileArr
Index = 0

Caption = Open
Name = mnuFileArr
Index = 1
4. Закрой окно MenuEditor и добавь на форму кнопку CommandButton и установи для неё такие свойства:
Name = cmdAdd
Caption = "Добавить пункт"
5. На событие Click этой кнопки вешай такой код
Код

Private Sub cmdAdd_Click()
   ' Подгружаем 2 элемент меню
   Load mnuFileA(2)
   ' Устанавливаем значение Caption
   mnuFileA(2).Caption = "Save"
   ' Делаем его видимым
   mnuFileA(2).Visible = True
End Sub

6. Напиши такой обработчик события Click для этого меню:
Код

Private Sub mnuFileArr_Click(Index As Integer)
   Select Case Index
       Case 0
           MsgBox "Создаём новый проект"
       Case 1
           MsgBox "Открываем проект"
       Case 2
           MsgBox "Сохраняем проект"
   End Select
End Sub

Может есть способ и проще, но я пока его не пробовал. ;))))))
Будут вопросы, пиши.
Удачи.

Автор: Aq1982 16.1.2005, 09:47
Пасиба. Ща попробую

Автор: ProgramerForever 31.5.2010, 16:49
Если нужно добавить несколько пунктов, то можно так:
Код

i = mnuFileArray.Ubound + 1  ' Следующий номер индекса после самого
                                               ' большого уже существующего
Load mnuFileArray(i%)            ' Создание нового элемента массива меню
mnuFileArray(i%).Caption = "Новая менюшка № " & i%  '  Надпись

Чтобы удалить элемент делаем так:
Код

Unload mnuFileArray(3)           ' Удаляем элемент с индексом 3

Автор: windcastle 5.2.2015, 22:51
Посмотри пример!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)