Улетает курсор в браузе
Модераторы: m0p3e, edward_K, Модераторы
Улетает курсор в браузе
Как сделать, чтобы после вставки строки курсор сразу же перемещался на место вставленной строки, или чтобы при удалении строки в браузе поднимался на позицию вверх?
			
			
									
						
										
						- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: Улетает курсор в браузе
rescanpanel(#table) обычно помогает. Или руками позиционируетесь, а потом снова рескан.
			
			
									
						
										
						Re: Улетает курсор в браузе
Дело в том, что после вставки или удаления курсор улетает в самый низ брауза, при этом при вставке встаёт на не сущетсвующую строку(за последней реальной). Это происходит даже при RescanPanel и PushPos/PopPos.
			
			
									
						
										
						- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: Улетает курсор в браузе
PushPos при вставке и при удалении не имеют смысла. При удалении можно типа так
но обычно как то без этого обхожусь
на несуществующую при вставке может улетать при некорректной обработке cmSetDefault.
			
			
									
						
										
						Код: Выделить всё
wkl:=false
if getperv tabla=0 { wkl:=true;PushPos() }
if wkl
  getnext tabla;
delete current tabla;
if wkl { PosPos() }
rescanpanel(#tabla)на несуществующую при вставке может улетать при некорректной обработке cmSetDefault.
Re: Улетает курсор в браузе
Пробовал ваш способ - удаляются сразу две позиции в браузе. 
			
			
									
						
										
						Re: Улетает курсор в браузе
Необходимо по человечески описать cmSetDefault, cmInsertRecord и cmDeleteRecord и ничего улетать никуда не будет.
			
			
									
						
										
						Re: Улетает курсор в браузе
В том то и проблема, что по-человечески не получается. Если бы всё было хорошо я б не спрашивал.
			
			
									
						
										
						Re: Улетает курсор в браузе
Код: Выделить всё
TableEvent Table Katorg;
 cmSetDefault : {
                };
 cmInsertRecord : Insert Current Katorg;
 cmUpdateRecord : Update Current Katorg;
 cmDeleteRecord : If Message ( '', YesNo ) = cmYes
                    then Delete Current Katorg;
End; //TableEvent Katorg
Re: Улетает курсор в браузе
Удалется нормально, но вставка происходит только одна, при чём при запуске окна заполняющего текущую строку оно пропадает. Может из-за того, что у меня несколько таблиц? 
			
			
									
						
										
						Код: Выделить всё
			panel pPPlan
			table pptitle;
	 	 	 browse bPPlan(,,Sci13478Esc)
			   	 fields
 	 	 	 	 	 pptitle.pdate   'Дата' : [15] , protect, noAutoSize;
 	 	 	 	 	 pptitle.npp   'Номер плана' : [25], protect, noAutoSize;
	 	 	 	 	 ppstatus.name 'Статус' : [7], protect,noAutoSize;
 	 	 	 	 	 podr   'Подразделение' : [25] , protect, noAutoSize;
  	 	 	 end;
			 tableevent
			 	cmSetDefault: {		  //clearbuffer(#pptitle);
										   pptitle.pdate:=Cur_Date();
										   pptitle.npp:='';
										   pptitle.cppstatus:=0;
										   pptitle.cpodr:=0;
										   
										 //pptitle.atl_nrec:=RecordsInTable(#pptitle)+1;
										 }
			   cmUpdateRecord : update current pptitle;
			   cmInsertRecord :{ insert current pptitle;};
			   cmDeleteRecord : delete current pptitle;
			 end;
			end;- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: Улетает курсор в браузе
tableevent вообще то делается на конкретную таблу и не в панели.
			
			
									
						
										
						Re: Улетает курсор в браузе
Панель с данном случае не нужна. 
Запись не вставляется, т.к. не было модификации. Т.е. запись IsNew. Если ручная корректировка полей не производится, то в cmSetDefault необходимо выставить флаг модификации. SetModified(true).
			
			
									
						
										
						Запись не вставляется, т.к. не было модификации. Т.е. запись IsNew. Если ручная корректировка полей не производится, то в cmSetDefault необходимо выставить флаг модификации. SetModified(true).
Re: Улетает курсор в браузе
m0p3e , поставил  SetModified(true) - идёт вставка в таблицу pptitle, удаления происходит. Но у меня должны удаляться две таблицы pptitle и ppspecif(подчинённая). Получается тогда ещё прописывать удаление в handleevent и таблицы ppspecif?
			
			
									
						
										
						Re: Улетает курсор в браузе
У таблицы нет HandleEvent-ов - есть TableEvent.BlazeBio писал(а):m0p3e , поставил SetModified(true) - идёт вставка в таблицу pptitle, удаления происходит. Но у меня должны удаляться две таблицы pptitle и ppspecif(подчинённая). Получается тогда ещё прописывать удаление в handleevent и таблицы ppspecif?
Код: Выделить всё
TableEvent Table ppTitle
cmDeleteRecord :
 {
  //Перед удалением основной записи удаляем все подчиненные
  If Delete ppSpecif Where ((ppTitle.nrec == ppSpecif.cPPTitle )) = tsOk
    Delete Current ppTitle;
 }
End;
TableEvent Table ppSpecif
cmDeleteRecord :
 {
  Delete Current ppSpecif;
 }
End;
И панели убираем нафиг! Для скринов и браузов указываем корневые таблицы! browse bPPlan(,,Sci13478Esc); Table ppTitle;
Re: Улетает курсор в браузе
А если вставка в другом окне? Как обработчик узнаёт, что именно та или иная таблица изменяется?
			
			
									
						
										
						Re: Улетает курсор в браузе
По указанной корневой таблице в браузе или скрине. Если ppTitle указана корневой в 10-ти скринах/браузах, то для всех будет выполняться TableEvent Table ppTitle;