Страница 3 из 3

Re: Вопросы о маркерах...

Добавлено: 16 авг 2010, 19:39
Den
А зачем Вы его туда сохраняете, если нужно удалить маркер оттуда...
ну перед donemarker почистите его тогда

Re: Вопросы о маркерах...

Добавлено: 16 авг 2010, 19:54
BlazeBio
А не о том. Нужно, чтобы выделенные записи сохранялись в маркере. И вновь после открытия оставались выделенными.

Re: Вопросы о маркерах...

Добавлено: 17 авг 2010, 12:55
BlazeBio
Почему может мессага выскакивать в главном окне интерфейса, если она прописана во второстепеном окне интерфейса? И почему у меня либо пустой bwMC либо вылетает ошибка runtime error 216?

Код: Выделить всё

//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.

Re: Вопросы о маркерах...

Добавлено: 17 авг 2010, 16:53
BlazeBio
Примерчики надо сказать в доке кривые и устаревшие... :( Короче, проблема решена. Все события запихнуты в handleevent самого интерфейса или окна. 8-)

Re: Вопросы о маркерах...

Добавлено: 24 май 2011, 05:28
win
Подскажите пожалуйста как мне получить выделенные(помеченные) записи платежек (ФРО->документы->платежные поручения->cобственные; interface plpor)?

Re: Вопросы о маркерах...

Добавлено: 24 май 2011, 10:56
Vik
Ищите их в таблице Pick, где wList = 39

Re: Вопросы о маркерах...

Добавлено: 24 май 2011, 11:04
win
от 2010 года интерфейс, там с таблицей pick не работают

Re: Вопросы о маркерах...

Добавлено: 24 май 2011, 11:23
galover
Там сейчас используется объектный фейс маркера IMarker. Переменная piMarker. Если хочется просто маркера, то можно сделать так:

Код: Выделить всё

         var mrk : longint;
         mrk := InitMarker('', 8, 100, 10);
         piMarker.ExportTo(mrk);
         
        // Дальше как обычно
Но в любом случае нужно докомпилировать F_PlPor::PlPor.

Re: Вопросы о маркерах...

Добавлено: 19 сен 2011, 20:22
SergZol
Блин я уже все перепробовал :(
в чем моя ошибка???

Помогите!!!
Код приложен, атлантис 37 никак статус строка не выходит

Код: Выделить всё

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.

Re: Вопросы о маркерах...

Добавлено: 20 сен 2011, 01:02
Den
Дело в том, что у Вас определены на field-сы статлайн scPickan и он приоритетнее назначенного browse статлайна....

Re: Вопросы о маркерах...

Добавлено: 20 сен 2011, 09:42
SergZol
Den писал(а):Дело в том, что у Вас определены на field-сы статлайн scPickan и он приоритетнее назначенного browse статлайна....
Спасибо, глаз замылил и не вижу.