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

L_UKS::GetKatStroy - описание интерфейса.

Добавлено: 18 июл 2012, 07:37
Senkrid
Всем доброго времени суток.

Подскажите назначения параметров для интерфейса L_UKS::GetKatStroy :

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

pcKatStroy : Comp 
pbMulti : Boolean 
pbClear : Boolean 
pwMask : Word
pcKatStroy - так и не понял назначение (пытался указать существующий объект - на нем не спизиционировался)
pbMulti - ?
pbClear - признак очистки ранее выбранных объектов строительства
pwMask - ?

Если выбрали несколько - куда они сохраняются? В маркеры? С каким именем? Или в Pick?
Дайте, пожалуйста, подробное описание с примерами.

Re: L_UKS::GetKatStroy - описание интерфейса.

Добавлено: 18 июл 2012, 10:03
Dmitry_Sol
Конечно описание интерфейсов всегда было сильной стороной Топ Софта :-)
поковырявшись в исходнике выяснил следущее

pcKatstroy-возвратит нрек объекта строительства если в
pbMulti - не задействован , но при вызове они зачем то ставят true
pbClear - признак предварительной очистки маркера от ранее выбранных значений

pwMask // бит 0 - запрет выбора строек, 1 - объектов строительства, 2 - объектов сбора затрат

сохраняется все это добро в маркер 'MarkerKatStroy'
вот кусочек кода с вызовом фейса:

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

if ( RunInterface('GetKatStroy', cKS, true, true, 5) <> cmDefault )
    Exit;

  mkStroi := InitMarker('MarkerKatStroy', 8, 100, 10, false);
  bIns    := false;

  if ( GetMarkerCount(mkStroi) = 0 )
    {
      if ( GetFirst KatStroyT  where (( cKS == KatStroyT.nRec )) = tsOk )
        if ( KatStroyT.LevelObj = cgObj_Object )
          if ( GetFirst ObjBazeZatrT where ((  cnRec == ObjBazeZatrT.cObjZatr
                                           and cKS   == ObjBazeZatrT.cKatStroy
                                           )) <> tsOk )
            {
              bIns := true;

              ObjBazeZatr.cBazeZatr := BazeZatr.nRec;
              ObjBazeZatr.cKatStroy := KatStroyT.nRec;
            }
    }
  else
    {
      for (i := 0; i < GetMarkerCount(mkStroi); i := i + 1)
        {
          GetMarker(mkStroi, i, cKS);

          if ( GetFirst KatStroyT  where (( cKS == KatStroyT.nRec )) = tsOk )
            if ( KatStroyT.LevelObj = cgObj_Object )
              if ( GetFirst ObjBazeZatrT where ((  cnRec == ObjBazeZatrT.cObjZatr
                                               and cKS   == ObjBazeZatrT.cKatStroy
                                               )) <> tsOk )
                {
                  if ( not bIns )
                    bIns := true;
                  else
                    {
                      insert current ObjBazeZatr;
                      ClearBuffer(#ObjBazeZatr);
                    }

                  ObjBazeZatr.cBazeZatr := BazeZatr.nRec;
                  ObjBazeZatr.cKatStroy := KatStroyT.nRec;
                }
        }
    }

  DoneMarker(mkStroi, 'MarkerKatStroy');
Надеюсь поможет

Re: L_UKS::GetKatStroy - описание интерфейса.

Добавлено: 18 июл 2012, 10:26
Senkrid
:cool: Все, что хотел услышать/увидеть. Спасибо.