Страница 1 из 6
Как узнать имя локального меню?
Добавлено: 21 сен 2010, 17:51
Ренат
Доброго времени суток.
Нужно добавить свой пункт меню для каталога организаций.
Пользователь будет открывать на редактирование организацию, выбирать вкладку прочие и там из локольного меню выбирать нужный пункт.
Подскажите как узнать имя этого меню.
Заранее спасибо.
Re: Как узнать имя локального меню?
Добавлено: 21 сен 2010, 18:09
sensoft
масса занятного в файле:
G:\GAL81\exe\GALDOC\!GSDK.chm
Re: Как узнать имя локального меню?
Добавлено: 21 сен 2010, 18:18
Ренат
Наверное лыжи не катят
вот что там нашел
Код: Выделить всё
Window L_KATORG::KatOrg.KatOrg
Главное окно интерфейса L_KATORG::KatOrg
Структура видимых элементов
TreeBrowser trKatOrg
TreeColumn c_TRKATORG_KATORGIMP.CODE_Номер ^C'Номер'
TreeColumn c_TRKATORG_KATORGDESCR.NAME_Наименование_организации ^C'Наименование организации'
TreeColumn c_TRKATORG_KATORGIMP.NAME_Наименование_организации ^C'Наименование организации'
TreeColumn c_TRKATORG_KATORGDESCR.SHORTNAME_Альтернативное_наименование ^C'Альтернативное наименование'
TreeColumn c_TRKATORG_KATORGIMP.SHORTNAME_Альтернативное_наименование ^C'Альтернативное наименование'
TreeColumn c_TRKATORG_KATORGIMP.UNN_УНН/ИНН ^C'УНН/ИНН'
TreeColumn c_TRKATORG_ISBAL
TreeColumn c_TRKATORG_ISARHIV
TreeColumn c_TRKATORG_MARKERSTR
Browser GroupsBrowse
Column c_GROUPSBROWSE_DESCRIPTORGROUPNAME_Группа ^C'Группа'
Browser brNamBank
Column c_BRNAMBANK_KATBANK.NAME_Наименование_банка ^C'Наименование банка'
Column c_BRNAMBANK_KATBANK.MFO1_БИК_/_Код_МФО ^C'БИК / Код МФО'
Column c_BRNAMBANK_KATBANK.SCHET1_Счет ^C'Счет'
Ничего тут про локальное меню не сказано.
Я наверное не там смотрю?
Re: Как узнать имя локального меню?
Добавлено: 21 сен 2010, 18:21
Ренат
Кажется мозг включился. Нашел в этом файле список меню. Но не пойму как найти то меню которое открывается на вкладке "Прочее" в окне редактирования организации
Там два пункта "Внешняя классификация" и "Внешние атрибуты"
Re: Как узнать имя локального меню?
Добавлено: 22 сен 2010, 22:53
Ренат
Ну подскажите кто нибудь!
Я уже все написал. А прикрутить куда надо не могу
Надо именно в локальное меню на вкладке "Прочие" в карточке контрагента.
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 08:04
KATZ
Это из L_KATORG.CHM:
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 10:35
Ренат
Да. Это видел. Но как сделать чтобы оно появлялось именно на этой вкладке?
У меня вот есть такой кусок кода.
Код: Выделить всё
#Component "L_KATORG"
alter interface KATORG;
var menuID:longint;
HandleEvent
cmHotKeys:
{
menuId := LoadMenu('L_KATORG::mnuKatOrgEdit');
AddMenuItem (menuID,'Сформировать адрес из внешенго Кладра',cmValue1);
PutHotCommand(RunLoadMenu(menuID));
};
cmValue1:
{
RunInterface('getaddr_kladr');
};
end;
end.
Я так полагаю нужно еще проверять что активной является именно эта вкладка? Если да, подскажите пожалуйста как это сделать.
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 11:41
m0p3e
Вроде оно
Код: Выделить всё
Метод CurFormatInArea
Назначение
Возвращает идентификатор формата интерфейса, активного (т.е. видимого в настоящий момент) в области, заданной параметром ScreenBrowseTreeMemoId.
Описание
function CurFormatInArea (screenBrowseTreeMemoId : longInt
) : longInt;
Параметры
screenBrowseTreeMemoId - идентификатор области переключаемых форматов интерфейса. Область задаётся идентификатором любого из переключаемых форматов, прописанных в данной области (screen, browse, tree или memo).
Возвращаемое значение
Возвращает идентификатор формата интерфейса.
Пример
screen scOne;
show at (10, 10, 20, 20);
end;
browse brTwo;
show at (10, 10, 20, 20);
end;
...
SetFormat (brTwo);
...
if CurFormatInArea(brTwo) = brTwo then
// можно CurFormatInArea(scOne)
SetFormat (scOne);
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 11:43
edward_K
возможно вам поможет
function GetCurrentFormat : longInt;
case GetCurrentFormat of
scr001 : {
}
else
{ inherited :: HandleEvent (cmHotKey);
}
end;
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 14:00
Vik
Можно сделать так:
Код: Выделить всё
cmInit :
{
if (Inherited::HandleEvent(cmInit) != heOk)
{
Abort;
Exit;
}
var m_MenuName : string;
var m_Menu : longint;
m_MenuName := 'L_KATORG::mnuKatOrgEdit'
if (RecordExists X$Resources where (( 3 == X$Resources.XR$Type and m_MenuName == X$Resources.XR$Name))
!= tsOk)
{
DeleteMenuHowDynamics (m_MenuName);
m_Menu := LoadMenuEx (m_MenuName, true, false);
AddMenuItem(m_Menu, 'Сформировать адрес из внешенго Кладра',cmValue1);
StoreMenuHowDynamics (m_Menu, m_MenuName);
DisposeLoadMenu (m_Menu);
ReinitHeaderMenu;
}
}
Тогда cmHotKeys вообще изменять не надо.
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 15:10
Ренат
Попробовал так
Код: Выделить всё
#Component "L_KATORG"
alter interface KATORG;
var menuID:longint;
HandleEvent
cmHotKeys:
{
message(string(GetCurrentFormat));
};
end;
end.
Событие обрабатывается только в главном окне интерфейса, а в карточке редактирования не срабатывает. Может надо делать "Alter Interface" после чего то другого?
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 15:15
Ренат
Vik - Меню появлилось именно там где нужно, но не теперь не вызывется мой интерфейс!
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 15:18
edward_K
у окна свои события, а на табличные следует использовать tableevent.
и cmValue1 обработку (а лучше где нибудь 40 и выше) забыли прописать.
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 15:27
Ренат
Нет. Обработку описал. Вот полный код.
#Component "L_KATORG"
alter interface KATORG;
create view
var menuID:longint;
as select * from X$Resources(ReadOnly) ;
HandleEvent
cmInit :
{
if (Inherited::HandleEvent(cmInit) != heOk)
{
Abort;
Exit;
}
var m_MenuName : string;
var m_Menu : longint;
m_MenuName := 'L_KATORG::mnuKatOrgEdit'
if (RecordExists X$Resources where (( 3 == X$Resources.XR$Type and m_MenuName == X$Resources.XR$Name))
!= tsOk)
{
DeleteMenuHowDynamics (m_MenuName);
m_Menu := LoadMenuEx (m_MenuName, true, false);
AddMenuItem(m_Menu, 'Сформировать адрес из внешнего Кладра',cmValue41);
StoreMenuHowDynamics (m_Menu, m_MenuName);
DisposeLoadMenu (m_Menu);
ReinitHeaderMenu;
}
};//cmInit
cmValue41:
{
RunInterface('getaddr_kladr',Katorg.Nrec, Katorg.Name);
};
end;
end.
Re: Как узнать имя локального меню?
Добавлено: 23 сен 2010, 15:36
edward_K
значится все таки нужно перехватывать cmHotkey. Местами прописано RunCommand(RunMenu), а местами стоит case RunMenu of