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

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

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

Ответить
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

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

Сообщение Alexander »

интерфейс вызывается, но не могу взять маркер, делаю так:

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

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

   DoneMarker(Marker, 'MTOPRIORITY');
результат всегда ноль. Что я делаю не правильно?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Alexander
помнится после вызова интерфейса маркер нужно переинициализировать
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение 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'); // сохранили содержимое маркера в деске и грохнули маркер
Виталий
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

вот так заработало:

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

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

DoneMarker(Marker, 'MTOPRIORITY'); 
Инитить надо после вызова фейса, всем спасибо
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Выполнять уничтожение маркера с записью в деск (непустая строка во втором параметре DoneMarker) - лишнее. Зачем вам перезаписывать его содержимое?
Виталий
Ответить