Страница 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, чтобы место в форуме не занимать.