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

@ 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<LENG

@ 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]+;


Страница: