21.10.2008, 21:16 | #1 |
Участник
|
Добрый день всем!
Может кто-нить знает и подскажет, а то я уже голову сломал.. В общем задача такая: нужно иметь возможность склонять данные, соответственно из любого поля на таблице иметь доступ к таблице склонения. Я хотел метод доступа запихнуть в контекстное меню, которое на гриде, но не нашел как оно формируется. Может кто знает как это сделать? Или может как-то можно иначе? А то кнопками не интересно совсем( Спасибо. |
|
22.10.2008, 08:51 | #2 |
Участник
|
Форма tutorial_PopupMenu
|
|
22.10.2008, 12:03 | #3 |
Участник
|
Спасибо за ответ! Но с созданием своего контекстного меню нет проблем, хотелось запихнуть процедуру именно в стандартное контекстное меню
|
|
23.10.2008, 11:46 | #4 |
Участник
|
Перекрывайте не метод Context(), а showContextMenu()
<div class='XPPtop'>X++</div><div class='XPP'> [color=:blue]public[/color] [color=:blue]int[/color] showContextMenu([color=:blue]int[/color] _menuHandle) { [color=:blue]int[/color] ret; PopupMenu popupMenu = [color=:blue]new[/color] PopupMenu(this.hWnd()); [color=:blue]int[/color] item1; [color=:blue]int[/color] item2; [color=:blue]int[/color] item3; [color=:blue]int[/color] item4; [color=:blue]int[/color] item5; ; WinAPI::destroyMenu(popupMenu.hMenu()); popupMenu.hMenu(_menuHandle); item1 = popupMenu.insertItem([color=:red]"Menu item 1"[/color]); item2 = popupMenu.insertItem([color=:red]"Menu item 2"[/color]); item3 = popupMenu.insertItem([color=:red]"Menu item 3"[/color]); item4 = popupMenu.insertItem([color=:red]"Menu item 4"[/color]); item5 = popupMenu.insertItem([color=:red]"Menu item 5"[/color]); ret = [color=:blue]super[/color](popupMenu.hMenu()); [color=:blue]switch[/color] (ret) { [color=:blue]case[/color] item1: info([color=:red]"Item 1"[/color]); [color=:blue]break[/color]; [color=:blue]case[/color] item2: info([color=:red]"Item 2"[/color]); [color=:blue]break[/color]; [color=:blue]case[/color] item3: info([color=:red]"Item 3"[/color]); [color=:blue]break[/color]; [color=:blue]case[/color] item4: info([color=:red]"Item 4"[/color]); [color=:blue]break[/color]; [color=:blue]case[/color] item5: info([color=:red]"Item 5"[/color]); [color=:blue]break[/color]; } [color=:blue]return[/color] ret; }</div>
__________________
Axapta v.3.0 sp5 kr2 |
|
23.10.2008, 13:05 | #5 |
Участник
|
Цитата:
Перекрывайте не метод Context(), а showContextMenu()
|
|
23.10.2008, 14:57 | #6 |
Участник
|
Либо перекрывать метод showContextMenu() на каждом контроле формы, либо писать свою внешнюю библиотеку (com или dll), в которых реализовывать перехват и распознавание контекстного меню и добавление нужных пунктов.
Последнее можно реализовать и без привлечения внешних обработок, но занятие будет достаточно трудоемкое. По-моему, если речь не идет о добавлении для всех форм, первый пункт будет самым простым и быстрым.
__________________
Axapta v.3.0 sp5 kr2 |
|
24.10.2008, 12:09 | #7 |
Участник
|
Можно оказывается перекрыть этот метод на табах, только мне так и не удалось вытащить поле, на котором стоит указатель. Может кто-нибудь знает как? Все контролы перекрывать очень не хочется, потому как форм оч много, да и полей тоже. Есть еще один метод - форма документооборота, туда без проблем можно добавить процедуру. Но это не так красиво, как с контекстным меню
|
|