Upload
flavio-bispo-dos-santos
View
145
Download
2
Embed Size (px)
Citation preview
MANUAL RDMAKE - SIGA ADVANCED
GUIA DE REFERNCIA RPIDANDICE
4Funes para impresso de etiquetas padro ZPL,ALLEGRO e ELTRON
4MSCBPrinter
5MSCBClosePrinter
5MSCBBegin
5MSCBEnd
5MSCBSay
6MSCBSayBar
7*MSCBSayMemo
7MSCBBox
7MSCBLineH
8MSCBLineV
8MSCBLoadGrf
8MSCBGrafic
8MSCBChkStatus
9MSCBWrite
9Tipos de fontes para Zebra:
9Tipos de fontes para Allegro:
9Exemplo padro Zebra.
10Exemplo padro Allegro.
11Exemplo padro Eltron.
12COMANDOS PARA TELNET VT100.
12VTClear Screen
13VTRead
14VTSave Screen
14VTRestore Screen
15VTPause
15VTSetSize
15VTSet Key
16FUNCOES PARA TELNET VT100
16VTReadVar()
16VTSave()
16VTRestore()
17VTScroll()
17VTLastKey()
18VTSetKey()
18VTKeyBoard()
19VTRow()
19VTCol()
19VTInkey()
20VTMaxCol()
20VTMaxRow()
20VTBeep()
21VTReverso()
21VTClearBuffer()
21VTAlert()
22VTYesNo()
22VTAchoice()
24VTABrowse()
25VTDBBrowse()
26Exemplo aplicao Telnet VT100
28FUNCOES PARA MICROTERMINAL.
28TerCls()
28TerSay()
28TerInkey()
29TerCBuffer()
29TerGetRead()
29TerEsc()
30TerBeep()
30TerNumTer()
30TerSave()
31TerRestore()
31TerPBegin()
31TerPrint()
32TerPEnd()
32TerIsQuit()
32Exemplo aplicao Microterminal
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 OBRIGATRIOS, os parmetros que estiverem com (*), significa que so ignorados no padro Allegro e Eltron.MSCBPrinter
Tipo: Impresso
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, Z140XI, Z90XI e Z170ZI.
Allegro:
ALLEGRO, PRODIGY, DMX e DESTINY.
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 IP 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.
ExemploMSCBPRINTER("S500-8", "COM2:9600,e,7,2",NIL, 42)
MSCBPRINTER("S500-8", "LPT1",NIL, 42)
MSCBPRINTER("S600","COM1:9600,N,8,2",NIL,NIL,.T.,1024,"SERVER-AP","ENVCODEBASEPORT609")
MSCBPRINTER("S600", "LPT1",NIL, 42,.F.,NIL,NIL,NIL,10240)
MSCBClosePrinterTipo: Impresso
Finaliza a conexo com a impressora
Exemplo
MSCBClosePrinter()
MSCBBegin
Tipo: Impresso
Inicializa 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:
MSCBBEGIN(3,4,40)
MSCBEnd
Tipo: Impresso
Finaliza a montagem da imagem
Exemplo
MSCBEND()
MSCBSay
Tipo: Impresso
Imprime uma String
ParmetrosnXmm = Posio X em Milmetros
nYmm = Posio Y em Milmetros
cTexto = String a ser impressa
cRotao = String com o tipo de Rotao (N,R,I,B)
N-Normal
R-Cima p/baixo
I-Invertido
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]= Imprime em reverso quando tiver sobre um box preto
[lSerial] = Serializa o cdigo
[cIncr] = Incrementa quando for serial positivo ou negativo
*[lZerosL] = Coloca zeros a esquerda no numero serial
ExemploMSCBSAY(15,3,"MICROSIGA ","N","C","018,010",.t.)
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010",.t.,.t.,"3",.t.)
MSCBSayBar
Tipo: Impresso
Imprime 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 - Interleaved 2 of 5
3 - Code 39
8 - EAN 8
E - EAN 13
U - UPC A
9 - UPC E
C - CODE 128
Allegro:
D - Interleaved 2 of 5
A - Code 39
G - EAN 8
F - EAN 13
B - UPC A
C - UPC E
E - CODE 128
Eltron:
2 - Interleaved 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] = Imprime dgito de verificao
[lLinha] = Imprime a linha de cdigo
*[lLinBaixo]= Imprime a linha de cdigo acima das barras
[cSubSetIni]= 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
[cIncr] = Incrementa 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: ImpressoMonta 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,I,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: Impresso
Imprime um Box
ParmetrosnX1mm = 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)
MSCBLineHTipo: Impresso
Imprime uma linha horizontal
ParmetrosnX1mm = 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")
Exemplo
MSCBLineH(01,10,80,3,"B")
MSCBLineVTipo: Impresso
Imprime 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")
MSCBLoadGrfTipo: Impresso
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 TIF no software fornecido pelo fabricante da zebra.
Para o padro Allegro e Eltron, arquivo do grfico pode ser do tipo BMP, PCX e IMG. No precisa ser convertido.
Parmetros
cImagem = nome do arquivo que ser carregado
Exemplo
MSCBLOADGRF("LOGO.GRF")
MSCBGraficTipo: Impresso
Imprime grfico que est armazenado na memria da impressora
ParmetrosnXmm = 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]= Imprime em reverso quando tiver sobre um box preto
Exemplo
MSCBGRAFIC(3,3,"LOGO",.t.)
MSCBChkStatusTipo: Impresso
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.
Exemplo
MSCBCHKSTATUS(.f.) // desativa a verificao
MSCBWrite
Tipo: Impresso
Permite enviar para porta uma linha de programao nativa da Impressora.
Parmetros
cConteudo = Linha de programao nativa da impressora.
Exemplo
MSCBWRITE("^FO1,1^GB400,50,25^FS")
Tipos de fontes para Zebra:
As fontes A,B,C,D,E,F,G,H, so do tipo BITMAPPEDs, 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.
Tipos de fontes para Allegro:
As fontes 0,1,2,3,4,5,6,7,8, so do tipo BITMAPPEDs, 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 Zebra.
User Function ETI_ZEBRA()
Local nX
Local cPorta
cPorta := "COM2:9600,n,8,2"
MSCBPRINTER("S500-8",cPorta,,,.f.,,,,)
MSCBLOADGRF("SIGA.GRF")
For nx:=1 to 3
MSCBBEGIN(1,6)
MSCBBOX(02,01,76,35)
MSCBLineH(30,05,76,3)
MSCBLineH(02,13,76,3,"B")
MSCBLineH(02,20,76,3,"B")
MSCBLineV(30,01,13)
MSCBGRAFIC(2,3,"SIGA")
MSCBSAY(33,02,'PRODUTO',"N","0","025,035")
MSCBSAY(33,06,"CODIGO","N","A","015,008")
MSCBSAY(33,09, "000006", "N", "0", "032,035")
MSCBSAY(05,14,"DESCRICAO","N","A","015,008")
MSCBSAY(05,17,"IMPRESSORA ZEBRA S500-8","N", "0", "020,030")
MSCBSAYBAR(23,22,"00000006","N","C",8.36,.F.,.T.,.F.,,2,1,.F.,.F.,"1",.T.)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
Exemplo padro Allegro.
User Function ETI_ALLEGRO()
Local nX
Local cPorta
cPorta := "COM2:9600,n,8,2"
MSCBPRINTER("ALLEGRO",cPorta,,,.f.,,,,)
MSCBLOADGRF("SIGA.BMP")
For nx:=1 to 3
MSCBBEGIN(1,6)
MSCBBOX(02,01,76,34,1)
MSCBLineH(30,30,76,1)
MSCBLineH(02,23,76,1)
MSCBLineH(02,15,76,1)
MSCBLineV(30,23,34,1)
MSCBGRAFIC(2,26,"SIGA")
MSCBSAY(33,31,'PRODUTO',"N","2","01,01")
MSCBSAY(33,27,"CODIGO","N","2","01,01")
MSCBSAY(33,24, "000006", "N", "2", "01,01")
MSCBSAY(05,20,"DESCRICAO","N","2","01,01")
MSCBSAY(05,16,"IMPRESSORA ALLEGRO 2 BR","N", "2", "01,01")
MSCBSAYBAR(22,03,"00000006","N","E",8.36,.F.,.T.,.F.,,3,2,.F.,.F.,"1",.T.)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
Exemplo padro Eltron.
User Function ETI_ELTRON()
Local nX
Local cPorta
cPorta := "COM2:9600,n,8,2"
MSCBPRINTER("ELTRON",cPorta,,,.f.,,,,)
MSCBCHKStatus(.f.)
MSCBLOADGRF("SIGA.PCX")
For nx:=1 to 3
MSCBBEGIN(1,6)
MSCBGRAFIC(04,02,"SIGA")
MSCBBOX(05,01,76,30,2)
MSCBLineH(30,06,71,2)
MSCBLineH(05,12,71,2)
MSCBLineH(05,18,71,2)
MSCBLineV(30,1,1.3,90) //Monta Linha Vertical
MSCBSAY(33,02,'PRODUTO',"N","2","1,2")
MSCBSAY(33,07,"CODIGO", "N", "1", "1,1")
MSCBSAY(33,09,"000006", "N", "1", "1,2")
MSCBSAY(07,13,"DESCRICAO","N","1","1,1")
MSCBSAY(07,15,"IMPRESSORA ELTRON TLP2742","N", "1", "1,2")
MSCBSAYBAR(28,19,"00000006",'N','1',50,.T.,,,,2,2,,,,)
MSCBEND()
Next
MSCBCLOSEPRINTER()
Return
COMANDOS PARA TELNET VT100.
@...VTSay
Tipo: TELNET VT100Exibe dados em uma linha e coluna especificadas
Sintaxe @ ,
[VTSAY [PICTURE ]]
Parmetros e 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 exibe o resultado de uma expresso de qualquer tipo.
PICTURE define a mascara para a sada de exp.
Exemplo nQtd :=15.45
cDesc := "Teste descricao"
//
@ 1, 1 VTSAY nQtd PICTURE "@9999.99"
@ 2, 1 VTSAY Teste VTG100
@ 4, 1 VTSAY cDesc PICTURE "@!"
VTClear Screen
Tipo: TELNET VT100 Apaga a tela e coloca o cursor na posio inicial
SintaxeVTCLEAR [SCREEN]
@...VTGet
Tipo: TELNET VT100
Cria um novo objeto VTGET e o coloca em exibio na tela
Sintaxe @ ,
[VTSAY
[PICTURE ]]
VTGET
[PICTURE ]
[WHEN ]
[VALID ]
[PASSWORD]
[F3]
Parmetros e 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 nas coordenadas especificadas. Caso a PICTURE seja especificada.
VTGET define o nome da varivel de qualquer tipo de dados a ser editada. Ela pode ser caractere, data ou numrica .
PICTURE especifica uma mascara para exibio e as regras para edio do VTGET.
WHEN especifica uma expresso que deve ser satisfeita antes do cursor entrar na regio de edio de VTGET. Se avaliada como verdadeira (.T.), permitido ao cursor entrar; de outra forma, o VTGET corrente saltado e o cursor move-se para o prximo VTGET.
VALID especifica uma expresso que deve ser satisfeita antes que o cursor possa deixar a regio de edio do VTGET corrente. O VALID avaliado sempre que o usurio tenta deixar a regio de edio do VTGET, a menos que a tecla Esc seja pressionada . Se retorna falso (.F.), o controle retorna ao VTGET e o usurio no pode deixa-lo at que retorne verdadeiro (.T.) ou o usurio aperte Esc. Um VALID 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 de qualquer tipo de dado. Quando um objeto VTGET criado, o nome e valor corrente de so guardados no objeto VTGET. O valor de 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;
VALID nNumber > 0
VTRead
Tipo: TELNET VT100 Ativa edio em tela usando objetos GET
Sintaxe VTREAD
Descrio 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 VALID 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 VALID !EMPTY(cVar1)
@ 2, 1 VTSAY "Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 VTSAY "Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTSave Screen
Tipo: TELNET VT100 Grava a tela corrente numa varivel
Sintaxe VTSAVE SCREEN TO
Parmetros TO 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 VALID !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore Screen From aTela
VTRestore Screen
Tipo: TELNET VT100Exibe uma tela guardada
Sintaxe VTRESTORE SCREEN [FROM ]
Parmetros FROM 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 VALID !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore Screen From aTela
VTPause
Tipo: TELNET VT100 Suspende a execuo de um programa at que seja pressionada a tecla ENTER
Sintaxe #include apvt100.ch
VTPAUSE
@...VTPause
Tipo: TELNET VT100Exibe dados em uma linha e coluna especificadas e para a execuo de um programa at que seja pressionada a tecla ENTER
Sintaxe @ ,
[VTPAUSE [PICTURE ]]
Parmetros e 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 exibe o resultado de uma expresso de qualquer tipo.
PICTURE define a mascara para a sada de exp.
Exemplo #include apvt100.ch
@ 7, 1 VTPause Tecle ENTER p/ Continuar
VTSetSize
Tipo: TELNET VT100 Seta o limite da rea de trabalho.
Sintaxe VTSETSIZE ,
Parmetros e so as coordenadas mximas de linha e coluna.
Exemplo #include apvt100.ch
VTSetSize 8,20
VTSet Key
Tipo: TELNET VT100 Atribui a chamada de uma rotina a uma tecla
Sintaxe VTSET KEY TO []
Parmetros o valor VTINKEY() da tecla a qual se atribui a rotina.
TO especifica o nome da rotina que executada quando se aperta uma tecla. Se 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
FUNCTION Teste()
@ 2,1 VTSay TESTE
RETURN NIL
FUNCOES PARA TELNET VT100
VTReadVar()
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.
VTSave()
Tipo: TELNET VT100Grava uma regio de tela para posterior exibio
Sintaxe VTSAVE (, , , ) --> cTela
Parmetros , , , e definem as
coordenadas da regio de tela a ser gravada. Caso ou
seja maior do que VTMAXROW() ou VTMAXCOL(), a tela cortada.
RetornaVTSAVE () 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 VALID !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)
VTRestore()
Tipo: TELNET VT100Exibe uma regio de tela gravada em uma localizao especificada
Sintaxe VTRESTORE(, ,
, , ) --> NIL
Parmetros , , , e definem as
coordenadas da informao de tela contida em .
uma varivel contedo o contedo da tela gravada.
Retorna VTRESTORE () sempre retorna NIL.
Exemplo #include apvt100.ch
aTela := VTSave(0,0,4,10)
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 VTSAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)
VTScroll()
Tipo: TELNET VT100 Rola uma regio de tela para cima ou para baixo
Sintaxe VTSCROLL(, ,
, , ) --> NIL
Parmetros , , , e definem as coordenadas da regiao a ser rolada. Valores de linha e coluna podem variar entre 0, 0 e VTMAXROW(), VTMAXCOL().
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 NIL.
ExemploVTSCROLL(0,0, VTMAXROW(),VTMAXCOL,1)
VTLastKey()
Tipo: TELNET VT100 Retorna o valor VTINKEY() da ltima tecla extrada do buffer de teclado
Sintaxe VTLASTKEY() --> nCodInkey
RetornaVTLASTKEY() retorna um nmero de -39 a 386 que identifica o valor VTINKEY() da ltima tecla extrada do buffer de teclado.
DescrioVTLASTKEY() uma funo de tratamento de teclado que informa o valor VTINKEY() da ltima tecla capturada do buffer de teclado pela funo VTINKEY(), ou por um estado de espera como VTREAD, VTPAUSE, VTACHOICE(),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 VALID !EMPTY(cVar1)
@ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 VTSAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
VTRestore(0,0,4,10,aTela)
If VTLastKey() == 27
Return .f.
Endif
VTSetKey()
Tipo: TELNET VT100 Atribui um bloco de ao a uma tecla
Sintaxe VTSETKEY(, []) --> bAcaoCorrente
Parmetros o valor INKEY() da tecla a ser associada ou questionada.
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 NIL 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
FUNCTION Teste()
@ 2,1 VTSay TESTE
RETURN NIL
VTKeyBoard()
Tipo: TELNET VT100 Coloca uma cadeia de caracteres (string) no buffer de teclado
Sintaxe VTKEYBOARD()
Parmetros o conjunto de caracteres a ser colocado no buffer de teclado.
Exemplo #include apvt100.ch
bKeyAnt := VTSetKey(65,{|| teste()})
CCodigo := space(6)
@ 1, 1 VTGET cCodigo
VTREAD
VTSetKey(65,bKeyAnt)
RETURN
FUNCTION Teste()
@ 2,1 VTSay TESTE
VTKeyBoard(chr(27))
RETURN NIL
VTRow()
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
VTCol()
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: " + TRIM(Cliente)
@ VTROW(), VTCOL() + 1 VTSAY Status
VTInkey()
Tipo: TELNET VT100 Extrai um caractere do buffer de teclado
Sintaxe VTINKEY([]) --> nCodInkey
Parmetros especifica a quantidade de segundos que VTINKEY() 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
seja omitido, VTINKEY() no espera por uma tecla.
Retorna VTINKEY() 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, VTINKEY() retorna zero.
ExemploWhile .t.
IF VtInkey(1) == 27 // correspondente a tela ESC
exit
EndIf
End
VTMaxCol()
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 *
VTMaxRow()
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 mxima 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:
FUNCTION TamTela
RETURN { VTMAXROW(), VTMAXCOL() }
VTBeep()
Tipo: TELNET VT100 Emite um beep
Sintaxe VTBEEP([]) --> NIL
Parmetros especifica a quantidade de beep que ser emitido, Caso seja omitido, VTBEEP() emitira um beep.
Retorna VTBEEP() retorna NIL
Exemplo VTBEEP(3)
VTReverso()
Tipo: TELNET VT100Ativa ou desativa o modo reverso da tela.
Sintaxe VTREVERSO([]) --> lReverso
Parmetros Se verdadeiro ativa, falso desativa o modo de tela. Caso 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
VTClearBuffer()
Tipo: TELNET VT100Limpa o buffer de teclado
Sintaxe VTCLEARBUFFER() --> NIL
Retorna VTCLEARBUFFER() retorna NIL
Exemplo VTCLEARBUFFER()
VTAlert()
Tipo: TELNET VT100Mostra uma messagem na tela
Sintaxe VTALERT(,[],[],[]) (nTecla
Parmetros Mensagem a ser exibida.
Titulo da mensagem
Se verdadeiro centraliza a mensagem conforme o VTSetSize.
> 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 VTALERT () retorna o cdigo da tecla digitada.
Exemplo VTAlert(Produto no cadastrado,Aviso,.t.,4000)
VTYesNo()
Tipo: TELNET VT100Mostra uma messagem a espera de uma confirmao na tela.
Sintaxe VTYESNO (,[],[]) (lConfrime
Parmetros Mensagem a ser exibida.
Titulo da mensagem
Se verdadeiro centraliza a mensagem conforme o VTSetSize.
Retorna VTYESNO () retorna o verdadeiro caso tenha confirmado.
Exemplo IF ! VTYesNo(Confirma a alteracao,'Atencao ',.T.)
Return .F.
ENDIF
VTAchoice()
Tipo: TELNET VT100 Executa um menu pop-up
Sintaxe VTACHOICE(, , , ,
, [],
[],[], [lNaoBranco] , [],
[],[]) --> nPosicao
Parmetros , e , 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().
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.
um vetor paralelo de valores lgicos, diretamente relacionados a 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.
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 VTACHOICE() afetado pela presena deste argumento. Consulte o texto abaixo para maiores informaes.
a posio ocupada no vetor de 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.
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 VTACHOICE definida em e .
Contedo tem que ser NIL, parmetro reservado para implementao futura.
o nmero da linha da janela na qual o item de menu inicial aparecer.
Retorna VTACHOICE() retorna a posio numrica ocupada pelo item de menu selecionado no vetor de . Se o processo de seleo for interrompido, VTACHOICE() retorna zero.
Funo de usurio: Da mesma forma que as demais funes de interface com o usurio, VTACHOICE() aceita uma funo de usurio. A funo de usurio especificada quando voc deseja aninhar invocaes da funo VTACHOICE() para criar menus hierrquicos ou redefinir teclas.
Modos de VTACHOICE()
0-Inativo
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 VTACHOICE(), ela deve retornar um valor que solicite ao VTACHOICE() executar uma operao entre o seguinte conjunto de aes:
Valores de Retorno da Funo de Controle de VTACHOICE()
0-Aborta seleo
1-Executa seleo
2-Continua VTACHOICE()
3-Vai para o prximo item cuja primeira letra for a tecla pressionada
ExemploacMenuItens := {Um,Dois, "-----", Tres}
alSelectableItens := {.T., .T., .F., .T.}
nPosition := VTACHOICE(0, 0, 7, 19, acMenuItens, alSelectableItens,TESTECTRL )
Function testectrl(modo,nElem,nElemW)
If modo == 1
VtAlert('Top')
Elseif Modo == 2
VtAlert('Bottom')
Else
If VTLastkey() == 27
VtAlert('sair')
VTBeep(3)
return 0
elseIf VTLastkey() == 13
VtAlert('ok')
VtBeep(1)
return 1
Endif
EndIf
Return 2
VTABrowse()
Tipo: TELNET VT100Monta um browse com referencia a um array.
Sintaxe VTABROWSE(, , , ,
, [], [],
[],[]) --> nPosicao
Parmetros , e , 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().
, um vetor que contem os ttulos das colunas
, um vetor que contem os dados a serem mostrados
, um vetor que contem o tamanho de cada coluna
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.
a posio ocupada no vetor de < aItens > 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 . Se o processo de seleo for interrompido, VTABROWSE() retorna zero.
Funo de usurio: Utilizada da mesma forma que VTACHOICE.
Modos de VTABROWSE()
0-Inativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-Itens 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#INCLUDE APVT100.CH
VTClear
acab :={"Codigo","Cod ","Descricao ","UM"}
aSize := {10,4,20,10}
nPos := 12
aItens :={{"1010 ",10, "DESCRICAO1","UN "},;
{"2010 ",20,"DESCRICAO2","CX "},;
{"2020 ",30,"DESCRICAO3","CX "},;
{"2010 ",40,"DESCRICAO4","CX "},;
{"2020 ",50,"DESCRICAO5","CX "},;
{"3010 ",60,"DESCRICAO6","CX "},;
{"3020 ",70,"DESCRICAO7","CX "},;
{"3030 ",80,"DESCRICAO7","CX "},;
{"3040 ",90,"DESCRICAO7","CX "},;
{"2010 ",40,"DESCRICAO4","CX "},;
{"2020 ",50,"DESCRICAO5","CX "},;
{"3010 ",60,"DESCRICAO6","CX "},;
{"3020 ",70,"DESCRICAO7","CX "},;
{"3030 ",80,"DESCRICAO7","CX "},;
{"3050 ",100,"DESCRICAO7","CX "}}
npos := VTaBrowse(0,0,7,15,aCab,aItens,aSize,'testectrl',nPos)
.
.
.
Function testectrl(modo,nElem,nElemW)
If modo == 1
VtAlert('Top')
Elseif Modo == 2
VtAlert('Bottom')
Else
If VTLastkey() == 27
VtAlert('sair')
VTBeep(3)
return 0
elseIf VTLastkey() == 13
VtAlert('ok')
VtBeep(1)
return 1
Endif
EndIf
Return 2
VTDBBrowse()
Tipo: TELNET VT100Monta um browse com referencia a uma tabela
Sintaxe VTDBBROWSE(, , , ,, , [], [], [],[],[]) --> nRecno
Parmetros , e , 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().
, uma string com alias da tabela
, um vetor que contem os ttulos das colunas
, um vetor que contem os campos do alias
, um vetor que contem o tamanho de cada coluna
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.
string com a condio de validao de top
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 VTACHOICE e VTaBROWSE.
Modos de VTDBBROWSE ()
0-Inativo
1-Tentativa de passar incio da lista
2-Tentativa de passar final da lista
3-Normal
4-Itens 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_PICM"}
aSize := {16,20,10,15}
aHeader := {'COD','DESCRICAO ','UM',"% ICM"}
sb1->(dbseek(xfilial()+'00000000000001'))
nRecno := VTDBBrowse(0,0,7,15,"SB1",aHeader,aFields,aSize,'testectrl',;
"xfilial('SB1')+'00000000000001'",;
"xfilial('SB1')+'00000000000002'")
vtclear()
Exemplo aplicao Telnet VT100
#include "protheus.ch"
#include "apvt100.ch"
/*
Programa exemplo para Radio Freqncia
*/
Function AICDV035(xLocal,xLocaliz)
Local cEtiq := Space(TamSx3('CB0_CODET2')[1])
Local lWhen := .t.
Private cLocal
Private cLocaliz
Private lLocaliz := (GetMV("MV_LOCALIZ") == "S")
Private nLin:= 0
IF xLocal # ' ' .and. xLocal # NIL
cLocal := xLocal
cLocaliz := xLocaliz
lWhen := .f.
EndIf
While .t.
nLin:= 0
If lWhen
cLocal := Space(2)
cLocaliz := Space(20)
EndIf
VTClear()
@ 0,0 VTSay "Inventario"
@ 1,0 VTSay "Almoxarifado:"
@ 2,0 VTGet cLocal pict '@!' VALID aiv035Loc() when lwhen
If lLocaliz
@ 3,0 VTSay "Localizacao:"
@ 4,0 VTGet cLocaliz VALID aiv035Locz() when lwhen
nLin := 5
Else
nLin := 3
EndIf
VTRead
If VTLastKey() == 27 // CASO O USUARIO PRECIONE ESC OU CLEAR
Exit
Endif
If ! aiv035CriaCBA() .OR. ! aiv035CBB()
If ! lWhen
exit
Else
Loop
EndIf
EndIf
@ nLin++,0 VTSay "Etiqueta "
@ nLin++,0 VTGet cEtiq VALID aiv035CBC(cEtiq)
VTRead
IF VTLastKey() == 27
aiv035Fim()
EndIf
If ! lWhen
exit
EndIf
EndDo
Return
//FUNCAO DE VALIDACAO DA LOCALIZACAO
Static Function aiv035Loc()
If Empty(cLocal)
VTBeep(3)//EMITE UM BEEP NO R.F.
VTAlert('Almoxarifado nao pode ser em branco!',"Aviso",.T.,2000) //MOSTRA A MENSAGEM
VTKeyBoard(chr(20)) // LIMPA O GET ATIVO CTRL -T
Return .F.
Endif
Return .T.
.
.
.
.
FUNCOES PARA MICROTERMINAL.
TerCls()
Tipo: MicroterminalApaga todos os caracteres existentes na tela no microterminal preenchendo a tela com espaos em branco.
Sintaxe
TerCls()
Retorna
NIL
Exemplo
TerCls()
TerSay()
Tipo: MicroterminalEscreve no display do microterminal a string especificada pelo parmetro na linha e coluna .
Sintaxe
TerSay(nLin,nCol,cMsg)
ParmetrosnLin = Linha onde se deseja colocar a mensagem
nCol = Coluna onde se deseja colocar a mensagem
cMsg = Mensagem que se deseja colocar na tela
Retorna
NIL
Exemplo
TerSay(01,00,"Pressione para continuar.")
TerInkey()
Tipo: MicroterminalEspecifica a quantidade de segundos que TerInkey() 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
TerInkey([nSegundos])
ParmetrosnSegundos = Numero de segundos a aguardar
RetornaCodigo da Tecla pressionada, se no foi pressionado nada o valor retornado e' ""
Exemplo
While !TerEsc()
cTecla := TerInkey(0)
TerSay(01,00,"Tecla Pressionada "+cTecla)
EndDo
TerCBuffer()
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.")
TerInkey(0)
TerGetRead()
Tipo: MicroterminalExecuta 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
NIL
Exemplo
lDigNome := .T.
cNome := Space(10)
cIdade := Space(02)
TerCls()
TerSay(00,00,"Nome:")
TerGetRead(00,06,@cNome,"XXXXXXXXXX",{||!Empty(cNome)},{||lDigNome})
TerGetRead(00,00,cIdade,"99",{||Val(cIdade)>0})
Observaes
A varivel da entrada de dados deve ser do tipo caracter.
TerEsc()
Tipo: Microterminal Verifica se a ultima tecla pressionada no microterminal foi a DEL (consideramos como equivalente a no teclado normal).
Sintaxe
TerEsc()
Retorna
.T. se a ultima tecla pressionada foi ou .F. se no foi
ExemploTerCls()
While .T.
cNome := Space(10)
TerSay(00,00,"Nome:")
TerGetRead(01,07,@cNome,"XXXXXXXXXX")
If TerEsc()
Exit
EndIf
EndDo
TerCls()
TerSay(01,00,"Finalizando...")
TerBeep()
Tipo: MicroterminalEmite 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
NIL
Exemplo TerBeep(3) // executa 3 sinais sonoros
TerBeep() // executa apenas 1 sinal sonoro
TerNumTer()
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))
TerSave()
Tipo: MicroterminalGrava 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
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)
TerRestore()
Tipo: Microterminal Restaura a regio de tela do microterminal gravada pela funo TerSave.
Sintaxe
TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela)
ParmetrosnTopo - 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
NIL
Exemplo TerCls()
TerSay(00,00,"Tela a ser salva.")
cTela := TerSave(00,00,01,40)
TerCls()
TerRestore(00,00,01,40,cTela)
TerPBegin()
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 -
Informa qual a sada utilizada para impresso, 'S' para utilizar a sada SERIAL ou 'P' para se utilizar a sada PARALELA.
Retorna
NIL
Exemplo
TerPBegin(,"S")
TerPrint("Testando a impresso na sada SERIAL")
TerPEnd()
TerPBegin(,"P")
TerPrint("Testando a impresso na sada PARALELA")
TerPEnd()
TerPrint()
Tipo: MicroterminalEnvia 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 - Informe .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
NIL
ExemploTerPBegin(,"P")
TerPrint("Imprimindo uma linha e saltando para proxima linha")
TerPrint("Imprimindo a linha e nao saltando.",.F.) // no salta a linha
TerPrint("Continuando da linha anterior.")
TerPEnd()
TerPEnd()
Tipo: MicroterminalFinaliza impresso iniciada pela funo TerPBegin.
Sintaxe
TerPEnd()
Retorna
NIL
ExemploTerPBegin(,"S")
TerPrint("Testando a impresso na sada SERIAL")
TerPEnd()
TerIsQuit()
Tipo: MicroterminalFuno 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
TerIsQuit()
Retorna
.F.
ExemploWhile .T.
TerCls()
TerSay(00,00,"Inicando Venda...")
.
.
.
.
.
TerSay(00,00,"Venda Finalizada...")
TerIsQuit() // caso o monitor esteja finalizando a aplicao somente
//neste ponto a finalizao ser efetuada, garantindo
//assim que a venda seja concluda.
EndDo
Exemplo aplicao Microterminal
#INCLUDE "PROTHEUS.CH"
/*/
Exemplo parte de programao para microterminal
/*/
Function AICDT040(cImpCB)
Local cVolume
Local cEmb
Local cDisp
Local cProduto
Private cPedido
Private cCodEmb
Private cImp := cImpCB
Private nTamCB0 := 8
cImp := PadR(AllTrim(cImp),6)
If !CB5->(DbSeek(xFilial()+cImp))
ConOut("Codigo da impressora do microterminal "+StrZero(TerNumTer(),2)+;
" nao existe ("+cImp+")") //
Return
EndIf
While .t.
TerIsQuit()
cVolume := Space(08)
cEmb := Space(03)
cCodEmb := Space(08)
cDisp := Space(03)
cProduto := Space(08)
TerCls()
TerCBuffer()
TerSay(00,00,"Volume:")
TerSay(01,00,"Digite para novo volume.")
TerGetRead(00,07,@cVolume,"XXXXXXXX",{||TVldVol(@cVolume,@cEmb)})
If TerEsc()
Loop
EndIf
TerCls()
TerSay(00,00,"Volume:")
TerSay(00,19,"Emb:")
TerSay(00,07,cVolume)
TerGetRead(00,23,@cEmb,"XXX",{|| TVldEmb(@cEmb,cVolume)},{||Empty(cEmb)})
If TerEsc()
Loop
EndIf
TerSay(00,23,cEmb)
TerSay(01,00,"Operador:")
TerGetRead(01,09,@cCodEmb,"XXXXXXXX",{|| TVldCEmb()})
If TerEsc()
Loop
EndIf
TerCls()
TerSay(00,00,"Volume:"+cVolume+" Emb:"+cEmb+" Oper:"+cCodEmb) //######
TerSay(01,00,"Produto:") //
TerGetRead(01,08,@cProduto,Replicate("X",08),{||TVldProd(@cProduto,@cDisp,@cVolume)})
TerCls()
TerCBuffer()
TerIsQuit()
EndDo
Return .T.
Static Function TVldVol(cVolume,cEmb,cVol2)
Local aRet:={}
Local cSavTel
Local cResBuff
Sleep(100) // pausa para o buffer ser completado !!!
cResBuff := TerCBuffer()
If cResBuff == Chr(13)
cResBuff := ""
EndIf
cVolume +=cResBuff
If cVol2 == NIL .and. !Empty(cVolume)
aRet := CBRetEti(cVolume,"05")
If len(aRet) == 0
cSavTel := TerSave(01,00,01,40)
TerSay(01,0,Padr("Etiqueta invalida!!!",40)) //
TerBeep(4)
Sleep(2000)
TerRestore(01,00,01,40,cSavTel)
Return .F.
EndIf
cVolume := aRet[1]
ElseIf cVol2 # NIL
aRet := CBRetEti(cVol2,"05")
If len(aRet) == 0
TerSay(01,0,Padr("Etiqueta invalida!!!",40)) //
TerBeep(4)
Sleep(2000)
TerSay(01,00,Padr("Confirme o Volume",40)) //
Return .F.
EndIf
cVol2 :=aRet[1]
EndIf
If cVol2#NIL .and. cVolume#cVol2
TerSay(01,0,Padr("Codigo de volume diferente!!!",40)) //
TerBeep(4)
Sleep(2000)
TerSay(01,00,Padr("",40))
Return .F.
EndIF
If Empty(cVolume)
cVolume := Space(10)
Return .t.
EndIf
/*
.
.
.
*/
Return .T.
Static Function TVldEmb(cEmb,cVolume)
If Empty(cEmb)
TerSay(01,00,Padr("Embalagem nao pode ser branco.",40)) //
TerBeep(4)
Sleep(2000)
TerSay(01,00,Space(40))
Return .F.
EndIf
Return .T.
.
.
.
Microsiga
Microsiga
PAGE Automao e coleta de dados 2323