Você está na página 1de 35

GUIA DE REFERNCIA RPIDA

Automao e coleta de dados 1


1
NDICE
Funes para impresso de etiquetas padro ZPL,ALLEGRO e ELTRON________________________
MSCBPrinter____________________________________4
MSCBClosePrinter_______________________________5
MSCBBegin____________________________________5
MSCBEnd______________________________________5
MSCBSay______________________________________5
MSCBSayBar___________________________________6
*MSCBSayMemo________________________________7
MSCBBox______________________________________7
MSCBLineH____________________________________7
MSCBLineV____________________________________8
MSCBLoadGrf__________________________________8
MSCBGrafic____________________________________8
MSCBChkStatus_________________________________8
MSCBWrite_____________________________________9
Tipos de fontes para Zebra:________________________9
Tipos de fontes para Allegro:_______________________9
Exemplo padro Zebra.___________________________9
Exemplo padro Allegro.__________________________10
Exemplo padro Eltron.__________________________11
COAN!O" PARA TELNET #T$%%&_____________________________________________________
@...VTSay____________________________________12
VTClear Screen________________________________12
@...VTGet_____________________________________12
VTRead______________________________________13
VTSave Screen________________________________14
VTRestore Screen______________________________14
VTPause______________________________________15
@...VTPause__________________________________15
VTSetSize_____________________________________15
VTSet Key____________________________________15
F'NCOE" PARA TELNET #T$%%________________________________________________________
VTReadVar()___________________________________16
VTSave()_____________________________________16
VTRestore()___________________________________16
VTScroll()_____________________________________17
VTLastKey()___________________________________17
VTSetKey()____________________________________18
VTKeyBoard()__________________________________18
VTRow()______________________________________19
VTCol()_______________________________________19
VTnkey()_____________________________________19
VTMaxCol()___________________________________20
VTMaxRow()___________________________________20
Automao e coleta de dados 2
2
VTBeep()_____________________________________20
VTReverso()___________________________________21
VTClearBuffer()_________________________________21
VTAlert()______________________________________21
VTYesNo()____________________________________22
VTAchoice()___________________________________22
VTABrowse()___________________________________24
VTDBBrowse()_________________________________25
Exemplo aplicao Telnet VT100___________________26
F'NCOE" PARA (CROTER(NAL&____________________________________________________
TerCls()_______________________________________28
TerSay()______________________________________28
Ternkey()_____________________________________28
TerCBuffer()___________________________________29
TerGetRead()__________________________________29
TerEsc()______________________________________29
TerBeep()_____________________________________30
TerNumTer()___________________________________30
TerSave()_____________________________________30
TerRestore()___________________________________31
TerPBegin()____________________________________31
TerPrint()______________________________________31
TerPEnd()_____________________________________32
TersQuit()_____________________________________32
Exemplo aplicao Microterminal___________________32
Automao e coleta de dados 3
3
Funes para impresso de etiquetas padro ZPL,ALLEGRO
e ELTRON
Visualizao do posicionamento da imagem na etiqueta no padro Zebra (ZPL,EPL):
(OBS: Alguns modelos de impressoras ELTRON, possuem o alinhamento da folha de
etiqueta centralizado, por isso deve-se considerar o ponto de impresso da posio+a
margem)
X
Y Sentido do movimento
de impresso
Visualizao do posicionamento da imagem na etiqueta no padro Allegro:
Y
X
Sentido do movimento
de impresso
Nota:
Parmetros que estiverem entre [], significa que no so OBRGATROS, os parmetros
que estiverem com (*), significa que so ignorados no padro Allegro e Eltron.
MSCBPrinter
Tipo: mpresso
Configura modelo da impressora, sada utilizada, resoluo na impresso e tamanho
da etiqueta a ser impresso.
Parmetros
[ModelPrt] = String com o modelo de impressora:
Zebra: S400, S600, S500-6, Z105S-6, Z16S-6, S300, S500-8,
Z105S-8, Z160S-8, Z140X, Z90X e Z170Z.
Allegro:
ALLEGRO, PRODGY, DMX e DESTNY.
Automao e coleta de dados 4
4
!c"os!#a

!c"os!#a
Eltron:
ELTRON E ARGOX
cPorta = String com a porta
[nDensidade] = Numero com a densidade referente a quantidade de pixel por
mm
[nTamanho] = Tamanho da etiqueta em Milmetros.
[lSrv] = Se .t. imprime no server,.f. no client
[nPorta] = numero da porta de outro server
[cServer] = endereo P de outro server
[cEnv] = environment do outro server
[nMemoria] = Numero com bloco de memria
Observaes:
O parmetro nDensidade no necessrio informar, pois ModelPrt o atualizar
automaticamente. A utilizao deste parmetro (nDensidade) dever ser quando no souber
o modelo da impressora, a aplicao entendera que se trata de uma impressora Zebra.
O tamanho da etiqueta ser necessrio quando a mesma no for continua.

Exemplo
MSCBPRNTER("S500-8", "COM2:9600,e,7,2",NL, 42)
MSCBPRNTER("S500-8", "LPT1",NL, 42)
MSCBPRNTER("S600","COM1:9600,N,8,2",NL,NL,.T.,1024,"SERVER-
AP","ENVCODEBASEPORT609")
MSCBPRNTER("S600", "LPT1",NL, 42,.F.,NL,NL,NL,10240)
MSCBClosePrinter
Tipo: mpresso
Finaliza a conexo com a impressora

Exemplo
MSCBClosePrinter()
MSCBBegin
Tipo: mpresso
nicializa a montagem da imagem para cada etiqueta
Parmetros
[nQtde] = Quantidade de cpias
[nVeloc] = Velocidade (1,2,3,4,5,6) polegadas por segundo
[nTamanho]= Tamanho da etiqueta em Milmetros.

Exemplo:
MSCBBEGN(3,4,40)

MSCBEnd
Tipo: mpresso
Finaliza a montagem da imagem
Exemplo
MSCBEND()
MSCBSay
Tipo: mpresso
mprime uma String
Parmetros
Automao e coleta de dados $
$
nXmm = Posio X em Milmetros
nYmm = Posio Y em Milmetros
cTexto = String a ser impressa
cRotao = String com o tipo de Rotao (N,R,,B)
N-Normal
R-Cima p/baixo
-nvertido
B-Baixo p/ Cima
cFonte = String com os tipos de Fonte
Zebra: (A,B,C,D,E,F,G,H,0) 0(zero)- fonte escalar
Allegro: (0,1,2,3,4,5,6,7,8,9) 9 fonte escalar
Eltron: (0,1,2,3,4,5)
cTam = String com o tamanho da Fonte
*[lReverso]= mprime em reverso quando tiver sobre um box preto
[lSerial] = Serializa o cdigo
[cncr] = ncrementa quando for serial positivo ou negativo
*[lZerosL] = Coloca zeros a esquerda no numero serial
Exemplo
MSCBSAY(15,3,"MCROSGA ","N","C","018,010",.t.)
MSCBSAY(15,3,"MCROSGA ","N","C","018,010",.t.,.t.,"3",.t.)
MSCBSayBar
Tipo: mpresso
mprime Cdigo de Barras
Parmetros
nXmm = Posio X em Milmetros
nYmm = Posio Y em Milmetros
cConteudo = String a ser impressa
cRotao = String com o tipo de Rotao
cTypePrt = String com o Modelo de Cdigo de Barras
Zebra:
2 - nterleaved 2 of 5
3 - Code 39
8 - EAN 8
E - EAN 13
U - UPC A
9 - UPC E
C - CODE 128
Allegro:
D - nterleaved 2 of 5
A - Code 39
G - EAN 8
F - EAN 13
B - UPC A
C - UPC E
E - CODE 128
Eltron:
2 - nterleaved 2 of 5
3 - Code 39
E80 - EAN 8
E30 - EAN 13
UA0 - UPC A
UE0 - UPC E
1 - CODE 128

[nAltura] = Altura do cdigo de Barras em Milmetros
*[ lDigver] = mprime dgito de verificao
[lLinha] = mprime a linha de cdigo
*[lLinBaixo]= mprime a linha de cdigo acima das barras
Automao e coleta de dados %
%
[cSubSetni]= Utilizado no code128
[nLargura] = Largura da barra mais fina em pontos default 3
[nRelacao] = Relao entre as barras finas e grossas em pontos default 2
[lCompacta] = Compacta o cdigo de barra
[lSerial] = Serializa o cdigo
[cncr] = ncrementa quando for serial positivo ou negativo
*[lZerosL] = Coloca zeros a esquerda no numero serial
Exemplo
MSCBSAYBAR(20,22,AllTrim(SB1->B1_CODBAR),"N","C",13)
*MSCBSayMemo
Tipo: mpresso
Monta e imprime um campo MEMO
Parmetros
nXmm = Posio X em Milmetros
nYmm = Posio Y em Milmetros
nLMemomm = Tamanho da 1 linha do campo memo em Milmetros
nQLinhas = Quantidade de linhas
cTexto = String a ser impressa
cRotao = String com o tipo de Rotao (N,R,,B)
cFonte = String com o tipo de Fonte (A,B,C,D,E,F,G,H,0)
cTam = String com o tamanho da Fonte
[lReverso]= lgica se imprime em reverso quando tiver
sobre um box preto
[cAlign] = String com o tipo de Alinhamento do memo
L - Esquerda
R - Direita
C - Centro
J - Margem a margem (justificado)
Exemplo
MSCBSAYMEMO (1,10,8,4,cTexto,"N","A","9,5",.f.,"C")

MSCBBox
Tipo: mpresso
mprime um Box
Parmetros
nX1mm = Posio X1 em Milmetros
nY1mm = Posio Y1 em Milmetros
nX2mm = Posio X2 em Milmetros
nY2mm = Posio Y2 em Milmetros
[nEspessura]= Numero com a espessura em pixel
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B")
Exemplo
MSCBBOX(12,01,31,10,37)
MSCBLineH
Tipo: mpresso
mprime uma linha horizontal
Parmetros
nX1mm = Posio X1 em Milmetros
nY1mm = Posio Y1 em Milmetros
nX2mm = Posio X2 em Milmetros
[nEspessura]= Numero com a espessura em pixel
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B")
Automao e coleta de dados &
&
Exemplo
MSCBLineH(01,10,80,3,"B")
MSCBLineV
Tipo: mpresso
mprime uma linha vertical
Parmetros
nX1mm = Posio X1 em Milmetros
nY1mm = Posio Y1 em Milmetros
nY2mm = Posio X2 em Milmetros
[nEspessura] = Numero com a espessura em pixel
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B")
Exemplo
MSCBLineV(01,10,80,3,"B")
MSCBLoadGr
Tipo: mpresso
Carrega uma imagem para memria da impressora
Observaes

Para o padro Zebra, arquivo do grfico tem que ser do tipo GRF, gerado atravs de
um PCX ou TF no software fornecido pelo fabricante da zebra.
Para o padro Allegro e Eltron, arquivo do grfico pode ser do tipo BMP, PCX e MG.
No precisa ser convertido.
Parmetros
cmagem = nome do arquivo que ser carregado
Exemplo
MSCBLOADGRF("LOGO.GRF")
MSCBGrai!
Tipo: mpresso
mprime grfico que est armazenado na memria da impressora
Parmetros
nXmm = Posio X em Milmetros
nYmm = Posio Y em Milmetros
cArquivo = Nome do grfico que foi carregado na memria da impressora (no
colocar a extenso .GRF)
*[lReverso]= mprime em reverso quando tiver sobre um box preto
Exemplo
MSCBGRAFC(3,3,"LOGO",.t.)
MSCBC"#Stat$s
Tipo: mpresso
Seta ou visualiza o controle de status do sistema com a impressora.
Parmetros
[lStatus] = Lgica ativa/desativa o controle
Retorno
Retorna o Status
Com o status ativado, sempre que a aplicao enviar qualquer informao para a
impressora, ser analisado o status, caso esteja com o buffer cheio, sem papel ou sem
ribbon, o sistema aguardara at que os itens anteriores estejam solucionados.
Automao e coleta de dados '
'
Exemplo
MSCBCHKSTATUS(.f.) // desativa a verificao
MSCB%rite
Tipo: mpresso
Permite enviar para porta uma linha de programao nativa da mpressora.
Parmetros
cConteudo = Linha de programao nativa da impressora.
Exemplo
MSCBWRTE("^FO1,1^GB400,50,25^FS")
&ipos de ontes para 'e(ra)
As fontes A,B,C,D,E,F,G,H, so do tipo BTMAPPEDs, tem tamanhos definidos e
podem ser expandidas proporcionalmente as dimenses mnimas.
Exemplo: Fonte do tipo A, 9 X 5 ou 18 x 10 ou 27 X 15 .
A fonte 0 (Zero) do tipo ESCALAR, esta ser gerada na memria da impressora,
portanto torna-se um processamento lento.
&ipos de ontes para *llegro)
As fontes 0,1,2,3,4,5,6,7,8, so do tipo BTMAPPEDs, tem tamanho definido e
podem ser expandidos.
Exemplo: Fonte do tipo 1, 1X1 ou 1x2 ou 1x3 ou 2x1 ou 2x2.
A fonte 9 (Nove) do tipo ESCALAR, esta ser gerada na memria da impressora,
portanto torna-se um processamento lento, as dimenses deste tipo de fonte tem que ser
passando junto com o tamanho da fonte.
Exemplo. cTam := "001,001,002
\_____/ \_/
| |
| | dimenso da fonte que pode ser de 0 9
| tamanho da fonte
Exemplo padro 'e(ra+
,ser -$n!tion E&./'EB0*12
Lo!al nX
Lo!al !Porta
!Porta )3 4C5M6)7899:n:;:64
MSCBP0.<&E014S=99>;4:!Porta:::++::::2
MSCBL5*?G0-14S.G*+G0-42
-or nx)3@ to A
MSCBBEG.<1@:82
MSCBB5X196:9@:B8:A=2
MSCBLineH1A9:9=:B8:A2
MSCBLineH196:@A:B8:A:4B42
MSCBLineH196:69:B8:A:4B42
MSCBLineV1A9:9@:@A2
MSCBG0*-.C16:A:4S.G*42
MSCBS*Y1AA:96:CP05?,&5C:4<4:494:496=:9A=42
MSCBS*Y1AA:98:4C5?.G54:4<4:4*4:49@=:99;42
MSCBS*Y1AA:97: 49999984: 4<4: 494: 49A6:9A=42
MSCBS*Y19=:@D:4?ESC0.C*54:4<4:4*4:49@=:99;42
MSCBS*Y19=:@B:4.MP0ESS50* 'EB0* S=99>;4:4<4: 494: 4969:9A942
MSCBS*YB*016A:66:4999999984:4<4:4C4:;+A8:+-+:+&+:+-+::6:@:+-+:+-+:4@4:+&+2
MSCBE<?12
<ext
Automao e coleta de dados (
(
MSCBCL5SEP0.<&E012
0et$rn
Exemplo padro *llegro+
,ser -$n!tion E&./*LLEG0512
Lo!al nX
Lo!al !Porta
!Porta )3 4C5M6)7899:n:;:64
MSCBP0.<&E014*LLEG054:!Porta:::++::::2
MSCBL5*?G0-14S.G*+BMP42
-or nx)3@ to A
MSCBBEG.<1@:82
MSCBB5X196:9@:B8:AD:@2
MSCBLineH1A9:A9:B8:@2
MSCBLineH196:6A:B8:@2
MSCBLineH196:@=:B8:@2
MSCBLineV1A9:6A:AD:@2
MSCBG0*-.C16:68:4S.G*42
MSCBS*Y1AA:A@:CP05?,&5C:4<4:464:49@:9@42
MSCBS*Y1AA:6B:4C5?.G54:4<4:464:49@:9@42
MSCBS*Y1AA:6D: 49999984: 4<4: 464: 49@:9@42
MSCBS*Y19=:69:4?ESC0.C*54:4<4:464:49@:9@42
MSCBS*Y19=:@8:4.MP0ESS50* *LLEG05 6 B04:4<4: 464: 49@:9@42
MSCBS*YB*0166:9A:4999999984:4<4:4E4:;+A8:+-+:+&+:+-+::A:6:+-+:+-+:4@4:+&+2
MSCBE<?12
<ext
MSCBCL5SEP0.<&E012
0et$rn
Automao e coleta de dados 1)
1)
Exemplo padro Eltron+
,ser -$n!tion E&./EL&05<12
Lo!al nX
Lo!al !Porta
!Porta )3 4C5M6)7899:n:;:64
MSCBP0.<&E014EL&05<4:!Porta:::++::::2
MSCBCHEStat$s1++2
MSCBL5*?G0-14S.G*+PCX42
-or nx)3@ to A
MSCBBEG.<1@:82
MSCBG0*-.C19D:96:4S.G*42
MSCBB5X19=:9@:B8:A9:62
MSCBLineH1A9:98:B@:62
MSCBLineH19=:@6:B@:62
MSCBLineH19=:@;:B@:62
MSCBLineV1A9:@:@+A:792 FFMonta Lin"a Verti!al
MSCBS*Y1AA:96:CP05?,&5C:4<4:464:4@:642
MSCBS*Y1AA:9B:4C5?.G54: 4<4: 4@4: 4@:@42
MSCBS*Y1AA:97:49999984: 4<4: 4@4: 4@:642
MSCBS*Y19B:@A:4?ESC0.C*54:4<4:4@4:4@:@42
MSCBS*Y19B:@=:4.MP0ESS50* EL&05< &LP6BD64:4<4: 4@4: 4@:642
MSCBS*YB*016;:@7:4999999984:C<C:C@C:=9:+&+::::6:6::::2
MSCBE<?12
<ext
MSCBCL5SEP0.<&E012
0et$rn
Automao e coleta de dados 11
11

COMANO! PARA TELNET "T#$$%
G+++V&Say
Tipo: TELNET VT100
Exibe dados em uma linha e coluna especificadas
Sintaxe
@ <nLin>, <nCol>
[VTSAY <exp> [PCTURE <cSayPicture>]]
Parmetros
<nLin> e <nCol> so as coordenadas de linha e coluna da sada.
Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale para as
colunas.
VTSAY <exp> exibe o resultado de uma expresso de qualquer tipo.
PCTURE <cSayPicture> define a mascara para a sada de exp.
Exemplo
nQtd :=15.45
cDesc := "Teste descricao"
//
@ 1, 1 VTSAY nQtd PCTURE "@9999.99"
@ 2, 1 VTSAY "Teste VTG100
@ 4, 1 VTSAY cDesc PCTURE "@!"
V&Clear S!reen
Tipo: TELNET VT100
Apaga a tela e coloca o cursor na posio inicial
Sintaxe
VTCLEAR [SCREEN]
G+++V&Get
Tipo: TELNET VT100
Automao e coleta de dados 12
12
Cria um novo objeto VTGET e o coloca em exibio na tela
Sintaxe
@ <nLin>, <nCol>
[VTSAY <exp>
[PCTURE <cSayPicture>]]
VTGET <idVar>
[PCTURE <cGetPicture>]
[WHEN <lPreCondicao>]
[VALD <lPosCondicao>]
[PASSWORD]
[F3<tabela>]
Parmetros
<nLin> e <nCol> So as coordenadas de linha e coluna para a operao. Se a clausula
VTSAY est presente, especificam as coordenadas para o VTSAY, e o VTGET , exibido a
direita deste.
VTSAY exibe o valor de <exp> nas coordenadas especificadas. Caso a PCTURE
<cSayPicture> seja especificada.
VTGET <idVar> define o nome da varivel de qualquer tipo de dados a ser editada. Ela
pode ser caractere, data ou numrica .
PCTURE <cGetPicture> especifica uma mascara para exibio e as regras para edio
do VTGET.
WHEN <lPreCondicao> especifica uma expresso que deve ser satisfeita antes do
cursor entrar na regio de edio de VTGET. Se <lCondicao> , avaliada como verdadeira
(.T.), , permitido ao cursor entrar; de outra forma, o VTGET corrente , saltado e o cursor
move-se para o prximo VTGET.
VALD <lPosCondicao> especifica uma expresso que deve ser satisfeita antes que o
cursor possa deixar a regio de edio do VTGET corrente. O VALD<lPosCondicao>
, avaliado sempre que o usurio tenta deixar a regio de edio do VTGET, a menos que a
tecla Esc seja pressionada . Se <lPosCondicao> retorna falso (.F.), o controle retorna ao
VTGET e o usurio no pode deixa -lo at que <lPosCondicao> retorne verdadeiro (.T.) ou
o usurio aperte Esc. Um VALD <lPosCondicao> pode conter ou ser uma funo definida
pelo usurio, permitindo-lhe executar buscas e outros tipos de operaes de validao.
PASSWORD Monta o VTGET para entrada de dados com * na tela, utilizado para
SENHAS
F3 Associa este VTGET a uma tabela do SXB ou Sx5.
Descrio
Quando um comando VTREAD , especificado, um VTGET executa uma edio do
contedo de <idVar> de qualquer tipo de dado. Quando um objeto VTGET , criado, o nome
e valor corrente de <idVar> so guardados no objeto VTGET. O valor de <idVar> fica
armazenado no que, chamado de buffer do VTGET. O buffer de VTGET , o que , realmente
mostrado na tela e editado.

Exemplo
#include 'apvt100.ch'
nNumber = 0
@ 0, 0 VTSAY "Digite um numero;
VTGET nNumber;
VALD nNumber > 0
V&0ead
Tipo: TELNET VT100
Ativa edio em tela usando objetos GET
Sintaxe
VTREAD
Descrio
Automao e coleta de dados 13
13
O comando READ executa um mdulo de edio em tela usando todos os objetos
VTGET criados e adicionados.
Dentro de um READ, o usurio pode editar o buffer de cada objeto VTGET bem como
mover-se de um objeto GET para outro. Antes que o usurio possa entrar com um objeto
VTGET, o controle passa para o respectivo WHEN.
Quando o usurio pressiona uma tecla de sada de VTGET, o controle passa VALD
respectivo, caso tenha sido
especificada.
O exemplo abaixo define vrios VTGETs e a seguir usa o comando
READ:

#include 'apvt100.ch'
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY "Um :" VTGET cVar1 VALD !EMPTY(cVar1)
@ 2, 1 VTSAY "Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um"
@ 3, 1 VTSAY "Tres:" VTGET cVar3 VALD !EMPTY(cVar3)
VTREAD
V&Save S!reen
Tipo: TELNET VT100
Grava a tela corrente numa varivel
Sintaxe
VTSAVE SCREEN TO <idVar>
Parmetros
TO <idVar> especifica a varivel que sero atribudos os contedos da tela corrente.

Exemplo
#include 'apvt100.ch'
VTSave Screen To aTela
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3)
VTREAD
VTRestore Screen From aTela
V&0estore S!reen
Tipo: TELNET VT100
Exibe uma tela guardada
Sintaxe
VTRESTORE SCREEN [FROM <aTela>]
Parmetros
FROM <aTela> especifica uma varivel que contem o contedo da tela a ser exibida.
Exemplo
#include 'apvt100.ch'
VTSave Screen To aTela
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3)
Automao e coleta de dados 14
14
VTREAD
VTRestore Screen From aTela
V&Pa$se
Tipo: TELNET VT100
Suspende a execuo de um programa at que seja pressionada a tecla ENTER
Sintaxe
#include 'apvt100.ch'
VTPAUSE

G+++V&Pa$se
Tipo: TELNET VT100
Exibe dados em uma linha e coluna especificadas e para a execuo de um programa at
que seja pressionada a tecla ENTER
Sintaxe
@ <nLin>, <nCol>
[VTPAUSE <exp> [PCTURE <cSayPicture>]]
Parmetros
<nLin> e <nCol> so as coordenadas de linha e coluna da sada.
Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale para as
colunas.
VTPAUSE <exp> exibe o resultado de uma expresso de qualquer tipo.
PCTURE <cSayPicture> define a mascara para a sada de exp.
Exemplo
#include 'apvt100.ch'
@ 7, 1 VTPause "Tecle ENTER p/ Continuar
V&SetSiHe
Tipo: TELNET VT100
Seta o limite da rea de trabalho.
Sintaxe
VTSETSZE <nLin>, <nCol>
Parmetros
<nLin> e <nCol> so as coordenadas mximas de linha e coluna.
Exemplo
#include 'apvt100.ch'
VTSetSize 8,20
V&Set Eey
Tipo: TELNET VT100
Atribui a chamada de uma rotina a uma tecla
Sintaxe
VTSET KEY <nCodigoTecla> TO [<idRotina>]
Parmetros
<nCodigoTecla> , o valor VTNKEY() da tecla a qual se atribui a rotina.
TO <idRotina> especifica o nome da rotina que executada quando se aperta uma tecla.
Automao e coleta de dados 1$
1$
Se <idRotina> no especificada, a definio corrente liberada.
Exemplo
Este exemplo demonstra como usar VTSET KEY para invocar uma rotina quando o
usurio aperta. A tecla 'A'.

#include 'apvt100.ch'
VTSET KEY 65 TO TESTE
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
RETURN
FUNCTON Teste()
@ 2,1 VTSay 'TESTE'
RETURN NL
F&NCOE! PARA TELNET "T#$$
V&0eadVar12
Tipo: TELNET VT100
Retorna o nome da varivel VTGET corrente
Sintaxe
VTREADVAR() --> cNomeVar
Retorna
VTREADVAR() retorna o nome da varivel associada ao objeto VTGET corrente.
V&Save12
Tipo: TELNET VT100
Grava uma regio de tela para posterior exibio
Sintaxe
VTSAVE (<nTopo>, <nEsquerda>, <nBase>, <nDireita>) --> cTela
Parmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as
coordenadas da regio de tela a ser gravada. Caso <nBase> ou
<nDireita> seja maior do que VTMAXROW() ou VTMAXCOL(), a tela cortada.
Retorna
VTSAVE () retorna a regio de tela especificada na forma de uma cadeia de
caracteres.
Exemplo
#include 'apvt100.ch'
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)

V&0estore12
Tipo: TELNET VT100
Automao e coleta de dados 1%
1%
Exibe uma regio de tela gravada em uma localizao especificada
Sintaxe
VTRESTORE(<nTopo>, <nEsquerda>,
<nBase>, <nDireita>, <aTela>) --> NL
Parmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as
coordenadas da informao de tela contida em <aTela>.
<aTela> , uma varivel contedo o contedo da tela gravada.
Retorna
VTRESTORE () sempre retorna NL.
Exemplo
#include 'apvt100.ch'
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)

V&S!roll12
Tipo: TELNET VT100
Rola uma regio de tela para cima ou para baixo
Sintaxe
VTSCROLL(<nTopo>, <nEsquerda>,
<nBase>, <nDireita>, <nLinhas>) --> NL
Parmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as coordenadas da regiao a ser
rolada. Valores de linha e coluna podem variar entre 0, 0 e VTMAXROW(), VTMAXCOL().
<nLinhas> define a quantidade de linhas a serem roladas. Um valor maior do que zero
rola para cima a quantidade especificada de linhas.
Um valor menor do que zero rola para baixo a quantidade especificada de linhas. Um
valor de zero apaga a rea especificada.
Retorna
VTSCROLL() sempre retorna NL.
Exemplo
VTSCROLL(0,0, VTMAXROW(),VTMAXCOL,1)
V&LastEey12
Tipo: TELNET VT100
Retorna o valor VTNKEY() da ltima tecla extrada do buffer de teclado
Sintaxe
VTLASTKEY() --> nCodnkey
Retorna
VTLASTKEY() retorna um nmero de -39 a 386 que identifica o valor VTNKEY() da
ltima tecla extrada do buffer de teclado.
Descrio
Automao e coleta de dados 1&
1&
VTLASTKEY() , uma funo de tratamento de teclado que informa o valor VTNKEY()
da ltima tecla capturada do buffer de teclado pela funo VTNKEY(), ou por um estado de
espera como VTREAD, VTPAUSE, VTACHOCE(),VTABROWSE ou VTDBBROWSE.
VTLASTKEY() retorna seu valor corrente
at que outra tecla seja capturada do buffer de teclado.
Exemplo
#include 'apvt100.ch'
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)
f VTLastKey() == 27
Return .f.
Endif
V&SetEey12
Tipo: TELNET VT100
Atribui um bloco de ao a uma tecla
Sintaxe
VTSETKEY(<nCodnkey>, [<bAao>]) --> bAcaoCorrente
Parmetros
<nCodnkey> , o valor NKEY() da tecla a ser associada ou questionada.
<bAcao> especifica o bloco de cdigo a ser automaticamente executado sempre que a
tecla especificada for pressionada durante um estado de espera.
Retorna
VTSETKEY() retorna o bloco de ao correntemente associado a tecla especificada, ou
NL caso a tecla especificada nao esteja associada a um bloco.
Exemplo
#include 'apvt100.ch'
bKeyAnt := VTSetKey(65,{|| teste()})
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
VTSetKey(65,bKeyAnt)
RETURN
FUNCTON Teste()
@ 2,1 VTSay 'TESTE'
RETURN NL
V&EeyBoard12
Tipo: TELNET VT100
Coloca uma cadeia de caracteres (string) no buffer de teclado
Sintaxe
VTKEYBOARD(<cCodigoTecla>)
Parmetros
<cCodigoTecla> , o conjunto de caracteres a ser colocado no buffer de teclado.
Exemplo
Automao e coleta de dados 1'
1'
#include 'apvt100.ch'
bKeyAnt := VTSetKey(65,{|| teste()})
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
VTSetKey(65,bKeyAnt)
RETURN
FUNCTON Teste()
@ 2,1 VTSay 'TESTE'
VTKeyBoard(chr(27))
RETURN NL
V&0oI12
Tipo: TELNET VT100
Retorna a posio de linha do cursor na tela
Sintaxe
VTROW() --> nLinha
Retorna
VTROW() retorna a posio de linha do cursor na forma de um valor numrico inteiro. A
faixa do valor de retorno varia entre zero e VTMAXROW().
Exemplo
@ 0,0 VTSay "Teste
@ VTRow()+1 ,0 VTSay "Teste2

V&Col12
Tipo: TELNET VT100
Retorna a posio de coluna do cursor na tela
Sintaxe
VTCOL() --> nCol
Retorna
VTCOL() retorna um valor numrico inteiro. A faixa do valor de retorno de zero at
VTMAXCOL().
Exemplo
@ 1, 1 VTSAY "Cliente: " + TRM(Cliente)
@ VTROW(), VTCOL() + 1 VTSAY Status
V&.n#ey12
Tipo: TELNET VT100
Extrai um caractere do buffer de teclado
Sintaxe
VTNKEY([<nSegundos>]) --> nCodnkey
Parmetros
<nSegundos> especifica a quantidade de segundos que VTNKEY() deve esperar por
uma tecla. O valor pode ser especificado em incrementos do tamanho de at um dcimo de
segundo. Se for especificado zero, o programa para at, que uma tecla seja pressionada.
Caso <nSegundos>
seja omitido, VTNKEY() no espera por uma tecla.
Automao e coleta de dados 1(
1(
Retorna
VTNKEY() retorna um valor numrico inteiro de -39 at, 386, que identifica a tecla
extrada do buffer de teclado. Caso o buffer de teclado esteja vazio, VTNKEY() retorna
zero.
Exemplo
While .t.
F Vtnkey(1) == 27 // correspondente a tela ESC
exit
Endf
End
V&MaxCol12
Tipo: TELNET VT100
Determina a coluna mxima visvel na tela
Sintaxe
VTMAXCOL() --> nColuna
Retorna
VTMAXCOL() retorna o nmero da coluna visvel mais a direita para fins de exibio.
Exemplo
@ 1, int(VTMaxCOL()/2) VTSAY "*
V&Max0oI12
Tipo: TELNET VT100
Determina a mxima linha visvel na tela
Sintaxe
VTMAXROW() --> nLinha
Retorna
VTMAXROW() retorna o nmero da ltima linha visvel para fins de exibio.
Descrio
VTMAXROW() , uma funo de tratamento de tela que pode ser utilizada para
determinar a m xima linha visvel da tela. Nmeros de linha e coluna
comeam com zero em Clipper.
Exemplo
A seguinte funo definida pelo usurio, TamTela(), utiliza VTMAXROW() e VTMAXCOL()
para retornar um vetor que contm o tamanho da tela corrente:
FUNCTON TamTela
RETURN { VTMAXROW(), VTMAXCOL() }
V&Beep12
Tipo: TELNET VT100
Emite um beep
Sintaxe
VTBEEP([<nQtde>]) --> NL
Parmetros
<nQtde> especifica a quantidade de beep que ser emitido, Caso <nQtde> seja omitido,
VTBEEP() emitira um beep.
Retorna
Automao e coleta de dados 2)
2)
VTBEEP() retorna NL
Exemplo
VTBEEP(3)
V&0everso12
Tipo: TELNET VT100
Ativa ou desativa o modo reverso da tela.
Sintaxe
VTREVERSO([<lRev>]) --> lReverso
Parmetros
<lRev> Se verdadeiro ativa, falso desativa o modo de tela. Caso <lRev> seja omitido,
VTReverso() retorna o modo atual.

Retorna
VTREVERSO() retorna o modo atual, verdadeiro que est em reverso, falso no est em
reverso.

Exemplo
#include 'apvt100.ch'

lReverso:= VTReverso(.t.)
@ 0,0 VTSay "Teste 1
VTReverso(lReverso)
@ 1,0 VTSay "Teste 2
V&ClearB$er12
Tipo: TELNET VT100
Limpa o buffer de teclado
Sintaxe
VTCLEARBUFFER() --> NL
Retorna
VTCLEARBUFFER() retorna NL
Exemplo
VTCLEARBUFFER()
V&*lert12
Tipo: TELNET VT100
Mostra uma messagem na tela
Sintaxe
VTALERT(<cMsg>,[<cCaption>],[<lCenter>],[<nSleep>]) nTecla
Parmetros
<cMsg> Mensagem a ser exibida.
<cCaption>Titulo da mensagem
<lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize.
<nSleep> > especifica a quantidade de tempo em milsimo de segundos em a mensagem
permanecera na tela, Caso omito, aguardara que seja digitado Enter ou ESC.
Retorna
Automao e coleta de dados 21
21
VTALERT () retorna o cdigo da tecla digitada.

Exemplo
VTAlert("Produto no cadastrado,Aviso,.t.,4000)
V&Yes<o12
Tipo: TELNET VT100
Mostra uma messagem a espera de uma confirmao na tela.
Sintaxe
VTYESNO (<cMsg>,[<cCaption>],[<lCenter>]) lConfrime
Parmetros
<cMsg> Mensagem a ser exibida.
<cCaption>Titulo da mensagem
<lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize.
Retorna
VTYESNO () retorna o verdadeiro caso tenha confirmado.

Exemplo
F ! VTYesNo('Confirma a alteracao','Atencao ',.T.)
Return .F.
ENDF

V&*!"oi!e12
Tipo: TELNET VT100
Executa um menu pop-up
Sintaxe
VTACHOCE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,
<actensMenu>, [<altensSelecionaveis>],
[<cFuncaoUsuario>],[<ntemnicial>], [lNaoBranco] , [<lMsg>],
[<nLinhaJanela>],[<lScroll>]) --> nPosicao
Parmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> so as coordenadas do canto superior
esquerdo e canto inferior direito da janela. Valores de linha podem variar entre zero e
VTMAXROW(), e valores de coluna podem variar entre zero e VTMAXCOL().
<actensMenu> um vetor que contem as cadeias de caracteres que sero exibidas
como sendo os itens de menu. Cada item de menu ser mais tarde identificado atravs de
sua posio numrica neste vetor.
<altensSelecionaveis> um vetor paralelo de valores lgicos, diretamente relacionados
a <actensMenu> que especifica os itens de menu que podero ser selecionados. Os
elementos podem ser valores lgicos ou cadeias de caracteres. Caso o elemento seja uma
cadeia de caracteres, ele avaliado como uma expresso macro que dever retornar um
tipo de dado lgico. Em ambos os casos, um valor de falso (.F.) significa que o item de
menu correspondente no est disponvel, e um valor de verdadeiro (.T.) significa que est
disponvel.
<cFuncaoUsuario> o nome de uma funo definida pelo usurio que executada
quando uma tecla no reconhecvel for pressionada. O nome da funo especificado
como uma expresso caractere sem parnteses ou argumentos. Note que o
comportamento de VTACHOCE() afetado pela presena deste argumento. Consulte o
texto abaixo para maiores informaes.
Automao e coleta de dados 22
22
<ntemnicial> a posio ocupada no vetor de <actensMenu> pelo item que aparecer
em destaque quando o menu for exibido pela primeira vez. Caso voc especifique um item
de menu que no esteja disponvel, ou caso voc no use argumento algum, o item que
aparecer em destaque ser o primeiro item selecionvel do vetor.
<lNaoBranco> Se for verdadeiro a opes do menu ser montado conforme o tamanho da
opo desconsiderando os espaos em branco direita e esquerda. Caso seja negativa ou
omitida a opo do menu ser montado conforme a dimenso da tela do VTACHOCE
definida em <nEsquerda> e <nDireita>.
<lMsg> Contedo tem que ser NL, parmetro reservado para implementao futura.
<nLinhaJanela> o nmero da linha da janela na qual o item de menu inicial aparecer.
Retorna
VTACHOCE() retorna a posio numrica ocupada pelo item de menu selecionado no
vetor de <actensMenu>. Se o processo de seleo for interrompido, VTACHOCE() retorna
zero.
Funo de usurio: Da mesma forma que as demais funes de interface com o
usurio, VTACHOCE() aceita uma funo de usurio. A funo de usurio especificada
quando voc deseja aninhar invocaes da funo VTACHOCE() para criar menus
hierrquicos ou redefinir teclas.
Modos de VTACHOCE()
0-nativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-tens no selecionados

Aps a funo de usurio ter executado as operaes apropriadas ao modo
VTACHOCE(), ela deve retornar um valor que solicite ao VTACHOCE() executar uma
operao entre o seguinte conjunto de aes:
Valores de Retorno da Funo de Controle de VTACHOCE()
0-Aborta seleo
1-Executa seleo
2-Continua VTACHOCE()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada
Exemplo
acMenutens := {"Um,Dois, "-----", "Tres}
alSelectabletens := {.T., .T., .F., .T.}
nPosition := VTACHOCE(0, 0, 7, 19, acMenutens, alSelectabletens,TESTECTRL )
Function testectrl(modo,nElem,nElemW)
f modo == 1
VtAlert('Top')
Elseif Modo == 2
VtAlert('Bottom')
Else
f VTLastkey() == 27
VtAlert('sair')
VTBeep(3)
return 0
elsef VTLastkey() == 13
VtAlert('ok')
VtBeep(1)
return 1
Automao e coleta de dados 23
23
Endif
Endf
Return 2
V&*BroIse12
Tipo: TELNET VT100
Monta um browse com referencia a um array.
Sintaxe
VTABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,
<aCab>, [<atens>], [<aSize>],
[<cFuncaoUsuario>],[<ntemnicial>]) --> nPosicao
Parmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> so as
coordenadas do canto superior esquerdo e canto inferior direito da janela. Valores de linha
podem variar entre zero e VTMAXROW(), e valores de coluna podem variar entre zero e
VTMAXCOL().
<aCab>, um vetor que contem os ttulos das colunas
<atens>, um vetor que contem os dados a serem mostrados
<aSize> , um vetor que contem o tamanho de cada coluna
<cFuncaoUsuario> o nome de uma funo definida pelo usurio que executada
quando uma tecla no reconhecvel for pressionada. O nome da funo especificado
como uma expresso caractere sem parnteses ou argumentos. Note que o
comportamento de VTABROWSE() afetado pela presena deste argumento. Consulte o
texto abaixo para maiores informaes.
<ntemnicial> a posio ocupada no vetor de < atens > pelo item que aparecer em
destaque quando o menu for exibido pela primeira vez. Caso voc especifique um item de
menu que no esteja disponvel, ou caso voc no use argumento algum, o item que
aparecer em destaque ser o primeiro item selecionvel do vetor.
Retorna
VTABROWSE() retorna a posio numrica ocupada pelo item de menu selecionado no
vetor de <atens>. Se o processo de seleo for interrompido, VTABROWSE() retorna zero.
Funo de usurio: Utilizada da mesma forma que VTACHOCE.
Modos de VTABROWSE()
0-nativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-tens no selecionados

Aps a funo de usurio ter executado as operaes apropriadas ao modo
VTABROWSE() ela deve retornar um valor que solicite ao VTABROWSE() executar uma
operaao entre o seguinte conjunto de aes:
Valores de Retorno da Funo de Controle de VTABROWSE()

0-Aborta seleo
1-Executa seleo
2-Continua VTABROWSE()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada
Exemplo
Automao e coleta de dados 24
24
#NCLUDE 'APVT100.CH'
VTClear
acab :={"Codigo","Cod ","Descricao ","UM"}
aSize := {10,4,20,10}
nPos := 12
atens :={{"1010 ",10, "DESCRCAO1","UN "},;
{"2010 ",20,"DESCRCAO2","CX "},;
{"2020 ",30,"DESCRCAO3","CX "},;
{"2010 ",40,"DESCRCAO4","CX "},;
{"2020 ",50,"DESCRCAO5","CX "},;
{"3010 ",60,"DESCRCAO6","CX "},;
{"3020 ",70,"DESCRCAO7","CX "},;
{"3030 ",80,"DESCRCAO7","CX "},;
{"3040 ",90,"DESCRCAO7","CX "},;
{"2010 ",40,"DESCRCAO4","CX "},;
{"2020 ",50,"DESCRCAO5","CX "},;
{"3010 ",60,"DESCRCAO6","CX "},;
{"3020 ",70,"DESCRCAO7","CX "},;
{"3030 ",80,"DESCRCAO7","CX "},;
{"3050 ",100,"DESCRCAO7","CX "}}
npos := VTaBrowse(0,0,7,15,aCab,atens,aSize,'testectrl',nPos)
.
.
.
Function testectrl(modo,nElem,nElemW)
f modo == 1
VtAlert('Top')
Elseif Modo == 2
VtAlert('Bottom')
Else
f VTLastkey() == 27
VtAlert('sair')
VTBeep(3)
return 0
elsef VTLastkey() == 13
VtAlert('ok')
VtBeep(1)
return 1
Endif
Endf
Return 2
V&?BBroIse12
Tipo: TELNET VT100
Monta um browse com referencia a uma tabela
Sintaxe
VTDBBROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,<cAlias>, <aCab>,
[<aFields>], [<aSize>], [<cFuncaoUsuario>],[<cTop>],[<cBottom>]) --> nRecno
Parmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> so as
coordenadas do canto superior esquerdo e canto inferior direito da janela. Valores de linha
podem variar entre zero e VTMAXROW(), e valores de coluna podem variar entre zero e
VTMAXCOL().
<cAlias>, uma string com alias da tabela
<aCab>, um vetor que contem os ttulos das colunas
<aFields>, um vetor que contem os campos do alias
Automao e coleta de dados 2$
2$
<aSize> , um vetor que contem o tamanho de cada coluna
<cFuncaoUsuario> o nome de uma funo definida pelo usurio que executada
quando uma tecla no reconhecvel for pressionada. O nome da funo especificado
como uma expresso caractere sem parnteses ou argumentos. Note que o
comportamento de VTDBBROWSE () afetado pela presena deste argumento. Consulte
o texto abaixo para maiores informaes.
<cTop> string com a condio de validao de top
<cBottom> string com a condio de validao de Bottom
Retorna
VTDBBROWSE () retorna o recno() Se o processo de seleo for interrompido,
VTDBBROWSE () retorna zero.
Funo de usurio: Utilizada da mesma forma que VTACHOCE e VTaBROWSE.
Modos de VTDBBROWSE ()
0-nativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-tens no selecionados

Aps a funo de usurio ter executado as operaes apropriadas ao modo
VTDBBROWSE () ela deve retornar um valor que solicite ao VTDBBROWSE () executar uma
operao entre o seguinte conjunto de aes:
Valores de Retorno da Funo de Controle de VTDBBROWSE ()
0-Aborta seleo
1-Executa seleo
2-Continua VTDBBROWSE ()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada
Exemplo
VtClear
aFields := {"B1_COD","B1_DESC","B1_UM","B1_PCM"}
aSize := {16,20,10,15}
aHeader := {'COD','DESCRCAO ','UM',"% CM"}
sb1->(dbseek(xfilial()+'00000000000001'))
nRecno := VTDBBrowse(0,0,7,15,"SB1",aHeader,aFields,aSize,'testectrl',;
"xfilial('SB1')+'00000000000001'",;
"xfilial('SB1')+'00000000000002'")
vtclear()
Exemplo apli!aJo &elnet V&@99
*!+clude ,-"ot.eus/c.,
*!+clude ,a-0t1))/c.,
12
P"o#"ama e3em-lo -a"a Rad!o F"e456+c!a
21
Fu+ct!o+ AICD7)3$839ocal:39ocal!;<
9ocal cEt!4 => ?-ace8@am?338ACB)CCDDE@2A<E1F<
9ocal lG.e+ => /t/
P"!0ate c9ocal
P"!0ate c9ocal!;
P"!0ate l9ocal!; => 8Get78,7C9DCA9IH,< >> ,?,<
P"!0ate +9!+=> )
Automao e coleta de dados 2%
2%
IF 39ocal * A A /a+d/ 39ocal * NI9
c9ocal => 39ocal
c9ocal!; => 39ocal!;
lG.e+ => /I/
E+dII
G.!le /t/
+9!+=> )
II lG.e+
c9ocal => ?-ace82<
c9ocal!; => ?-ace82)<
E+dII
7@Clea"8<
J ):) 7@?aK ,I+0e+ta"!o,
J 1:) 7@?aK ,Almo3a"!Iado=,
J 2:) 7@Get c9ocal -!ct AJLA 7A9ID a!0)3$9oc8< M.e+ lM.e+
II l9ocal!;
J 3:) 7@?aK ,9ocal!;acao=,
J 4:) 7@Get c9ocal!; 7A9ID a!0)3$9oc;8< M.e+ lM.e+
+9!+ => $
Else
+9!+ => 3
E+dII
7@Read
II 7@9astNeK8< >> 2& 11 CA?D D U?UARID PRECIDNE E?C DU C9EAR
E3!t
E+d!I
II L a!0)3$C"!aCBA8< /DR/ L a!0)3$CBB8<
II L lG.e+
e3!t
Else
9oo-
E+dII
E+dII
J +9!+OO:) 7@?aK ,Et!4ueta ,
J +9!+OO:) 7@Get cEt!4 7A9ID a!0)3$CBC8cEt!4<
7@Read
IF 7@9astNeK8< >> 2&
a!0)3$F!m8<
E+dII
II L lG.e+
e3!t
E+dII
E+dDo
Retu"+
11FUNCAD DE 7A9IDACAD DA 9DCA9IHACAD
?tat!c Fu+ct!o+ a!0)3$9oc8<
II Em-tK8c9ocal<
7@Bee-83< 11EI@E U BEEP ND R/F/
7@Ale"t8AAlmo3a"!Iado +ao -ode se" em P"a+coLA:,A0!so,:/@/:2)))< 11D?@RA A
EN?AGE
7@NeKBoa"d8c."82)<< 11 9IPA D GE@ A@I7D C@R9 Q@
Retu"+ /F/
E+d!I
Automao e coleta de dados 2&
2&
Retu"+ /@/
/
/
/
/
F&NCOE! PARA M'CROTERM'NAL%
&erCls12
Tipo: Microterminal
Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela
com espaos em branco.
Sintaxe
TerCls()
Retorna
NL
Exemplo
TerCls()
&erSay12
Tipo: Microterminal
Escreve no display do microterminal a string especificada pelo parmetro <cMsg> na
linha <nLin> e coluna <nCol>.
Sintaxe
TerSay(nLin,nCol,cMsg)
Parmetros
nLin = Linha onde se deseja colocar a mensagem
nCol = Coluna onde se deseja colocar a mensagem
cMsg = Mensagem que se deseja colocar na tela
Retorna
NL
Exemplo
TerSay(01,00,"Pressione <ENTER> para continuar.")
&er.n#ey12
Tipo: Microterminal
Especifica a quantidade de segundos que Ternkey() deve esperar por uma tecla. O
valor pode ser especificado em incrementos de um segundo. Se for especificado zero, o
programa para ate que uma tecla seja pressionada.
Sintaxe
Ternkey([nSegundos])
Parmetros
nSegundos = Numero de segundos a aguardar
Retorna
Codigo da Tecla pressionada, se no foi pressionado nada o valor retornado e' ""
Exemplo
While !TerEsc()
Automao e coleta de dados 2'
2'
cTecla := Ternkey(0)
TerSay(01,00,"Tecla Pressionada "+cTecla)
EndDo
&erCB$er12
Tipo: Microterminal
Libera o buffer de teclado do microterminal, esse comando e' util em rotinas de
interface com o usuario de forma a garantir que as teclas a serem processadas do buffer do
teclado sao apropriadas a atividade corrente e nao pendentes de uma atividade anterior.
Sintaxe
TerCBuffer()
Retorna
Caracteres que estavam pendentes no buffer no teclado do microterminal.
Exemplo
TerCBuffer()
TerSay(01,00,"Pressione qualquer tecla para continuar.")
Ternkey(0)
&erGet0ead12
Tipo: Microterminal
Executa uma entrada de dados no microterminal.
Sintaxe
TerGetRead(nLin,nCol,uVar,cPict,[bValid],[bWhen])
Parmetros
nLin - Linha a se executar a entrada de dados.
nCol - Coluna a se executar a entrada de dados.
uVar - Variavel a se devolver o valor da entrada de dados.
cPict - Picture da entrada de dados, as pictures disponiveis sao:
"X" - Para entrada de caracteres numricos(0-9) e letras (A-Z).
"9" - Para entrada de caracteres numricos(0-9).
"A" - Para entrada de caracteres letra(A-Z).
"*" - Para entrada de caracteres numricos(0-9) e letras (A-Z) mas exibindo "*" na
tela.
"." - Exibe ponto decimal na tela.
"/" - Exibe a barra ("/") na tela.
bValid - Code Block contendo a validao da entrada de dados.
bWhen - Code Block contendo a condio para se executar a entrada de dados.
Retorna
NL
Exemplo
lDigNome := .T.
cNome := Space(10)
cdade := Space(02)
TerCls()
TerSay(00,00,"Nome:")
TerGetRead(00,06,@cNome,"XXXXXXXXXX",{||!Empty(cNome)},{||lDigNome})
TerGetRead(00,00,cdade,"99",{||Val(cdade)>0})
Observaes
A varivel da entrada de dados deve ser do tipo caracter.
&erEs!12
Tipo: Microterminal
Automao e coleta de dados 2(
2(
Verifica se a ultima tecla pressionada no microterminal foi a DEL (consideramos
como equivalente a <ESC> no teclado normal).
Sintaxe
TerEsc()
Retorna
.T. se a ultima tecla pressionada foi <DEL> ou .F. se no foi
Exemplo
TerCls()
While .T.
cNome := Space(10)
TerSay(00,00,"Nome:")
TerGetRead(01,07,@cNome,"XXXXXXXXXX")
f TerEsc()
Exit
Endf
EndDo
TerCls()
TerSay(01,00,"Finalizando...")
&erBeep12
Tipo: Microterminal
Emite um sinal sonoro pelo 'buzzer' do Microterminal, caso o microterminal no
possua este dispositivo instalado nada acontece.
Sintaxe
TerBeep([nVezes])
Parmetros
nVezes - Numero de sinais sonoros a emitir.
Retorna
NL
Exemplo
TerBeep(3) // executa 3 sinais sonoros
TerBeep() // executa apenas 1 sinal sonoro

&er<$m&er12
Tipo: Microterminal
Retorna o numero do microterminal especificado no Monitor de microterminais.
Sintaxe
TerNumTer()
Retorna
Numero do microterminal
Exemplo
nTerminal := TerNumTer()
TerSay(00,00,"Terminal : "+StrZero(nTerminal))

&erSave12
Tipo: Microterminal
Grava uma regiao da tela do microterminal para posterior exibio.
Sintaxe
TerSave([nTopo],[nEsquerda],[nBase],[nDireita])
Parmetros
nTopo - Linha inicial da regio de tela a ser gravada.
nEsquerda - Coluna inicial da regio de tela a ser gravada
Automao e coleta de dados 3)
3)
nBase - Linha final da regio de tela a ser gravada.
nDireita - Coluna final da regio de tela a ser gravada.
Retorna
regiao de tela especificada na forma de cadeia de caracteres.
Exemplo
TerCls()
TerSay(00,00,"Tela a ser salva.")
cTela := TerSave(00,00,01,40)
TerCls()
TerRestore(00,00,01,40,cTela)

&er0estore12
Tipo: Microterminal
Restaura a regio de tela do microterminal gravada pela funo TerSave.
Sintaxe
TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela)
Parmetros
nTopo - Linha inicial da regio de tela a ser restaurada.
nEsquerda - Coluna inicial da regio de tela a ser restaurada.
nBase - Linha final da regio de tela a ser restaurada.
nDireita - Coluna final da regio de tela a ser restaurada.
cTela - E' uma cadeia de caracteres que contem a regio
de tela gravada.
Retorna
NL
Exemplo
TerCls()
TerSay(00,00,"Tela a ser salva.")
cTela := TerSave(00,00,01,40)
TerCls()
TerRestore(00,00,01,40,cTela)
&erPBegin12
Tipo: Microterminal
Executa funo para inicio de impresso na porta paralela ou serial do
microterminal.
Sintaxe
TerPBegin([nTerm],cSerPar)
Parmetros
nTerm -
Numero do microterminal a iniciar a impresso, se nada for
especificado ser considerado o numero definido no Monitor de
Microterminais.
cSerPar -
nforma qual a sada utilizada para impresso, 'S' para utilizar a sada
SERAL ou 'P' para se utilizar a sada PARALELA.
Retorna
NL
Exemplo
TerPBegin(,"S")
TerPrint("Testando a impresso na sada SERAL")
TerPEnd()
TerPBegin(,"P")
TerPrint("Testando a impresso na sada PARALELA")
TerPEnd()
Automao e coleta de dados 31
31
&erPrint12
Tipo: Microterminal
Envia a string especificada para a sada de impresso definida pela funo
TerPBegin.
Sintaxe
TerPrint( cString, [lSalta] )
Parmetros
cString - Cadeia de caracteres a enviar para a sada de impresso.
lSalta - nforme .F. para no saltar a linha na impressora aps o envio de cString ou .T. para
que se salte uma linha apos o envio de cString, se no especificado .T. e' assumido.
Retorna
NL
Exemplo
TerPBegin(,"P")
TerPrint("mprimindo uma linha e saltando para proxima linha")
TerPrint("mprimindo a linha e nao saltando.",.F.) // no salta a linha
TerPrint("Continuando da linha anterior.")
TerPEnd()
&erPEnd12
Tipo: Microterminal
Finaliza impresso iniciada pela funo TerPBegin.
Sintaxe
TerPEnd()
Retorna
NL
Exemplo
TerPBegin(,"S")
TerPrint("Testando a impresso na sada SERAL")
TerPEnd()
&er.sK$it12
Tipo: Microterminal
Funo utilizada em pontos do programa para se verificar se o Monitor esta
tentando finalizar a aplicao do microterminal, deve ser utilizada em lugares do programa
em que o fechamento da aplicao no cause transtornos, como por exemplo, apos a
concluso de uma venda.
Sintaxe
TersQuit()
Retorna
.F.
Exemplo
While .T.
TerCls()
TerSay(00,00,"nicando Venda...")
.
.
.
.
/
TerSay(00,00,"Venda Finalizada...")
Automao e coleta de dados 32
32
TersQuit() // caso o monitor esteja finalizando a aplicao somente
//neste ponto a finalizao ser efetuada, garantindo
//assim que a venda seja concluda.
EndDo
Exemplo apli!aJo Mi!roterminal
*INC9UDE ,PRD@REU?/CR,
121
E3em-lo -a"te de -"o#"amao -a"a m!c"ote"m!+al
121
Fu+ct!o+ AICD@)4)8cIm-CB<
9ocal c7olume
9ocal cEmP
9ocal cD!s-
9ocal cP"oduto
P"!0ate cPed!do
P"!0ate cCodEmP
P"!0ate cIm- => cIm-CB
P"!0ate +@amCB) => '
cIm- => PadR8All@"!m8cIm-<:%<
II LCB$QS8DP?eeT83F!l!al8<OcIm-<<
Co+Dut8,Cod!#o da !m-"esso"a do m!c"ote"m!+al ,O?t"He"o8@e"Num@e"8<:2<OU
, +ao e3!ste 8,OcIm-O,<,< 11
Retu"+
E+dII
G.!le /t/
@e"IsVu!t8<
c7olume => ?-ace8)'<
cEmP => ?-ace8)3<
cCodEmP => ?-ace8)'<
cD!s- => ?-ace8)3<
cP"oduto => ?-ace8)'<
@e"Cls8<
@e"CBuIIe"8<
@e"?aK8)):)):,7olume=,<
@e"?aK8)1:)):,D!#!te WEN@ERS -a"a +o0o 0olume/,<
@e"GetRead8)):)&:Jc7olume:,XXXXXXXX,:YZZ@7ld7ol8Jc7olume:JcEmP<[<
II @e"Esc8<
9oo-
E+dII
@e"Cls8<
@e"?aK8)):)):,7olume=,<
@e"?aK8)):1(:,EmP=,<
@e"?aK8)):)&:c7olume<
@e"GetRead8)):23:JcEmP:,XXX,:YZZ @7ldEmP8JcEmP:c7olume<[:YZZ
Em-tK8cEmP<[<
II @e"Esc8<
9oo-
E+dII
@e"?aK8)):23:cEmP<
@e"?aK8)1:)):,D-e"ado"=,<
@e"GetRead8)1:)(:JcCodEmP:,XXXXXXXX,:YZZ @7ldCEmP8<[<
II @e"Esc8<
9oo-
Automao e coleta de dados 33
33
E+dII
@e"Cls8<
@e"?aK8)):)):,7olume=,Oc7olumeO, EmP=,OcEmPO, D-e"=,OcCodEmP< 11******
@e"?aK8)1:)):,P"oduto=,< 11
@e"GetRead8)1:)':JcP"oduto:Re-l!cate8,X,:)'<:YZZ
@7ldP"od8JcP"oduto:JcD!s-:Jc7olume<[<
@e"Cls8<
@e"CBuIIe"8<
@e"IsVu!t8<
E+dDo
Retu"+ /@/
?tat!c Fu+ct!o+ @7ld7ol8c7olume:cEmP:c7ol2<
9ocal aRet=>Y[
9ocal c?a0@el
9ocal cResBuII
?lee-81))< 11 -ausa -a"a o PuIIe" se" com-letado LLL
cResBuII => @e"CBuIIe"8<
II cResBuII >> C."813<
cResBuII => ,,
E+dII
c7olume O>cResBuII
II c7ol2 >> NI9 /a+d/ LEm-tK8c7olume<
aRet => CBRetEt!8c7olume:,)$,<
II le+8aRet< >> )
c?a0@el => @e"?a0e8)1:)):)1:4)<
@e"?aK8)1:):Pad"8,Et!4ueta !+0al!daLLL,:4)<< 11
@e"Bee-84<
?lee-82)))<
@e"Resto"e8)1:)):)1:4):c?a0@el<
Retu"+ /F/
E+dII
c7olume => aRetE1F
ElseII c7ol2 * NI9
aRet => CBRetEt!8c7ol2:,)$,<
II le+8aRet< >> )
@e"?aK8)1:):Pad"8,Et!4ueta !+0al!daLLL,:4)<< 11
@e"Bee-84<
?lee-82)))<
@e"?aK8)1:)):Pad"8,Co+I!"me o 7olume,:4)<< 11
Retu"+ /F/
E+dII
c7ol2 =>aRetE1F
E+dII
II c7ol2*NI9 /a+d/ c7olume*c7ol2
@e"?aK8)1:):Pad"8,Cod!#o de 0olume d!Ie"e+teLLL,:4)<< 11
@e"Bee-84<
?lee-82)))<
@e"?aK8)1:)):Pad"8,,:4)<<
Retu"+ /F/
E+dIF
II Em-tK8c7olume<
c7olume => ?-ace81)<
Automao e coleta de dados 34
34
Retu"+ /t/
E+dII
12
/
/
/
21
Retu"+ /@/
?tat!c Fu+ct!o+ @7ldEmP8cEmP:c7olume<
II Em-tK8cEmP<
@e"?aK8)1:)):Pad"8,EmPala#em +ao -ode se" P"a+co/,:4)<< 11
@e"Bee-84<
?lee-82)))<
@e"?aK8)1:)):?-ace84)<<
Retu"+ /F/
E+dII
Retu"+ /@/
/
/
/
Automao e coleta de dados 3$
3$

Você também pode gostar