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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение 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.

Ну не отмечает и все. Не могу даже понять он не заносит в маркер, или просто не прорисовывает.
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

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

Сообщение Maverick »

А событие cmMarka отрабатывается? проверял?
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение Johny »

Так вот в этом и дело, очень похоже что именно оно и не работает (я туда просто message лепил для проверки). А вот почему оно не отрабатывается я не понимаю
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

а внизу кнопочки то ваши появились?
если нет, то попробуйте фейс цеплять через openresource, а не через запуск внешнего.
и вообще
почему не воспользоваться стандартным набором?
sci1478EnIns
cmMarkUnMark
кроме того попробуйте продублировать ваше событие во 2 HandleEvent и вставте туды какую нибудь мессагу.
Кроме того поиграйте со строкой в проекте
#statusline "statgal"
от нее зависит порядок обработки событий.
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение Johny »

Кстати, тут зацепился и второй вопрос, который я просто писать не стал, пока :)
Статуслайн появляется как и описан, но если просто через запуск внешнего фэйса то он не появится. Обязательно запускать при загрузке.
Остальное попробую
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение Johny »

Не, все равно не получается. А как работать со стандартными?

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


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

А дальше просто юзать? Не получается. Я так понимаю, что его надо просто объявить в const и он заработает? Но чего-то не выходит.
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение 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.
Работает, как часы. Инициализация маркера, естественно, в вызывающем интерфейсе...
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение Johny »

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

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

Но тама какая-то приписка насчет 5.10
У меня 7.11
Короче не могу понять почему не отрабатывает
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение Johny »

А может даже с кодами нормально все. Мне кажеться что у меня ни капли не обрабатываются HandleEvent которые в панели стоят. Почему так может быть?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение Sheinina »

Извините, была не слишком внимательна.
Но у меня стоят:
cmMarkUnMark = 2243;
cmSelectAll = 2244;
cmUnSelectAll = 2245;
cmAltInsert = 2246;
cmInvertAll = 2247;
Сейчас работаю на 5.85.02, но этот же файл использовала, когда на предыдущей работе была 7.11 :)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

попробуйте в проект добавить
#statusline "statgal" первой строкой
я толком не знаю зачем это нужно, но иногда помогает. Точно знаю, что с этой строкой лучше. Без нее по разному обрабатываются формируемые события, попробуйте продублировать ваши события в разных Handleevent и вывести там просто мессаги
Johny
Местный житель
Сообщения: 291
Зарегистрирован: 29 мар 2005, 17:49
Откуда: С-Петербург
Контактная информация:

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

Сообщение Johny »

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

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

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

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

А как посмотреть содержимое маркера? Ну занеслось туда чего или нет?
Просто в новом фейсе в брауз засунуть таблицу маркера?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Sheinina
Местный житель
Сообщения: 366
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение Sheinina »

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