Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переключатели в меню 
:(
    Опции темы
amt
  Дата 16.2.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Привет всем smile
Кто знает - подскажите.
smile Как сделать группу переключателей в меню формы, например как в Проводнике:
в меню Вид есть группа команд:
Значки
Список
Таблица
и т.д.

И какое свойство каманд нужно проверять, чтобы определить, какая команда в данный момент включена?
Заранее благодарен. smile

--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Naghual
Дата 17.2.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



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

Итак создаем такое меню:
Вид(mnuView)
---Значки(mnuViewMode,0)
---Список(mnuViewMode,1)
---Таблица(mnuViewMode,2)

В скобках указаны Имя и Индекс элементов.
Элементу mnuViewMode(0) такжу устанавливаем начальное значение Checked=True (изначально отмеченный элемент. может быть иной).

Теперь перейдем к написанию кода.
В режиме разработки, щелкнем по готовому подменю Значки в меню Вид, и попадем к его коду:
Код
Private Sub mnuViewMode_Click(Index As Integer)

End Sub


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

В итоге получим что-то подобное:
Код
Private Sub mnuViewMode_Click(Index As Integer)
   Dim SelectedItem As Integer
   
   SelectedItem = Index
   Me.mnuViewMode(0).Checked = False
   Me.mnuViewMode(1).Checked = False
   Me.mnuViewMode(2).Checked = False
   Me.mnuViewMode(SelectedItem).Checked = True
   
   Select Case SelectedItem
       Case 0 'Значки
           ' Some Code
       Case 1 'Список
           ' Some Code
       Case 2 'Таблица
           ' Some Code
   End Select
End Sub





--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
Дата 17.2.2005, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Одна разница. В проводнике там кружочки, а тут галочки. А коль хочица кружки пиши на апи. Тока на простоту не расчитывай smile
PM   Вверх
Naghual
Дата 17.2.2005, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Run-time error
А ты это к чему?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
Дата 17.2.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Просто я обычно всю работу с меню на апи делаю. Всякие картинки слева от надписи и т.п. smile
PM   Вверх
Mephisto
Дата 17.2.2005, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Но на 6.0 это немного каряво получается.
Цитата
А коль хочица кружки пиши на апи. Тока на простоту не расчитывай.

Не так сложно, как каряво.

Это сообщение отредактировал(а) Mephisto - 17.2.2005, 19:28
PM   Вверх
Naghual
Дата 17.2.2005, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



По моему изначальный вопрос был не про крухочки, галочки, картинки.
Но тоже вариант.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
Дата 17.2.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Цитата(Mephisto @ 17.2.2005, 20:27)
Но на 6.0 это немного каряво получается

Написал класс инкапсулирующий работу с апи и все smile
PM   Вверх
Mephisto
Дата 17.2.2005, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Я имею в виду сама работа. Картинки отображаются немного каряво, сама работа меню не впечатляет. Без картинок лучше. А вообще лучше продублировать меню панелью. Так будет лучше. Или всплывающим меню в статусбаре, там же отображать выделеный компонент. Как в ёкселе.

Это сообщение отредактировал(а) Mephisto - 17.2.2005, 19:40
PM   Вверх
Exception
Дата 17.2.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Цитата(Mephisto @ 17.2.2005, 20:39)
Картинки отображаются немного каряво

Ну не знаю, у меня вроде ничего выходит.
Насчет остального - дело вкуса smile
PM   Вверх
amt
Дата 18.2.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Naghual, спасибо, но такой вариант я и сам уже продумал.
Мне не хочется работать со свойством Checked.
Но все равно спасибо.
Run-time error, можно по-подробнее про кружочки и картинки напротив команд меню?
smile
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Exception
Дата 18.2.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Сейчас дам небольшой (ну это как сказать:) примерчик кода (автор - Анатолий Жуков):
CoolVBMenu
Если постараешься - поймешь smile
PM   Вверх
amt
Дата 11.4.2005, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Run-time error
smile Решил вернуться к старой теме. Ссылка, которую ты мне дал просто классная,
Цитата
Сейчас дам небольшой (ну это как сказатьsmile примерчик кода (автор - Анатолий Жуков):
CoolVBMenu
Если постараешься - поймешь

Но для меня там большая часть информации - темный лес. Кто-нибудь еще занимался этим вопросом.
Как засунуть в меню картинку (без XP-ных наворотов)?
smile
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Exception
Дата 12.4.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Код
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function GetMenuItemID Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemBitmaps Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
Private Const MF_BITMAP = &H4&
Private Sub Form_Load()
Dim hMenu&, hSubMenu&, hMenuItem&
hMenu = GetMenu(Me.hwnd)
'определяем заголовок, если у Вас есть, например File и Edit, то индексом задаёте нужный
hSubMenu = GetSubMenu(hMenu, 0)
'здесь мы определяем, что работать хотим с первым пунктом меню, т.к. индекс равен 0
hMenuItem = GetMenuItemID(hSubMenu, 0)
'"клеим" картинку к первому пункту
SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image1.Picture, Image1.Picture
'здесь мы определяем, что работать хотим со вторым пунктом меню, т.к. индекс равен 1
hMenuItem = GetMenuItemID(hSubMenu, 1)
'"клеим" картинку ко второму пункту
SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image2.Picture, Image2.Picture
'здесь мы определяем, что работать хотим с третьим пунктом меню, т.к. индекс равен 2
hMenuItem = GetMenuItemID(hSubMenu, 2)
'"клеим" картинку к третьему пункту
SetMenuItemBitmaps hMenu, hMenuItem, MF_BITMAP, Image3.Picture, Image3.Picture
End Sub 

вроде так
PM   Вверх
amt
Дата 14.4.2005, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Run-time error
Попробовал твой код. Но он у меня не вяжется к моему меню. Все команды выполняются без ошибок и ничего не происходит.
При пошаговом выполнении проги выячняется что после выполнения строки
hMenuItem = GetMenuItemID(hSubMenu, 0)
переменной hMenuItem присваивается значение -1, т.е. никакого меню ненаходит.
Может я че не так делаю? smile
Помогите плиз! smile

Это сообщение отредактировал(а) amt - 14.4.2005, 07:38
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.