Страница 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?????); - чтобы стандартный обработчик сработал.