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

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2014, 09:20
zna
Да, действительно, это то, что надо. Прочитал нужные записи, благодарю! :cool:

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 11:38
zna
Доброй среды, коллеги.
Продолжаю с вашей помощью совершенствовать наш интерфейс по заявкам. На сей раз прошу подсказать, как поймать изменение поля "количество". Сейчас изменение цены обрабатывается так:

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

cmExprFieldChanged :
{
  if inherited:: handleEvent (cmExprFieldChanged) = heOk then
    {
      case curfield of
      ... 
        #CLAIM_PRICE_:
         {
           if claim.kol = 0 then {message('Изменилась цена!');   // Нормально
         }
       #CLAIM.KOL_:
         {                                                                              //Нет реакции
         } 
      end;
   }
}
А как быть с количеством? Изменение поля "Количество" не ловится в переменной curfield.

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 12:36
Irina_
Здравствуйте. Может неправильно написали? Точно #CLAIM.KOL_, а не #CLAIM_KOL_? Явно проблема с написанием, если нет реакции.

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 12:47
zna
Вот из хелпа:

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

TreeBrowser ClaimTree 'Спецификация'
TreeColumn c_CLAIMTREE_CLAIM_WPOS_N #252
TreeColumn c_CLAIMTREE_PRMC
TreeColumn c_CLAIMTREE_KATNOTES_.SNAME_Статус_позиции 'Статус'^M'позиции'
TreeColumn c_CLAIMTREE_CLAIMGROUPNAME_Наименование_группы 'Наименование'^M'группы'
TreeColumn c_CLAIMTREE_CLAIMGROUPCODE_Код_группы 'Код'^M'группы'
TreeColumn c_CLAIMTREE_SPECIFICATIONNAME_Наименование_ресурса 'Наименование'^M'ресурса'
TreeColumn c_CLAIMTREE_SPECIFICATIONBAR_Номенклатурный_номер 'Номенклатурный'^M'номер'
TreeColumn c_CLAIMTREE_CONSTRUCTIONSIGN_Конструкторское_обозначение 'Конструкторское'^M'обозначение'
TreeColumn c_CLAIMTREE_CLAIM_DSTART_Дата_приёма 'Дата'^M'приёма'
TreeColumn c_CLAIMTREE_CLAIM_DFINISH_Дата_исполнения 'Дата'^M'исполнения'
TreeColumn c_CLAIMTREE_EDNAME_Ед._изм. 'Ед.'^M'изм.'
TreeColumn c_CLAIMTREE_CLAIM.KOL_Кол-во 'Кол-во'
TreeColumn c_CLAIMTREE_CLAIM_PRICE_Цена 'Цена'
TreeColumn c_CLAIMTREE_CLAIM_SUMMA_Сумма 'Сумма'
TreeColumn c_CLAIMTREE_CLAIM_DISCOUNT_Скидка 'Скидка'
TreeColumn c_CLAIMTREE_FANAL1_Аналитика_1 'Аналитика 1'
TreeColumn c_CLAIMTREE_FANAL2_Аналитика_2 'Аналитика 2'
TreeColumn c_CLAIMTREE_FANAL3_Аналитика_3 'Аналитика 3'
TreeColumn c_CLAIMTREE_FANAL4_Аналитика_4 'Аналитика 4'
TreeColumn c_CLAIMTREE_FANAL5_Аналитика_5 'Аналитика 5'
TreeColumn c_CLAIMTREE_VALUE1_Дополнительное_поле_1 'Дополнительное поле 1'
TreeColumn c_CLAIMTREE_VALUE2_Дополнительное_поле_2 'Дополнительное поле 2'
TreeColumn c_CLAIMTREE_VALUE3_Дополнительное_поле_3 'Дополнительное поле 3'
TreeColumn c_CLAIMTREE_VALUE4_Дополнительное_поле_4 'Дополнительное поле 4'
TreeColumn c_CLAIMTREE_VALUE5_Дополнительное_поле_5 'Дополнительное поле 5'
TreeColumn c_CLAIMTREE_FOOTDYNAMIC1_Расчётное_поле_1 'Расчётное'^M'поле 1'
TreeColumn c_CLAIMTREE_FOOTDYNAMIC2_Расчётное_поле_2 'Расчётное'^M'поле 2'
TreeColumn c_CLAIMTREE_FOOTDYNAMIC3_Расчётное_поле_3 'Расчётное'^M'поле 3'
TreeColumn c_CLAIMTREE_FOOTDYNAMIC4_Расчётное_поле_4 'Расчётное'^M'поле 4'
TreeColumn c_CLAIMTREE_FOOTDYNAMIC5_Расчётное_поле_5 'Расчётное'^M'поле 5'
Вроде правильно написал.. Любые другие поля ловятся, а это никак..
Может, кто-нить подскажет, как все поля прочитать в TreeColumn c_CLAIMTREE?
Или такая мысль: удалить это поле (для этого надо указатель, что ли, на него получить), а вместо него создать своё?

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 13:06
m0p3e
zna писал(а):Доброй среды, коллеги.
Продолжаю с вашей помощью совершенствовать наш интерфейс по заявкам. На сей раз прошу подсказать, как поймать изменение поля "количество". Сейчас изменение цены обрабатывается так:

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

       #CLAIM.KOL_:
А как быть с количеством? Изменение поля "Количество" не ловится в переменной curfield.
А зачем подчеркивание в конце?

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

fields
  Claim.Kol'Кол-во'('Количество для исполнения',,sci178Esc):[11,3], noprotect;
  [Claim_Price_]if(5=5,Claim.Price,0)'Цена'('Цена за единицу',,sci178Esc):[11,2],noProtect;
  [Claim_Summa_]if(7=7,Claim.Summa,0)'Сумма'('Сумма по позиции',,sci178Esc):[13,2],noProtect;
  [Claim_Discount_]if(3=3,Claim.Discount,0)'Скидка'('Скидка по позиции',,sci1378Esc):[6,2],noProtect, pickbutton;
end

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 13:17
zna
Убрал подчёркивание, теперь так:

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

cmExprFieldChanged :
{
  if inherited:: handleEvent (cmExprFieldChanged) = heOk then
    {
      case curfield of
      ...
        #CLAIM_PRICE_:
         {
           if claim.kol = 0 then {message('Изменилась цена!');   // Нормально
         }
       #CLAIM.KOL:
         { message('Claim.kol!');                                                                            //Нет реакции
         } 
Нет реакции

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 13:23
Den
cmExprFieldChanged
Событие возникает при изменении вычисляемого поля

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 08 апр 2015, 14:09
zna
Понял. Получилось так:

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

Panel specClaim table Claim;
HandleEvent
cmCheckField:
 {
   if inherited::handleEvent(cmCheckField) = heOk then
    {
     case curfield of #CLAIM.KOL:{message('Claim.kol!');}
     end;
   }
 }
end;
end;
Благодарю всех ответивших!

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 15 фев 2019, 16:35
zna
Нет предела совершенству, в том числе и этому замечательному интерфейсу..
Вот есть задумка внизу окна разместить свой дополнительный browse. Для этого в интерфейсе редактирования заявок Win1 c размерами (0,1,80,25) изменил TreeBrowse CLAIMTREE

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

if cfsGetObjInfo('ClaimTree', cur_obj, l04, cont_inf, aObjType) = cfOk then
        {if cfsSetProp(l04, cfpRectB_Y, word(15))  <> cfOk
в результате его размеры стали (1,12,79,15). Казалось бы, место есть.
Но если добавить панель

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

Panel Panel_;
  Table t_claim
  browse bmnpl
  show at (5, 18,30 ,19 )
  fields
      t_claim.ddate 'Дата'  : [10], protect;
      t_claim.cena  'Цена'           : [10], protect;
      t_claim.nacemka 'Наценка, %'    : [10], protect;
  end;
end;
то получаю ошибку Ошибка: Текущая область ввода перекрывается с CLAIMTREE C:\Viper\Bookings\AlterBookings.vip(стр. 155, поз. 3)
Изображение
Собственно, вопрос: почему?? Ведь места хватает, если по координатам считать!

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 15 фев 2019, 16:45
Den
Потому что cfsSetProp в рантайме сработает только

Re: Докомпиляция интерфейса заявок BOOKINGS

Добавлено: 15 фев 2019, 17:04
zna
Den писал(а):Потому что cfsSetProp в рантайме сработает только
.. и как поправить?