Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Меню Добавлено: 19.07.04 13:27  

Автор вопроса:  BeTe

Ответить

  Ответы Всего ответов: 49  

Номер ответа: 16
Автор ответа:
 BeTe



Вопросов: 6
Ответов: 30
 Профиль | | #16 Добавлено: 19.07.04 17:13
блин все равно ничего не понял

Ответить

Номер ответа: 17
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #17
Добавлено: 19.07.04 17:31
 Подожди, навероне sne сейчас тестит :)
 Молись чтобы это было так :)))

Ответить

Номер ответа: 18
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #18
Добавлено: 19.07.04 17:41
Дык хэндл контрола, а не contrlID...

В VB все меню привязаны к форме (она их родитель), отсюда напрашивается очевидный вывод, что там, в этом параметре, может передаваться :)

Ну да даже если это не так, что скорее всего :) то тогда там должен быть ноль... по идее :)

Ответить

Номер ответа: 19
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #19 Добавлено: 19.07.04 17:44
фу..., блин, разобрался:

Dim hMainMenu As Long
Dim hMenu As Long
Dim MenuID As Long

hMainMenu = GetMenu(Me.hwnd)
hMenu = GetSubMenu(hMainMenu, 0)
MenuID = GetMenuItemID(hMenu, 0) 'вместо "0" можешь подставить номер своего пункта меню (начиная с нуля)
Call SendMessage(Me.hwnd, WM_COMMAND, MenuID, ByVal 0&;)

При этом будет вызываться обработчик menuItem_Click()

Ответить

Номер ответа: 20
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #20
Добавлено: 19.07.04 18:18
>Дык хэндл контрола, а не contrlID...
 HANDLE - Логический номер.

Ответить

Номер ответа: 21
Автор ответа:
 BeTe



Вопросов: 6
Ответов: 30
 Профиль | | #21 Добавлено: 19.07.04 18:42
Андрей Никитин, Народ - спасиба конечно огромное, все получилось... Но раз пошла такая пьянка то я еще немного обнаглею и спрошу.
Пытаюсь теперь сделать Enabled/Disabled делаю так:
EnableMenuItem(SubMenuH, MenuItemID, 0) - Enabled
EnableMenuItem(SubMenuH, MenuItemID, 1) - Disabled
Все работает, но только в том случае если это я делаю в процессе выполнения. А вот если изначально я задал меню (в design time) enabled=false,
то он его делает вроде как доступным, но код не выполняется ни с помощью апм ни нажатием мышкой. Как быть? Выручите меня еще раз?

Ответить

Номер ответа: 22
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #22
Добавлено: 19.07.04 20:11
>Андрей Никитин, Народ
 Можешь называть меня "Учитель" или "Повелитель". :)

Ответить

Номер ответа: 23
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #23
Добавлено: 19.07.04 21:48
CyRax - прАсвЯтитель, а что? звучит ;))

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

Ответить

Номер ответа: 24
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #24
Добавлено: 20.07.04 02:30
 Может так?
EnableMenuItem(SubMenuH, MenuItemID, MF_BYPOSITION OR MF_ENABLED) - Enabled

>CyRax - прАсвЯтитель, а что? звучит ;))
 Если прочесть большие буквы, то получится А Я?
 Ну как же я тебя мог позабыть то. И тебя конечно тоже :)))

Ответить

Номер ответа: 25
Автор ответа:
 BeTe



Вопросов: 6
Ответов: 30
 Профиль | | #25 Добавлено: 20.07.04 10:28
EnableMenuItem(SubMenuH, MenuItemID, MF_BYPOSITION OR MF_ENABLED) и как результат -1. Даже не снимает затемнение :(

Ответить

Номер ответа: 26
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #26 Добавлено: 20.07.04 11:01
Если сделал Enabled = False в design time, то чтобы активировать пункт меню, используй:

либо: EnableMenuItem(SubMenuH, MenuItemID, MF_ENABLED)

либо: EnableMenuItem(SubMenuH, 0, MF_BYPOSITION OR MF_ENABLED) ' где "0" - позиция твоего пункта меню, так как при наличие флага MF_BYPOSITION функция ожидает именно позицию, а не ID

Ответить

Номер ответа: 27
Автор ответа:
 BeTe



Вопросов: 6
Ответов: 30
 Профиль | | #27 Добавлено: 20.07.04 11:35
Так в том то и беда...
EnableMenuItem(SubMenuH, MenuItemID, MF_ENABLED) - сработает только если я до этого применил EnableMenuItem(SubMenuH, MenuItemID, MF_DISABLED)

А вот EnableMenuItem(SubMenuH, 0, MF_BYPOSITION OR MF_ENABLED) тоже не хочет работать. Он как бы снимает затемнение с меню, но при нажатии мышкой ничего не происходит (а ведь там есть процедура для выполнения).

Ответить

Номер ответа: 28
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #28
Добавлено: 20.07.04 13:14
 А галава тебе на что?
 Попробуй сделать все пункты меню доступными в дизайн-тайме, а в Form_Load деактивируй нужные меню.

Ответить

Номер ответа: 29
Автор ответа:
 BeTe



Вопросов: 6
Ответов: 30
 Профиль | | #29 Добавлено: 20.07.04 13:22
Так мне надо именно так как я описал. Или ты думаешь, что я сосвсем уже не понимаю ничего? Была бы возможность я бы даже и не парился с этими апи. Не дружу я как то с ними.

Ответить

Номер ответа: 30
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #30 Добавлено: 20.07.04 14:00
>to BeTe:
Вообщем такое дело... :(
Помучился я тут немного с GetItemInfo и SetItemInfo - максимум что удалось добиться это снять атрибут Grayed с пункта меню, отключенного в Дизайнере меню. Вернуть реакцию на событие Click не удалось. Складывается такое чувство, что ВБ сохраняет структуру меню у себя в памяти и снова включить обработчик кроме как через обращение к объектам ВБ (объекты меню) не получится... :(

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам