Групповой выбор дескрипторов

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

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

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

Групповой выбор дескрипторов

Сообщение hope »

Добрый день!

Нужно выбрать несколько дескрипторов - подскажите стандартный интерфейс.

Спасибо!
ira
Посетитель
Сообщения: 47
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение ira »

поищите GetGrDescr - позволяет выбрать несколько групп
Parameters
s4, // код группы пользователей (по умолчанию и возвращаемый)
IsMultyPick, // TRUE - множественный выбор
NotNeedKill, // TRUE - не очищать маркер
pGrDescr // nRec группы пользователей (по умолчанию и возвращаемый)
;
ira
Посетитель
Сообщения: 47
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение ira »

для выбора нескольких пользователей GetSomeDescr
Parameters
NotNeedKill; // TRUE - очищать маркер
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

А как использовать этот маркер?
ira
Посетитель
Сообщения: 47
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение ira »

посмотрите ...\Vip\FIN\REP\SEEPLATS.VIP - там есть пример обработки обоих этих интерфейсов.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Ira все правильно написала...
GetSomeDescr - Выбор дескриптора. Сохранение выбранных элементов идет в маркер. Если не нравится с маркером работать, то можно так :

Interface forexample 'Перегон из маркера в pick' DoAccept,EscClose,cyan;
create view
var
Markerd, IndexMark : longint;
NotNeedKill :boolean;

as select * from pick
where ((word(2507)==wlist));


parameters NotNeedKill;

procedure Marker2Pick(Marker: longint; wL: word);
var
i, MarkerCount: longint;
pickrec: comp;
{
MarkerCount:=GetMarkerCount(Marker);
for(i:=0;i<MarkerCount;i:=i+1)
{ if GetMarker(Marker,i,pickrec)
{
if ( insert Pick set Pick.wList := wL,
Pick.PickKol := i,
Pick.PickNum := i,
Pick.cRec := pickrec ) <> tsOK {};
}
NextVisual;
}
}

HandleEvent
CmInit:{

delete all from pick where ((word(2507)==wlist)) ;
if RunInterface('GetSomeDescr',NotNeedKill)=CmCancel
{
Abort;
exit;
}
markerd:=initmarker('UserTuneDescr', 8, 100, 10);
Marker2Pick(MarkerD, word(2507));
DoneMarker(markerd,'UserTuneDescr');
PutCommand(cmDefault);
}
end;
end.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Спасибо! Буду разбираться!
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Ira! А где это можно найти ...\Vip\FIN\REP\SEEPLATS.VIP ?
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Извинясь, если вопрос тупой... Но пока логики маркеров не пойму...

Интерфейсом GetSomeDescr я запоминаю выбранные значения в маркер.

Далее в своем интерфейсе мне нужно эти значения достать.

Как я должна добраться именно до этого маркера?

Ведь я могла запустить не только интерфейс GetSomeDescr, который работает с маркером. Но и еще что-нибудь выбрать, и тоже в маркер. Как определить, что вот это маркер - это для дескрипторов.

Или записи от обеих таблиц запишутся в один маркер? Как тогда выбрать записи для конкретной таблицы?
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

Надя, собственно, каждый маркер имеет собственный уникальный идентификатор . Ну или считайте, что вы имеете в системе набор поименованных массивов, которые сохраняются системой на момент закрытия интерфейса в DSK-файле.
сл-но Ваша задача - в собственном интерфейсе проинициализировать этот массив и считать из него все данные.
В приведенном выше коде, маркер (массив) имеет имя UserTuneDescr и хранятся в нем (судя по размеру одного элемента) записи типа Comp, т.е. NRec-и из x$users, если мне память не изменяет...
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Не пойму, при вызове GetSomeDescr я ведь нигде не указываю, в какой маркер ложить?

Или в Галактике строго зашито, что помеченные дескрипторы ложатся всегда в маркер с именем UserTuneDescr?

Или так:
Т.е. я должна сначала проинициализовать маркер, например М1. Потом запустить интерфейс GetSomeDescr, который запишет в мой маркер М1 выбранные значения. Затем закрыть маркер М1 с сохранением данных.
Затем проинициализировать маркер М2. Затем запустить другой интерфейс, который положит в маркер М2 выбранные значения другой таблицы. Затем закрыть маркер М2 с сохранением данных.

А дальше уже считывать значения из нужного мне маркера?
Ответить