Re: Вопросы о маркерах...
Добавлено: 16 авг 2010, 19:39
А зачем Вы его туда сохраняете, если нужно удалить маркер оттуда...
ну перед donemarker почистите его тогда
ну перед donemarker почистите его тогда
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://asu.tyumbit.ru/
Код: Выделить всё
//vipinterface ietalon parameters (kgroup:comp;ketalon:comp;ckatstan:comp);
#include galnet.ccm;
#include galnet.csc;
//#include galnet.inc;
end;
interface ietalon (,hcDictInterface,Sci1478EscIns) EscClose, Cyan;
Show At (,,93,25);
var ketalon,kgroup,ckatstan:comp;
res:word;
mcname:string;
etalmc:string;
groupmcname:string;
idwindow:longInt;
idwindow2:longInt;
getnrec : longInt;
i:integer;
j:longint;
table struct marktable
(
nRec : comp,
cmcnrec: comp
)
with index
(
mark01 = nRec(Unique,Surrogate),
mark02 = cmcnrec
);
function funrec:comp; forward;
create view loh
var wnrec:comp
Markers : longInt;
FieldMarkers : longInt;
IndexNo : longInt;
(MarkerStr)
as select
//if (SearchMarker(Markers2, k4.nrec, IndexNo2) = True, 'v', ' '),
if (SearchMarker(Markers, katmc.nrec, IndexNo) = True, 'v', ' '),
ppkatstan.name,katmc.name
from ppkatstan,ppkatstanmc//,katmc k4(katmc02)
where((wnrec==ppkatstan.atl_nrec
and ppkatstan.atl_nrec==ppkatstanmc.cppkatstan
and ppkatstanmc.cmc ==katmc.nrec
//and 0==k4.isarch
));
create view etalon
as select /*etalon(ppkatstan.atl_nrec),*,*/k1.name,ppkatstan.name,*//,groupmc.name,*
from katmc k1,PPKATSTAN,groupmc
where ((
ppkatstan.cmc==k1.nrec
and (7=k1.isarch)
and groupmc.nrec==ppkatstan.cgroupmc));
parameters kgroup,ketalon,ckatstan;
function funrec :comp;
{
funrec:=ckatstan;
//message(ckatstan);
}
tableevent table ppkatstanmc
cmDeleteRecord :
{
delete current ppkatstanmc;
}
end;
window wmc 'Выбор реальных МЦ'(,hcDictInterface,Sci1478EscIns);
create view loh2
var Markers2 : longInt;
FieldMarkers2 : longInt;
IndexNo2 : longInt;
(MarkerStr2)
as select
if (SearchMarker(Markers2, k4.nrec, IndexNo2) = True, 'v', ' '),
k4.name,*
from katmc k4(katmc02)
where((0==k4.isarch));
function MyTable_Add(add_n: comp): boolean;
{
//clearbuffer(#mytable);
if (getFirst marktable where ((add_n == marktable.cmcNrec)) = tsOk)
{
delete current marktable;
}
else
{
marktable.cmcNrec := add_n;
if insert current marktable <> tsOk
{
message(''#3'Ошибка добавления записи в таблицу MyTable');
MyTable_Add := false;
}
else
{
MyTable_Add := true;
//message(add_n+' '+add_name);
}
}
}
panel pwMC
browse bwMC //(,,Sci1478EscIns)
//table k4//,cartesian;
//recMarker {k4.nrec};
fields
loh2.MarkerStr2 '' :[1], Skip;
loh2.k4.name 'Реальные МЦ':protect;
end;
handleEvent
cmDoMarkUnMark :
{
message('mark 0_K');
// i:=0;
InvertMarker(loh2.Markers2, loh2.k4.nrec);
if ((loh2.GetNext k4) = tsOk) {};
RescanPanel(#loh2.k4);
// MyTable_Add(k4.nrec);
// RescanPanel(#k4); // обновить панель
//else if (recMarker.count>5)
// if( getfirst marktable = tsOk )
// {
// do
// {
// i:=i+1;
//
// } while ( getnext marktable = tsOk );
// }
//message ('i= '+i);
}
cmUnSelAll:
{
message('UnSelAll 0_K');
ClearMarker(loh2.Markers2);
RescanPanel(#loh2.k4);
}
cmSelAll:
{
message('SelAll 0_K');
StartNewVisual( vtRotateVisual, vfTimer, 'Помечаю все', 1);
PushPos(#loh2.k4);
if ((loh2.GetFirst k4) = tsOk)
begin
do
begin
InsertMarker(loh2.Markers2, loh2.k4.nrec);
NextVisual;
end;
while (loh2.GetNext k4 = tsOk)
end;
PopPos(#loh2.k4);
StopVisual('', 0);
RescanPanel(#loh2.k4);
}
cmDoInvertMark:
{
message('DoInvertMark 0_K');
StartNewVisual( vtRotateVisual, vfTimer, 'Инвертирую список', 1);
PushPos(#loh2.k4);
if ((loh2.GetFirst k4) = tsOk)
begin
do
begin
InvertMarker(loh2.Markers2, loh2.k4.nrec);
NextVisual;
end;
while (loh2.GetNext k4 = tsOk)
end;
PopPos(#loh2.k4);
StopVisual( '', 0);
RescanPanel(#loh2.k4);
}
end;
end;
handleEvent
cmInit:
{
loh2.Markers2 := InitMarker('sss2', 8, 1000, 100);
loh2.FieldMarkers2 := InitMarker('', 8, 20, 20);
}
cmClose:
{
/* message(GetMarkerCount(loh2.Markers2));
_loop katmc
{
//GetMarker(Markers2,i,k4.nrec)
if getfirst ppkatstanmc where((ckatstan==ppkatstanmc.cppkatstan))=tsOk
{
if (katmc.nrec=ppkatstanmc.cmc)
{
message('№1= '+katmc.nrec);
j:=GetMarkerCount(loh2.Markers2) ;
for (i := 0; i <GetMarkerCount(loh2.Markers2) ; i++)
{
GetMarker(loh2.Markers2,i,getnrec);
message(getnrec);
if (getnrec<>katmc.nrec)
{
delete current ppkatstanmc;
rereadrecord(#ppkatstan);
//rescanpanel(#ppkatstanmc);
// rescanpanel(#katmc);
}
}
}
}
else
{
ppkatstanmc.cmc:=katmc.nrec;
ppkatstanmc.cppkatstan:=ckatstan;
insert current ppkatstanmc;
rescanpanel(#ppkatstan);
rescanpanel(#ppkatstanmc);
rescanpanel(#katmc);
}
}
*/
}
cmDone:
{
DoneMarker(loh2.Markers2, 'sss2');
DoneMarker(loh2.FieldMarkers2, '');
}
end;
end;
panel petalon
screen setalon //(,,Sci1478EscIns)
show at (,,,8);
fields
mcname:noprotect;
etalmc:protect,pickbutton;
groupmcname:protect,pickbutton;
buttons
cmRealMC;
<<
МЦ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Эталон МЦ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Группа МЦ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<.~в~ыбор МЦ.>
>>
end;
browse betalon2;
show at (,9,,);
table ppkatstan,cartesian;
//table katmc
fields
MarkerStr '' :[1], Skip;
katmc.name:protect;
end;
handleevent
cmCheckField:
{
case CurField of
#mcname:
{
if etalon.getfirst ppkatstan where((ckatstan==ppkatstan.atl_nrec))=tsok
{
etalon.ppkatstan.name:=mcname;
update current ppkatstan;
}
rescanpanel(#ppkatstan);
}
end;
}
cmDoMarkUnMark:
{
//message('domarkunmark OK!');
InvertMarker(Markers, katmc.nrec);
if ((GetNext katmc) = tsOk) {};
RescanPanel(#ppkatstan);
RescanPanel(#ppkatstanmc);
RescanPanel(#katmc);
}
cmUnSelAll:
{
//message('unselall OK!');
ClearMarker(Markers);
RescanPanel(#katmc);
}
cmSelAll: {
// message('SelAll OK!');
StartNewVisual( vtRotateVisual, vfTimer, 'Помечаю все', 1);
PushPos(#katmc);
if ((Modifier GetFirst katmc) = tsOk)
begin
do
begin
InsertMarker(Markers, katmc.nrec);
NextVisual;
end;
while (Modifier GetNext katmc = tsOk)
end;
PopPos(#katmc);
StopVisual('', 0);
RescanPanel(#katmc);
}
cmDoInvertMark: {
// message('DoInvertMark OK!');
StartNewVisual( vtRotateVisual, vfTimer, 'Инвертирую список', 1);
PushPos(#katmc);
if ((Modifier GetFirst katmc) = tsOk)
begin
do
begin
InvertMarker(Markers, katmc.nrec);
NextVisual;
end;
while (Modifier GetNext katmc = tsOk)
end;
PopPos(#katmc);
StopVisual( '', 0);
RescanPanel(#katmc);
}
end;
end;
handleevent
cmInit:
{
Markers := InitMarker('sss', 8, 1000, 100);
FieldMarkers := InitMarker('', 8, 20, 20);
//FieldMarkers := InitMarker('', 2, 20, 20);
// message(ckatstan);
if getfirst ppkatstan where ((ckatstan==ppkatstan.atl_nrec))=tsok
{
// mcname:=ppkatstan.name;
wnrec:=ppkatstan.atl_nrec;
}
if etalon.getfirst ppkatstan where ((ckatstan==ppkatstan.atl_nrec))=tsok
{
mcname:=etalon.ppkatstan.name;
ckatstan:=etalon.ppkatstan.atl_nrec;
}
if etalon.getfirst k1 where ((ketalon==k1.nrec))=tsok
{
etalmc:=etalon.k1.name;
ketalon:=etalon.k1.nrec;
}
if etalon.getfirst groupmc where ((kgroup==groupmc.nrec))=tsok
{
groupmcname:=etalon.groupmc.name;
ckatstan:=etalon.groupmc.nrec;
}
//rescanpanel(setalon);
rescanpanel(#etalon.ppkatstan);
rescanpanel(#etalon.k1);
rescanpanel(#etalon.groupmc);
rescanpanel(#katmc);
rescanpanel(betalon2);
}
cmPick:
{
UpdateTable();
case CurField of
#etalmc:
{
res:= RunInterface(PickKatMC,ketalon);
ppkatstan.cmc:=ketalon;
if etalon.getfirst k1 where ((ketalon==k1.nrec))=tsOk
{
etalmc:=etalon.k1.name;
ketalon:=etalon.k1.nrec;
}
rescanpanel(#etalon.k1);
rescanpanel(#ppkatstan);
}
#groupmcname:
{
res:= RunInterface(PickGroupMC,kgroup);
ppkatstan.cgroupmc:=kgroup;
if etalon.getfirst groupmc where ((kgroup==groupmc.nrec))=tsok
{
groupmcname:=etalon.groupmc.name;
ckatstan:=etalon.groupmc.nrec;
}
rescanpanel(#etalon.groupmc);
rescanpanel(#ppkatstan);
}
end;
}
cmRealMC:
{
RunWindowModal(wmc);
}
cmClose:
{
message(GetMarkerCount(Markers));
}
cmDone:
{
DoneMarker(Markers, 'sss');
DoneMarker(FieldMarkers, '');
}
end;
end.
Код: Выделить всё
var mrk : longint;
mrk := InitMarker('', 8, 100, 10);
piMarker.ExportTo(mrk);
// Дальше как обычно
Код: Выделить всё
interface diPickTar 'Тарифные ставки'doaccept,escclose,cyan;
show at(,,50,10);
table struct local tblTari
(
kod:word,
name:string
)
with index
(
indx=kod(unique)
);
create view
var wKodTar:word;
nameTar:string;
Markers:longint;
as select
if (FoundMarker(Markers, tblTari.kod), '√', '')
(fieldname = Picked12),
tblTari.kod,tblTari.name from tblTari;
parameters wKodTar,nameTar,Markers;
browse brPick('',,sci1InsPM)
show at(,,49,9)
table tblTari;
fields
{ font = { color = if ( Picked12 <> '', ColorMark, 0 )}};
Picked12 '√' ('"√" - Отмечено',,): [1], skip;
tblTari.kod 'Код' ('Код тарифа',hcnowpick,scPickan) :[4],protect;
tblTari.name 'Наименование' ('Наименование тарифа',hcnowpick,scPickan) :[40],protect;
end;
Procedure DisMarkersEvents;
{
DisableCommand(cmMarkUnMark);
DisableCommand(cmUnSelectAll);
DisableCommand(cmSelectAll);
}
procedure SelectAll;
{
_loop tblTari
InsertMarker(Markers, tblTari.kod);
}
handleEvent
cmInit:
{
Message(Markers);
delete all tblTari;
if insert tblTari (kod, name)
select TarStav.codtar, TarStav.naitar
from TarStav
ignore_errors (tsDuplicateKey) <> tsOk {}
// if (Markers=0)
// DisMarkersEvents;
}
cmDefault:
{
wKodTar:=tblTari.kod;
if (Markers<>0)
if (GetMarkerCount(Markers) = 0)
InsertMarker(Markers, tblTari.kod);
nameTar:=string(tblTari.kod)+' '+tblTari.name;
if(GetMarkerCount(Markers)>1)
nameTar:='Выбрано ставок '+string(GetMarkerCount(Markers));
CloseInterface(cmDefault);
}
cmMarkUnMark:
{
InvertMarker(Markers, tblTari.kod);
}
cmSelectAll:
{
SelectAll;
RescanPanel(#tblTari);
}
cmUnSelectAll:
{
ClearMarker(Markers);
RescanPanel(#tblTari);
}
end;
end.
Спасибо, глаз замылил и не вижу.Den писал(а):Дело в том, что у Вас определены на field-сы статлайн scPickan и он приоритетнее назначенного browse статлайна....