Страница 1 из 1
					
				подскажите куда копать чтобы реализовать изменяемое поле ...
				Добавлено: 01 фев 2012, 19:01
				 denisag
				Поискал по форуму не нашел ничего похожего (наверное плохо искал 

 )
В общем задача: добавить в интерфейс в который выводится временная таблица еще одно поле которое будет называться 'xxx', изначально будет пустым, но в нем можно проставлять цифровые значения (целые).
В общем как то так для начала.
Какие операторы нужны, пример применения если можно 
 
 
Заранее спасибо.
 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 01 фев 2012, 20:19
				 edward_K
				видимо речь про spinButton - поиск в viprogr.chm рулит, пример там же.
			 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 01 фев 2012, 20:44
				 spark
				edward_K писал(а):видимо речь про spinButton - поиск в viprogr.chm рулит, пример там же.
Я думаю, что речь идет просто о добавлении во временную таблицу еще одного поля, выводе его на форму и обработке его изменения
 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 01 фев 2012, 20:50
				 denisag
				Да, похоже это то что я искал. Спасибо!
Только один момент - как поле добавить пустое?
Например как добавить поле к таблице в MSSQL я знаю - alter table.... add ..., но это если эта таблица физически существует 
 
 
а как это реализуется с временной таблицей в галактике?
 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 01 фев 2012, 20:58
				 denisag
				spark писал(а):edward_K писал(а):видимо речь про spinButton - поиск в viprogr.chm рулит, пример там же.
Я думаю, что речь идет просто о добавлении во временную таблицу еще одного поля, выводе его на форму и обработке его изменения
 
вот это точнее)
 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 02 фев 2012, 06:31
				 Алексей
				так ... таблица же временная, т.е. описана вами в проекте... что мешает добавить искомое поле?  или речь о докомпиляции стандартного интерфейса?
можно сделать свою таблицу в памяти, которая по crec будет ссылаться на запись в уже существующей и во второе поле писать нужное вам значение...
			 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 02 фев 2012, 12:07
				 denisag
				Речь идет о докомпиляции.
Есть способ в MS SQL: 
Код: Выделить всё
select a.1 b.1 b.2.. c.1, '' as EmptyField from a, b, c
так получаем поле EmptyField с пустыми строками 
Но в Випере он не сработал.
Я добавил поле во временной таблице и добавил  '' as EmptyField в своя прямой SQL, в итоге получил ошибку о несовпадении полей таблиц.
Ага, вот как можно null as EmptyField - получаем искомое пустое поле 
 
Сделал в своем Fields так:
Код: Выделить всё
tmpVozvratMC.WANTTORETURN 'Вернуть шт.':[5],noProtect; 
Менять дает, но не запоминает изменение,
как прикрутить update этого поля после его изменения?
 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 02 фев 2012, 12:37
				 edward_K
				вам надо перехватить стандартный cmUpdateRecord или cmCheckField - события нужно перехватывать в tableevent главной таблицы окна. Мессаги вам помогут.
			 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 02 фев 2012, 14:15
				 denisag
				В общем воспользовался я cmCheckField так как хочу проверять условие,
Описал вот так
Код: Выделить всё
tableEvent table tmpVozvratMC
cmcheckfield:
{
if curfield = tmpVozvratMC.WANTTORETURN {
if getinlinecurpos(tmpVozvratMC.WANTTORETURN) > (tmpVozvratMC.OTGRUZ - tmpVozvratMC.VOZVRAT)
{
message('Нельзя вернуть больше чем доступно для возврата');
abort
}
}
}
cmupdaterecord: update current tmpVozvratMC;
end; 
Но условие не отрабатывает и сообщение не выводится
я чего то не учел?
 
			
					
				Re: подскажите куда копать чтобы реализовать изменяемое поле
				Добавлено: 02 фев 2012, 15:28
				 edward_K
				а главная таблица окна какая? и message то сделайте в начале события. + если делаете докомпиляцию, то нужно 
inherited :: HandleEvent (cm?????);  - чтобы стандартный обработчик сработал.