Comandos Advpl - Acd

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.

[email protected]

12VTClear Screen

[email protected]

13VTRead

14VTSave Screen

14VTRestore Screen

15VTPause

[email protected]

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