Реферат: Программное обеспечение пункта обмена валюты банка

XT1=iif(X1+2>79,79,X1+2)

XT2=iif(X2+2>79,79,X2+2)

XK2=iif(X2+1>79,79,X2+1)

@ Y1,X1,Y2,X2 BOX SBOX

shadow(Y2+1,XT1,Y2+1,XT2,0)

shadow(Y1+1,XK2,Y2+1,XT2,0)


return 0


Функция вывода окна с эффектом раскрытия

Параметры:

координаты левого верхнего и правого нижнего угла окна,

[строка символов обрамления],[строка установки цвета]


Function _OPEN_N


parameters Y1,X1,Y2,X2,S1,COLOR

local CL,XT,YT,XC,YC

if pcount()=4

COLOR=setcolor()

S1=""

elseif pcount()=5

COLOR=setcolor()

endif

YC=Y1+int((Y2-Y1)/2)

XC=X1+int((X2-X1)/2)

CL=setcolor()

if Y2-Y1 >= 2

YC1=YC

YC2=YC

XT=XC

setcolor(COLOR)

do while .T.

_open_t(YC1,XT,YC2,2*XC-XT,S1)

YC1=iif(YC1-2

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

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)

ifMENU=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

M2[2]=ROW+3


MENU=1

popmenu(ROW,38,ROW+5,64,OPT,2,AT_M2_F)

do while .T.

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

save screen to DSCR

do case

case MENU=1

OPT=M1[MENU]

savedata(OPT)

case MENU=2

OPT=M1[MENU]

restdata(OPT)

endcase

restore screen from DSCR

enddo

clear type

return 0

Функция - селектор операций


Function OPERCURRENCY

#Include "Inkey.ch"

#Include "Box.ch"

parameters N_OPER

do case

case N_OPER=1

ByeCurrency()

case N_OPER=2

SaleCurrency()

case N_OPER=3

ConvertCurrency()

endcase

return 0

Функция регистрации покупки валюты


Function ByeCurrency

local SCR

use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new

SCR=savescreen(1,0,23,61)

CLR=setcolor(AT_G_F)

_open_n(1,0,20,59,B_SINGLE+" ",AT_G_F)

@ 08,0 say "+----------------------------------------------------------+"

@ 14,0 say "+----------------------------------------------------------+"

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

set key K_F3 to getcode()

_nort("1010000001")

FINIT=.T.

do while .T.

if FINIT

SER =space(2)

NUM =0

FIO =space(35)

DOC =space(10)

CDOC =0

DSER =space(10)

DNUM =0

REZ =space(1)

NREZ =space(1)

BCODC =10

BCODCUR=2

BSUM =0

SCODC =0

SCODCUR=0

SSUM =0

SSUMS=""

BSUMS=""

@ 12,2 say space(57)

@ 13,2 say space(57)

@ 18,2 say space(57)

@ 19,2 say space(57)

setcolor(AT_G_U)

@ 11,8 say 0 picture "999999999999"

endif

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

@ 02,17 say "СПРАВКА" get SER picture "XX" valid !empty(SER)

@ 02,28 say "№" get NUM picture "9999999" valid !empty(NUM)

@ 03,15 say str(day(date()),2)+" "+MNT[month(date())]+;

" "+str(year(date()),4)

@ 04,02 say "Выдана" get FIO picture "@S30" valid !empty(FIO)

@ 05,02 say "Предъявлен" get CDOC picture "9999"

@ 05,29 say "серия" get DSER picture "XXXXXXXXXX"

@ 05,46 say "№" get DNUM picture "9999999999"

@ 06,02 say "Резидент [ ]"

@ 06,12 get REZ Picture "L"

@ 08,02 say "ПОЛУЧЕНО КЛИЕНТОМ:"

@ 09,02 say "Код ценности" get BCODC picture "9999"

@ 10,02 say "Код валюты " get BCODCUR picture "9999"

@ 11,02 say "Сумма"

@ 14,02 say "ПРИНЯТО ОТ КЛИЕНТА:"

@ 15,02 say "Код ценности" get SCODC picture "9999"

@ 16,02 say "Код валюты " get SCODCUR picture "9999"

@ 17,02 say "Сумма" get SSUM picture "999999999999" ;

valid saysale(SSUM,18,2,52,AT_G_U,@SSUMS,SCODCUR)


setcursor(CUR_STYLE)

read

setcursor(0)

if lastkey()=K_ESC

exit

endif

if _err(06,40,"Данные введены правильно?","",""," ~Д~а "," ~Н~ет ","")=1

append blank

replace field->SER_ with SER ,;

field->NUM_ with NUM ,;

field->FIO_ with FIO ,;

field->DOC_ with DOC ,;

field->DSER_ with DSER ,;

field->DNUM_ with DNUM ,;

field->REZ_ with !empty(REZ),;

field->BCODC_ with BCODC ,;

field->BCODCUR_ with BCODCUR,;

field->BSUM_ with BSUM ,;

field->SCODC_ with SCODC ,;

field->SCODCUR_ with SCODCUR,;

field->SSUM_ with SSUM,;

field->DATE_ with date(),;

field->OPERATION_ with 1

commit

if _err(06,40,"Печатать справку?","",""," ~Д~а "," ~Н~ет ","")=1

// printspr()

endif

FINIT=.T.

loop

else

FINIT=.F.

endif

enddo

_nort()

set key K_F3 to

restscreen(1,0,23,61,SCR)

dbcloseall()

return 0

Функция регистрации продажи валюты


Function SaleCurrency

local SCR

use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new

SCR=savescreen(1,0,23,61)

CLR=setcolor(AT_G_F)

_open_n(1,0,20,59,B_SINGLE+" ",AT_G_F)

@ 08,0 say "+----------------------------------------------------------+"

@ 14,0 say "+----------------------------------------------------------+"

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

set key K_F3 to getcode()

_nort("1010000001")

FINIT=.T.

do while .T.

if FINIT

SER =space(2)

NUM =0

FIO =space(35)

DOC =space(10)

DSER =space(10)

DNUM =0

REZ =space(1)

NREZ =space(1)

CDOC =0

BCODC =0

BCODCUR=0

BSUM =0

SCODC =0

SCODCUR=0

SSUM =0

SSUMS=""

BSUMS=""

@ 12,2 say space(57)

@ 13,2 say space(57)

@ 18,2 say space(57)

@ 19,2 say space(57)

setcolor(AT_G_U)

@ 11,8 say 0 picture "999999999999"

endif

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

@ 02,17 say "СПРАВКА" get SER picture "XX" valid !empty(SER)

@ 02,28 say "№" get NUM picture "9999999" valid !empty(NUM)

@ 03,15 say str(day(date()),2)+" "+MNT[month(date())]+" "+str(year(date()),4)

@ 04,02 say "Выдана" get FIO picture "@S30" valid !empty(FIO)

@ 05,02 say "Предъявлен" get CDOC picture "9999"

@ 05,29 say "серия" get DSER picture "XXXXXXXXXX"

@ 05,46 say "№" get DNUM picture "9999999999"

@ 06,02 say "Резидент [ ]"

@ 06,12 get REZ Picture "L"

@ 08,02 say "ПРИНЯТО ОТ КЛИЕНТА:"

@ 09,02 say "Код ценности" get SCODC picture "9999"

@ 10,02 say "Код валюты " get SCODCUR picture "9999"

@ 11,02 say "Сумма"

@ 14,02 say "ПОЛУЧЕНО КЛИЕНТОМ:"

@ 15,02 say "Код ценности" get BCODC picture "9999"

@ 16,02 say "Код валюты " get BCODCUR picture "9999"

@ 17,02 say "Сумма" get BSUM picture "999999999999" valid saybye(BSUM,17,2,52,AT_G_U,@BSUMS,BCODCUR)


setcursor(CUR_STYLE)

read

setcursor(0)

if lastkey()=K_ESC

exit

endif

if _err(06,40,"Данные введены правильно?","",""," ~Д~а "," ~Н~ет ","")=1

append blank

replace field->SER_ with SER ,;

field->NUM_ with NUM ,;

field->FIO_ with FIO ,;

field->DOC_ with DOC ,;

field->DSER_ with DSER ,;

field->DNUM_ with DNUM ,;

field->REZ_ with !empty(REZ),;

field->BCODC_ with BCODC ,;

field->BCODCUR_ with BCODCUR,;

field->BSUM_ with BSUM ,;

field->SCODC_ with SCODC ,;

field->SCODCUR_ with SCODCUR,;

field->SSUM_ with SSUM,;

field->DATE_ with date(),;

field->OPERATION_ with 1

commit

if _err(06,40,"Печатать справку?","",""," ~Д~а "," ~Н~ет ","")=1

// printspr()

endif

FINIT=.T.

loop

else

FINIT=.F.

endif

enddo

_nort()

set key K_F3 to

restscreen(1,0,23,56,SCR)

dbcloseall()

return 0

Функция регистрации конверсии валюты

Function ConvertCurrency

local SCR

use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new

SCR=savescreen(1,0,23,61)

CLR=setcolor(AT_G_F)

_open_n(1,0,20,59,B_SINGLE+" ",AT_G_F)

@ 08,0 say "+----------------------------------------------------------+"

@ 14,0 say "+----------------------------------------------------------+"

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

set key K_F3 to getcode()

_nort("1010000001")

FINIT=.T.

do while .T.

if FINIT

SER =space(2)

NUM =0

FIO =space(35)

DOC =space(10)

DSER =space(10)

DNUM =0

REZ =space(1)

NREZ =space(1)

CDOC =0

BCODC =0

BCODCUR=0

BSUM =0

SCODC =0

SCODCUR=0

SSUM =0

SSUMS=""

BSUMS=""

@ 12,2 say space(57)

@ 13,2 say space(57)

@ 18,2 say space(57)

@ 19,2 say space(57)

setcolor(AT_G_U)

@ 11,8 say 0 picture "999999999999"

endif

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

@ 02,17 say "СПРАВКА" get SER picture "XX" valid !empty(SER)

@ 02,28 say "№" get NUM picture "9999999" valid !empty(NUM)

@ 03,15 say str(day(date()),2)+" "+MNT[month(date())]+" "+str(year(date()),4)

@ 04,02 say "Выдана" get FIO picture "@S30" valid !empty(FIO)

@ 05,02 say "Предъявлен" get CDOC picture "9999"

@ 05,29 say "серия" get DSER picture "XXXXXXXXXX"

@ 05,46 say "№" get DNUM picture "9999999999"

@ 06,02 say "Резидент [ ]"

@ 06,12 get REZ Picture "L"

@ 08,02 say "ПРИНЯТО ОТ КЛИЕНТА:"

@ 09,02 say "Код ценности" get SCODC picture "9999"

@ 10,02 say "Код валюты " get SCODCUR picture "9999"

@ 11,02 say "Сумма"

@ 14,02 say "ПОЛУЧЕНО КЛИЕНТОМ:"

@ 15,02 say "Код ценности" get BCODC picture "9999"

@ 16,02 say "Код валюты " get BCODCUR picture "9999"

@ 17,02 say "Сумма" get BSUM picture "999999999999" valid saybye(BSUM,17,2,52,AT_G_U,@BSUMS,BCODCUR)


setcursor(CUR_STYLE)

read

setcursor(0)

if lastkey()=K_ESC

exit

endif

if _err(06,40,"Данные введены правильно?","",""," ~Д~а "," ~Н~ет ","")=1

append blank

replace field->SER_ with SER ,;

field->NUM_ with NUM ,;

field->FIO_ with FIO ,;

field->DOC_ with DOC ,;

field->DSER_ with DSER ,;

field->DNUM_ with DNUM ,;

field->REZ_ with !empty(REZ),;

field->BCODC_ with BCODC ,;

field->BCODCUR_ with BCODCUR,;

field->BSUM_ with BSUM ,;

field->SCODC_ with SCODC ,;

field->SCODCUR_ with SCODCUR,;

field->SSUM_ with SSUM,;

field->DATE_ with date(),;

field->OPERATION_ with 1

commit

if _err(06,40,"Печатать справку?","",""," ~Д~а "," ~Н~ет ","")=1

// printspr()

endif

FINIT=.T.

loop

else

FINIT=.F.

endif

enddo

_nort()

set key K_F3 to

restscreen(1,0,23,56,SCR)

dbcloseall()

return 0

Функция - определитель текущего поля для получения кода и наименования объекта из справочника


Function GETCODE

local CL

AKTIV=getactive()

RS=row()

CS=col()+5

do case

case AKTIV:name="BCODCUR"

S=incod(1,@BCODCUR)

case AKTIV:name="BCODC"

S=incod(3,@BCODC)

case AKTIV:name="SCODCUR"

S=incod(1,@SCODCUR)

case AKTIV:name="SCODC"

S=incod(3,@SCODC)

case AKTIV:name="CDOC"

S=incod(4,@CDOC)

otherwise

S=""

endcase

CL=setcolor(AT_G_N)

@ RS,CS say substr(S,1,30)

if !empty(S)

keyboard chr(13)

endif

setcolor(CL)

return .T.


Функция вывода суммы покупки прописью


Function SAYB

parameters NUM,Y,X,L,C,S,CC

local CL

S=numstring(NUM,CC)

CL=setcolor(C)

@ Y,X say padr(substr(S,1,L),L)

@ Y+1,2 say padr(substr(S,L+1,57),57)

setcolor(AT_G_U)

@ Y-1,8 say NUM picture "999999999999"

setcolor(CL)

return .T.


Функция вывода суммы продажи прописью


Function SAYS

parameters NUM,Y,X,L,C,S,CC

local CL

S=numstring(NUM,CC)

CL=setcolor(C)

@ Y,X say padr(substr(S,1,L),L)

@ Y+1,2 say padr(substr(S,L+1,57),57)

setcolor(AT_G_U)

@ Y-1,8 say NUM picture "999999999999"

setcolor(CL)

return .T.

Функция вычисления суммы операции покупки


Function SAYBYE

parameters NUM,Y,X,L,C,S,CC

local CL,OBL,RESULT

RESULT=.F.

OBl=select()

use (DATROAD+"currency") index (DATROAD+"currency") new

seek CC

if found()

BSUM=KURS*NUM

use

S=numstring(NUM,CC)

CL=setcolor(C)

@ Y,X say padr(substr(S,1,L),L)

@ Y+1,2 say padr(substr(S,L+1,57),57)

says(SSUM,12,2,57,AT_G_U,@SSUMS,SCODCUR)

RESULT=.T.

else

use

endif

setcolor(CL)

select(OBL)

return RESULT

Функция вычисления суммы операции продажи


Function SAYSALE

parameters NUM,Y,X,L,C,S,CC

local CL,OBL,RESULT

RESULT=.F.

OBl=select()

use (DATROAD+"currency") index (DATROAD+"currency") new

seek CC

if found()

BSUM=KURS*NUM

use

S=numstring(NUM,CC)

CL=setcolor(C)

@ Y,X say padr(substr(S,1,L),L)

@ Y+1,2 say padr(substr(S,L+1,57),57)

sayb(BSUM,12,2,57,AT_G_U,@BSUMS,BCODCUR)

RESULT=.T.

else

use

endif

setcolor(CL)

select(OBL)

return RESULT

ФУНКЦИЯ ВЫВОДА списка документов дня


Function Docrep

local SCR

use (DATROAD+"Currency") index (DATROAD+"Currency") alias CUR new

use (DATROAD+"Document") index (DATROAD+"Document") alias DOC new

set relation to BCODCUR_ into CUR

SCR=savescreen(1,0,23,79)

_open_n(1,0,22,77,B_SINGLE+" ",AT_S_F)

_nort("1000001001")


declare MF[5],MZ[5]

MF[1]={|| SER_+str(NUM_,9)}

MF[2]={|| FIO_ }

MF[3]={|| iif(REZ_,"Р","Н")}

MF[4]={|| CUR->SHORT_NAME+" "+str(BSUM_)}

MF[5]={|| getShort_Name(SCODCUR_)+" "+str(SSUM_)}

MZ[1]="Справка"

MZ[2]="Фамилия Имя Отчество"

MZ[3]="Р/Н"

MZ[4]="Выдано"

MZ[5]="Принято"

TERM=" Проведенные документы дня "

setcolor(AT_M1_S)

@ 01,(70-len(TERM))/2 SAY TERM

setcolor(AT_S_N+","+AT_S_S+",,,"+AT_S_U)

clear type

oBrow := TBrowseDB(2,1,21,76)

oBrow:headSep := "=T="

oBrow:colSep := " ¦ "


for i := 1 TO len(MF)

oBrow:addColumn(TBColumnNew(MZ[i], MF[i]))

next

while (!oBrow:stabilize()) ; end


lKeyWaiting := .F.

lBrowse := .T.

do while (lBrowse)

if (!lKeyWaiting)

do while (!oBrow:stabilize())

// Прервать стабилизацию, если нажата клавиша

if ((nKey := Inkey()) != 0)

lKeyWaiting := .T.

exit

endif

enddo

endif

// Если нет нажатия, то ждать его

if (!lKeyWaiting)

nKey := Inkey(0)

endif

do case

case (nKey == K_DOWN)

oBrow:down()

case (nKey == K_UP)

oBrow:up()

case (nKey == K_PGDN)

oBrow:pageDown()

case (nKey == K_PGUP)

oBrow:pageUp()

case (nKey == K_CTRL_PGUP)

oBrow:goTop()

case (nKey == K_CTRL_PGDN)

oBrow:goBottom()

case (nKey == K_RIGHT)

oBrow:right()

case (nKey == K_LEFT)

oBrow:left()

case (nKey == K_HOME)

oBrow:home()

case (nKey == K_END)

oBrow:end()

case (nKey == K_CTRL_LEFT)

oBrow:panLeft()

case (nKey == K_CTRL_RIGHT)

oBrow:panRight()

case (nKey == K_CTRL_HOME)

oBrow:panHome()

case (nKey == K_CTRL_END)

oBrow:panEnd()

case (nKey == K_F7)

// printspr()

case (nKey == K_ESC).or.(nKey == K_F10)

lBrowse := .F.

endcase

lKeyWaiting := .F.

enddo

restscreen(1,0,23,79,SCR)

dbcloseall()

_nort()

return 0


ФУНКЦИЯ ЗАКРЫТИЯ ОПЕРАЦИОННОГО ДНЯ

Function CloseDay()


if _err(07,05,"Вы действительно желаете закрыть","операционный день ?",""," Да "," Нет ","")<>1

return 0

endif


ArBase=strtran(str(day(MDATE),2)+str(month(MDATE),2)+substr(str(year(MDATE),4),3,2)," ","0")

use (DATROAD+"Operatio")

copy to (ARCROAD+"Op"+ArBase)

delete all

pack

use (DATROAD+"Document")

copy to (ARCROAD+"Do"+ArBase)

delete all

pack

use (DATROAD+"Currency")

copy to (ARCROAD+"Cu"+ArBase)

use (DATROAD+"Kurses")

copy to (ARCROAD+"Ku"+ArBase)

use (DATROAD+"Codes")

copy to (ARCROAD+"Co"+ArBase)


ODATE=MDATE

SCR=savescreen(07,05,12,47)

_open_n(07,05,10,45,B_SINGLE+" ",AT_G_F)

CL=setcolor(AT_G_U)

@ 08,22 say ODATE

do while(.T.)

setcolor(AT_G_N+","+AT_G_S+",,,"+AT_G_U)

@ 08,07 say "Текущая дата :"

@ 09,07 say " Новая дата :" get MDATE

setcursor(CUR_STYLE)

read

setcursor(0)

if _err(10,15,"Дата введена правильно?","",""," Да "," Нет ","")=1

save all like MDATE to d

exit

endif

enddo

dbcloseall()

restscreen(07,05,12,47,SCR)

setcolor(CL)

return 0


Литература

  1. CA-Clipper 5.02 «Users Guide» - Руководство по программированию на языке Clipper

  2. А.А.Попов «Программирование в среде FoxPro. Построение систем обработки данных. («Радио и Связь» М. 1993г.)

  3. «RS-Club» №№1-7 1996г. (Miktor Ky. Union Publisher Inc. 1996г.)

  4. П.Нортон, П.Иао «Программирование на С++ в среде Windows» («Диалектика» Киев 1993г.)

  5. Инструкция ЦБ РФ «О порядке организации работы обменных пунктов на территории Российской федерации, совершения и учета валютно - обменных операций уполномоченными банками» №27 от 27.02.1995г.

Обеспечение всемирной трансляции спортивных шахматных соревнований с ...
Содержание Введение 1. Общая часть 1.1 Характеристика структурного подразделения "Шахматный клуб" 1.2 Обзор шахматных систем-прототипов 1.3 Анализ ...
#endif
return new Array(self.fields[target == 'from'
Раздел: Рефераты по информатике, программированию
Тип: дипломная работа
Курсовик по FoxPro
Министерство образования Российской Федерации Кубанский государственный технологический университет Кафедра ? ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе ...
PROMPT FIELD name_unit+' '+quality_goods+' '+supplier
@26,_X1-ROUND(_Diagram_col_width/2,0) SAY I
Раздел: Рефераты по информатике, программированию
Тип: реферат
Разработка базы данных Кадры
усский гуманитарно-технический колледж "Тантал" Факультет технической кибернетики "Утверждаю" Зав. кафедрой факультета технической кибернетики "_2001 ...
BROWSE NOAPPEND NOMODIFY LOCK 0 FIELDS org_num :H='Таб.
@ 4,30 SAY EDU_NUM COLOR SCHEME 2
Раздел: Рефераты по информатике, программированию
Тип: реферат
Програма переводу з однієї системи числення у іншу
ЗМІСТ Вступ Розділ 1. Системи числення Розділ 2. Методи та засоби розв'язку задачі Розділ 3. Практична реалізація розв'язку задачі Висновки Список ...
label m1,m2,m3,m4;
procedure check(system:integer;num:string);
Раздел: Рефераты по информатике, программированию
Тип: курсовая работа
U.S. Economy
United States (Economy) INTRODUCTION The U.S. economy is immense. In 1998 it included more than 270 million consumers and 20 million businesses. U.S ...
But in large part, these nations have caught up with the United States because of their higher rates of savings and investment, and in some cases, because of their stronger systems ...
The United States contains huge fields of natural gas and oil.
Раздел: Рефераты по экономике
Тип: реферат