Как узнать имя локального меню?
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Как узнать имя локального меню?
Доброго времени суток.
Нужно добавить свой пункт меню для каталога организаций.
Пользователь будет открывать на редактирование организацию, выбирать вкладку прочие и там из локольного меню выбирать нужный пункт.
Подскажите как узнать имя этого меню.
Заранее спасибо.
Нужно добавить свой пункт меню для каталога организаций.
Пользователь будет открывать на редактирование организацию, выбирать вкладку прочие и там из локольного меню выбирать нужный пункт.
Подскажите как узнать имя этого меню.
Заранее спасибо.
Re: Как узнать имя локального меню?
масса занятного в файле:
G:\GAL81\exe\GALDOC\!GSDK.chm
G:\GAL81\exe\GALDOC\!GSDK.chm
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Наверное лыжи не катят
вот что там нашел
Ничего тут про локальное меню не сказано.
Я наверное не там смотрю?
вот что там нашел
Код: Выделить всё
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'Счет'
Я наверное не там смотрю?
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Кажется мозг включился. Нашел в этом файле список меню. Но не пойму как найти то меню которое открывается на вкладке "Прочее" в окне редактирования организации
Там два пункта "Внешняя классификация" и "Внешние атрибуты"
Там два пункта "Внешняя классификация" и "Внешние атрибуты"
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Ну подскажите кто нибудь!
Я уже все написал. А прикрутить куда надо не могу
Надо именно в локальное меню на вкладке "Прочие" в карточке контрагента.
Я уже все написал. А прикрутить куда надо не могу
Надо именно в локальное меню на вкладке "Прочие" в карточке контрагента.
Re: Как узнать имя локального меню?
Это из L_KATORG.CHM:
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Да. Это видел. Но как сделать чтобы оно появлялось именно на этой вкладке?
У меня вот есть такой кусок кода.
Я так полагаю нужно еще проверять что активной является именно эта вкладка? Если да, подскажите пожалуйста как это сделать.
У меня вот есть такой кусок кода.
Код: Выделить всё
#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: Как узнать имя локального меню?
Вроде оно
Код: Выделить всё
Метод 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);
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как узнать имя локального меню?
возможно вам поможет
function GetCurrentFormat : longInt;
case GetCurrentFormat of
scr001 : {
}
else
{ inherited :: HandleEvent (cmHotKey);
}
end;
function GetCurrentFormat : longInt;
case GetCurrentFormat of
scr001 : {
}
else
{ inherited :: HandleEvent (cmHotKey);
}
end;
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Как узнать имя локального меню?
Можно сделать так:
Тогда cmHotKeys вообще изменять не надо.
Код: Выделить всё
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;
}
}
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Попробовал так
Событие обрабатывается только в главном окне интерфейса, а в карточке редактирования не срабатывает. Может надо делать "Alter Interface" после чего то другого?
Код: Выделить всё
#Component "L_KATORG"
alter interface KATORG;
var menuID:longint;
HandleEvent
cmHotKeys:
{
message(string(GetCurrentFormat));
};
end;
end.
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Vik - Меню появлилось именно там где нужно, но не теперь не вызывется мой интерфейс!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как узнать имя локального меню?
у окна свои события, а на табличные следует использовать tableevent.
и cmValue1 обработку (а лучше где нибудь 40 и выше) забыли прописать.
и cmValue1 обработку (а лучше где нибудь 40 и выше) забыли прописать.
-
- Постоянный обитатель
- Сообщения: 194
- Зарегистрирован: 12 сен 2007, 16:34
- Откуда: Глазов
- Контактная информация:
Re: Как узнать имя локального меню?
Нет. Обработку описал. Вот полный код.
#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.
#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.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как узнать имя локального меню?
значится все таки нужно перехватывать cmHotkey. Местами прописано RunCommand(RunMenu), а местами стоит case RunMenu of