powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Контекстное меню
13 сообщений из 13, страница 1 из 1
Контекстное меню
    #32557892
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно каким-нибудь образом привязать контекстное меню к форме, открытой в режиме таблицы, а именно к правому клику на заголовок столбца (выделенные столбцы с нажатым Shift).

Дело в том, что я от пользователей скрыл все стандартные панели инструментов и контекстные меню. Подставляю всё только своё.
Пользователи в какой-то момент времени решили закреплять столбцы грида.

Каким-то образом можно привязать контекстное меню?
Может API?

И ещё, есть стандартный пункт меню «формат», который отображается в режиме таблицы.
Как это сделать программно?
Т.е. как только пользователь входит в любую форму, открытую в режиме табл. – отображать соотв. пункт меню?
Думаю можно сделать с помощью модулей класса, но что-то ломает к каждой форме подключать модуль класса. Как-то без этого можно сделать?
...
Рейтинг: 0 / 0
Контекстное меню
    #32558784
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарищи!

подскажите где смотреть, пожалуйста
...
Рейтинг: 0 / 0
Контекстное меню
    #32558914
Exquisite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу первого, ИМХО, только через субклассирование. Да и то, столько головняков будет...
Ленточная форма в данном случае рулит, хотя, конечно, возни с ней больше.
Вообщем, думаю легче разрешить контекстные менюшки и создать для каждого "момента" свое. Если прокатит :)

По поводу второго... А если это самое меню постоянно прописать в панели меню и в необходимые моменты просто делать его доступным или нет (через коллекцию панелей инструментов)?

Всё в этой жизни ИМХО...
...
Рейтинг: 0 / 0
Контекстное меню
    #32558984
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое субклассирование?
это когда один класс вызывается из другого?

Можно хоть какой нибудь пример, что бы попробовать эту штуку, или почитать где нибудь об этом
...
Рейтинг: 0 / 0
Контекстное меню
    #32559122
Exquisite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А что такое субклассирование?
>это когда один класс вызывается из другого?

Э-э-э-э-э-э... Не совсем так. Субклассирование в VB и тем более в VBA - вещь довольно опасная (при неумелом ее использовании) и в этих языках относится к категории сверх-жесткого кодинга. Кратко это... Вообщем, любое действие пользователя (и не только, конечно) с формой (окном) вызывает генерацию так называемого "сообщения" окну. Другими словами, система Вындоуз вызывает определенную процедуру, которая отвечает за поведение некого конкретного окна. Процедура получает параметры - код сообщения и несколько (максимум два) дополнительных параметра, значения в которых трактуются по разному в разных сообщениях. Эта самая процедура по коду полученного сообщения определяет что ей необходимо сделать с окном. Определяет, грубо говоря (языком VB), обычным Select Case. Например, получив сообщение от системы VM_PAINT (не уверен в синтаксисе), данная процедура отрисовывает на экране окно.
Непосредственно субклассирование начинается с момента, когда мы вместо стандартной процедуры обработки оконных сообщений подсовываем окну адрес своей процедуры (через ВинАПИ) и, таким образом, можем следить абсолютно за всем, что происходит с окном. В том числе отслеживать нажатия кнопок мыши. Конечно, наша процедура после всех необходимых действий должна будет вызвать и стандартный обработчик оконных сообщений, без чего наша форма просто промрет :)
Гемора ну очень много!!! Зато можно таки добиться собственного поведения табличной формы на правую кнопку мыши :)

>Можно хоть какой нибудь пример, что бы попробовать эту штуку, или почитать где нибудь об этом
Ээээээээ... Ни одной ссылки не помню... Воспользуйся поиском по слову "субклассирование". Здесь, кажется, обсуждалось. На Русьимпорте у АМа точно обсуждалось. Да и в интернете, думаю, полно инфы.

з.ы. Если решишься на эту авантюру, то мой тебе совет - делай резервные копии перед каждым запуском всего этого дела :)
...
Рейтинг: 0 / 0
Контекстное меню
    #32559129
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насколько смог понять из чтения Гетца-а Access окон в понимании Windows всего 1 на приложение остальное картинки
следовательно субклассирование не пойдет
...
Рейтинг: 0 / 0
Контекстное меню
    #32559145
Exquisite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>окон в понимании Windows всего 1 на приложение

Не совсем корректно. Для НЕ-аксесовских программ ВСЕ отдельные элементы (текст-боксы, лэйблы, кнопки и т.п.) являются окнами. В Аксесе ситуация, действительно, несколько иная. Элементы управления являются просто "картинками" и то до тех пор, пока не получат фокус (если они умеют его получать). Как только получили - сразу становятся окном со своим hWnd и всеми вытекающими. Более того, Каждая форма в Аксе - это отдельное окно. И внутри формы дочерта дочерних окон - скрол-бары, вложенные окна и т.п. (вот точно иерархию Аксесовских форм не помню). Кстати у самого Аксеса туева хуча собственных окон, не имеющих прямого отношения к результатам деятельности программиста - главное окно, окно-родитель для всех MDI-окошек, куча тулбаров, скролы и т.д. и т.п. (Spy++ подтвердит:)

В данном конкретном случае надо:
1. знать высоту области заголовков;
2. отловить через сабклассинг нажатие правой кнопки мыши и если координаты мышиного курсора в пределах высоты заголовков табличной формы, то "выкинуть" контекстное меню, заглушив при этом дальнейшую обработку сообщения.
3. еще и ширину столбцов надо сопоставить с координатами клика, чтобы понять, на каком заголовке мыша.

Теоретически, это можно сделать, но практически... практически лично я бы не взялся за это...
...
Рейтинг: 0 / 0
Контекстное меню
    #32559178
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Exquisite
был не прав - Гетц попутал
Spy++ дает по окну на форму + MDI + ...
...
Рейтинг: 0 / 0
Контекстное меню
    #32559218
N_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не парте мозги субклассированием.

1.Создай свою панель инструментов.
(Правый клик на панели->Настройка,
2. далее Создать, ввести имя, например "mmm"
3. далее скопировать (перетянуть нужные встроенные пункты меню с нажатым контролом) на созданную панель. Нужные пункты меню можно отобразить в тойже форме поставив нужные галочки.:)
4. По вкусу "превратить" панель в её свойствах в панель инструментов, контекстное меню или строку меню.
5. Допустим в 4 выбрали контекстное меню, тогда в свойстве формы "контекстное меню" выбераем наше детище - "mmm".

Вроде все.
...
Рейтинг: 0 / 0
Контекстное меню
    #32559542
Exquisite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard, бывает... И со мной... Вот смотри, как я щаз извиняться буду :)

для N_A
> Не парте мозги субклассированием.
Хм... Вообще не парить? Случаи бывают разные ;)


> 5. ...тогда в свойстве формы "контекстное меню" выбераем наше детище - "mmm".
Млин... Три раза "КУ" (с присиданиями:) Прав.
Правда, это меню для всех "кликов" кроме "полевых" вылазиет, но это действительно в данной ситуации мелочи. //вот что значит давать советы не владея ситуацией (конкретно: не работая с табличными формами)

AlTis! AlTis!!! Сабклассинг отменяется!

Сорри за дизу...
...
Рейтинг: 0 / 0
Контекстное меню
    #32711129
Rodion Doroshkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно ли в контекстное меню прописывать "свои" пункты, и вешать на них свои обработчики?
...
Рейтинг: 0 / 0
Контекстное меню
    #32711138
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно
...
Рейтинг: 0 / 0
Контекстное меню
    #32711145
Фотография neal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слушайте,
у спокойно прошло такое

1) создал меню, накидал на него пунктов (копировать, вставить, ундо, отсортировать, найти, ...)
2) в свойствах меню сказал, что оно контекстное
3) у формы есть свойство Контекстное меню. На одну форму повесил одно, На другую другое.

-------------------------------------------------------
Заходи в саpай аккуpатно - могут быть сеpьезные гpабли.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Контекстное меню
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]