Групповой выбор дескрипторов
Модераторы: m0p3e, edward_K, Модераторы
Групповой выбор дескрипторов
Добрый день!
Нужно выбрать несколько дескрипторов - подскажите стандартный интерфейс.
Спасибо!
Нужно выбрать несколько дескрипторов - подскажите стандартный интерфейс.
Спасибо!
-
- Местный житель
- Сообщения: 1846
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
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.
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.
Извинясь, если вопрос тупой... Но пока логики маркеров не пойму...
Интерфейсом GetSomeDescr я запоминаю выбранные значения в маркер.
Далее в своем интерфейсе мне нужно эти значения достать.
Как я должна добраться именно до этого маркера?
Ведь я могла запустить не только интерфейс GetSomeDescr, который работает с маркером. Но и еще что-нибудь выбрать, и тоже в маркер. Как определить, что вот это маркер - это для дескрипторов.
Или записи от обеих таблиц запишутся в один маркер? Как тогда выбрать записи для конкретной таблицы?
Интерфейсом GetSomeDescr я запоминаю выбранные значения в маркер.
Далее в своем интерфейсе мне нужно эти значения достать.
Как я должна добраться именно до этого маркера?
Ведь я могла запустить не только интерфейс GetSomeDescr, который работает с маркером. Но и еще что-нибудь выбрать, и тоже в маркер. Как определить, что вот это маркер - это для дескрипторов.
Или записи от обеих таблиц запишутся в один маркер? Как тогда выбрать записи для конкретной таблицы?
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Надя, собственно, каждый маркер имеет собственный уникальный идентификатор . Ну или считайте, что вы имеете в системе набор поименованных массивов, которые сохраняются системой на момент закрытия интерфейса в DSK-файле.
сл-но Ваша задача - в собственном интерфейсе проинициализировать этот массив и считать из него все данные.
В приведенном выше коде, маркер (массив) имеет имя UserTuneDescr и хранятся в нем (судя по размеру одного элемента) записи типа Comp, т.е. NRec-и из x$users, если мне память не изменяет...
сл-но Ваша задача - в собственном интерфейсе проинициализировать этот массив и считать из него все данные.
В приведенном выше коде, маркер (массив) имеет имя UserTuneDescr и хранятся в нем (судя по размеру одного элемента) записи типа Comp, т.е. NRec-и из x$users, если мне память не изменяет...
Не пойму, при вызове GetSomeDescr я ведь нигде не указываю, в какой маркер ложить?
Или в Галактике строго зашито, что помеченные дескрипторы ложатся всегда в маркер с именем UserTuneDescr?
Или так:
Т.е. я должна сначала проинициализовать маркер, например М1. Потом запустить интерфейс GetSomeDescr, который запишет в мой маркер М1 выбранные значения. Затем закрыть маркер М1 с сохранением данных.
Затем проинициализировать маркер М2. Затем запустить другой интерфейс, который положит в маркер М2 выбранные значения другой таблицы. Затем закрыть маркер М2 с сохранением данных.
А дальше уже считывать значения из нужного мне маркера?
Или в Галактике строго зашито, что помеченные дескрипторы ложатся всегда в маркер с именем UserTuneDescr?
Или так:
Т.е. я должна сначала проинициализовать маркер, например М1. Потом запустить интерфейс GetSomeDescr, который запишет в мой маркер М1 выбранные значения. Затем закрыть маркер М1 с сохранением данных.
Затем проинициализировать маркер М2. Затем запустить другой интерфейс, который положит в маркер М2 выбранные значения другой таблицы. Затем закрыть маркер М2 с сохранением данных.
А дальше уже считывать значения из нужного мне маркера?