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

Выбор Insert-ом

Добавлено: 28 июн 2019, 08:56
Marisha_P
Здравствуйте, форумчане! Спасите-помогите, пожалуйста:) Разбираюсь в чужом коде, и никак не могу понять, почему не отрабатывает нажатие клавиши Ins:(

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

window wndPlan 'Выбор спецификации' doaccept,cyan,AlwaysReturn;
   show at(,,80,20);
   browse brMain (,,sci1378InsPM)
      table spmnplan;
      fields
         #SetMyFont(picked, ColorMark);
         picked_field        'V'          :[2] , skip, noautosize;
         spmnplan.number    'Номер'      :[7] , protect, noautosize;
         mc_usl_type        'Тип'        :[2] , skip, noautosize;
         mc_usl_code        'Код'        :[12], protect, noautosize;
         mc_usl_name        'Название'   :[10], protect;
         farinfo.name       'Род заг-ки' :[8], protect, noautosize;
         kau_marka          'Марка'      :[8], protect, noautosize;
         kau_st_bal         'Статья'     :[8], protect, noautosize;
         kau_zak            'Заказчик'   :[10], protect;
         kau_pol            'Получатель' :[10], protect;
         VALSPMNP.kolfield5 'КД/ГП'      :[3], protect, noautosize;
         VALSPMNP.kol       'План'       :[6.2],protect, noautosize;
         TmpSpMnPlan.amount 'Кол-во'     :[6.2],noprotect, noautosize;
   end;
Проблема даже в том, что у меня поле picked_field не отображается. Не говоря уже о пометках записи

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

   handleevent
      cmMarkUnMark:{ Message('Проверка нажатия клавиши');
         if(curtable <> #spmnplan) exit;
         InvMarker();
         RescanPanel(#spmnplan);
         RescanPanel(#TmpSpMnPlan);
      }

 procedure InsMarker(am:double; use:boolean);
   var val:double;
   {
      val := if(use, am, VALSPMNP.kol);
      if(not picked)
         insert into TmpSpMnPlan set TmpSpMnPlan.cspplan := spmnplan.nrec, TmpSpMnPlan.amount := val;
      else
         if(use) update current TmpSpMnPlan set TmpSpMnPlan.amount := val;
   }
   procedure DelMarker;
   {
      if(isValid(#TmpSpMnPlan))
         delete current TmpSpMnPlan;
   }
   procedure InvMarker;
   {
      if(picked)
         DelMarker();
      else InsMarker(0, false);
   }


Версия Галактики 7.12.01

Re: Выбор Insert-ом

Добавлено: 28 июн 2019, 12:27
oiko
По части кода сложно догадаться
Вот тебе рабочий пример на своих таблицах
#component "PARTNER"

const
#include galnet.csc
#include galnet.ccm
#include fldcolor.inc
end;

interface pickspplans 'Выбор спецификаций планов' (,,sci1InsPM) cyan, doaccept;
show at(,,80,20);
create view
var
_cplan : comp;
_cspplan : comp;
Marker : longint;
MarkerInd : longint;
multi : boolean;
marker_name :string;
select
*,
if(SearchMarker(marker, KatControlOb.nrec, MarkerInd), 'V','')(fieldname picked)
from
KatControlOb (readonly)
where((
_cplan==KatControlOb.cKatControl and
KatControlOb.ATL_OWNER==X$USERS.ATL_NREC and
KatControlOb.cUlica==obkontr.nrec and
KatControlOb.CULICADOM==steck.nrec and
KatControlOb.cnrec==KONTRSPSOPR.nrec and
KONTRSPSOPR.CSOPR==KONTRSOPR.nrec
));
parameters
_cplan, _cspplan, multi, marker_name;
browse brKatControlOb;
table KatControlOb;
fields
{Font =
{
Color = if(picked = 'V' and multi, ColorMark, 0 );
Bold = if(picked = 'V' and multi, true , false );
Italic = if(picked = 'V' and multi, true , false )
}
};
picked 'V' : [1] , noautosize;
X$USERS.XU$LOGINNAME 'Владелец' : [8], protect;
obkontr.kodob 'Код объекта' : [13], protect;
steck.kodsteck 'Код счетчика' : [13], protect,pickbutton;
obkontr.NAME 'ФИО' : [35], protect;
obkontr.ULICA 'Улица' : [20], protect;
obkontr.NDOMA 'Дом' : [5], protect;
obkontr.NKVART 'Квартира' : [3], protect;
KatControlOb.prim 'Доп. информация':[60],noprotect;
KatControlOb.DATAISP 'Отработано':[10, 'DD/MM/YYYY'],noprotect;
KONTRSOPR.Nsopr 'Номер акта' : [5], protect;
end;
procedure MarkAll(IsInsert: boolean);
{
if(not multi) exit;
StartNewVisual( vtRotateVisual, vfTimer, 'Помечаю все',1);
PushPos(tnKatControlOb);
_loop KatControlOb{
if(not IsInsert)
InvertMarker (marker, KatControlOb.nrec);
else InsertMarker(marker, KatControlOb.nrec);
NextVisual;
}
PopPos(tnKatControlOb);
StopVisual('', 0);
RescanPanel(tnKatControlOb);
}//MarkAll

handleevent
cmInit:{
Marker := InitMarker(marker_name, 8,100,10);
ClearMarker(Marker);
if(multi)
SetFieldState(#picked, sfVisible);
else
ClearFieldState(#picked, sfVisible);
RescanPanel(#KatControlOb);
}
cmDoMarkUnMark:{
if(not multi) exit;
InvertMarker(marker, KatControlOb.nrec);
if(GetNext KatControlOb = tsok){}
RescanPanel(tnKatControlOb);
}
cmSelAll: MarkAll(true);
cmDoInvertMark: MarkAll(false);
cmUnselAll: {
if(not multi) exit;
ClearMarker(marker);
RescanPanel(tnKatControlOb);
}
cmDefault:{
_cspplan:= KatControlOb.nrec;
if(multi and GetMarkerCount(marker)=0)
InsertMarker(marker, KatControlOb.nrec);
DoneMarker(marker, marker_name);
}
end;
end.

Re: Выбор Insert-ом

Добавлено: 28 июн 2019, 13:02
Marisha_P
oiko, спасибо большое! буду разбираться:)

Re: Выбор Insert-ом

Добавлено: 05 июл 2019, 08:24
edward_K
Возможно фейс рассчитан и на одиночный выбор
Тогда где то должно быть скрыли поля и смена статус строк
Поищите поле пометки