И снова к маркерам
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
И снова к маркерам
Все, запарило, уже не разобраться без нормальной доки по этим штукам. По форуму уже перерылся. Короче не знаю как совладать.
#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.
Ну не отмечает и все. Не могу даже понять он не заносит в маркер, или просто не прорисовывает.
#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
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: И снова к маркерам
А событие cmMarka отрабатывается? проверял?
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: И снова к маркерам
Так вот в этом и дело, очень похоже что именно оно и не работает (я туда просто message лепил для проверки). А вот почему оно не отрабатывается я не понимаю
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: И снова к маркерам
а внизу кнопочки то ваши появились?
если нет, то попробуйте фейс цеплять через openresource, а не через запуск внешнего.
и вообще
почему не воспользоваться стандартным набором?
sci1478EnIns
cmMarkUnMark
кроме того попробуйте продублировать ваше событие во 2 HandleEvent и вставте туды какую нибудь мессагу.
Кроме того поиграйте со строкой в проекте
#statusline "statgal"
от нее зависит порядок обработки событий.
если нет, то попробуйте фейс цеплять через openresource, а не через запуск внешнего.
и вообще
почему не воспользоваться стандартным набором?
sci1478EnIns
cmMarkUnMark
кроме того попробуйте продублировать ваше событие во 2 HandleEvent и вставте туды какую нибудь мессагу.
Кроме того поиграйте со строкой в проекте
#statusline "statgal"
от нее зависит порядок обработки событий.
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: И снова к маркерам
Кстати, тут зацепился и второй вопрос, который я просто писать не стал, пока
Статуслайн появляется как и описан, но если просто через запуск внешнего фэйса то он не появится. Обязательно запускать при загрузке.
Остальное попробую
Статуслайн появляется как и описан, но если просто через запуск внешнего фэйса то он не появится. Обязательно запускать при загрузке.
Остальное попробую
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: И снова к маркерам
Не, все равно не получается. А как работать со стандартными?
Const
sci1478EnIns = 6999;
cmMarkUnMark = 1221;
cmSelectAll = 1219;
end;
StatGal statusline
{
(sci1478EnIns..sci1478EnIns)
{
'~F1~ Справка', cmHelp, kbF1;
'~Enter~ Карточка', cmDefault, kbEnter;
и т.д.
А дальше просто юзать? Не получается. Я так понимаю, что его надо просто объявить в const и он заработает? Но чего-то не выходит.
Const
sci1478EnIns = 6999;
cmMarkUnMark = 1221;
cmSelectAll = 1219;
end;
StatGal statusline
{
(sci1478EnIns..sci1478EnIns)
{
'~F1~ Справка', cmHelp, kbF1;
'~Enter~ Карточка', cmDefault, kbEnter;
и т.д.
А дальше просто юзать? Не получается. Я так понимаю, что его надо просто объявить в const и он заработает? Но чего-то не выходит.
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Re: И снова к маркерам
Я просто подключаю 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.
Работает, как часы. Инициализация маркера, естественно, в вызывающем интерфейсе...
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.
Работает, как часы. Инициализация маркера, естественно, в вызывающем интерфейсе...
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: И снова к маркерам
Таак, время идет, а мозгов не прибавляется.
Не обрабатываются у меня сообытия в панели
cmMarkUnMark
cmSelectAll
cmUnSelectAll
cmInvertAll
может у меня их коды не правильные?
Хотя вроде стоят в файле galnet.ccm
cmMarkUnMark = 1221;
cmSelectAll = 1219;
cmUnSelectAll = 1220;
cmInvertAll = 1222;
Но тама какая-то приписка насчет 5.10
У меня 7.11
Короче не могу понять почему не отрабатывает
Не обрабатываются у меня сообытия в панели
cmMarkUnMark
cmSelectAll
cmUnSelectAll
cmInvertAll
может у меня их коды не правильные?
Хотя вроде стоят в файле galnet.ccm
cmMarkUnMark = 1221;
cmSelectAll = 1219;
cmUnSelectAll = 1220;
cmInvertAll = 1222;
Но тама какая-то приписка насчет 5.10
У меня 7.11
Короче не могу понять почему не отрабатывает
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: И снова к маркерам
А может даже с кодами нормально все. Мне кажеться что у меня ни капли не обрабатываются HandleEvent которые в панели стоят. Почему так может быть?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Re: И снова к маркерам
Извините, была не слишком внимательна.
Но у меня стоят:
cmMarkUnMark = 2243;
cmSelectAll = 2244;
cmUnSelectAll = 2245;
cmAltInsert = 2246;
cmInvertAll = 2247;
Сейчас работаю на 5.85.02, но этот же файл использовала, когда на предыдущей работе была 7.11
Но у меня стоят:
cmMarkUnMark = 2243;
cmSelectAll = 2244;
cmUnSelectAll = 2245;
cmAltInsert = 2246;
cmInvertAll = 2247;
Сейчас работаю на 5.85.02, но этот же файл использовала, когда на предыдущей работе была 7.11
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: И снова к маркерам
попробуйте в проект добавить
#statusline "statgal" первой строкой
я толком не знаю зачем это нужно, но иногда помогает. Точно знаю, что с этой строкой лучше. Без нее по разному обрабатываются формируемые события, попробуйте продублировать ваши события в разных Handleevent и вывести там просто мессаги
#statusline "statgal" первой строкой
я толком не знаю зачем это нужно, но иногда помогает. Точно знаю, что с этой строкой лучше. Без нее по разному обрабатываются формируемые события, попробуйте продублировать ваши события в разных Handleevent и вывести там просто мессаги
-
- Местный житель
- Сообщения: 291
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: С-Петербург
- Контактная информация:
Re: И снова к маркерам
События обрабатываться начали. Спасибо Арине за правильные коды.
Только вот помечаться ничего не хочет
А кто-нибудь знает, зачем в примерах пишут такую штуку
Var
...
(Markerstr)
...
end;
Вот что это за зверь такой, и почему в скобках?
А как посмотреть содержимое маркера? Ну занеслось туда чего или нет?
Просто в новом фейсе в брауз засунуть таблицу маркера?
Только вот помечаться ничего не хочет
А кто-нибудь знает, зачем в примерах пишут такую штуку
Var
...
(Markerstr)
...
end;
Вот что это за зверь такой, и почему в скобках?
А как посмотреть содержимое маркера? Ну занеслось туда чего или нет?
Просто в новом фейсе в брауз засунуть таблицу маркера?
Безвыходных ситуаций не бывает: DO LOOP WHILE TRUE
Re: И снова к маркерам
Johny, если хотите получить пример полного интерфейса с пометками - пришлите свой e-mail на agapova@salon.ru, чтобы место в форуме не занимать.