Интерфейс множественного выбора

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

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

Ответить
charly
Новичок
Сообщения: 25
Зарегистрирован: 26 окт 2005, 12:56

Интерфейс множественного выбора

Сообщение charly »

Подскажите как обработать данные из интерфейса множественного выбора, созданного при помощи маркеров. Необходим отчет ARD, который выводил бы документы по нескольким дескрипторам. Сам интерфейс множественного выбора сделать получилось, а вот как дальше обработать полученные данные не могу понять.

Interface int_mnoj_akts_descr 'выбор дескриптора' cyan, doaccept;
show at(,,80,25)
var
d2:comp;
x2:word
mMc:longInt;
indexNo:longInt;
parameters d2,x2,mMc,indexNo;
create view v1 as select tuneval.strval
from tuneval (memory, autoload)
where ((cuser==x$users.atl_nrec))
and tuneval.obj=x$users.XU$USEROFFICE
and x$users.XU$USEROFFICE=x2
and d2=ctune and strval<>''
;
function Istrue : Boolean;
begin
Istrue:=SearchMarker(mMc,tuneval.nrec,indexNo);
end;
browse b1;
show at(,,,14)
fields
if (isTrue, '+',' ') '*':[1], Skip,{font={bold=Istrue}};
tuneval.strval 'Дескриптор':[5],protect,{font={bold=istrue}} ;
X$USERS.XU$LOGINNAME 'Логин пользователя':[30],protect,{font={bold=istrue}};
end;
Screen s1;
Show at(,15,,)
buttons
cmMarkRec;
cmMarkAll;
cmInvertMark;
cmUnmarkAll;
<<

<. Пометить .> <. Пометить все .> <. Инвертировать .> <. Снять пометки .>

>>

end;
handleevent
cmInit:{
mMc:=initmarker('Mc',8,10,10);
clearmarker(mMc);
}
cmMarkRec: {
InvertMarker(mMc, tuneval.nrec);
if ((GetNext tuneval) = tsOk) {};
Rereadrecord;
}
cmMarkall: {
PushPos(tntuneval);
_Loop tuneval{
Insertmarker(mMc, tuneval.nrec);
}
PopPos(tntuneval);
Rereadrecord;
}
cmInvertMark: {
Pushpos(tntuneval);
_Loop tuneval {
invertmarker(mMc, tuneval.nrec);
}
PopPos(tntuneval);
rereadrecord;
}
cmUnMarkAll: {
clearmarker(mMc);
rereadrecord;
}
cmDone:{
DoneMarker(mMc,'Mc')
}
end;
end.
stray
Постоянный гость
Сообщения: 90
Зарегистрирован: 29 мар 2005, 17:49

Сообщение stray »

например так:
mMc:=initmarker('Mc',8,10,10);
countMc:=GetMarkerCount(Mc) - 1 ;
For (i := 0; i <= countMc; i := i + 1)
If (GetMarker(Mc, i, Item)) {
...
}
DoneMarker(PsnMark, '' ) ;
charly
Новичок
Сообщения: 25
Зарегистрирован: 26 окт 2005, 12:56

Сообщение charly »

Спасибо попробую
charly
Новичок
Сообщения: 25
Зарегистрирован: 26 окт 2005, 12:56

Сообщение charly »

что-то все равно ни чего не выходит.
Точнее отчет формируется, но только по последнему элементу в маркере(дескриптор).
Но подскажите как обрабоать маркер так, чтобы в отчет попали все выбранные мною дескрипторы.
Ответить