DIPLOM1 (664360), страница 7
Текст из файла (страница 7)
YC2=iif(YC2+2>Y2,Y2,YC2+2)
if XT=X1
exit
endif
XT=iif(XT-3 inkey() enddo if YC1<>Y1 YT=YC1 do while .T. _open_t(YT,X1,2*YC-YT,X2,S1) if YT=Y1 exit endif YT=iif(YT-2 inkey() enddo endif endif _open_t(Y1,X1,Y2,X2,S1) setcolor(CL) return 0 Параметры: координаты левого верхнего угла окна, строка сообщения 1, строка сообщения 2, строка сообщения 3, строка выбора 1, строка выбора 2, строка выбора 3, строка символов обрамления. Function _ERR parameters Y1,X1,S1,S2,S3,M1,M2,M3,SB private CLR,STATS,Y1,X1,S1,S2,S3,M1,M2,M3,SB,STAT,KL1,MM1,MM2 save screen CLR=setcolor() STATS=csetall() if pcount()=8 SB="" endif Y2=Y1+iif(empty(S2),5,iif(empty(S3),6,7)) X2=X1+max(len(S1),max(len(S2),max(len(S3),max(len(M1)+len(M2)+; len(M3)+5,31))))+4 setcolor(At_E_F) _open_n(Y1,X1,Y2,X2,SB) @ Y2-3,X1 SAY "|"+replicate("=",X2-X1-1)+"|" setcolor(At_E_N) @ Y1+1,X1+((X2-X1)-len(alltrim(S1)))/2 SAY alltrim(S1) if .not.empty(S2) @ Y1+2,X1+((X2-X1)-len(alltrim(S2)))/2 SAY alltrim(S2) if .not.empty(S3) @ Y1+3,X1+((X2-X1)-len(alltrim(S3)))/2 SAY alltrim(S3) endif endif if empty(M1) setcolor(At_E_S) @ Y2-2,X1+(X2-X1-31)/2 SAY " Нажмите Enter для продолжения " setcolor("N"+substr(AT_E_F,at("/",AT_E_F))) @ Y2-1,X1+(X2-X1-31)/2+1 SAY "-------------------------------" @ Y2-2,X1+(X2-X1-31)/2+31 SAY "-" L_showcurs() KL1=0 do while .T. KL1=inkey() STAT=L_getmstat() if KL1<>0.or.STAT<>0 exit endif enddo L_hidecurs() restore screen csetall(STATS) setcolor(CLR) return 0 elseif empty(M3).and..not.empty(M2) declare MM1[2],MM2[2] MM1[1]=M1 MM1[2]=M2 XX=X1+int((X2-X1-len(M1+M2)-1)/2) MM2[1]=XX MM2[2]=XX+len(M1)+1 do while .T. MM=1 MM=selopt(MM,MM1,MM2,"",Y2-2,.F.,.F.,At_E_S,At_E_U,At_E_F) if MM<>0 restore screen csetall(STATS) setcolor(CLR) return MM endif enddo elseif .not.empty(M1).and..not.empty(M2).and..not.empty(M3) declare MM1[3],MM2[3] MM1[1]=M1 MM1[2]=M2 MM1[3]=M3 XX=X1+int((X2-X1-len(M1+M2+M3)-2)/2) MM2[1]=XX MM2[2]=XX+len(M1)+1 MM2[3]=XX+len(M1+M2)+2 do while .T. MM=1 MM=selopt(MM,MM1,MM2,"",Y2-2,.F.,.F.,At_E_S,At_E_U,At_E_F) if MM<>0 restore screen csetall(STATS) setcolor(CLR) return MM endif enddo endif csetall(STATS) setcolor(CLR) return 0 Function _LIN parameters YCOR,XCOR,LENG,LMAX,LUSE private YCOR,XCOR,LENG,LMAX,LUSE,STATS,RW,CL STATS=csetall() RW=row() CL=col() LMAX=iif(LMAX<=0,1,LMAX) XUSE=int((LENG/LMAX)*LUSE)+XCOR CLR=setcolor(AT_S_U) @ YCOR,XCOR,YCOR,XUSE BOX "---------" setcolor(AT_S_S) if XUSE @ YCOR,XUSE+1,YCOR,XCOR+LENG BOX "---------" endif csetall(STATS) setcolor(CLR) @ RW,CL SAY "" return 0 Function POPMENU parameters Y1,X1,Y2,X2,OPT,OFFS,COLORF private Y1,X1,Y2,X2,OPT,OFFS,COLORF,I,CLR L_hidecurs() CLR=setcolor(COLORF) @ Y1,X1 SAY "-"+repl("-",OFFS-1) @ Y1,X1+OFFS+len(OPT) SAY repl("-",X2-X1-OFFS-len(OPT))+"¬" shadow(Y1+1,X2+1,Y1+1,X2+2,SHC) _open_t(Y1+1,X1,Y2,X2,"¦ ¦¦--L¦ ") setcolor(CLR) L_showcurs() return 0 Function _NORT static NORTSCR parameters BINSTR,NUM private CL,ROW,COL if pcount()=0 restscreen(24,0,24,79,NORTSCR) else if pcount()=1 NUM=0 endif ROW=row() COL=col() NORTSCR=savescreen(24,0,24,79) CL=setcolor(AT_N_I) @ 24,00 say space(80) for I=0 to 9 setcolor(AT_N_I) @ 24,I*8 say str(I+1,iif(I=9,2,1)) setcolor(AT_N_S) if substr(BINSTR,I+1,1)="1" @ 24,I*8+iif(I=9,2,1) say iif(NUM=0,MHP[I+1],MHPA[I+1]) else @ 24,I*8+iif(I=9,2,1) say " " endif next setcolor(CL) @ ROW,COL say "" endif return 0 Function _WAIT static WAITSCR parameters STROKE local CL,ROW,COL,X1,LENM if pcount()=0 restscreen(11,0,15,79,WAITSCR) else ROW=row() COL=col() WAITSCR=savescreen(11,0,15,79) CL=setcolor("+BG/B") if empty(STROKE) _open_n(12,20,14,59) else LENM=max(len(STROKE),31) X1=(74-LENM)/2 _open_n(11,X1,14,X1+6+LENM) setcolor("+BG/B") @ 12,X1+3+iif(LENM=31,(31-len(STROKE))/2,0) say STROKE endif setcolor("+BG/B") @ 13,25 say "Ожидайте окончания операции" setcolor("+BG/B*") @ 13,52 say " ..." endif @ ROW,COL say "" setcolor(CL) return 0 Синтаксис: selopt(expN,arrC,arrN,arrC,expN,expL,expL,expC,expC,expL) Параметры: 1 номер начальной опции меню 2 массив опций 3 массив координат опций (строка/столбец) 4 массив подсказок 5 начальная строка/столбец вывода опций 6 флаг вывода (.T. вертикально,.F. горизонтально) 7 флаг вывода подсказок (.T. выводить в 24 строке) 8 цвет выбранной опции 9 цвет невыбранной опции 10 флаг прорисовки тени опции (default - none) Возврат: Номер выбранной опции либо 0 при прерывании выбора Function SELOPT parameters NOPT,MO,MC,ME,COLROW,ORIENT,SAYHELP,CLRS,CLRN,CSD local CL private NOPT, COUN, INDO, INDM, INDN, MO, MC, ME, COLROW, ORIENT, SAYHELP, CLRS, CLRN, STAT, KL, ROWMO, IN if pcount()<10 SHD=.F. else CSD="N"+substr(CSD,at("/",CSD)) SHD=.T. endif keyboard chr(0) COLORN="R"+substr(CLRN,at("/",CLRN)) COLORS="R"+substr(CLRS,at("/",CLRS)) L_showcurs() NOPT=iif(NOPT=0,1,NOPT) && Номер начальной опции меню COUN=len(MO) && Количество опций store NOPT to INDO,INDN,INDM CL=setcolor() for IN=1 to COUN setcolor(CLRN) @ iif(ORIENT,MC[IN],COLROW),iif(ORIENT,COLROW,MC[IN]) ; SAY strtran(MO[IN],"~","") if (POS:=at("~",MO[IN]))>0 setcolor(COLORN) @ iif(ORIENT,MC[IN],COLROW),iif(ORIENT,COLROW+POS-1,MC[IN]+POS-1); SAY substr(MO[IN],POS+1,1) setcolor(CL) endif if SHD setcolor (CSD) @ iif(ORIENT,MC[IN]+1,COLROW+1),iif(ORIENT,COLROW+1,MC[IN]+1); SAY repl("-",len(strtran(MO[IN],"~",""))) @ iif(ORIENT,MC[IN],COLROW),iif(ORIENT,COLROW+; len(strtran(MO[IN],"~","")),MC[IN]+; len(strtran(MO[IN],"~",""))) SAY "-" setcolor(CL) endif NEXT COLMO=L_getxposn()/8 ROWMO=L_getyposn()/8 setcolor(CLRS) L_hidecurs() @ iif(ORIENT,MC[NOPT],COLROW),iif(ORIENT,COLROW,MC[NOPT]); SAY strtran(MO[NOPT],"~","") if (POS:=at("~",MO[NOPT]))>0 CL= setcolor(COLORS) @ iif(ORIENT,MC[NOPT],COLROW),iif(ORIENT,COLROW+POS-1,MC[NOPT]+POS-1) ; SAY substr(MO[NOPT],POS+1,1) setcolor(CL) endif if SAYHELP setcolor(At_M0_N) @ 24,(80-len(ME[INDN]))/2 SAY ME[INDN] endif L_showcurs() KEYPRESSED=.F. do while .T. COLMN=L_getxposn()/8 ROWMN=L_getyposn()/8 STAT=L_getmstat() KL=inkey() if KL>0 KEYPRESSED=.T. else KEYPRESSED=.F. endif if KL=13 L_hidecurs() return INDN endif if STAT=2.or.KL=27 if KL<>27 for TT=1 to COUN if iif(ORIENT,COLMN>=COLROW.and.COLMN<=COLROW+; len(strtran(MO[TT],"~","")).and.ascan(MC,ROWMN)<>0,; ROWMN=COLROW.and.COLMN>=MC[TT].and.COLMN<=MC[TT]+; len(strtran(MO[TT],"~",""))) L_hidecurs() return 0 endif next else L_hidecurs() return 0 endif endif if iif(ORIENT,(COLMN>=COLROW.AND.COLMN<=COLROW + ; len(strtran( MO[INDN],"~","")) .AND. ; ROWMN<>ROWMO).or.KEYPRESSED,(ROWMN=COLROW.AND.; COLMN<>COLMO).or.KEYPRESSED) T1=.F. if ORIENT.and.KL=0 TEST=ascan(MC,ROWMN) if TEST<>0 T1=.T. endif elseif .not.ORIENT.and.KL=0 TEST=INDO for TT=1 to COUN if COLMN>=MC[TT].and.COLMN<=MC[TT]+len(strtran(MO[TT],"~","")) TEST=TT T1=.T. exit endif next elseif KL>0 T1=.T. endif if T1 do case case KL=5.or.KL=19 INDN=iif(INDN=1,COUN,INDN-1) case KL=24.or.KL=4 INDN=iif(INDN=COUN,1,INDN+1) case KL>=32.and.KL<=255 STROKE="~"+chr(KL)+"~" for II=1 to COUN if at(STROKE,MO[II])<>0 INDN=II keyboard chr(13) exit endif next otherwise INDN=TEST endcase setcolor(CLRN) L_hidecurs() @ iif(ORIENT,MC[INDO],COLROW),iif(ORIENT,COLROW,MC[INDO]); SAY strtran(MO[INDO],"~","") if (POS:=at("~",MO[INDO]))>0 CL=setcolor(COLORN) @ iif(ORIENT,MC[INDO],COLROW),iif(ORIENT,COLROW+POS-1,MC[INDO]+; POS-1) SAY substr(MO[INDO],POS+1,1) setcolor(CL) endif if SAYHELP setcolor(At_M0_N) @ 24,(80-len(ME[INDN]))/2 SAY ME[INDN] endif setcolor(CLRS) @ iif(ORIENT,MC[INDN],COLROW),iif(ORIENT,COLROW,MC[INDN]); SAY strtran(MO[INDN],"~","") if (POS:=at("~",MO[INDN]))>0 setcolor(COLORS) @ iif(ORIENT,MC[INDN],COLROW),iif(ORIENT,COLROW+POS-1,MC[INDN]+POS-1) SAY substr(MO[INDN],POS+1,1) endif L_showcurs() INDO=INDN ROWMO=ROWMN COLMO=COLMN if STAT=0 loop endif endif elseif COLMN>=COLROW do case case STAT=1 for TT=1 to COUN if iif(ORIENT,COLMN>=COLROW.and.COLMN<=COLROW+; len(strtran(MO[TT],"~","")).and.ascan(MC,ROWMN)<>0,; ROWMN=COLROW.and.COLMN>=MC[TT].and.COLMN<=MC[TT]+; len(strtran(MO[TT],"~",""))) L_hidecurs() return INDN endif next case STAT=2 for TT=1 to COUN if iif(ORIENT,COLMN>=COLROW.and.COLMN<=COLROW+; len(strtran(MO[TT],"~","")).and.ascan(MC,ROWMN)<>0,; ROWMN=COLROW.and.COLMN>=MC[TT].and.COLMN<=MC[TT]+; len(strtran(MO[TT],"~",""))) L_hidecurs() return 0 endif next endcase endif enddo return 0 Function FINS FINSERT=.not.FINSERT readinsert(FINSERT) if setcursor()<>0 CUR_STYLE=iif(FINSERT,2,1) setcursor(CUR_STYLE) endif clear type return 0 Function UpperR(String) local SRC:={"а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ь","ы","ъ","э","ю","я"," "},; DST:={"А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ь","Ы","Ъ","Э","Ю","Я"," "},; STR:="",KEY:="",INDEXKEY,I for I=1 to len(STRING) KEY=substr(STRING,I,1) if (INDEXKEY:=ascan(SRC,KEY))<>0 STR=STR+DST[INDEXKEY] else STR=STR+KEY endif next return STR Function DOORS private CLR,ME CLR=setcolor() clear type ME=1 ME=_err(07,02,"Вы желаете завершить работу ?","","",; " ~Y~es "," ~N~o ","") if ME=1.or.ME=-1 close databases set color to clear set printer to setcursor(1) showtime() keyboard chr(0) L_showcurs() return .T. else setcolor(CLR) return .F. endif return .T. Function NUMSTRING parameters NUM1,CODE_CUR local MR:={.T.,.T.,.F.,.T.},CL,; MG:={{"" ,"" ,"" ,"" },; {"миллиард" ,"миллион" ,"тысяча","" },; {"миллиарда" ,"миллиона" ,"тысячи","" },; {"миллиардов","миллионов","тысяч" ,"" }},; SO:=0,DE:=0,ED:=0,TX,NUM,OBL OBL=select() if pcount()<2 CODE_CUR=0 endif use (DATROAD+"Currency") index (DATROAD+"Currency") alias CUR new seek CODE_CUR if found() /*MG[1,4]=alltrim(LONG_NAME0) MG[2,4]=alltrim(LONG_NAME0) MG[3,4]=alltrim(LONG_NAME1) MG[4,4]=alltrim(LONG_NAME2)*/ /*if upperR(substr(trim(LONG_NAME0),len(trim(LONG_NAME0)),1))="А"*/ MR:={.T.,.T.,.F.,.T.} /*endif*/ endif Man_Woman=.F. STROK="" GSTROK="" for I=12 to 3 step -3 NUM=val(substr(str(NUM1,12),I-2,3)) Man_Woman=MR[I/3] SO=int(NUM/100) DE=int((NUM-SO*100)/10) ED=NUM-SO*100-DE*10 TX=4 do case case ED=1 TX=2 case ED>1.and.ED<=4 TX=3 otherwise TX=4 endcase if (DE*10+ED>4.and.DE*10+ED<21) TX=4 endif TITLE=GetShort_Name(CODE_CUR) SUBTITLE=MG[TX,I/3] STROK=num2str(NUM,Man_Woman,SO,DE,ED) GSTROK=iif(!empty(STROK).or.I=12,STROK+" "+SUBTITLE,"")+; " "+GSTROK next GSTROK=alltrim(strtran(GSTROK," "," ")) GSTROK=upperR(substr(GSTROK,1,1))+substr(GSTROK,2) use select(OBL) return GSTROK+" "+TITLE Function NUM2STR PARAMETERS in_num,Man_Woman,SO,DE,ED local UNITS[37] UNITS[ 1] = "" UNITS[ 2] = iif(Man_Woman,"один","одна") UNITS[ 3] = iif(Man_Woman,"два","две") UNITS[ 4] = "три" UNITS[ 5] = "четыре" UNITS[ 6] = "пять" UNITS[ 7] = "шесть" UNITS[ 8] = "семь" UNITS[ 9] = "восемь" UNITS[10] = "девять" UNITS[11] = "десять" UNITS[12] = "одиннадцать" UNITS[13] = "двенадцать" UNITS[14] = "тринадцать" UNITS[15] = "четырнадцать" UNITS[16] = "пятнадцать" UNITS[17] = "шестнадцать" UNITS[18] = "семнадцать" UNITS[19] = "восемнадцать" UNITS[20] = "девятнадцать" UNITS[21] = "двадцать" UNITS[22] = "тридцать" UNITS[23] = "сорок" UNITS[24] = "пятьдесят" UNITS[25] = "шестьдесят" UNITS[26] = "семьдесят" UNITS[27] = "восемьдесят" UNITS[28] = "девяносто" UNITS[29] = "сто" UNITS[30] = "двести" UNITS[31] = "триста" UNITS[32] = "четыреста" UNITS[33] = "пятьсот" UNITS[34] = "шестьсот" UNITS[35] = "семьсот" UNITS[36] = "восемьсот" UNITS[37] = "девятьсот" STRING = "" IN_NUM = int(IN_NUM) SOT=int(In_NUM/100) DES=int((In_NUM-SOT*100)/10) EDN=In_NUM-SOT*100-DES*10 IN_STRING = ltrim(str(IN_NUM)) SCAN_ED=.T. if SOT>0 STRING=STRING+UNITS[SOT+28]+" " endif if DES>1 STRING=STRING+UNITS[DES+19]+" " elseif DES=1 STRING=STRING+UNITS[DES*10+EDN+1]+" " SCAN_ED=.F. endif if SCAN_ED STRING=STRING+UNITS[EDN+1] endif return STRING Function GetShort_Name(CODE) local OBL,MR,ST:=" " OBL=select() select CUR MR=recno() seek CODE if found() ST=SHORT_NAME endif goto MR select(OBL) return ST Function MAIN #Include "Box.ch" setcursor(0) if .not.file("V.mem").or..not.file("C.mem") set curs on return 0 // Аварийный выход при отсутствии файлов глобальных переменных else // Объявление глобальных переменных и считывание их из файла public AT_M0_F,AT_M0_N,AT_M0_S,AT_M0_U,AT_M1_F,AT_M1_N,AT_M1_S public AT_M1_U,AT_M2_F,AT_M2_N,AT_M2_S,AT_M2_U,AT_E_F,AT_E_N,AT_E_S public AT_E_U,AT_G_F,AT_G_N,AT_G_S,AT_G_U,AT_S_F,AT_S_N,AT_S_S,AT_S_U public AT_N_I,AT_N_S CLFON="N" clear restore from c.mem addi endif // Глобальные установки setcursor(0) set date german set century on set wrap on set dele off set bell off set confirm on set scoreboard off set message to 24 center restore from v.mem addi public PAROL,DATROAD,USERDSK,PAGELEN,ETLF,UKZGL,UKTXT,ARCROAD public ZEROPRINT,FPREOBR,PAGESIZ,DUBLDSK,KEYCR,C_H public FM,FINSERT,CUR_STYLE,M__EN,MDATE,SETNUM restore from D addi store 0 to CROW,CCOL KEYCR="#4_Ж;V*" PAROL = uncrpt(KEYCR,P__AROL) DATROAD = D__ATROAD ARCROAD = A__RCROAD DUBLDSK = D__UBLDSK USERDSK = U__SERDSK PAGELEN = P__AGELEN PAGESIZ = P__AGESIZ ETLF = E__TLF UKZGL = U__KZGL UKTXT = U__KTXT SETNUM = S__ETNUM FPREOBR = .F. release P__AROL,D__ATROAD,U__SERDSK,S__ETNUM,; P__AGELEN,P__AGESIZ,E__TLF,U__KZGL,U__KTXT,D__UBLDSK,A__RCROAD MEN=1 MEN1=1 FINSERT=.F. CUR_STYLE=1 set key 22 to fins() declare MMS[ 6],MOP[ 6],MCO[ 6],MNT[12],MHP[10] // Массив этикеток строки подсказки MHP[ 1]="Помощь" MHP[ 2]="Добав." MHP[ 3]="Список" MHP[ 4]="Поиск " MHP[ 5]="Фильтр" MHP[ 6]="Сумма " MHP[ 7]="Печать" MHP[ 8]="Удал. " MHP[ 9]="Запись" MHP[10]="Выход " // Массив опций главного меню системы MOP[ 1]=" ~О~перации " MOP[ 2]=" ~С~правочники " MOP[ 3]=" о~Т~четы " MOP[ 4]=" ~А~рхив " MOP[ 5]=" ~Р~азное " MOP[ 6]=" ~В~ыход " // Массив координат главного меню системы MCO[ 1]=2 MCO[ 2]=12 MCO[ 3]=25 MCO[ 4]=33 MCO[ 5]=40 MCO[ 6]=48 // Массив строк помощи MMS[ 1]="Оформление покупки/продажи валюты" MMS[ 2]=" Ввод справочных данных " MMS[ 3]=" Вывод отчетов " MMS[ 4]=" Работа с архивом " MMS[ 5]=" Настройки системы " MMS[ 6]=" Выход в MS DOS " // Массив названий месяцев MNT[ 1]="Января" MNT[ 2]="Февраля" MNT[ 3]="Марта" MNT[ 4]="Апреля" MNT[ 5]="Мая" MNT[ 6]="Июня" MNT[ 7]="Июля" MNT[ 8]="Августа" MNT[ 9]="Сентября" MNT[10]="Октября" MNT[11]="Ноября" MNT[12]="Декабря" setcolor(At_M0_F) @ 00,00,24,79 BOX " - --" setcolor(At_M0_N) @ 00,01 SAY "Обменный пункт банка" // Проверка пароля пользователя (3 попытки) for II=1 to 3 setcursor(CUR_STYLE) setcolor(AT_E_F) _open_n(07,22,11,57) setcolor(AT_E_N) _saystr(09,24,"Введите Ваш пароль :") KL=0 TST="" do while .T. KL=inkey(0) do case case KL=8 TST=substr(TST,1,len(TST)-1) case KL=13 exit otherwise TST=TST+chr(KL) endcase @ 09,45 SAY repl(" ",len(TST)+1) @ 09,45 SAY repl(" »,len(TST)) if len(TST)=10 exit endif enddo if TST=PAROL @ 09,24 SAY «OK « exit else @ 09,24 SAY «Пароль неправильный « tone(1500,2) tone(1700,2) endif next if TST<>PAROL setcolor("W/N") clear screen return endif restore screen // Настройка принтера if M__EN=2 set printer to BUFFER.PRN else M__EN=1 set printer to endif setcursor(0) FM=.F. setcolor(At_M0_F) @ 00,01 SAY space(80) do while .T. // Главное меню системы if FM setcolor(At_M0_F) @ 00,00,24,79 BOX " - --" @ 00,01 SAY space(80) FM=.F. endif setcolor("+W/B,+GR/R,,,+BG/B") MEN=selopt(MEN,MOP,MCO,MMS,0,.F.,.T.,At_M0_S,At_M0_U) if lastkey()=27.or.MEN=0 if doors() exit else loop endif endif MSCR=savescreen(0,0,24,79) do case case MEN=1 operation() case MEN=2 dictonary() case MEN=3 report() case MEN=4 arch() case MEN=5 system() case MEN=6 if doors() exit endif endcase restscreen(0,0,24,79,MSCR) enddo setcolor() release all return 0 Function OPERATION local M1[5],M2[5],M3[5],MENU M1[1]=" ~П~окупка валюты " M1[2]=" п~Р~одажа валюты " M1[3]=" ~К~онверсия валюты " M2[1]=2 M2[2]=3 M2[3]=4 MENU=1 _open_n(1,0,7,23,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,2,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif operCurrency(MENU) enddo return 0 Function DICTONARY local M1[4],M2[4],M3[4],MENU,CL M1[1]=" ~С~писок валют " M1[2]=" ~К~урсоы валют " M1[3]=" коды ~Ц~енностей " M1[4]=" Коды ~Д~окументов " M2[1]=2 M2[2]=3 M2[3]=4 M2[4]=5 MENU=1 _open_n(1,10,6,32,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,12,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif dictonEdit(MENU) enddo clear type return 0 Function REPORT local M1[4],M2[4],M3[4],MENU,CL M1[1]=" Реестр по по~К~упке валюты " M1[2]=" Реестр по ~П~родаже валюты " M1[3]=" Реестр по ~К~онверсии валюты " M1[4]=" справка об ~О~статках наличной валюты " M2[1]=2 M2[2]=3 M2[3]=4 M2[4]=5 MENU=1 _open_n(1,23,7,64,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,25,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif reportOut(MENU) enddo clear type return 0 Function SYSTEM private M1,M2,M3,MENU declare M1[4],M2[4],M3[4] M1[1]=" ~У~становки " M1[2]=" ~К~опия данных " M1[3]=" ~И~ндексные файлы " M1[4]=" ~С~чета банка " M2[1]=2 M2[2]=3 M2[3]=4 M2[4]=5 MENU=1 SCRS=savescreen(0,0,24,79) _open_n(1,38,6,58,B_SINGLE+" ",AT_M1_F) do while .T. MENU=selopt(MENU,M1,M2,M3,40,.T.,.F.,AT_M1_S,AT_M1_U) if MENU=0.or.lastkey()=27 clear type exit endif do case case MENU=1 setupm(M1[MENU]) case MENU=2 dublicat(M1[MENU]) case MENU=3 case MENU=4 GetAccount() endcase enddo restscreen(0,0,24,79,SCRS) clear type return 0 Function SETUPM parameters OPT private SCR,M1[4],M2[4],M3[4],MENU,OPT,A__RCROAD,P__AROL,D__ATROAD,D__UBLDSK,U__SERDSK,P__AGELEN,P__AGESIZ,E__TLF,U__KZGL,U__KTXT,S__ETNUM,FMOD ROW=row() M1[1]=" ~П~ароль " M1[2]=" пути к ~Д~анным " M1[3]=" ~У~становки принтера " M1[4]=" ~Ц~вета " M2[1]=ROW+2 M2[2]=ROW+3 M2[3]=ROW+4 M2[4]=ROW+5 MENU=1 FMOD=0 SCR=savescreen(0,0,24,79) do while .T. _open_n(ROW+1,38,ROW+6,61,B_SINGLE+" ",AT_M2_F) MENU=selopt(MENU,M1,M2,M3,40,.T.,.F.,AT_M2_S,AT_M2_U) if MENU=0.or.lastkey()=27 clear type exit endif if MENU=4 FM=.T. endif save screen to SESCR FMOD=setup(MENU) restore screen from SESCR enddo restscreen(0,0,24,79,SCR) if FMOD=1 P__AROL = crpt(KEYCR,trim(P__AROL)) D__ATROAD = trim(D__ATROAD) A__RCROAD = trim(A__RCROAD) U__KZGL = trim(U__KZGL) U__KTXT = trim(U__KTXT) if M__EN=2 set Printer to BUFFER.PRN else M__EN=1 set Printer to endif if Z__PR=2 ZEROPRINT=.F. else Z__PR=1 ZEROPRINT=.T. endif save all like ?__* to v PAROL =uncrpt(KEYCR,P__AROL) DATROAD =D__ATROAD ARCROAD =A__RCROAD DUBLDSK =D__UBLDSK USERDSK =U__SERDSK PAGELEN =P__AGELEN PAGESIZ =P__AGESIZ ETLF =E__TLF UKZGL =U__KZGL SETNUM =S__ETNUM UKTXT =U__KTXT endif clear type return 0 Function DUBLICAT parameters OPT private M1,M2,M3,MENU,OPT,DSCR,ROW ROW=row() declare M1[2],M2[2],M3[2] M1[1]=" ~С~охранение данных " M1[2]=" ~В~осстановление данных " M2[1]=ROW+2 Ôóíêöèÿ âûâîäà ñèñòåìíûõ ñîîáùåíèé ñ îæèäàíèåì ðåàêöèè ïîëüçîâàòåëÿ
Ôóíêöèÿ âûâîäà линейíîãî индикаторà процесса
Ôóíêöèÿ âûâîäà ðàìêè äëÿ âñïëûâàþùåãî ìåíþ
Ôóíêöèÿ âûâîäà ñòðîêè ïîäñêàçêè
Ôóíêöèÿ âыâîäà транспаранта ожидания
Функция выбора опции из меню с использованием ìанипулятора "Мышь" или клавиатуры.
Âñïîìîãàòåëüíûå ôóíêöèè
Ôóíêöèÿ ïåðеключения вида курсора
Фóíêöèÿ ïереводà строки в верхний регистр
Ôóíêöèÿ êîíòðîëÿ âûõîäà
Ôóíêöèÿ ïåðåâîäà ÷èñëîâîé âåëè÷èíû â ñòðîêó «Ñóììà ïðîïèñüþ»
Ôóíêöèÿ ïîñòðîåíèÿ ñòðîêè «Ñóììû ïðîïèñüþ»
Функция ïîëó÷åíèÿ ïñåâäîíèìà âàëþòû
Îñíîâíûå ôóíêöèè è ïðîöåäóðû
Ãîëîâíîé ìîäóëü ïðîãðàììû
Ôóíêöèÿ âûçîâà ìåíþ «Îïåðàöèè»
Функция âûçîâà ìåíþ ведения справочников
Ôóíêöèÿ âûçîâà ìåíþ «Îò÷åòû»
Ôóíêöèÿ âûçîâà ìåíþ «Ðàçíîå»
Ôóíêöèÿ âûçîâà ìåíþ «Óñòàíîâêè»
Ôóíêöèÿ âûçîâà ìåíþ «Êîïèÿ äàííûõ»














