|
|
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
Можно каким-нибудь образом привязать контекстное меню к форме, открытой в режиме таблицы, а именно к правому клику на заголовок столбца (выделенные столбцы с нажатым Shift). Дело в том, что я от пользователей скрыл все стандартные панели инструментов и контекстные меню. Подставляю всё только своё. Пользователи в какой-то момент времени решили закреплять столбцы грида. Каким-то образом можно привязать контекстное меню? Может API? И ещё, есть стандартный пункт меню «формат», который отображается в режиме таблицы. Как это сделать программно? Т.е. как только пользователь входит в любую форму, открытую в режиме табл. – отображать соотв. пункт меню? Думаю можно сделать с помощью модулей класса, но что-то ломает к каждой форме подключать модуль класса. Как-то без этого можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 12:17:18 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
товарищи! подскажите где смотреть, пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 18:06:58 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
По поводу первого, ИМХО, только через субклассирование. Да и то, столько головняков будет... Ленточная форма в данном случае рулит, хотя, конечно, возни с ней больше. Вообщем, думаю легче разрешить контекстные менюшки и создать для каждого "момента" свое. Если прокатит :) По поводу второго... А если это самое меню постоянно прописать в панели меню и в необходимые моменты просто делать его доступным или нет (через коллекцию панелей инструментов)? Всё в этой жизни ИМХО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 19:23:37 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
А что такое субклассирование? это когда один класс вызывается из другого? Можно хоть какой нибудь пример, что бы попробовать эту штуку, или почитать где нибудь об этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 20:24:54 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
>А что такое субклассирование? >это когда один класс вызывается из другого? Э-э-э-э-э-э... Не совсем так. Субклассирование в VB и тем более в VBA - вещь довольно опасная (при неумелом ее использовании) и в этих языках относится к категории сверх-жесткого кодинга. Кратко это... Вообщем, любое действие пользователя (и не только, конечно) с формой (окном) вызывает генерацию так называемого "сообщения" окну. Другими словами, система Вындоуз вызывает определенную процедуру, которая отвечает за поведение некого конкретного окна. Процедура получает параметры - код сообщения и несколько (максимум два) дополнительных параметра, значения в которых трактуются по разному в разных сообщениях. Эта самая процедура по коду полученного сообщения определяет что ей необходимо сделать с окном. Определяет, грубо говоря (языком VB), обычным Select Case. Например, получив сообщение от системы VM_PAINT (не уверен в синтаксисе), данная процедура отрисовывает на экране окно. Непосредственно субклассирование начинается с момента, когда мы вместо стандартной процедуры обработки оконных сообщений подсовываем окну адрес своей процедуры (через ВинАПИ) и, таким образом, можем следить абсолютно за всем, что происходит с окном. В том числе отслеживать нажатия кнопок мыши. Конечно, наша процедура после всех необходимых действий должна будет вызвать и стандартный обработчик оконных сообщений, без чего наша форма просто промрет :) Гемора ну очень много!!! Зато можно таки добиться собственного поведения табличной формы на правую кнопку мыши :) >Можно хоть какой нибудь пример, что бы попробовать эту штуку, или почитать где нибудь об этом Ээээээээ... Ни одной ссылки не помню... Воспользуйся поиском по слову "субклассирование". Здесь, кажется, обсуждалось. На Русьимпорте у АМа точно обсуждалось. Да и в интернете, думаю, полно инфы. з.ы. Если решишься на эту авантюру, то мой тебе совет - делай резервные копии перед каждым запуском всего этого дела :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2004, 00:56:45 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
насколько смог понять из чтения Гетца-а Access окон в понимании Windows всего 1 на приложение остальное картинки следовательно субклассирование не пойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2004, 01:06:12 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
>окон в понимании Windows всего 1 на приложение Не совсем корректно. Для НЕ-аксесовских программ ВСЕ отдельные элементы (текст-боксы, лэйблы, кнопки и т.п.) являются окнами. В Аксесе ситуация, действительно, несколько иная. Элементы управления являются просто "картинками" и то до тех пор, пока не получат фокус (если они умеют его получать). Как только получили - сразу становятся окном со своим hWnd и всеми вытекающими. Более того, Каждая форма в Аксе - это отдельное окно. И внутри формы дочерта дочерних окон - скрол-бары, вложенные окна и т.п. (вот точно иерархию Аксесовских форм не помню). Кстати у самого Аксеса туева хуча собственных окон, не имеющих прямого отношения к результатам деятельности программиста - главное окно, окно-родитель для всех MDI-окошек, куча тулбаров, скролы и т.д. и т.п. (Spy++ подтвердит:) В данном конкретном случае надо: 1. знать высоту области заголовков; 2. отловить через сабклассинг нажатие правой кнопки мыши и если координаты мышиного курсора в пределах высоты заголовков табличной формы, то "выкинуть" контекстное меню, заглушив при этом дальнейшую обработку сообщения. 3. еще и ширину столбцов надо сопоставить с координатами клика, чтобы понять, на каком заголовке мыша. Теоретически, это можно сделать, но практически... практически лично я бы не взялся за это... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2004, 01:50:05 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
To Exquisite был не прав - Гетц попутал Spy++ дает по окну на форму + MDI + ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2004, 09:34:32 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
Не парте мозги субклассированием. 1.Создай свою панель инструментов. (Правый клик на панели->Настройка, 2. далее Создать, ввести имя, например "mmm" 3. далее скопировать (перетянуть нужные встроенные пункты меню с нажатым контролом) на созданную панель. Нужные пункты меню можно отобразить в тойже форме поставив нужные галочки.:) 4. По вкусу "превратить" панель в её свойствах в панель инструментов, контекстное меню или строку меню. 5. Допустим в 4 выбрали контекстное меню, тогда в свойстве формы "контекстное меню" выбераем наше детище - "mmm". Вроде все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2004, 12:15:14 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
Shuhard, бывает... И со мной... Вот смотри, как я щаз извиняться буду :) для N_A > Не парте мозги субклассированием. Хм... Вообще не парить? Случаи бывают разные ;) > 5. ...тогда в свойстве формы "контекстное меню" выбераем наше детище - "mmm". Млин... Три раза "КУ" (с присиданиями:) Прав. Правда, это меню для всех "кликов" кроме "полевых" вылазиет, но это действительно в данной ситуации мелочи. //вот что значит давать советы не владея ситуацией (конкретно: не работая с табличными формами) AlTis! AlTis!!! Сабклассинг отменяется! Сорри за дизу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2004, 22:53:24 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
А можно ли в контекстное меню прописывать "свои" пункты, и вешать на них свои обработчики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 18:37:03 |
|
||
|
Контекстное меню
|
|||
|---|---|---|---|
|
#18+
Слушайте, у спокойно прошло такое 1) создал меню, накидал на него пунктов (копировать, вставить, ундо, отсортировать, найти, ...) 2) в свойствах меню сказал, что оно контекстное 3) у формы есть свойство Контекстное меню. На одну форму повесил одно, На другую другое. ------------------------------------------------------- Заходи в саpай аккуpатно - могут быть сеpьезные гpабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 18:46:45 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32559178&tid=1671539]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 343ms |

| 0 / 0 |
