Как узнать выбранный элемент динамического контекстного меню Visual Basic? #329106


#0 by Platon
Нужно динамическое меню  на форме которое заполняется в зависимости от значения на котором стоит курсор в MSHFlexGrid. В меню попадают значения из БД и могут менятся со временем поэтому обычное стандартное меню (создаваемое редактором меню не подходит). Поэтому меню создал с помощью WinApi ... Private Declare Function CreatePopupMenu Lib "user32" As Long Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Any) As Long Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long ... 'Создание меню hMenu = CreatePopupMenu 'Заполнение меню AppendMenu hMenu, MF_STRING, ByVal 0&, "Марка1" AppendMenu hMenu, MF_STRING, ByVal 0&, "Марка2" ... Dim Pt As POINTAPI 'Позиция курсора 'GetCursorPos Pt 'Показ меню на форме TrackPopupMenu GetSystemMenu(Me.hwnd, False), TPM_LEFTALIGN, Pt.x, Pt.y, 0, Me.hwnd, ByVal 0& Всё работает но проблема в том что я нигде не нашёл, как узнать какой элемент выбран. Подскажите или ткните носом в статью где это описано пожалуйста
#2 by Черт
посмотри статьи может поможет
#3 by Platon
Я там уже искал но ничего по теме не нашёл
#4 by Platon
up
#5 by Platon
ещё раз вверх
#6 by Черт
вообще то, можно узнавать, по именам элемента меню, или его индексу но т.к. меню динамическое, это сколь ко ж проверок надо делать?? как то, не коректно решаешь задачу (ИМХО)
#7 by Platon
Вобщем я всё сделал по другому. Я добавил на форму невидимый Combobox который перезаполняется каждый раз когда надо и когда мышкой щёлкаю по MSHFlexGrid по ячейке в нужной колонке то Combobox становится видимым и позиционируется по координатам и размерам ячейки и кажется как будто список встроен в ячейку, а когда ячейка фокус теряет то Combobox снова становится невидимым.    Combo5.Top = MSHFlexGrid1.Top + MSHFlexGrid1.CellTop    Combo5.Left = MSHFlexGrid1.CellLeft    Combo5.Width = MSHFlexGrid1.CellWidth    'Combo5.Height = MSHFlexGrid1.CellHeight    Combo5.Visible = True
#8 by Platon
+ и без всяких вин апи
#9 by dk
хм, первая же ссылка в гугле по запросу "CreatePopupMenu api" хотя не проверял :)
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С