Enviado: 14 Ago 2007 14:51
por gera som djs
Olha só alguem pode me explicar como eu faço pra executar esse exemplo:
* * * * * * * * * * * * * * * * * * * *
* PROGRAMA: CALC.PRG *
* FUN€ŽO..: CALCULADORA *
* AUTOR...: ANDERSON CARDOSO SILVA *
* * * * * * * * * * * * * * * * * * * *
calcu()
FUNCTION CALCu(0)
#INCLUDE "INKEY.CH"
#INCLUDE "MOUSE.CH"
*-------------------------
*** COMANDO: "BOTAO" - VERSAO CALCULADORA
*** POR....: ANDERSON CARDOSO SILVA
*** DATA...: 09/01/96
#COMMAND @ <XYZlin>,<XYZcol> BOTAO <XYZnome> [SOMBRA <XYZcor>] [MENSAGEM <XYZmens>] [COM <XYZcor2>] [TECLA <XYtecla>];
=> ;
CBOTAO(<XYZlin>, <XYZcol>, <XYZnome>, <XYZcor>, <XYZmens>, <XYZcor2>, <XYtecla>)
#COMMAND PRESSIONE <XYZopcao>;
=> ;
<XYZopcao>:=CLEBOTAO(<XYZopcao>)
MR:=ARRAY(4)
aCBOTAOpars:={}
PUBLIC aCBOTAOpars, nBUTTONS, RATO, MR
IF MOUSEINIT(@nBUTTONS)
RATO:=1
ELSE
RATO:=0
ENDIF
*---------------------------
OLD=SETCOLOR()
VELHO=SETCURSOR()
SETCURSOR(0)
SET SCOREBOARD OFF
ZX=SAVESCREEN(00,00,24,79)
N:=""; DEC:=3; XX:=40; YY:=10; CA=.T.; OLDXX:=XX; OLDYY:=YY; Z:=1; RES:=ARRAY(3); RES[1]:=""; RES[2]:=""; RES[3]:=""; OM:=0
PUBLIC N, RES, XX, YY, TEI, TEC, OLDXX, OLDYY, Z, OM
// CARA
BOXSHADOW(YY-2,XX-3,YY+12,XX+29,"W/B")
DISPBOX(YY-2,XX-3,YY+12,XX+29,"ܲÜÛÛÜÛÛ","BG/B")
PLAK(YY-1,XX-1,YY+1,XX+27,"B")
//-----
SETCOLOR("N/W")
*-------
DO WHILE CA=.T.
@ YY+2,XX+8 BOTAO " &CE " SOMBRA "N+/B"
@ YY+2,XX+19 BOTAO " &/ " SOMBRA "N+/B"
@ YY+4,XX+24 BOTAO " &* " SOMBRA "N+/B"
@ YY+6,XX+24 BOTAO " &- " SOMBRA "N+/B"
* @ 14,71 SAY " "
@ YY+8,XX+24 BOTAO " &+ " SOMBRA "N+/B"
* @ 16,71 SAY " "
* @ 18,71 SAY " "
@ YY+10,XX+20 BOTAO " &= <Ù " SOMBRA "N+/B"
* @ 20,70 SAY CHR(27)+"Ù"
@ YY+8,XX-1 BOTAO " F5 " SOMBRA "N+/B" TECLA K_F5
@ YY+8,XX+5 SAY "Mov" COLOR "W+/B"
@ YY+10,XX-1 BOTAO " &S " SOMBRA "N+/B"
@ YY+10,XX+4 SAY "Sai" COLOR "W+/B"
@ YY+4,XX+9 BOTAO " &7 " SOMBRA "N+/B"; @ YY+4 ,XX+14 BOTAO " &8 " SOMBRA "N+/B"; @ YY+4,XX+19 BOTAO " &9 " SOMBRA "N+/B"
@ YY+6,XX+9 BOTAO " &4 " SOMBRA "N+/B"; @ YY+6 ,XX+14 BOTAO " &5 " SOMBRA "N+/B"; @ YY+6,XX+19 BOTAO " &6 " SOMBRA "N+/B"
@ YY+8,XX+9 BOTAO " &1 " SOMBRA "N+/B"; @ YY+8 ,XX+14 BOTAO " &2 " SOMBRA "N+/B"; @ YY+8,XX+19 BOTAO " &3 " SOMBRA "N+/B"
@ YY+10,XX+9 BOTAO " &0 " SOMBRA "N+/B"; @ YY+10,XX+14 BOTAO " &. " SOMBRA "N+/B"
@ YY+2,XX-1 BOTAO " F2 " SOMBRA "N+/B" TECLA K_F2; @ YY+2 ,XX+5 SAY "a" COLOR "W+/B"; @ YY+2 ,XX+6 SAY "ü" COLOR "R+/B"
@ YY+4,XX-1 BOTAO " F3 " SOMBRA "N+/B" TECLA K_F3; @ YY+4 ,XX+5 SAY "û" COLOR "W+/B"
@ YY+6,XX-1 BOTAO " F4 " SOMBRA "N+/B" TECLA K_F4; @ YY+6 ,XX+5 SAY "%" COLOR "W+/B"
@ YY+2,XX+14 BOTAO " "+CHR(27)+" " SOMBRA "N+/B" TECLA K_BS
PK2:=SAVESCREEN(YY-2,XX-3,YY+12,XX+29)
*--------
//
KEYBOARD K_INS; TEC:=6
DO WHILE CA=.T.
IF (OLDXX<>XX .OR. OLDYY<>YY) .OR. (OLDXX<>XX .AND. OLDYY<>YY)
RESTSCREEN(00,00,24,79,ZX)
BOXSHADOW(YY-2,XX-3,YY+12,XX+29,"W/B,N/GR")
RESTSCREEN(YY-2,XX-3,YY+12,XX+29,PK2)
@ YY+08,XX SAY "F5" COLOR "N/W"
OLDXX:=XX; OLDYY:=YY
ENDIF
IF !EMPTY(RES[2])
@ YY,XX SAY IF(VALTYPE(RES[Z])="C", VAL(RES[Z]), RES[Z]) PICT "9999999999999999999999.9999" COLOR "N/GR"
ELSE
@ YY,XX SAY IF(VALTYPE(RES[1])="C", VAL(RES[1]), RES[1]) PICT "9999999999999999999999.9999" COLOR "N/GR"
ENDIF
PRESSIONE TEC //; IF VALTYPE(RES)="N"; RES=STR(RES); ENDIF
IF Z=3
Z:=2
ENDIF
IF TEC=6 .AND. EMPTY(RES[2])
EXIT
ENDIF
DO CASE
CASE TEC=9
RES[Z]:=RES[Z]+"7"
CASE TEC=10
RES[Z]:=RES[Z]+"8"
CASE TEC=11
RES[Z]:=RES[Z]+"9"
CASE TEC=12
RES[Z]:=RES[Z]+"4"
CASE TEC=13
RES[Z]:=RES[Z]+"5"
CASE TEC=14
RES[Z]:=RES[Z]+"6"
CASE TEC=15
RES[Z]:=RES[Z]+"1"
CASE TEC=16
RES[Z]:=RES[Z]+"2"
CASE TEC=17
RES[Z]:=RES[Z]+"3"
CASE TEC=18
RES[Z]:=RES[Z]+"0"
CASE TEC=19
RES[Z]:=RES[Z]+"."
CASE TEC=1
RES[1]:=""
RES[2]:=""
RES[3]:=""
Z:=1 // CE
*----- HABILITACOES DA CALCULADORA
CASE TEC=2
Z:=DIVIDE()
OM:=1
CASE TEC=3
Z:=MULTIPLICA()
OM:=2
CASE TEC=4
Z:=SUBTRAI()
OM:=3
CASE TEC=5
Z:=SOMA()
OM:=4
CASE TEC=20
Z:=EXPOENTE()
OM:=5
CASE TEC=21
Z:=RAIZ()
OM:=6
CASE TEC=22
Z:=PORCENTAGEM()
OM:=7
*-----
CASE TEC=6
Z:=RESULT()
CASE TEC=23
RES[Z]:=SUBSTR(RES[Z],1,LEN(RES[Z])-1)
CASE TEC=7
MOVE()
CASE TEC=8
SAICALC()
ENDCASE
* @ YY,XX SAY REPLI(" ",23) COLOR "N/GR"
IF VALTYPE(RES[Z])="C"
@ YY,XX SAY VAL(RES[Z]) PICT "9999999999999999999999.9999" COLOR "N/GR"
ENDIF
IF VALTYPE(RES[Z])="N"
@ YY,XX SAY RES[Z] PICT "9999999999999999999999.9999" COLOR "N/GR"
ENDIF
EXIT
ENDDO
ENDDO
RESTSCREEN(00,00,24,79,ZX); SETCURSOR(VELHO); SETCOLOR(OLD)
RETURN
FUNC SAICALC
CA=.F.; RESTSCREEN(00,00,24,79,ZX)
MOUSEOFF()
RETURN (CA)
FUNC MOVE
@ YY+08,XX SAY "F5" COLOR "N*/W"; MM:={ {}, {}, {}, {} }
PK2:=SAVESCREEN(YY-2,XX-3,YY+12,XX+29)
AA=0
DO WHILE .T.
AA:=INKEY()
MOUSEREAD(MM) // LEFT, RIGHT, ROW, COL
MOUSEON()
OLDXX:=XX; OLDYY:=YY
DO CASE
CASE AA==K_UP
YY--
CASE AA==K_DOWN
YY++
CASE AA==K_LEFT
XX--
CASE AA==K_RIGHT
XX++
CASE MM[1]==.T. .OR. MM[2]==.T.
IF MM[3]==YY-2 .AND. MM[4]>=XX-3 .AND. MM[4]<=XX+25
MPOSL:=MM[3]; MPOSC:=MM[4]
DO WHILE MM[1]==.T. .OR. MM[2]==.T.
MOUSEREAD(MM)
IF MM[3]<MPOSL
YY:=YY-(MPOSL-MM[3])
ELSEIF MM[3]>MPOSL
YY:=YY+(MM[3]-MPOSL)
ENDIF
IF MM[4]<MPOSC
XX:=XX-(MPOSC-MM[4])
ELSEIF MM[4]>MPOSC
XX:=XX+(MM[4]-MPOSC)
ENDIF
IF MM[3]<>MPOSL .OR. MM[4]<>MPOSC .OR. MM[3]<>MPOSL .AND. MM[4]<>MPOSC
IF (XX-3) <=0 ; XX:=3; ENDIF
IF (XX+29)>=77; XX:=48; ENDIF
IF (YY-2) <=0 ; YY:=2; ENDIF
IF (YY+12)>=24; YY:=12; ENDIF
RESTSCREEN(00,00,24,79,ZX)
BOXSHADOW(YY-2,XX-3,YY+12,XX+29,"W/B")
RESTSCREEN(YY-2,XX-3,YY+12,XX+29,PK2)
MPOSL:=MM[3]; MPOSC:=MM[4]
ENDIF
ENDDO
EXIT
ENDIF
ENDCASE
IF (XX-3) <=0 ; XX=3; ENDIF
IF (XX+29)>=77; XX=48; ENDIF
IF (YY-2) <=0 ; YY=2; ENDIF
IF (YY+12)>=24; YY=12; ENDIF
IF XX<>OLDXX .OR. YY<>OLDYY
RESTSCREEN(00,00,24,79,ZX)
BOXSHADOW(YY-2,XX-3,YY+12,XX+29,"W/B")
RESTSCREEN(YY-2,XX-3,YY+12,XX+29,PK2)
ENDIF
IF AA==K_F5 .OR. AA==K_ESC; @ YY+08,XX SAY "F5" COLOR "N/W"; EXIT; ENDIF
ENDDO
RESTSCREEN(00,00,24,79,ZX)
BOXSHADOW(YY-2,XX-3,YY+12,XX+29,"W/B")
RESTSCREEN(YY-2,XX-3,YY+12,XX+29,PK2)
RETURN
FUNC SOMA()
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])+VAL(RES[2])) // SOMA
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC SUBTRAI
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])-VAL(RES[2])) // SUBTRAI
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC MULTIPLICA
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])*VAL(RES[2])) // MULTIPLICA
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC DIVIDE
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])/VAL(RES[2])) // DIVIDE
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC EXPOENTE
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])**VAL(RES[2])) // EXPOENTE
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC RAIZ
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])**1/(VAL(RES[2]))) // RAIZ
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC PORCENTAGEM
IF Z=1
Z:=2
RETURN Z
ENDIF
IF Z=2 .AND. !EMPTY(RES[2])
RES[3]:=STR(VAL(RES[1])*(VAL(RES[2])/100)) // PORCENTAGEM
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ELSE
Z := 2
RETURN Z
ENDIF
RETURN Z
FUNC RESULT
IF Z=2
DO CASE
CASE OM=1
RES[3]:=STR(VAL(RES[1])/VAL(RES[2])) // DIVIDE
CASE OM=2
RES[3]:=STR(VAL(RES[1])*VAL(RES[2])) // MULTIPLICA
CASE OM=3
RES[3]:=STR(VAL(RES[1])-VAL(RES[2])) // SUBTRAI
CASE OM=4
RES[3]:=STR(VAL(RES[1])+VAL(RES[2])) // SOMA
CASE OM=5
RES[3]:=STR(VAL(RES[1])**VAL(RES[2])) // EXPOENTE
CASE OM=6
RES[3]:=STR(VAL(RES[1])**(1/(VAL(RES[2])))) // RAIZ
CASE OM=7
RES[3]:=STR(VAL(RES[1])*(VAL(RES[2])/100)) // PORCENTAGEM
ENDCASE
Z:=3
RES[1]:=RES[3]
RES[2]:=""
ENDIF
RETURN Z
******************************************************** FIM CALCULADORA
FUNCTION BoxShadow( nTop, nLeft, nBottom, nRight, cCOLOR)
LOCAL nShadTop
LOCAL nShadLeft
LOCAL nShadBottom
LOCAL nShadRight
nShadTop := nShadBottom := MIN( nBottom + 1, MAXROW() )
nShadLeft := nLeft + 2
nShadRight := MIN( nRight + 1, MAXCOL() )
// This paints the shadow region by replacing the actual screen color
// attributes with "" (CHR(7), low intensity white on black) which
// gives the illusion of a shadow
RESTSCREEN( nShadTop, nShadLeft, nShadBottom, nShadRight, ;
TRANSFORM( SAVESCREEN(nShadTop, nShadLeft, nShadBottom, nShadRight), ;
REPLICATE("X", nShadRight - nShadLeft + 1 ) ) )
nShadTop := nTop + 1
nShadLeft := nShadRight := MIN( nRight + 1, MAXCOL() )
nShadBottom := nBottom
RESTSCREEN( nShadTop, nShadLeft, nShadBottom, nShadRight, ;
TRANSFORM( SAVESCREEN(nShadTop, nShadLeft, nShadBottom, nShadRight), ;
REPLICATE("X", nShadBottom - nShadTop + 1 ) ) )
RESTSCREEN( nTop+1, nRight+2, nBottom+1, nRight+2, ;
TRANSFORM( SAVESCREEN(nTop+1, nRight+2, nBottom+1, nRight+2), ;
REPLICATE("X", nBottom+1 - nTop + 1 ) ) )
SETCOLOR(cCOLOR)
@ nTop, nLeft CLEA TO nBottom, nRight
@ nTop, nLeft TO nBottom, nRight
RETURN ( NIL )
FUNC PLAK(L1,C1,L2,C2,BAC)
OLD=SETCOLOR(); SETCOLOR("N/W"); @ L1,C1 CLEA TO L2,C2
PC1="N+/"+BAC; PC2="R/"+BAC; PC3="R+/"+BAC
@ L1,C1 SAY REPLI("Ü",C2-C1) COLOR PC1
@ L1,C2 SAY "Ü" COLOR PC2; Z=(L2-L1)-1
FOR Y=0 TO Z; @ L1+1+Y,C1 SAY "Û" COLOR PC1; NEXT
FOR Y=0 TO Z; @ L1+1+Y,C2 SAY "Û" COLOR PC3; NEXT
@ L2,C1 SAY REPLI("ß",(C2-C1)+1) COLOR PC3
@ L2,C1 SAY "ß" COLOR PC2; SETCOLOR(OLD)
RETURN
*** FUN€”ES DE BASE DO COMANDO "BOTAO" COM SUPORTE PARA MOUSE (V. CALC.)
*** POR: ANDERSON CARDOSO SILVA
****************
FUNC CBOTAO(MSLN,MSCN,MSNOME,MSCOR,MSMENSAGEM,MSCOR2,MSALT)
MSOLDCOLOR:=SETCOLOR()
IF EMPTY(MSCOR)
MSBAC:=SUBSTR(MSOLDCOLOR,3,2)
IF SUBSTR(MSBAC,2,1)=","
MSBAC:=SUBSTR(MSBAC,1,1)
ENDIF
MSCOR:="N/"+MSBAC
ENDIF
IF (MSTECLA:=AT("&",MSNOME))>0
MSNOME:=SUBSTR(MSNOME,1,MSTECLA-1) + SUBSTR(MSNOME,MSTECLA+1)
ENDIF
@ MSLN,MSCN SAY MSNOME COLOR "N/W"// MESSA {||MENSA(MENSAGEM, COR2)}
@ MSLN+1,MSCN+1 SAY REPLI("ß",LEN(MSNOME)) COLOR MSCOR; @ MSLN,MSCN+LEN(MSNOME) SAY "Ü" COLOR MSCOR
AADD(aCBOTAOpars, {MSLN, MSCN, MSNOME, MSCOR, MSMENSAGEM, MSCOR2, MSTECLA, MSALT})
RETURN
****************
FUNC CLEBOTAO(OPC)
MSOLD:=SETCOLOR()
FOR T=1 TO LEN(aCBOTAOpars)
MSLN := aCBOTAOpars[T][1]
MSCN := aCBOTAOpars[T][2]
MSNOME := aCBOTAOpars[T][3]
MSCOR := aCBOTAOpars[T][4]
MSTECLA := aCBOTAOpars[T][7]
@ MSLN,MSCN SAY MSNOME COLOR "N/W"
IF !EMPTY(MSTECLA)
MSATALHO:=SUBSTR(MSNOME,MSTECLA,1)
* @ MSLN,MSCN+MSTECLA-1 SAY MSATALHO COLOR "R+/W"
ENDIF
NEXT
IF EMPTY(OPC); OPC:=1; ENDIF
CURS:=SETCURSOR(); SETCURSOR(0) // SETCOLOR("n/w, N*/w")
R:=OPC; OLDR:=R; CURSOR:=0; MSLN:=aCBOTAOpars[R][1]; MSCN:=aCBOTAOpars[R][2]; MSNOME:=aCBOTAOpars[R][3]; MSTECLA:=aCBOTAOpars[R][7]; MSALT:=aCBOTAOpars[R][8]
DO WHILE CURSOR<>27 .AND. CURSOR<>13 .AND. OLDR=R
@ MSLN,MSCN SAY MSNOME COLOR "N/W"
IF !EMPTY(MSTECLA)
MSATALHO:=SUBSTR(MSNOME,MSTECLA,1)
* @ MSLN,MSCN+MSTECLA-1 SAY MSATALHO COLOR "R+/W"
ENDIF
MSLN := aCBOTAOpars[R][1]
MSCN := aCBOTAOpars[R][2]
MSNOME := aCBOTAOpars[R][3]
MSCOR := aCBOTAOpars[R][4]
MSMENSAGEM := aCBOTAOpars[R][5]
MSCOR2 := aCBOTAOpars[R][6]
MSTECLA := aCBOTAOpars[R][7]
MSALT := aCBOTAOpars[R][8]
@ MSLN,MSCN SAY MSNOME COLOR "N*/W"
IF EMPTY(MSCOR2); MSCOR2:="B/BG"; ENDIF
IF !EMPTY(MSMENSAGEM)
@ 24,10 SAY MSMENSAGEM+REPLI(" ",69-LEN(MSMENSAGEM)) COLOR MSCOR2
ENDIF
DO WHILE CURSOR<>27 .AND. CURSOR<>13 .AND. OLDR=R
CURSOR:=INKEY() // ********************
OLDR:=R
IF CURSOR==4 .OR. CURSOR==24
IF R<LEN(aCBOTAOpars)
R++
ELSEIF R==LEN(aCBOTAOpars)
IF SET(_SET_WRAP)
R:=1
ENDIF
ENDIF
ELSEIF CURSOR==19 .OR. CURSOR==5
IF R>1
R--
ELSEIF R==1
IF SET(_SET_WRAP)
R:=LEN(aCBOTAOpars)
ENDIF
ENDIF
ENDIF
*** TECLA ATALHO ***
// EXPLICITA
IF (ACHOU:=ASCAN(aCBOTAOpars, {|aBOTAO| UPPER(SUBSTR(aBOTAO[3],aBOTAO[7],1))==UPPER(CHR(CURSOR))})) > 0
R:=ACHOU
ENDIF
// IMPLICITA
IF (ACHOU:=ASCAN(aCBOTAOpars, {|aBOTAO| aBOTAO[8]==CURSOR})) > 0
R:=ACHOU
ENDIF
*** SERVI€O DE MOUSE ***
IF RATO=1
MOUSEON()
MOUSEREAD(MR)
IF (ACHOU:=ASCAN(aCBOTAOPARS, {|aBOTAO| MR[3]==aBOTAO[1] .AND. MR[4]>=aBOTAO[2] .AND. MR[4]<=(aBOTAO[2]+LEN(aBOTAO[3])) } )) > 0
IF MR[1]=.T. .OR. MR[2]=.T.
CURSOR:=13; R:=ACHOU
ENDIF
* ELSE
* IF MR[1]=.T. .OR. MR[2]=.T.
* R:=0
* CURSOR:=27
* ENDIF
ENDIF
ENDIF
IF OLDR<>R; EXIT; ENDIF
ENDDO
ENDDO
*-----
@ MSLN,MSCN SAY MSNOME COLOR "N/W"
MSLN := aCBOTAOpars[R][1]
MSCN := aCBOTAOpars[R][2]
MSNOME := aCBOTAOpars[R][3]
MSCOR := aCBOTAOpars[R][4]
MSMENSAGEM := aCBOTAOpars[R][5]
MSCOR2 := aCBOTAOpars[R][6]
MSTECLA := aCBOTAOpars[R][7]
MSALT := aCBOTAOpars[R][8]
@ MSLN,MSCN SAY MSNOME COLOR "N*/W"
IF EMPTY(MSCOR2); MSCOR2:="B/BG"; ENDIF
IF !EMPTY(MSMENSAGEM)
@ 24,10 SAY MSMENSAGEM+REPLI(" ",69-LEN(MSMENSAGEM)) COLOR MSCOR2
ENDIF
*------
* IF CURSOR==27
* R:=0
* SETCURSOR(CURS)
* aBOTAOpars:={}; MR:={ {}, {}, {}, {}}
* IF RATO=1; MOUSEOFF(); ENDIF
* RETURN R
* ENDIF
B1=SAVESCREEN(MSLN,MSCN,MSLN+1,((MSCN+1)+LEN(MSNOME)))
SETCOLOR(MSCOR)
@ MSLN,MSCN CLEA TO MSLN+1,(MSCN+1)+LEN(MSNOME)
@ MSLN,MSCN+1 SAY MSNOME COLOR "N*/W"
//TONE(130,2)
nKEYPAUSE := 0
nKEYPAUSE := INKEY(.1)
IF nKEYPAUSE # 0
KEYBOARD CHR(nKEYPAUSE)
ENDIF
@ MSLN,MSCN CLEA TO MSLN+1,(MSCN+1)+LEN(MSNOME)
RESTSCREEN(MSLN,MSCN,MSLN+1,((MSCN+1)+LEN(MSNOME)),B1)
//TONE(130,1)
SETCURSOR(CURS)
aCBOTAOpars:={}; MR:={ {}, {}, {}, {} }
IF RATO=1; MOUSEOFF(); ENDIF
RETURN R
e o que ta errado ai.
Desde de ja agradeço