Менюшки

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

Менюшки

Сообщение Aq1982 » 14.01.2005 (Пт) 20:48

И снова здраствуйте :)
Озадачу вас еще несколькими вопросами.
1. как добавить в менюшку в VB разделитель?

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

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

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

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

Сообщение Ennor » 14.01.2005 (Пт) 20:58

1. Пункт меню, у которого Caption = "-"
2. Это вообще от тебя не зависит, на каждой машине юзер определяет по-своему. Ничего не сделаешь, скорее всего. либо используй самописные средства для создания меню - там такое может быть. А вообще, с цветами лучше не извращаться (имхо).
3. Поиск по форуму по слову PopupMenu.

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 14.01.2005 (Пт) 22:39

PopupMenu это обычная ветка меню, а можно создать другую и скрыть ее ИМЯ.Visible = False

а вызвать так:
PopupMenu menuname, flags, x ,y , bold

menuname - имя меню (обязательный аргумент и только он)
flags - определяет место и поведение меню
Позиция
vbPopupMenuLeftAling
vbPopupMenuCenterAling
vbPopupMenuRightAling
Поведение
vbPopupMenuLeftButton
vbPopupMenuRightButton

X и Y - координаты, где отображается меню... Если не указать X и Y nj место выпадения меню будет место указателя мышки...
bold - пункт, который отображается полужирным шрифтом...

Aq1982
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 03.01.2005 (Пн) 9:38

Сообщение Aq1982 » 15.01.2005 (Сб) 14:48

А как создать объект типа menu???

Aq1982
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 03.01.2005 (Пн) 9:38

Сообщение Aq1982 » 15.01.2005 (Сб) 14:57

Все, спасибо. Нашел

Aq1982
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 03.01.2005 (Пн) 9:38

Сообщение Aq1982 » 15.01.2005 (Сб) 14:58

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

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.01.2005 (Сб) 15:20

Проще всего - создав заранее массив меню, загружать нужные элементы (Load mnuMyMenu(1) и т.д.)
Изображение

Aq1982
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 03.01.2005 (Пн) 9:38

Сообщение Aq1982 » 15.01.2005 (Сб) 18:05

Массив готовых меню? а если я заранее не знаю какие там будут пункты?

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 15.01.2005 (Сб) 20:35

Массив тем и хорош, что заранее знать количество пунктов меню не нужно....
Создал один индексом , а потом столько сколько надо с разными названиями, а обращаться к пунктам меню можно по индексу (мне проще)...

Объявить можно так:
Dim namesMenu (1 to 20) As Double 'Ограничимся 20....
namesMenu(1)="Имя 1"
namesMenu(2)="Имя 2"
.
.

Dim namesMenu (20) As Double 'Ограничимся 20....
namesMenu(0)="Имя 1"
namesMenu(1)="Имя 2"
.
.
Разницу видишь? :wink: В первом варианте отсчет начинается с индекса =1 (мы ограничили с 1 до 20). А во втором с индекса =0 (по умолчанию первый элемент массива имеет индекс 0)

Многомерные массивы, дают еще большие возможностей...
Если я не ошибаюсь.... :wink:

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 15.01.2005 (Сб) 20:44

Я немного запутано написал :( , хотя понять можно .... :wink:

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

Сообщение alibek » 15.01.2005 (Сб) 20:44

Создать mnuTestMenu(0) (невидимый).
Затем:
Код: Выделить всё
Load mnuTestMenu(1)
mnuTestMenu(1).Caption = "Test Menu 1"
mnuTestMenu(1).Enabled = True
mnuTestMenu(1).Visible = True
...
Lasciate ogni speranza, voi ch'entrate.

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 15.01.2005 (Сб) 21:49

блин, пока писал уже кинули... :oops:
Может пригодится, посмотри...

Option Explicit
'Создай меню AddMenu с индексом 0 и скрой его Visible=false
'Кинь две кнопки
'Command1 - добавляет меню
'Command2 - удаляет меню


Dim nMenu As Integer
Private Sub Command1_Click()
nMenu = nMenu + 1
If nMenu = 1 Then AddMenu(0).Caption = "Имя 0"
Load AddMenu(nMenu)
AddMenu(nMenu).Visible = True
AddMenu(nMenu).Caption = "Имя " & nMenu
End Sub

Private Sub Command2_Click()
If nMenu = 0 Then
MsgBox "Пусто.... :-)"
Exit Sub
End If
Unload AddMenu(nMenu)
nMenu = nMenu - 1
End Sub

'По этому же принципу можно работать и с пунктами меню... :wink:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.01.2005 (Вс) 3:06

Александр80 писал(а):Объявить можно так:
Dim namesMenu (1 to 20) As Double 'Ограничимся 20....
namesMenu(1)="Имя 1"
namesMenu(2)="Имя 2"

Run-time error '13':

Type mismatch
Изображение

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 16.01.2005 (Вс) 6:27

tyomitch - Согласен, вызовет ошибку....
Пример создания и удаления меню я кинул ниже ...

Примеров с использованием именно этого “Dim namesMenu (1 to 20)“ полно…
А я просто хотел показать разницу:
Александр80 писал:
В первом варианте отсчет начинается с индекса =1 (мы ограничили с 1 до 20). А во втором с индекса =0 (по умолчанию первый элемент массива имеет индекс 0)
Разница есть?

Прошу прощения, что не корректно написал.... :oops:

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

Aq1982
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 03.01.2005 (Пн) 9:38

Спасибо

Сообщение Aq1982 » 16.01.2005 (Вс) 9:51

Кажется, понятно. Спасибо, люди


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

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

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

    TopList