#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& Всё работает но проблема в том что я нигде не нашёл, как узнать какой элемент выбран. Подскажите или ткните носом в статью где это описано пожалуйста
#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
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- как узнать остаток по кассе в любой валюте имеющейся в справочнике валют?
- Как узнать выбранный элемент табличной части документа?
- Как узнать размер таблицы в SQL базе?
- Иерархия элементов. Как узнать есть ли у текущего элемента подчинённые?
- Как узнать узнать идентификатор конфигурации
- Как узнать, что активный элемент формы - табличная часть документа?
- В подписке на событие узнать Интерактивная запись или нет?
В этой группе 1С
- Графа "Телефоны" в общем журнале
- Фискальник как принтер чеков
- v7: Как обновить нетиповую конфигурацию 1с
- Как узнать количество строк в OpenOffice.Calc?
- Не удаляется регистрация при обмене Бух-УТ
- Как отчет сделанный через СКД сохранить в Excel?
- Почему появляется окошко ввода пароля?
- Проводки по зарплате в УПП
- Можно ли в восьмерке запретить перенос в группу?
- Очень сложный вопрос по SQL и регистрам (SimpleKey)
- ошибка при создании базы postgresql+ Alt Linux
- запуск 1С по ssh -X из Alt Linux : как заставить работать ?
- ЗУП регистр накопления "НДФЛ к зачету" - зачем оно нужно?
- Произвольное контекстное меню
- Как изменить конфигурацию в периферийной базе
- Как в 1с ЗУП 8 отразить НДФЛ по суточным сверх нормы?
- в УСН не формируется 2 раздел КУДиР
- v8: Как правильно перенести остатки по ОС из 1с 77 в 1с 8.1, автоматически?
- Как в 1с ЗУП 8 отразить НДФЛ по суточным сверх нормы?
- Обновление остатков в справочнике ТМЦ