Sei sulla pagina 1di 20

Comandos e Funções Advpl para Microterminal

Comandos e Funções Advpl para Microterminal, é um post com o objetivo de


apresentar como programar para microterminal com comutadora, pois os
microterminais padrão Ethernet, são programáveis com tecnologia VT100, se este for
o seu caso, leia o post Programação Advpl coletores de rádio frequência padrão
VT100.

Mas o que é um Microterminal?

Os Microterminais são utilizados em todo e qualquer ponto que requeira entrada de


dados ou consulta, tanto via digitação quanto por meio de leitura ótica ou magnética.
Os Microterminais RS485 são aplicados principalmente quando se necessita de mais
de um ponto de entrada de dados, pode-se conectar até 32 microterminais em uma só
rede. Sua conexão é feita através de barramento com par trançado (2vias) de até 1.000
metros. A alimentação de cada microterminal é feita por uma fonte de alimentação,
diretamente na
corrente elétrica de 110 ou 220 V ac. Cada fonte é ligada a uma Caixa de Conexão
(uma para cada terminal), responsável pela alimentação e pela comunicação, via par
trançado, com o ponto seguinte. Próximo ao computador de processamento liga-se a
Comutadora que se comunica com a rede através de interface ethernet ou paralela.

Comandos para Microterminal


TerCls
Tipo: Microterminal
Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela com
espaços em branco.
Sintaxe:
TerCls
Retorna:
NIL
Exemplo:
TerCls

@ … TERSAY
Tipo: Microterminal
Escreve no display do microterminal a string especificada pelo parâmetro <cMsg> na
linha <nLin> e coluna <nCol>.
Sintaxe:
@ <nLin>, <nCol> TERSAY <cMsg>
Parâmetros:
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:
NIL
Exemplo:
@ 01,00 TERSAY “Pressione <ENTER> para continuar.”

@ … TerGetRead
Tipo: Microterminal
Executa uma entrada de dados no microterminal.
Sintaxe:
@ <nLin>, <nColl> TerGetRead <uVar> PICTURE <cPict> VALID
<valid> WHEN <when>
Parâmetros:
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 disponíveis são:
“X” – Para entrada de caracteres numéricos(0-9) e letras (A-Z).
“9” – Para entrada de caracteres numéricos(0-9).
“A” – Para entrada de caracteres letra(A-Z).
“*” – Para entrada de caracteres numéricos(0-9) e letras (A-Z) mas exibindo “*” na
tela.
“.” – Exibe ponto decimal na tela.
“/” – Exibe a barra (“/”) na tela.
“@”- Se informado no final do picture forçará ao operador pressionar enter para
sair do get, mesmo que o campo já tenha sido preenchido.
Valid = Validação da entrada de dados.
When = Condição para se executar a entrada de dados.

Atenção: Quando utilizar o coletor de código de barras, o tamanho do get deve ser
igual ou maior que o tamanho do código de barras.
Retorna:
NIL
Exemplo:
lDigNome := .T.
cNome := Space(10)
cIdade := Space(02)
TerCls
@ 00,00 TerSay “Nome:”
@ 00,06 TerGetRead
cNome PICTURE “XXXXXXXXXX” VALID !Empty(cNome) WHEN lDigNome
@ 00,00 TerGetRead cIdade PICTURE “99” VALID Val(cIdade)>0
Observações:
A variável da entrada de dados podem ser do tipo data, caracter ou numérico.

TerCBuffer
Tipo: Microterminal
Libera o buffer de teclado do microterminal, esse comando é útil em rotinas de
interface com o usuário de forma a garantir que as teclas a serem processadas do
buffer do teclado sao apropriadas a atividade corrente e não pendentes de uma
atividade anterior.
Sintaxe:
TerCBuffer
Retorna:
Caracteres que estavam pendentes no buffer no teclado do microterminal.
Exemplo:
TerCBuffer
@ 01,00 TERSAY “Pressione <ENTER> para continuar.”
TerInkey(0)

TerEsc
Tipo: Microterminal
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 não foi
Exemplo:
TerCls
While .T.
cNome := Space(10)
@ 00,00 TerSay “Nome:”
@ 00,07 TerGetRead cNome PICTURE “XXXXXXXXXX”
If TerEsc
Exit
EndIf
EndDo
TerCls
@ 01,00 TerSay “Finalizando…”

TerBeep
Tipo: Microterminal
Emite um sinal sonoro pelo ‘buzzer’ do Microterminal, caso o microterminal não
possua este dispositivo instalado nada acontece.
Sintaxe:
TerBeep <nVezes>
Parâmetros:
nVezes – Numero de sinais sonoros a emitir.
Retorna:
NIL
Exemplo:
TerBeep 3 // executa 3 sinais sonoros
TerBeep // executa apenas 1 sinal sonoro

TerIsQuit
Tipo: Microterminal
Função utilizada em pontos do programa para se verificar se o Monitor esta tentando
finalizar a aplicação do microterminal, deve ser utilizada em lugares do programa
em que o fechamento da aplicação cause transtornos, como por exemplo, apos a
conclusão de uma venda.
Sintaxe:
TerIsQuit
Retorna:
.F.
Exemplo:
While .T.
TerCls
@ 00,00 TerSay “Inicando Venda…”
.
.
.
.
.
@ 00,00 TerSay “Venda Finalizada…”
TerIsQuit // caso o monitor esteja finalizando a aplicação somente
//neste ponto a finalização será efetuada, garantindo
//assim que a venda seja concluída.
EndDo

Funções para Microterminal


TerCls()
Tipo: Microterminal
Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela com
espaços em branco.
Sintaxe:
TerCls()
Retorna:
NIL
Exemplo:
TerCls()

TerSay()
Tipo: Microterminal
Escreve no display do microterminal a string especificada pelo parâmetro <cMsg> na
linha <nLin> e coluna <nCol>.
Sintaxe:
TerSay(nLin,nCol,cMsg)
Parâmetros:
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:
NIL
Exemplo:
TerSay(01,00,”Pressione <ENTER> para continuar.”)

TerInkey()
Tipo: Microterminal
Especifica 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])
Parâmetros:
nSegundos = Numero de segundos a aguardar
Retorna:
Código da Tecla pressionada, se não foi pressionado nada o valor retornado é “”
Exemplo:
While !TerEsc()
cTecla := TerInkey(0)
@ 01,00 TerSay “Tecla Pressionada “+cTecla
EndDo

TerKeyBoard()
Tipo: Microterminal
Função responsável por alimintar tecla no buffer do teclado
Sintaxe:
TerKeyBoard([cBuffer])
Parâmetros:
cBuffer = Tecla a ser guardada no buffer
Retorna:
Nil
Exemplo:
cTela := TerSave()
TerCls()
If nSleep#NIL
TerKeyboard(chr(13))
EndIf
If nSleep#NIL
TerInkey(nSleep/1000)
EndIf
TerLastKey()
Tipo: Microterminal
Função responsável retornar o valor da última tecla pressionada
Sintaxe:
TerLastkey()
Retorna:
Numero – número da tecla
Exemplo:
If TerLastKey() ==27
Exit
EndIf

TerCBuffer()
Tipo: Microterminal
Libera o buffer de teclado do microterminal, esse comando é útil em rotinas de
interface com o usuário de forma a garantir que as teclas a serem processadas do
buffer do teclado são apropriadas a atividade corrente e não 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)

TerEsc()
Tipo: Microterminal
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 não foi
Exemplo:
TerCls()
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: Microterminal
Emite um sinal sonoro pelo ‘buzzer’ do Microterminal, caso o microterminal não
possua este dispositivo instalado nada acontece.
Sintaxe:
TerBeep([nVezes])
Parâmetros:
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()
@ 00,00 TerSay “Terminal : “+StrZero(nTerminal)

TerSave()
Tipo: Microterminal
Grava uma região da tela do microterminal para posterior exibição.
Sintaxe:
TerSave([nTopo],[nEsquerda],[nBase],[nDireita])
Parâmetros:
nTopo – Linha inicial da região de tela a ser gravada.
nEsquerda – Coluna inicial da região de tela a ser gravada
nBase – Linha final da região de tela a ser gravada.
nDireita – Coluna final da região de tela a ser gravada.
Retorna:
Região de tela especificada na forma de cadeia de caracteres.
Exemplo:
TerCls
@ 00,00 TerSay “Tela a ser salva.”
cTela := TerSave(00,00,01,40)
TerCls
TerRestore(00,00,01,40,cTela)

TerRestore()
Tipo: Microterminal
Restaura a região de tela do microterminal gravada pela função TerSave.
Sintaxe:
TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela)
Parâmetros:
nTopo = Linha inicial da região de tela a ser restaurada.
nEsquerda = Coluna inicial da região de tela a ser restaurada.
nBase = Linha final da região de tela a ser restaurada.
nDireita = Coluna final da região de tela a ser restaurada.
cTela = É uma cadeia de caracteres que contem a região de tela gravada.
Retorna:
NIL
Exemplo:
TerCls
@ 00,00 TerSay “Tela a ser salva.”
cTela := TerSave(00,00,01,40)
TerCls
TerRestore(00,00,01,40,cTela)

TerPBegin()
Tipo: Microterminal
Executa função para inicio de impressão na porta paralela ou serial
do microterminal.
Sintaxe:
TerPBegin([nTerm],cSerPar)
Parâmetros:
nTerm – Numero do microterminal a iniciar a impressão, se nada for especificado
será considerado o numero definido no Monitor de Microterminais.
cSerPar – Informa qual a saída utilizada para impressão, ‘S’ para utilizar a saída
SERIAL ou ‘P’ para se utilizar a saída PARALELA.
Retorna:
NIL
Exemplo:
TerPBegin(,”S”)
TerPrint(“Testando a impressão na saída SERIAL”)
TerPEnd()
TerPBegin(,”P”)
TerPrint(“Testando a impressão na saída PARALELA”)
TerPEnd()

TerPrint()
Tipo: Microterminal
Envia a string especificada para a saída de impressão definida pela função TerPBegin.
Sintaxe:
TerPrint( cString, [lSalta] )
Parâmetros:
cString – Cadeia de caracteres a enviar para a saída de impressão.
lSalta – Informe .F. para não saltar a linha na impressora após o envio de cString ou
.T. para que se salte uma linha apos o envio de cString, se não especificado .T. e’
assumido.
Retorna:
NIL
Exemplo:
TerPBegin(,”P”)
TerPrint(“Imprimindo uma linha e saltando para proxima linha”)
TerPrint(“Imprimindo a linha e nao saltando.”,.F.) // não salta a linha
TerPrint(“Continuando da linha anterior.”)
TerPEnd()

TerPEnd()
Tipo: Microterminal
Finaliza impressão iniciada pela função TerPBegin.
Sintaxe:
TerPEnd()
Retorna:
NIL
Exemplo:
TerPBegin(,”S”)
TerPrint(“Testando a impressão na saída SERIAL”)
TerPEnd()

TerIsQuit()
Tipo: Microterminal
Função utilizada em pontos do programa para se verificar se o Monitor esta tentando
finalizar a aplicação do microterminal, deve ser utilizada em lugares do programa
em que o fechamento da aplicação cause transtornos, como por exemplo, apos a
conclusão de uma venda.
Sintaxe:
TerIsQuit()
Retorna:
.F.
Exemplo:
While .T.
TerCls()
TerSay(00,00,”Inicando Venda…”)
.
.
TerSay(00,00,”Venda Finalizada…”)
TerIsQuit() // caso o monitor esteja finalizando a aplicação somente
//neste ponto a finalização será efetuada, garantindo
//assim que a venda seja concluída.
EndDo

TerAlert()
Tipo: Microterminal
Função utilizada para enviar mensagem para o display do microterminal ajustando-o
conforme o modelo.
Sintaxe:
TerAlert(<cMsg>,<cTitulo>,<nTempo>)
Parâmetros:
cMsg = Mensagem a ser enviada
cTituo = Titulo da Mensagem
nTempo= Tempo em milesegundos que a mensagem permanecerá no display do
terminal.
Retorna:
.F.
Exemplo:
TerAlert(“Finalizando Processo”,”Atencao”,4000)

TerProtocolo()
Tipo: Microterminal
Função que informa ou retorna o protocolo corrente. O protocolo pode ser
“GRADUAL” ou “VT100”, onde a função só poderá retornar o protocolo se o mesmo
já foi informado, caso contrário retornará o protocolo padrão que é “GRADUAL”.
Sintaxe:
TerProtocolo(<cProtocolo>)
Parâmetros:
cProtocolo = Protocolo utilizado para o microterminal (“GRADUAL” ou “VT100”).
Retorna:
.F. se o protocolo informado não exitir. Caso contrário retornará o protocolo
corrente.
Exemplo:
TerProtocolo(“VT100”)

TerModelo()
Tipo: Microterminal
Função utilizada para ajustar ou retornar o modelo do microterminal MT16 OU
MT44.
Sintaxe:
TerModelo(<cModelo>)
Parâmetros:
cModelo = Modelo do Microterminal
Retorna:
O modelo informado em <cModelo> ou retorna um modelo padrão
Exemplo:
nMaxCol := If(TerModelo()==”MT16″,19,39)

TerAchoice()
Tipo: Microterminal
Executa um menu pop-up
Sintaxe:
TeraChoice(<nTopo>,<nEsquerda>,<nBase>,<nDireita>,<acItensMenu>,[<cFunc
aoUsuario>],
[<nItemInicial>],[<nLinhaJanela>])
Parâmetros:
<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto
superior esquerdo e canto inferior direito da janela.
<acItensMenu> é um vetor que contem as cadeias de caracteres que serão exibidas
como sendo os itens de menu. Cada item de menu será mais tarde identificado
através de sua posição numérica neste vetor.
<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é executada
quando uma tecla não reconhecível for pressionada. O nome da função é
especificado como uma expressão caractere sem parênteses ou argumentos. Note
que o comportamento de TeraChoice() é afetado pela presença deste
argumento. Consulte o texto abaixo para maiores informações.
<nItemInicial> é a posição ocupada no vetor de <acItensMenu> pelo item que
aparecer em destaque quando o menu for exibido pela primeira vez. Caso você
especifique um item de menu que não esteja disponível, ou caso você não use
argumento algum, o item que aparecer em destaque será o primeiro item
selecionável do vetor.
<nLinhaJanela> É o número da linha da janela na qual o item de menu inicial
aparecerá.
Retorna:
TeraChoice() retorna a posição numérica ocupada pelo item de menu selecionado no
vetor de <acItensMenu>. Se o processo de seleção for interrompido, TeraChoice()
retorna zero.
Função de usuário: Da mesma forma que as demais funções de interface com o
usuário, TeraChoice() aceita uma função de usuário. A função de usuário é
especificada quando você deseja aninhar invocações da função TeraChoice() para
criar menus hierárquicos ou redefinir teclas.

Modos de TeraChoice()
0-Inativo
1-Tentativa de passar início da lista
2-Tentativa de passar final da lista
3-Normal
4-tens não selecionados

Após a função de usuário ter executado as operações apropriadas ao modo


TeraChoice(), ela deve retornar um valor que solicite ao TeraChoice() executar uma
operação entre o seguinte conjunto de ações:

Valores de Retorno da Função de Controle de TeraChoice()


0-Aborta seleção
1-Executa seleção
2-Continua TeraChoice()
3-Vai para o próximo item cuja primeira letra for a tecla pressionada

Exemplo:
acMenuItens := {“Um”,”Dois”, “—–“, “Tres”}
nPosition := TeraChoice(0, 0, 7, 19, acMenuItens, ”TESTECTRL” )
User Function testectrl(modo,nElem,nElemW)
If modo == 1
TerAlert(‘Top’)
Elseif Modo == 2
TerAlert(‘Bottom’)
Else
If TerLastkey() == 27
TerAlert(‘sair’)
TerBeep(3)
return 0
ElseIf TerLastkey() == 13
TerAlert(‘ok’)
TerBeep(1)
return 1
Endif
EndIf
Return 2

TerABrowse()
Tipo: Microterminal
Monta um browse com referencia a um array.
Sintaxe:
TERABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,
<aCab>, [<aItens>], [<aSize>],
[<cFuncaoUsuario>],[<nItemInicial>]) –> nPosicao
Parâmetros:
<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto
superior esquerdo e canto inferior direito da janela.
<aCab>, é um vetor que contem os títulos das colunas
<aItens>, é um vetor que contem os dados a serem mostrados
<aSize> , é um vetor que contem o tamanho de cada coluna
<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é executada
quando uma tecla não reconhecível for pressionada. O nome da função é
especificado como uma expressão caractere sem parênteses ou argumentos.
<nItemInicial> é a posição 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 não esteja disponível, ou caso você não use
argumento algum, o item que aparecer em destaque será o primeiro item
selecionável do vetor.
Retorna:
TERABROWSE() retorna a posição numérica ocupada pelo item de menu
selecionado no vetor de <aItens>. Se o processo de seleção for interrompido,
TERABROWSE() retorna zero.
Função de usuário: Utilizada da mesma forma que TERACHOICE.
Modos de TerABROWSE()
0-Inativo
1-Tentativa de passar início da lista
2-Tentativa de passar final da lista
3-Normal
4-Itens não selecionados
Após a função de usuário ter executado as operações apropriadas ao modo
TerABROWSE() ela deve retornar um valor que solicite ao TerABROWSE() executar
uma operaçãao entre o seguinte conjunto de ações:

Valores de Retorno da Função de Controle de TerABROWSE()


0-Aborta seleção
1-Executa seleção
2-Continua TerABROWSE()
3-Vai para o próximo item cuja primeira letra for a tecla pressionada

Exemplo:
#INCLUDE ‘APVT100.CH’
TerCls()
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 := TeraBrowse(0,0,7,15,aCab,aItens,aSize,’testectrl’,nPos)
.
.

User Function testectrl(modo,nElem,nElemW)


If modo == 1
TerAlert(‘Top’)
Elseif Modo == 2
TerAlert(‘Bottom’)
Else
If TerLastkey() == 27
TerAlert(‘sair’)
TerBeep(3)
return 0
elseIf TerLastkey() == 13
TerAlert(‘ok’)
TerBeep(1)
return 1
Endif
EndIf
Return 2

TerDBBrowse()
Tipo: Microterminal
Monta um browse com referencia a uma tabela
Sintaxe:
TerDBBROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,<cAlias>,
<aCab>, [<aFields>],
[<aSize>], [<cFuncaoUsuario>],[<cTop>],[<cBottom>]) –> nRecno
Parâmetros:
<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto
superior esquerdo e canto inferior direito da janela.
<cAlias>, é uma string com alias da tabela
<aCab>, é um vetor que contem os títulos das colunas
<aFields>, é um vetor que contem os campos do alias
<aSize> , é um vetor que contem o tamanho de cada coluna
<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é executada
quando uma tecla não reconhecível for pressionada. O nome da função é
especificado como uma expressão caractere sem parênteses ou argumentos. Note
que o comportamento de TerDBBROWSE () é afetado pela presença deste
argumento. Consulte o texto abaixo para maiores informações.
<cTop> string com a condição de validação de top
<cBottom> string com a condição de validação de Bottom
Retorna:
TerDBBROWSE () retorna o recno() Se o processo de seleção for interrompido,
TerDBBROWSE () retorna zero.
Função de usuário: Utilizada da mesma forma que TerACHOICE e TeraBROWSE.
Modos de TerDBBROWSE ()
0-Inativo
1-Tentativa de passar início da lista
2-Tentativa de passar final da lista
3-Normal
4-Itens não selecionados

Após a função de usuário ter executado as operações apropriadas ao modo


TerDBBROWSE () ela deve retornar um valor que solicite ao TerDBBROWSE ()
executar uma operação entre o seguinte conjunto de ações:
Valores de Retorno da Função de Controle de TerDBBROWSE ()
0-Aborta seleção
1-Executa seleção
2-Continua TerDBBROWSE ()
3-Vai para o próximo item cuja primeira letra for a tecla pressionada

Exemplo:
TerCls()
aFields := {“B1_COD”,”B1_DESC”,”B1_UM”,”B1_PICM”}
aSize := {16,20,10,15}
aHeader := {‘COD’,’DESCRICAO ‘,’UM’,”% ICM”}

sb1->(dbseek(xfilial()+’00000000000001′))
nRecno := TerDBBrowse(0,0,7,15,”SB1″,aHeader,aFields,aSize,’testectrl’,;
“xfilial(‘SB1’)+’00000000000001′”,;
“xfilial(‘SB1’)+’00000000000002′”)
TerCls()

TerSetPos()
Tipo: Microterminal
Função que Posiciona o Cursor do Microterminal
Sintaxe:
TerSetPos(<nLin>,<nCol>)
Parâmetros:
nLin = Linha onde se deseja posicionar
nCol = Coluna onde se deseja posicionar
Retorna:
.T.
Exemplo:
nLin := 0
nCol := 20
TerSetPos(nLin,nCol)

Exemplo para Microterminal


Este exemplo está descrito no programa “ TerDemo1”, podendo ser executado do seu
Microterminal. Para isso configure no TERMANU, ou inclua no menu do sigaacdt.

#INCLUDE ‘APVT100.CH’
/*/
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Funcao ::TerDEMO1 :: Autor :: ACD :: Data :: 17/07/03 ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Descricao:: Programa de exemplo de uso das funcoes do microterminal ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Uso :: PROGRAMA EXEMPLO DE UMA APLICACAO PARA
MICROTERMINAL ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
/*/
User Function TerDEMO1()
Local cKeyEnter := “Press… <Enter>”
Local cCodigo := Space(6)
Local dData := ctod(”)
Local cSenha := Space(6)
Local nValor := 0
Local aOpcoes
Local aItens, acab,aSize
Local aFields,aHeader
Private nMaxCol := If(TerModelo()==“MT16”,19,39)

While .t.
TerCBuffer()
TerIsQuit() // funcao necessaria para saber se o gerenciador determinou a saida do
programa
cCodigo := Space(6)
dData := ctod(”)
nValor := 0
cSenha := Space(6)
TerCls()
@ 00,00 TerSay PadC(“Demo de Microterminais”, nMaxCol)
@ 01,00 TerSay “Modelo:” + TerModelo()
@ 01,nMaxCol-Len(cKeyEnter) TerSay cKeyEnter
TerInkey(0)
TerCls()
TerCBuffer()
@ 00,00 TERSay “Codigo: “
@ 00,10 TerGetRead
cCodigo Pict “XXXXXX@” Valid ValidCod(cCodigo) When WhenCod()
If TerEsc() // quando for pressionada a teclas ESC Obs.: Alguns terminais o ESC e a
tecla DEL
If TerProtocolo()==“VT100”
// quando for executa pelo sigaacdt a rotina devera’ retornar ao menu
Exit
EndIf
Loop
EndIF
@ 00,20 TERSay “Data: “
@ 00,27 TerGetRead
dData Pict “99/99/99” Valid ValidData(dData) When WhenData()
If TerEsc()
Loop
EndIF
@ 01,00 TERSay “Valor: “
@ 01,10 TerGetRead nValor Pict “999.99″ When WhenValor()
If TerEsc()
Loop
EndIF
@ 01,20 TERSay “Senha: “
@ 01,26 TerGetRead cSenha Pict “******” Valid (TerAlert(cSenha,‘Senha
Digitada’,1000),.t.) ;
When WhenSenha()
If TerEsc()
Loop
EndIF
TerAlert(“Entrando no Achoice… aguarde…”,“-“,1000)
aOpcoes := { “Opcao 1”, ;
“Opcao 2”, ;
“Opcao 3”, ;
“Opcao 4”, ;
“Opcao 5”}
TerCBuffer()
npos :=TerAchoice(,,,,aOpcoes,‘U_ValidAchoice’)
TerAlert(“Entrando no aBrowser… aguarde…”,“-“,1000)
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 “,100,“DESCRICAO4”,“CX “},;
{“2010 “,110,“DESCRICAO4”,“CX “}}
acab :={“Codigo”,“Cod “,“Descricao “,“UM”}
aSize := {10,4,20,10}
nPos := 1
npos := TeraBrowse(,,,,aCab,aItens,aSize,,nPos)
TerAlert(“Entrando no DBBrowser… aguarde…”,“-“,1000)
aFields := {“B1_COD”,”B1_DESC”,”B1_UM”,”B1_PICM”}
aSize := {16,20,10,15}
aHeader := {‘COD’,‘DESCRICAO ‘,‘UM’,“% ICM”}
sb1->(dbseek(xfilial()))
npos := TerDBBrowse(,,,,“SB1”,aHeader,aFields,aSize)
If TerYesNo(“Deseja realizar teste de impressao?”,“Pergunta”)
Imprimir()
EndIf
If TerEsc()
Loop
EndIF
EndDo
Return .T.

Static Function ValidCod(cCodigo)


Local cTela
cTela := TerSave(00,00,01,nMaxCol)
TerAlert(“Total de bytes: “+AllTrim(Str(Len(AllTrim(cCodigo))))+‘
aguarde…’,“Validando:”,1000)
TerCls()
TerRestore(00,00,01,nMaxCol,cTela)
Return .T.

Static Function WhenCod()


TerAlert(“Exemplo de Get com Caracter aguarde…”,“-“,1000)
Return .T.

Static Function WhenData()


Local cTela
TerAlert(“Exemplo de Get com Data aguarde…”,“-“,1000)
Return .T.

Static Function WhenValor()


TerAlert(“Exemplo de Get com Numerico aguarde…”,“-“,1000)
Return .T.

Static Function WhenSenha()


TerAlert(“Exemplo de Get com Senha aguarde…”,“-“,1000)
Return .T.

Static Function ValidData(dData)


If Empty(dData)
TerAlert(“Data em branco”, “Atencao”)
Return .f.
EndIf
TerAlert(DTOC(dData))
Return .t.

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//Função responsável pela configuração e impressão de nota.
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Static Function Imprimir()
TerPBegin( ,“P”,3) // se quiser imprimir na serial apenas altere o segundo
parâmetro para “S”
TerPrint(Repl(“=”,40))
TerPrint(“iMIND SISTEMAS E SOLUÇÕES INTELIGENTES”)
TerPrint(“Emissao de cupom de Venda”)
TerPrint(Repl(“=”,40))
TerPrint(“Cliente : 000001 Loja : 01”)
TerPrint(“Nome : CLIENTE PADRAO”)
TerPrint(Repl(“=”,40))
TerPrint(“Vendedor : 000001”)
TerPrint(“Nome : VENDEDOR PADRAO”)
TerPrint(Repl(“=”,40))
TerPrint(“Produto Valor”)
TerPrint(” “)
TerPrint(“101015 “+Transform(10,“@E 999,999.99”))
TerPrint(“101020 “+Transform(5,“@E 999,999.99”))
TerPrint(“101025 “+Transform(15,“@E 999,999.99”))
TerPrint(“==============================”)
TerPrint(“Total “+Transform(20,“@E 999,999.99”))
TerPrint(“==============================”)
TerPrint(“ESTE RECIBO NAO TEM VALOR FISCAL.”)
TerPrint(Repl(“=”,40))
TerPrint(” “)
TerPrint(” “)
TerPrint(” “)
TerPrint(” “)
TerPrint(” “)

TerPEnd()
Return

User Function ValidAchoicel(modo,nElem,nElemW)


If modo == 1
TerAlert(‘Inicio do Achoice’,‘-‘,500)
Elseif Modo == 2
TerAlert(‘Fim do Achoice’,‘-‘,500)
Else
If TerLastkey() == 27
TerAlert(‘Saindo do Achoice’,500)
return 0
elseIf TerLastkey() == 13
TerAlert(‘Tecla <ENTER> precionada’,‘-‘,500)
return 1
Endif
EndIf
Return 2

Leia também:
Automação e Coleta de dados
O que é o SIGAACD? E como pode ser Utilizando?
Consultoria Protheus
comandos e funcao advpl para microterminais microterminal

Previous Post
Novo Prazo E-SOCIAL conforme RESOLUÇÃO nº 02/2016
Next Post
7 sinais de que é hora de trocar seu sistema de gestão empresarial

Dúvidas? Entre em contato: 55 11 2501-9033 | 2501-9373


• contato@imind.com.br

InterLearning • iMind - Sistemas e Soluções Inteligentes - Rua Doutor Candido


Espinheira, 396, Conj. 12 - Perdizes - São Paulo - CEP 05004-000
• consultoria protheus sp • consultoria protheus df• fabrica de software • integracao
vtex • consultoria totvs • desenvolvimento de software • migracao de versao