Страница 1 из 1

Генерация события при нажатии кнопки на клавиатуре

Добавлено: 24 окт 2005, 14:40
Alexx
Добрый день!

Что-то я совсем запарился, не могу повешать событие на клавишу.
Смысл таков:
Есть интерфейс, отображающий группы документов (древовидный). Хочу по нажатию Ins выделить оперделенную позицию или ветку (не суть важна).
Что я сделал:
описал статус-контекст и переменные

//mystatus.rc
const
cmIns = 1111;
scMy = 2222;
end;
mystatusline statusline
{
(scMy..scMy)
{
'~Ins~ Пометить', cmIns, kbIns;
}
}
// end of mystatus.rc

Далее, в prj-файле
#include mystatus.rc
#make myinterface.vip

Потом в своем интерефейсе вешаю что-либо на событие cmIns, ничего не происходит, даже кнопки статус контекста не появляются, такое ощущение что фейс его не видит вообще.
Вот исходник самого фейса, для проверки работы события просто привесил на него мессадж:

interface myinterface 'Мой интерфейс' cyan, doaccept;

view
var
curowner: comp;
gr_nrec: comp;
gr_kod, gr_name: string;
as select * from groupsch, groupsch groupsch2
where ((curowner == groupsch.cnode and
groupsch.nrec == groupsch2.cnode))
order by groupsch.kod;

parameters
gr_nrec,
gr_kod,
gr_name;

tree b1
fields
groupsch.kod 'Код' ('Код',,scMy): [20], protect;
groupsch.name 'Наименование' ('Наименование',,scMy): [40], protect;
end;

handleevent
cmIns:
{
Message('cmIns', YesNo);
}

cmDefault:
{
gr_nrec := groupsch.nrec;
gr_kod := groupsch.kod;
gr_name := groupsch.name;
}
cmTreeNodeType:
{
if isvalidall(tngroupsch2) then
{
TreeSetNodeType(b1, if(TreeNodeIsOpen(b1), ntfopen, ntfclose));
}
else
{
TreeSetNodeType(b1, ntftext);
}
}
cmTreeTop: curowner := 0;
cmTreeDown: curowner:=groupsch.nrec;
cmTreeUp: curowner:=groupsch.cnode;
cmCancel: {};
cmDone: {};
end;

end.

Добавлено: 25 окт 2005, 08:10
Goblin
Не увидится твой статус-лайн ... лучше пользуй какой-нить системный типа sci1InsPMAltB, его константа 7179

Добавлено: 07 ноя 2005, 16:16
Sytin
А можно конкретный пример как повесить событие на клавишу Ins?

Добавлено: 08 ноя 2005, 12:03
san
не получается добавить свой статус-лайн, или стандартный набор или свой набор. как и меню, не добавишь пункт в стандартное меню. закрытый объект.

Добавлено: 08 ноя 2005, 12:43
edward_K
добавить то получится тока вот нужно перекрыть statgal, в противном случае работать кнопки не будут, так что без атлантиса даже и не дергайтесь.
по поводу Ins
sci1378EnIns
событие
cmMarkUnMark
подробней ищите на этом форуме.

Добавлено: 08 ноя 2005, 14:45
Sytin
Все получилось.Спасибо