// Copyright (c) 1993-2005 "Компания БЭСТ". Все права сохраняются.

#INCLUDE "s_public.ch"
/*********
*  Program..: BoxMenu  //!!!!!! /Модифициовано (Титов)
*  Notes....: Выводит меню в pамке
*  Return...: nChoice
***/
FUNCTION BoxMenu(aTitul,nTop,nLeft,aItem,aLogic,nChoice,cFrame,cClrMnu,cClrBrd,;
                 NoClear,nBot,lWide,cProc,noShadow)
//Если NoClear пpистутствует,то каpтинка не пpопадает пpи выходе
   LOCAL nlen := 0, cOldColor := SetColor(), i, nRight,;
         cScreen, nLenTitul := 0
   nChoice := IF(EMPTY(nChoice),1,nChoice)

   // Если заголовок массив, он будет выведенн в общем окне
   // и лтделен линией
   IF ValType( aTitul )=='A'
     nLenTitul := LEN( aTitul )+1
   ENDIF
   IF nBot==NIL
      nBot := nTop+LEN( aItem )+1 + nLenTitul
      IF nBot>22
         nBot:=22
      ENDIF
   ELSEIF nTop+LEN( aItem )+1+nLenTitul < nBot
      nBot:=nTop+LEN( aItem )+1
   ENDIF
   for i = 1 to LEN(aItem)
      nlen := if(LEN(aItem[i]) > nlen, LEN(aItem[i]), nlen)
   NEXT
   nRight := nLeft + nlen + 1
   IF nRight>79
      nRight:=79
   ENDIF
   cFrame := IF( EMPTY(cFrame),"╔═╗║╝═╚║",cFrame)
   cClrMnu := IF( EMPTY(cClrMnu), SETCOLOR(), cClrMnu )
   cClrBrd := IF( EMPTY(cClrBrd), SETCOLOR(), cClrBrd )
   IF (NoClear==NIL)
      cScreen:=SAVESCREEN(nTop-1,nLeft-2,nBot+2,nRight+4) //!!!!
   ENDIF
   SETCOLOR( cClrBrd )
   ShadowBox( IF( ValType( aTitul )=='A', '', aTitul ),;
              nTop,nLeft,nBot,nRight,cClrBrd,cFrame,lWide,,noShadow)
   SETCOLOR( cClrMnu )
   @ nTop+1,nLeft+1 CLEAR TO nBot-1,nRight-1
   IF !EMPTY( nLenTitul )
     AEVAL( aTitul, {|x,xi|  SAYSCREEN( PADC(x,nLen), nTop+xi, nLeft+1 ) } )
     SAYSCREEN( '╟'+REPLICATE('─',nLen)+'╢', nTop+nLenTitul, nLeft )
   ENDIF
   IF EMPTY(aLogic)
      aLogic:=NIL //иначе валится, если ""
   ENDIF

   nChoice = ACHOICE(nTop+nLenTitul+1,nLeft+1,nBot-1,nRight-1,aItem,aLogic,cProc,nChoice)
   IF (NoClear==NIL)
     RESTSCREEN(nTop-1,nLeft-2,nBot+2,nRight+4,cScreen)
   ENDIF
   SETCOLOR( cOldColor )

RETURN nChoice
********** end of BoxMenu **********

