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

интерфейс выбора: priority

Добавлено: 20 май 2009, 09:47
Alexander
интерфейс вызывается, но не могу взять маркер, делаю так:

Код: Выделить всё

   
   var Marker        : longint;
   Marker  := InitMarker('MTOPRIORITY',8,1,1);
   ClearMarker(Marker);
   RunInterface('priority', 0,0, 0, 'MTOPRIORITY');
   message('кол-во маркеров:' + GetMarkerCount(Marker))

   DoneMarker(Marker, 'MTOPRIORITY');
результат всегда ноль. Что я делаю не правильно?

Добавлено: 20 май 2009, 11:11
galover
Alexander
помнится после вызова интерфейса маркер нужно переинициализировать

Добавлено: 21 май 2009, 14:30
Screw
А что значит "взять"? Если ожидается, что в инициализированный в вызывающем интерфейсе маркер попадет что-то из вызываемого, то ожидания не оправданы. Вызываемому интерфейсу нужно передавать не идентификатор, под которым данные и параметры маркера сохраняются в деске, а собственно хэндл маркера (в примере - переменная Marker). Или другой вариант: вызываемый интерфейс сохраняет всё нажитое непосильным трудом в деске, используя строку-идентификатор ресурса, а вызывающий потом поднимает эти данные из деска.

То есть как-то так (в вызывающем):

Код: Выделить всё

  RunInterface('priority', 0,0, 0, 'MTOPRIORITY'); 
  var Marker: longint; 
  Marker := InitMarker('MTOPRIORITY',8,1,1); 
  message('кол-во маркеров:' + GetMarkerCount(Marker))
в вызываемом:

Код: Выделить всё

  ...
  var Marker: longint; 
  ...
  Marker  := InitMarker('', 8, 10, 10); // просто пустой маркер, из деска ничего не грузим
  ...
  //помечаем-помечаем
  ...
  DoneMarker(Marker, 'MTOPRIORITY'); // сохранили содержимое маркера в деске и грохнули маркер

Добавлено: 22 май 2009, 08:21
Alexander
вот так заработало:

Код: Выделить всё

var Marker        : longint;
RunInterface('priority', 0,0, 0, 'MTOPRIORITY');
Marker  := InitMarker('MTOPRIORITY',8,1,1);
message('кол-во маркеров:' + GetMarkerCount(Marker))

DoneMarker(Marker, 'MTOPRIORITY'); 
Инитить надо после вызова фейса, всем спасибо

Добавлено: 26 май 2009, 23:06
Screw
Выполнять уничтожение маркера с записью в деск (непустая строка во втором параметре DoneMarker) - лишнее. Зачем вам перезаписывать его содержимое?