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

И снова к маркерам

Добавлено: 07 апр 2005, 19:10
Johny
Все, запарило, уже не разобраться без нормальной доки по этим штукам. По форуму уже перерылся. Короче не знаю как совладать.

#commands start at 50000
const
cmSelectAll = 12346;
cmMarka = 123457;
scExtFiles = 32154; end;


StatGal statusline
{
(scExtFiles..scExtFiles)
{
'~F1~ Справка', cmHelp, kbF1;
'~Enter~ Карточка', cmDefault, kbEnter;
'~Ins,+/-, *~ Пометка', cmMarka, kbIns;
}
}


interface Dict 'Выбор МЦ'
(,,scExtFiles) EscClose, Cyan;
show at ( 3, 1, 76, 26);

create view All
var
Markermc : longInt;
FieldMark : longInt;
IndexNo : longInt;

(MStr)

as select
if (SearchMarker(Markermc, katmc.nrec, IndexNo) = True, 'v', ' '),

* from katmc;

panel pnTable;
table katmc;
browse bwTable;
fields
Mstr '' :[1], Skip;
katmc.nrec 'Код' : Protect;
katmc.name 'Имя' : Protect;
katmc.barkod 'Баркод' : Protect;
end;

handleEvent
cmMarka: {
InvertMarker(Markermc, katmc.nrec);
if ((GetNext katmc) = tsOk) {};
RescanPanel(tnkatmc);

}
end;
end; // panel

handleEvent
cmInit: {
Markermc := InitMarker('ViewDict', 8, 1000, 100);
FieldMark := InitMarker('', 8, 20, 20);
}
cmDone: {
DoneMarker(Markermc, 'ViewDict');
DoneMarker(FieldMark, '');
}
end;
end.

Ну не отмечает и все. Не могу даже понять он не заносит в маркер, или просто не прорисовывает.

Re: И снова к маркерам

Добавлено: 07 апр 2005, 20:17
Maverick
А событие cmMarka отрабатывается? проверял?

Re: И снова к маркерам

Добавлено: 08 апр 2005, 10:27
Johny
Так вот в этом и дело, очень похоже что именно оно и не работает (я туда просто message лепил для проверки). А вот почему оно не отрабатывается я не понимаю

Re: И снова к маркерам

Добавлено: 08 апр 2005, 11:42
edward_K
а внизу кнопочки то ваши появились?
если нет, то попробуйте фейс цеплять через openresource, а не через запуск внешнего.
и вообще
почему не воспользоваться стандартным набором?
sci1478EnIns
cmMarkUnMark
кроме того попробуйте продублировать ваше событие во 2 HandleEvent и вставте туды какую нибудь мессагу.
Кроме того поиграйте со строкой в проекте
#statusline "statgal"
от нее зависит порядок обработки событий.

Re: И снова к маркерам

Добавлено: 08 апр 2005, 11:57
Johny
Кстати, тут зацепился и второй вопрос, который я просто писать не стал, пока :)
Статуслайн появляется как и описан, но если просто через запуск внешнего фэйса то он не появится. Обязательно запускать при загрузке.
Остальное попробую

Re: И снова к маркерам

Добавлено: 08 апр 2005, 16:11
Johny
Не, все равно не получается. А как работать со стандартными?

Const
sci1478EnIns = 6999;
cmMarkUnMark = 1221;
cmSelectAll = 1219;
end;


StatGal statusline
{
(sci1478EnIns..sci1478EnIns)
{
'~F1~ Справка', cmHelp, kbF1;
'~Enter~ Карточка', cmDefault, kbEnter;
и т.д.

А дальше просто юзать? Не получается. Я так понимаю, что его надо просто объявить в const и он заработает? Но чего-то не выходит.

Re: И снова к маркерам

Добавлено: 11 апр 2005, 18:42
Sheinina
Я просто подключаю GALNET.CSC (если надо, пришлю) а дальше расслабляюсь, например вот так:

Interface Select_Podr 'Выберите подразделение' DoAccept, EscClose, Cyan;
show at (1,,79,30);
view var
podrs, indexno: longint;
codr : comp;
cpos : comp;
lEnter : boolean;
s1 : string;
as select katpodr.name, katpodr.kod, katpodr.nrec
where order o1 by kod;

parameters podrs, s1;

browse b1 (,,sci1EnIns);
fields
katpodr.kod 'Код' :[20],protect,
{Font={bold=SearchMarker(podrs, katpodr.nrec, IndexNo)}};
katpodr.name 'Наименование':[40],protect,
{Font={bold=SearchMarker(podrs, katpodr.nrec, IndexNo)}};
end;
HandleEvent
cmMarkUnmark: {
InvertMarker(podrs,katpodr.nrec);
if GetNext katpodr <> tsOK then{};
RescanPanel(tnkatpodr);
}
cmInvertAll:{
PushPos(tnkatpodr);
_Loop katpodr {
InvertMarker(podrs,katpodr.nrec);
}
PopPos(tnkatpodr);
RescanPanel(tnkatpodr);
}
cmSelectAll: {
PushPos(tnkatpodr);
_Loop katpodr {
InsertMarker(podrs,katpodr.nrec);
}
PopPos(tnkatpodr);
RescanPanel(tnkatpodr);
}
cmUnSelectAll: {
ClearMarker(podrs)
RescanPanel(tnkatpodr);
}
end;

HandleEvent // Обработчик интерфейса
cmInit: {
setorder(tiO1); getfirst katpodr;
if GetMarkerCount(podrs)=1 then
ClearMarker(podrs);
}
cmDefault: {
if GetMarkerCount(podrs)=0 then {
InsertMarker(podrs,katpodr.nrec);
s1:=katpodr.name;
}
CloseInterface(cmOK);
}
cmCancel: {
ClearMarker(podrs);
CloseInterface(cmCancel);
}
end;
end.
Работает, как часы. Инициализация маркера, естественно, в вызывающем интерфейсе...

Re: И снова к маркерам

Добавлено: 14 апр 2005, 17:54
Johny
Таак, время идет, а мозгов не прибавляется.
Не обрабатываются у меня сообытия в панели
cmMarkUnMark
cmSelectAll
cmUnSelectAll
cmInvertAll

может у меня их коды не правильные?
Хотя вроде стоят в файле galnet.ccm
cmMarkUnMark = 1221;
cmSelectAll = 1219;
cmUnSelectAll = 1220;
cmInvertAll = 1222;

Но тама какая-то приписка насчет 5.10
У меня 7.11
Короче не могу понять почему не отрабатывает

Re: И снова к маркерам

Добавлено: 14 апр 2005, 18:07
Johny
А может даже с кодами нормально все. Мне кажеться что у меня ни капли не обрабатываются HandleEvent которые в панели стоят. Почему так может быть?

Re: И снова к маркерам

Добавлено: 14 апр 2005, 20:11
Sheinina
Извините, была не слишком внимательна.
Но у меня стоят:
cmMarkUnMark = 2243;
cmSelectAll = 2244;
cmUnSelectAll = 2245;
cmAltInsert = 2246;
cmInvertAll = 2247;
Сейчас работаю на 5.85.02, но этот же файл использовала, когда на предыдущей работе была 7.11 :)

Re: И снова к маркерам

Добавлено: 15 апр 2005, 11:51
edward_K
попробуйте в проект добавить
#statusline "statgal" первой строкой
я толком не знаю зачем это нужно, но иногда помогает. Точно знаю, что с этой строкой лучше. Без нее по разному обрабатываются формируемые события, попробуйте продублировать ваши события в разных Handleevent и вывести там просто мессаги

Re: И снова к маркерам

Добавлено: 15 апр 2005, 12:58
Johny
События обрабатываться начали. Спасибо Арине за правильные коды.
Только вот помечаться ничего не хочет :(

А кто-нибудь знает, зачем в примерах пишут такую штуку

Var
...
(Markerstr)
...
end;

Вот что это за зверь такой, и почему в скобках?

А как посмотреть содержимое маркера? Ну занеслось туда чего или нет?
Просто в новом фейсе в брауз засунуть таблицу маркера?

Re: И снова к маркерам

Добавлено: 15 апр 2005, 16:54
Sheinina
Johny, если хотите получить пример полного интерфейса с пометками - пришлите свой e-mail на agapova@salon.ru, чтобы место в форуме не занимать.