Страница 1 из 1
Групповой выбор дескрипторов
Добавлено: 18 июн 2007, 09:21
hope
Добрый день!
Нужно выбрать несколько дескрипторов - подскажите стандартный интерфейс.
Спасибо!
Добавлено: 18 июн 2007, 10:49
ira
поищите GetGrDescr - позволяет выбрать несколько групп
Parameters
s4, // код группы пользователей (по умолчанию и возвращаемый)
IsMultyPick, // TRUE - множественный выбор
NotNeedKill, // TRUE - не очищать маркер
pGrDescr // nRec группы пользователей (по умолчанию и возвращаемый)
;
Добавлено: 18 июн 2007, 10:54
ira
для выбора нескольких пользователей GetSomeDescr
Parameters
NotNeedKill; // TRUE - очищать маркер
Добавлено: 18 июн 2007, 11:15
hope
А как использовать этот маркер?
Добавлено: 18 июн 2007, 11:42
ira
посмотрите ...\Vip\FIN\REP\SEEPLATS.VIP - там есть пример обработки обоих этих интерфейсов.
Добавлено: 18 июн 2007, 11:56
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.
Добавлено: 18 июн 2007, 14:32
hope
Спасибо! Буду разбираться!
Добавлено: 18 июн 2007, 14:37
hope
Ira! А где это можно найти ...\Vip\FIN\REP\SEEPLATS.VIP ?
Добавлено: 18 июн 2007, 15:28
hope
Извинясь, если вопрос тупой... Но пока логики маркеров не пойму...
Интерфейсом GetSomeDescr я запоминаю выбранные значения в маркер.
Далее в своем интерфейсе мне нужно эти значения достать.
Как я должна добраться именно до этого маркера?
Ведь я могла запустить не только интерфейс GetSomeDescr, который работает с маркером. Но и еще что-нибудь выбрать, и тоже в маркер. Как определить, что вот это маркер - это для дескрипторов.
Или записи от обеих таблиц запишутся в один маркер? Как тогда выбрать записи для конкретной таблицы?
Добавлено: 18 июн 2007, 15:36
Maverick
Надя, собственно, каждый маркер имеет собственный уникальный идентификатор . Ну или считайте, что вы имеете в системе набор поименованных массивов, которые сохраняются системой на момент закрытия интерфейса в DSK-файле.
сл-но Ваша задача - в собственном интерфейсе проинициализировать этот массив и считать из него все данные.
В приведенном выше коде, маркер (массив) имеет имя UserTuneDescr и хранятся в нем (судя по размеру одного элемента) записи типа Comp, т.е. NRec-и из x$users, если мне память не изменяет...
Добавлено: 18 июн 2007, 16:36
hope
Не пойму, при вызове GetSomeDescr я ведь нигде не указываю, в какой маркер ложить?
Или в Галактике строго зашито, что помеченные дескрипторы ложатся всегда в маркер с именем UserTuneDescr?
Или так:
Т.е. я должна сначала проинициализовать маркер, например М1. Потом запустить интерфейс GetSomeDescr, который запишет в мой маркер М1 выбранные значения. Затем закрыть маркер М1 с сохранением данных.
Затем проинициализировать маркер М2. Затем запустить другой интерфейс, который положит в маркер М2 выбранные значения другой таблицы. Затем закрыть маркер М2 с сохранением данных.
А дальше уже считывать значения из нужного мне маркера?