1 NDICE Funes para impresso de etiquetas padro ZPL,ALLEGRO e ELTRON________________________ MSCBPrinter____________________________________4 MSCBClosePrinter_______________________________5 MSCBBegin____________________________________5 MSCBEnd______________________________________5 MSCBSay______________________________________5 MSCBSayBar___________________________________6 *MSCBSayMemo________________________________7 MSCBBox______________________________________7 MSCBLineH____________________________________7 MSCBLineV____________________________________8 MSCBLoadGrf__________________________________8 MSCBGrafic____________________________________8 MSCBChkStatus_________________________________8 MSCBWrite_____________________________________9 Tipos de fontes para Zebra:________________________9 Tipos de fontes para Allegro:_______________________9 Exemplo padro Zebra.___________________________9 Exemplo padro Allegro.__________________________10 Exemplo padro Eltron.__________________________11 COAN!O" PARA TELNET #T$%%&_____________________________________________________ @...VTSay____________________________________12 VTClear Screen________________________________12 @...VTGet_____________________________________12 VTRead______________________________________13 VTSave Screen________________________________14 VTRestore Screen______________________________14 VTPause______________________________________15 @...VTPause__________________________________15 VTSetSize_____________________________________15 VTSet Key____________________________________15 F'NCOE" PARA TELNET #T$%%________________________________________________________ VTReadVar()___________________________________16 VTSave()_____________________________________16 VTRestore()___________________________________16 VTScroll()_____________________________________17 VTLastKey()___________________________________17 VTSetKey()____________________________________18 VTKeyBoard()__________________________________18 VTRow()______________________________________19 VTCol()_______________________________________19 VTnkey()_____________________________________19 VTMaxCol()___________________________________20 VTMaxRow()___________________________________20 Automao e coleta de dados 2 2 VTBeep()_____________________________________20 VTReverso()___________________________________21 VTClearBuffer()_________________________________21 VTAlert()______________________________________21 VTYesNo()____________________________________22 VTAchoice()___________________________________22 VTABrowse()___________________________________24 VTDBBrowse()_________________________________25 Exemplo aplicao Telnet VT100___________________26 F'NCOE" PARA (CROTER(NAL&____________________________________________________ TerCls()_______________________________________28 TerSay()______________________________________28 Ternkey()_____________________________________28 TerCBuffer()___________________________________29 TerGetRead()__________________________________29 TerEsc()______________________________________29 TerBeep()_____________________________________30 TerNumTer()___________________________________30 TerSave()_____________________________________30 TerRestore()___________________________________31 TerPBegin()____________________________________31 TerPrint()______________________________________31 TerPEnd()_____________________________________32 TersQuit()_____________________________________32 Exemplo aplicao Microterminal___________________32 Automao e coleta de dados 3 3 Funes para impresso de etiquetas padro ZPL,ALLEGRO e ELTRON Visualizao do posicionamento da imagem na etiqueta no padro Zebra (ZPL,EPL): (OBS: Alguns modelos de impressoras ELTRON, possuem o alinhamento da folha de etiqueta centralizado, por isso deve-se considerar o ponto de impresso da posio+a margem) X Y Sentido do movimento de impresso Visualizao do posicionamento da imagem na etiqueta no padro Allegro: Y X Sentido do movimento de impresso Nota: Parmetros que estiverem entre [], significa que no so OBRGATROS, os parmetros que estiverem com (*), significa que so ignorados no padro Allegro e Eltron. MSCBPrinter Tipo: mpresso Configura modelo da impressora, sada utilizada, resoluo na impresso e tamanho da etiqueta a ser impresso. Parmetros [ModelPrt] = String com o modelo de impressora: Zebra: S400, S600, S500-6, Z105S-6, Z16S-6, S300, S500-8, Z105S-8, Z160S-8, Z140X, Z90X e Z170Z. Allegro: ALLEGRO, PRODGY, DMX e DESTNY. Automao e coleta de dados 4 4 !c"os!#a
!c"os!#a Eltron: ELTRON E ARGOX cPorta = String com a porta [nDensidade] = Numero com a densidade referente a quantidade de pixel por mm [nTamanho] = Tamanho da etiqueta em Milmetros. [lSrv] = Se .t. imprime no server,.f. no client [nPorta] = numero da porta de outro server [cServer] = endereo P de outro server [cEnv] = environment do outro server [nMemoria] = Numero com bloco de memria Observaes: O parmetro nDensidade no necessrio informar, pois ModelPrt o atualizar automaticamente. A utilizao deste parmetro (nDensidade) dever ser quando no souber o modelo da impressora, a aplicao entendera que se trata de uma impressora Zebra. O tamanho da etiqueta ser necessrio quando a mesma no for continua.
Exemplo MSCBPRNTER("S500-8", "COM2:9600,e,7,2",NL, 42) MSCBPRNTER("S500-8", "LPT1",NL, 42) MSCBPRNTER("S600","COM1:9600,N,8,2",NL,NL,.T.,1024,"SERVER- AP","ENVCODEBASEPORT609") MSCBPRNTER("S600", "LPT1",NL, 42,.F.,NL,NL,NL,10240) MSCBClosePrinter Tipo: mpresso Finaliza a conexo com a impressora
Exemplo MSCBClosePrinter() MSCBBegin Tipo: mpresso nicializa a montagem da imagem para cada etiqueta Parmetros [nQtde] = Quantidade de cpias [nVeloc] = Velocidade (1,2,3,4,5,6) polegadas por segundo [nTamanho]= Tamanho da etiqueta em Milmetros.
Exemplo: MSCBBEGN(3,4,40)
MSCBEnd Tipo: mpresso Finaliza a montagem da imagem Exemplo MSCBEND() MSCBSay Tipo: mpresso mprime uma String Parmetros Automao e coleta de dados $ $ nXmm = Posio X em Milmetros nYmm = Posio Y em Milmetros cTexto = String a ser impressa cRotao = String com o tipo de Rotao (N,R,,B) N-Normal R-Cima p/baixo -nvertido B-Baixo p/ Cima cFonte = String com os tipos de Fonte Zebra: (A,B,C,D,E,F,G,H,0) 0(zero)- fonte escalar Allegro: (0,1,2,3,4,5,6,7,8,9) 9 fonte escalar Eltron: (0,1,2,3,4,5) cTam = String com o tamanho da Fonte *[lReverso]= mprime em reverso quando tiver sobre um box preto [lSerial] = Serializa o cdigo [cncr] = ncrementa quando for serial positivo ou negativo *[lZerosL] = Coloca zeros a esquerda no numero serial Exemplo MSCBSAY(15,3,"MCROSGA ","N","C","018,010",.t.) MSCBSAY(15,3,"MCROSGA ","N","C","018,010",.t.,.t.,"3",.t.) MSCBSayBar Tipo: mpresso mprime Cdigo de Barras Parmetros nXmm = Posio X em Milmetros nYmm = Posio Y em Milmetros cConteudo = String a ser impressa cRotao = String com o tipo de Rotao cTypePrt = String com o Modelo de Cdigo de Barras Zebra: 2 - nterleaved 2 of 5 3 - Code 39 8 - EAN 8 E - EAN 13 U - UPC A 9 - UPC E C - CODE 128 Allegro: D - nterleaved 2 of 5 A - Code 39 G - EAN 8 F - EAN 13 B - UPC A C - UPC E E - CODE 128 Eltron: 2 - nterleaved 2 of 5 3 - Code 39 E80 - EAN 8 E30 - EAN 13 UA0 - UPC A UE0 - UPC E 1 - CODE 128
[nAltura] = Altura do cdigo de Barras em Milmetros *[ lDigver] = mprime dgito de verificao [lLinha] = mprime a linha de cdigo *[lLinBaixo]= mprime a linha de cdigo acima das barras Automao e coleta de dados % % [cSubSetni]= Utilizado no code128 [nLargura] = Largura da barra mais fina em pontos default 3 [nRelacao] = Relao entre as barras finas e grossas em pontos default 2 [lCompacta] = Compacta o cdigo de barra [lSerial] = Serializa o cdigo [cncr] = ncrementa quando for serial positivo ou negativo *[lZerosL] = Coloca zeros a esquerda no numero serial Exemplo MSCBSAYBAR(20,22,AllTrim(SB1->B1_CODBAR),"N","C",13) *MSCBSayMemo Tipo: mpresso Monta e imprime um campo MEMO Parmetros nXmm = Posio X em Milmetros nYmm = Posio Y em Milmetros nLMemomm = Tamanho da 1 linha do campo memo em Milmetros nQLinhas = Quantidade de linhas cTexto = String a ser impressa cRotao = String com o tipo de Rotao (N,R,,B) cFonte = String com o tipo de Fonte (A,B,C,D,E,F,G,H,0) cTam = String com o tamanho da Fonte [lReverso]= lgica se imprime em reverso quando tiver sobre um box preto [cAlign] = String com o tipo de Alinhamento do memo L - Esquerda R - Direita C - Centro J - Margem a margem (justificado) Exemplo MSCBSAYMEMO (1,10,8,4,cTexto,"N","A","9,5",.f.,"C")
MSCBBox Tipo: mpresso mprime um Box Parmetros nX1mm = Posio X1 em Milmetros nY1mm = Posio Y1 em Milmetros nX2mm = Posio X2 em Milmetros nY2mm = Posio Y2 em Milmetros [nEspessura]= Numero com a espessura em pixel *[cCor] = String com a Cor Branca ou Preta ("W" ou "B") Exemplo MSCBBOX(12,01,31,10,37) MSCBLineH Tipo: mpresso mprime uma linha horizontal Parmetros nX1mm = Posio X1 em Milmetros nY1mm = Posio Y1 em Milmetros nX2mm = Posio X2 em Milmetros [nEspessura]= Numero com a espessura em pixel *[cCor] = String com a Cor Branca ou Preta ("W" ou "B") Automao e coleta de dados & & Exemplo MSCBLineH(01,10,80,3,"B") MSCBLineV Tipo: mpresso mprime uma linha vertical Parmetros nX1mm = Posio X1 em Milmetros nY1mm = Posio Y1 em Milmetros nY2mm = Posio X2 em Milmetros [nEspessura] = Numero com a espessura em pixel *[cCor] = String com a Cor Branca ou Preta ("W" ou "B") Exemplo MSCBLineV(01,10,80,3,"B") MSCBLoadGr Tipo: mpresso Carrega uma imagem para memria da impressora Observaes
Para o padro Zebra, arquivo do grfico tem que ser do tipo GRF, gerado atravs de um PCX ou TF no software fornecido pelo fabricante da zebra. Para o padro Allegro e Eltron, arquivo do grfico pode ser do tipo BMP, PCX e MG. No precisa ser convertido. Parmetros cmagem = nome do arquivo que ser carregado Exemplo MSCBLOADGRF("LOGO.GRF") MSCBGrai! Tipo: mpresso mprime grfico que est armazenado na memria da impressora Parmetros nXmm = Posio X em Milmetros nYmm = Posio Y em Milmetros cArquivo = Nome do grfico que foi carregado na memria da impressora (no colocar a extenso .GRF) *[lReverso]= mprime em reverso quando tiver sobre um box preto Exemplo MSCBGRAFC(3,3,"LOGO",.t.) MSCBC"#Stat$s Tipo: mpresso Seta ou visualiza o controle de status do sistema com a impressora. Parmetros [lStatus] = Lgica ativa/desativa o controle Retorno Retorna o Status Com o status ativado, sempre que a aplicao enviar qualquer informao para a impressora, ser analisado o status, caso esteja com o buffer cheio, sem papel ou sem ribbon, o sistema aguardara at que os itens anteriores estejam solucionados. Automao e coleta de dados ' ' Exemplo MSCBCHKSTATUS(.f.) // desativa a verificao MSCB%rite Tipo: mpresso Permite enviar para porta uma linha de programao nativa da mpressora. Parmetros cConteudo = Linha de programao nativa da impressora. Exemplo MSCBWRTE("^FO1,1^GB400,50,25^FS") &ipos de ontes para 'e(ra) As fontes A,B,C,D,E,F,G,H, so do tipo BTMAPPEDs, tem tamanhos definidos e podem ser expandidas proporcionalmente as dimenses mnimas. Exemplo: Fonte do tipo A, 9 X 5 ou 18 x 10 ou 27 X 15 . A fonte 0 (Zero) do tipo ESCALAR, esta ser gerada na memria da impressora, portanto torna-se um processamento lento. &ipos de ontes para *llegro) As fontes 0,1,2,3,4,5,6,7,8, so do tipo BTMAPPEDs, tem tamanho definido e podem ser expandidos. Exemplo: Fonte do tipo 1, 1X1 ou 1x2 ou 1x3 ou 2x1 ou 2x2. A fonte 9 (Nove) do tipo ESCALAR, esta ser gerada na memria da impressora, portanto torna-se um processamento lento, as dimenses deste tipo de fonte tem que ser passando junto com o tamanho da fonte. Exemplo. cTam := "001,001,002 \_____/ \_/ | | | | dimenso da fonte que pode ser de 0 9 | tamanho da fonte Exemplo padro 'e(ra+ ,ser -$n!tion E&./'EB0*12 Lo!al nX Lo!al !Porta !Porta )3 4C5M6)7899:n:;:64 MSCBP0.<&E014S=99>;4:!Porta:::++::::2 MSCBL5*?G0-14S.G*+G0-42 -or nx)3@ to A MSCBBEG.<1@:82 MSCBB5X196:9@:B8:A=2 MSCBLineH1A9:9=:B8:A2 MSCBLineH196:@A:B8:A:4B42 MSCBLineH196:69:B8:A:4B42 MSCBLineV1A9:9@:@A2 MSCBG0*-.C16:A:4S.G*42 MSCBS*Y1AA:96:CP05?,&5C:4<4:494:496=:9A=42 MSCBS*Y1AA:98:4C5?.G54:4<4:4*4:49@=:99;42 MSCBS*Y1AA:97: 49999984: 4<4: 494: 49A6:9A=42 MSCBS*Y19=:@D:4?ESC0.C*54:4<4:4*4:49@=:99;42 MSCBS*Y19=:@B:4.MP0ESS50* 'EB0* S=99>;4:4<4: 494: 4969:9A942 MSCBS*YB*016A:66:4999999984:4<4:4C4:;+A8:+-+:+&+:+-+::6:@:+-+:+-+:4@4:+&+2 MSCBE<?12 <ext Automao e coleta de dados ( ( MSCBCL5SEP0.<&E012 0et$rn Exemplo padro *llegro+ ,ser -$n!tion E&./*LLEG0512 Lo!al nX Lo!al !Porta !Porta )3 4C5M6)7899:n:;:64 MSCBP0.<&E014*LLEG054:!Porta:::++::::2 MSCBL5*?G0-14S.G*+BMP42 -or nx)3@ to A MSCBBEG.<1@:82 MSCBB5X196:9@:B8:AD:@2 MSCBLineH1A9:A9:B8:@2 MSCBLineH196:6A:B8:@2 MSCBLineH196:@=:B8:@2 MSCBLineV1A9:6A:AD:@2 MSCBG0*-.C16:68:4S.G*42 MSCBS*Y1AA:A@:CP05?,&5C:4<4:464:49@:9@42 MSCBS*Y1AA:6B:4C5?.G54:4<4:464:49@:9@42 MSCBS*Y1AA:6D: 49999984: 4<4: 464: 49@:9@42 MSCBS*Y19=:69:4?ESC0.C*54:4<4:464:49@:9@42 MSCBS*Y19=:@8:4.MP0ESS50* *LLEG05 6 B04:4<4: 464: 49@:9@42 MSCBS*YB*0166:9A:4999999984:4<4:4E4:;+A8:+-+:+&+:+-+::A:6:+-+:+-+:4@4:+&+2 MSCBE<?12 <ext MSCBCL5SEP0.<&E012 0et$rn Automao e coleta de dados 1) 1) Exemplo padro Eltron+ ,ser -$n!tion E&./EL&05<12 Lo!al nX Lo!al !Porta !Porta )3 4C5M6)7899:n:;:64 MSCBP0.<&E014EL&05<4:!Porta:::++::::2 MSCBCHEStat$s1++2 MSCBL5*?G0-14S.G*+PCX42 -or nx)3@ to A MSCBBEG.<1@:82 MSCBG0*-.C19D:96:4S.G*42 MSCBB5X19=:9@:B8:A9:62 MSCBLineH1A9:98:B@:62 MSCBLineH19=:@6:B@:62 MSCBLineH19=:@;:B@:62 MSCBLineV1A9:@:@+A:792 FFMonta Lin"a Verti!al MSCBS*Y1AA:96:CP05?,&5C:4<4:464:4@:642 MSCBS*Y1AA:9B:4C5?.G54: 4<4: 4@4: 4@:@42 MSCBS*Y1AA:97:49999984: 4<4: 4@4: 4@:642 MSCBS*Y19B:@A:4?ESC0.C*54:4<4:4@4:4@:@42 MSCBS*Y19B:@=:4.MP0ESS50* EL&05< &LP6BD64:4<4: 4@4: 4@:642 MSCBS*YB*016;:@7:4999999984:C<C:C@C:=9:+&+::::6:6::::2 MSCBE<?12 <ext MSCBCL5SEP0.<&E012 0et$rn Automao e coleta de dados 11 11
COMANO! PARA TELNET "T#$$% G+++V&Say Tipo: TELNET VT100 Exibe dados em uma linha e coluna especificadas Sintaxe @ <nLin>, <nCol> [VTSAY <exp> [PCTURE <cSayPicture>]] Parmetros <nLin> e <nCol> so as coordenadas de linha e coluna da sada. Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale para as colunas. VTSAY <exp> exibe o resultado de uma expresso de qualquer tipo. PCTURE <cSayPicture> define a mascara para a sada de exp. Exemplo nQtd :=15.45 cDesc := "Teste descricao" // @ 1, 1 VTSAY nQtd PCTURE "@9999.99" @ 2, 1 VTSAY "Teste VTG100 @ 4, 1 VTSAY cDesc PCTURE "@!" V&Clear S!reen Tipo: TELNET VT100 Apaga a tela e coloca o cursor na posio inicial Sintaxe VTCLEAR [SCREEN] G+++V&Get Tipo: TELNET VT100 Automao e coleta de dados 12 12 Cria um novo objeto VTGET e o coloca em exibio na tela Sintaxe @ <nLin>, <nCol> [VTSAY <exp> [PCTURE <cSayPicture>]] VTGET <idVar> [PCTURE <cGetPicture>] [WHEN <lPreCondicao>] [VALD <lPosCondicao>] [PASSWORD] [F3<tabela>] Parmetros <nLin> e <nCol> So as coordenadas de linha e coluna para a operao. Se a clausula VTSAY est presente, especificam as coordenadas para o VTSAY, e o VTGET , exibido a direita deste. VTSAY exibe o valor de <exp> nas coordenadas especificadas. Caso a PCTURE <cSayPicture> seja especificada. VTGET <idVar> define o nome da varivel de qualquer tipo de dados a ser editada. Ela pode ser caractere, data ou numrica . PCTURE <cGetPicture> especifica uma mascara para exibio e as regras para edio do VTGET. WHEN <lPreCondicao> especifica uma expresso que deve ser satisfeita antes do cursor entrar na regio de edio de VTGET. Se <lCondicao> , avaliada como verdadeira (.T.), , permitido ao cursor entrar; de outra forma, o VTGET corrente , saltado e o cursor move-se para o prximo VTGET. VALD <lPosCondicao> especifica uma expresso que deve ser satisfeita antes que o cursor possa deixar a regio de edio do VTGET corrente. O VALD<lPosCondicao> , avaliado sempre que o usurio tenta deixar a regio de edio do VTGET, a menos que a tecla Esc seja pressionada . Se <lPosCondicao> retorna falso (.F.), o controle retorna ao VTGET e o usurio no pode deixa -lo at que <lPosCondicao> retorne verdadeiro (.T.) ou o usurio aperte Esc. Um VALD <lPosCondicao> pode conter ou ser uma funo definida pelo usurio, permitindo-lhe executar buscas e outros tipos de operaes de validao. PASSWORD Monta o VTGET para entrada de dados com * na tela, utilizado para SENHAS F3 Associa este VTGET a uma tabela do SXB ou Sx5. Descrio Quando um comando VTREAD , especificado, um VTGET executa uma edio do contedo de <idVar> de qualquer tipo de dado. Quando um objeto VTGET , criado, o nome e valor corrente de <idVar> so guardados no objeto VTGET. O valor de <idVar> fica armazenado no que, chamado de buffer do VTGET. O buffer de VTGET , o que , realmente mostrado na tela e editado.
Exemplo #include 'apvt100.ch' nNumber = 0 @ 0, 0 VTSAY "Digite um numero; VTGET nNumber; VALD nNumber > 0 V&0ead Tipo: TELNET VT100 Ativa edio em tela usando objetos GET Sintaxe VTREAD Descrio Automao e coleta de dados 13 13 O comando READ executa um mdulo de edio em tela usando todos os objetos VTGET criados e adicionados. Dentro de um READ, o usurio pode editar o buffer de cada objeto VTGET bem como mover-se de um objeto GET para outro. Antes que o usurio possa entrar com um objeto VTGET, o controle passa para o respectivo WHEN. Quando o usurio pressiona uma tecla de sada de VTGET, o controle passa VALD respectivo, caso tenha sido especificada. O exemplo abaixo define vrios VTGETs e a seguir usa o comando READ:
#include 'apvt100.ch' cVar1 := cVar2 := cVar3 := SPACE(10) @ 1, 1 VTSAY "Um :" VTGET cVar1 VALD !EMPTY(cVar1) @ 2, 1 VTSAY "Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um" @ 3, 1 VTSAY "Tres:" VTGET cVar3 VALD !EMPTY(cVar3) VTREAD V&Save S!reen Tipo: TELNET VT100 Grava a tela corrente numa varivel Sintaxe VTSAVE SCREEN TO <idVar> Parmetros TO <idVar> especifica a varivel que sero atribudos os contedos da tela corrente.
Exemplo #include 'apvt100.ch' VTSave Screen To aTela cVar1 := cVar2 := cVar3 := SPACE(10) @ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1) @ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um" @ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3) VTREAD VTRestore Screen From aTela V&0estore S!reen Tipo: TELNET VT100 Exibe uma tela guardada Sintaxe VTRESTORE SCREEN [FROM <aTela>] Parmetros FROM <aTela> especifica uma varivel que contem o contedo da tela a ser exibida. Exemplo #include 'apvt100.ch' VTSave Screen To aTela cVar1 := cVar2 := cVar3 := SPACE(10) @ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1) @ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um" @ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3) Automao e coleta de dados 14 14 VTREAD VTRestore Screen From aTela V&Pa$se Tipo: TELNET VT100 Suspende a execuo de um programa at que seja pressionada a tecla ENTER Sintaxe #include 'apvt100.ch' VTPAUSE
G+++V&Pa$se Tipo: TELNET VT100 Exibe dados em uma linha e coluna especificadas e para a execuo de um programa at que seja pressionada a tecla ENTER Sintaxe @ <nLin>, <nCol> [VTPAUSE <exp> [PCTURE <cSayPicture>]] Parmetros <nLin> e <nCol> so as coordenadas de linha e coluna da sada. Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale para as colunas. VTPAUSE <exp> exibe o resultado de uma expresso de qualquer tipo. PCTURE <cSayPicture> define a mascara para a sada de exp. Exemplo #include 'apvt100.ch' @ 7, 1 VTPause "Tecle ENTER p/ Continuar V&SetSiHe Tipo: TELNET VT100 Seta o limite da rea de trabalho. Sintaxe VTSETSZE <nLin>, <nCol> Parmetros <nLin> e <nCol> so as coordenadas mximas de linha e coluna. Exemplo #include 'apvt100.ch' VTSetSize 8,20 V&Set Eey Tipo: TELNET VT100 Atribui a chamada de uma rotina a uma tecla Sintaxe VTSET KEY <nCodigoTecla> TO [<idRotina>] Parmetros <nCodigoTecla> , o valor VTNKEY() da tecla a qual se atribui a rotina. TO <idRotina> especifica o nome da rotina que executada quando se aperta uma tecla. Automao e coleta de dados 1$ 1$ Se <idRotina> no especificada, a definio corrente liberada. Exemplo Este exemplo demonstra como usar VTSET KEY para invocar uma rotina quando o usurio aperta. A tecla 'A'.
#include 'apvt100.ch' VTSET KEY 65 TO TESTE CCodigo := space(6) @ 1, 1 VTGET cCodigo VTREAD RETURN FUNCTON Teste() @ 2,1 VTSay 'TESTE' RETURN NL F&NCOE! PARA TELNET "T#$$ V&0eadVar12 Tipo: TELNET VT100 Retorna o nome da varivel VTGET corrente Sintaxe VTREADVAR() --> cNomeVar Retorna VTREADVAR() retorna o nome da varivel associada ao objeto VTGET corrente. V&Save12 Tipo: TELNET VT100 Grava uma regio de tela para posterior exibio Sintaxe VTSAVE (<nTopo>, <nEsquerda>, <nBase>, <nDireita>) --> cTela Parmetros <nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as coordenadas da regio de tela a ser gravada. Caso <nBase> ou <nDireita> seja maior do que VTMAXROW() ou VTMAXCOL(), a tela cortada. Retorna VTSAVE () retorna a regio de tela especificada na forma de uma cadeia de caracteres. Exemplo #include 'apvt100.ch' aTela := VTSave(0,0,4,10) cVar1 := cVar2 := cVar3 := SPACE(10) @ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1) @ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um" @ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3) VTREAD VTRestore(0,0,4,10,aTela)
V&0estore12 Tipo: TELNET VT100 Automao e coleta de dados 1% 1% Exibe uma regio de tela gravada em uma localizao especificada Sintaxe VTRESTORE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <aTela>) --> NL Parmetros <nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as coordenadas da informao de tela contida em <aTela>. <aTela> , uma varivel contedo o contedo da tela gravada. Retorna VTRESTORE () sempre retorna NL. Exemplo #include 'apvt100.ch' aTela := VTSave(0,0,4,10) cVar1 := cVar2 := cVar3 := SPACE(10) @ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1) @ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um" @ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3) VTREAD VTRestore(0,0,4,10,aTela)
V&S!roll12 Tipo: TELNET VT100 Rola uma regio de tela para cima ou para baixo Sintaxe VTSCROLL(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <nLinhas>) --> NL Parmetros <nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as coordenadas da regiao a ser rolada. Valores de linha e coluna podem variar entre 0, 0 e VTMAXROW(), VTMAXCOL(). <nLinhas> define a quantidade de linhas a serem roladas. Um valor maior do que zero rola para cima a quantidade especificada de linhas. Um valor menor do que zero rola para baixo a quantidade especificada de linhas. Um valor de zero apaga a rea especificada. Retorna VTSCROLL() sempre retorna NL. Exemplo VTSCROLL(0,0, VTMAXROW(),VTMAXCOL,1) V&LastEey12 Tipo: TELNET VT100 Retorna o valor VTNKEY() da ltima tecla extrada do buffer de teclado Sintaxe VTLASTKEY() --> nCodnkey Retorna VTLASTKEY() retorna um nmero de -39 a 386 que identifica o valor VTNKEY() da ltima tecla extrada do buffer de teclado. Descrio Automao e coleta de dados 1& 1& VTLASTKEY() , uma funo de tratamento de teclado que informa o valor VTNKEY() da ltima tecla capturada do buffer de teclado pela funo VTNKEY(), ou por um estado de espera como VTREAD, VTPAUSE, VTACHOCE(),VTABROWSE ou VTDBBROWSE. VTLASTKEY() retorna seu valor corrente at que outra tecla seja capturada do buffer de teclado. Exemplo #include 'apvt100.ch' aTela := VTSave(0,0,4,10) cVar1 := cVar2 := cVar3 := SPACE(10) @ 1, 1 VTSAY " Um :" VTGET cVar1 VALD !EMPTY(cVar1) @ 2, 1 VTSAY " Dois:" VTGET cVar2 WHEN RTRM(cVar1) != "Um" @ 3, 1 VTSAY " Tres:" VTGET cVar3 VALD !EMPTY(cVar3) VTREAD VTRestore(0,0,4,10,aTela) f VTLastKey() == 27 Return .f. Endif V&SetEey12 Tipo: TELNET VT100 Atribui um bloco de ao a uma tecla Sintaxe VTSETKEY(<nCodnkey>, [<bAao>]) --> bAcaoCorrente Parmetros <nCodnkey> , o valor NKEY() da tecla a ser associada ou questionada. <bAcao> especifica o bloco de cdigo a ser automaticamente executado sempre que a tecla especificada for pressionada durante um estado de espera. Retorna VTSETKEY() retorna o bloco de ao correntemente associado a tecla especificada, ou NL caso a tecla especificada nao esteja associada a um bloco. Exemplo #include 'apvt100.ch' bKeyAnt := VTSetKey(65,{|| teste()}) CCodigo := space(6) @ 1, 1 VTGET cCodigo VTREAD VTSetKey(65,bKeyAnt) RETURN FUNCTON Teste() @ 2,1 VTSay 'TESTE' RETURN NL V&EeyBoard12 Tipo: TELNET VT100 Coloca uma cadeia de caracteres (string) no buffer de teclado Sintaxe VTKEYBOARD(<cCodigoTecla>) Parmetros <cCodigoTecla> , o conjunto de caracteres a ser colocado no buffer de teclado. Exemplo Automao e coleta de dados 1' 1' #include 'apvt100.ch' bKeyAnt := VTSetKey(65,{|| teste()}) CCodigo := space(6) @ 1, 1 VTGET cCodigo VTREAD VTSetKey(65,bKeyAnt) RETURN FUNCTON Teste() @ 2,1 VTSay 'TESTE' VTKeyBoard(chr(27)) RETURN NL V&0oI12 Tipo: TELNET VT100 Retorna a posio de linha do cursor na tela Sintaxe VTROW() --> nLinha Retorna VTROW() retorna a posio de linha do cursor na forma de um valor numrico inteiro. A faixa do valor de retorno varia entre zero e VTMAXROW(). Exemplo @ 0,0 VTSay "Teste @ VTRow()+1 ,0 VTSay "Teste2
V&Col12 Tipo: TELNET VT100 Retorna a posio de coluna do cursor na tela Sintaxe VTCOL() --> nCol Retorna VTCOL() retorna um valor numrico inteiro. A faixa do valor de retorno de zero at VTMAXCOL(). Exemplo @ 1, 1 VTSAY "Cliente: " + TRM(Cliente) @ VTROW(), VTCOL() + 1 VTSAY Status V&.n#ey12 Tipo: TELNET VT100 Extrai um caractere do buffer de teclado Sintaxe VTNKEY([<nSegundos>]) --> nCodnkey Parmetros <nSegundos> especifica a quantidade de segundos que VTNKEY() deve esperar por uma tecla. O valor pode ser especificado em incrementos do tamanho de at um dcimo de segundo. Se for especificado zero, o programa para at, que uma tecla seja pressionada. Caso <nSegundos> seja omitido, VTNKEY() no espera por uma tecla. Automao e coleta de dados 1( 1( Retorna VTNKEY() retorna um valor numrico inteiro de -39 at, 386, que identifica a tecla extrada do buffer de teclado. Caso o buffer de teclado esteja vazio, VTNKEY() retorna zero. Exemplo While .t. F Vtnkey(1) == 27 // correspondente a tela ESC exit Endf End V&MaxCol12 Tipo: TELNET VT100 Determina a coluna mxima visvel na tela Sintaxe VTMAXCOL() --> nColuna Retorna VTMAXCOL() retorna o nmero da coluna visvel mais a direita para fins de exibio. Exemplo @ 1, int(VTMaxCOL()/2) VTSAY "* V&Max0oI12 Tipo: TELNET VT100 Determina a mxima linha visvel na tela Sintaxe VTMAXROW() --> nLinha Retorna VTMAXROW() retorna o nmero da ltima linha visvel para fins de exibio. Descrio VTMAXROW() , uma funo de tratamento de tela que pode ser utilizada para determinar a m xima linha visvel da tela. Nmeros de linha e coluna comeam com zero em Clipper. Exemplo A seguinte funo definida pelo usurio, TamTela(), utiliza VTMAXROW() e VTMAXCOL() para retornar um vetor que contm o tamanho da tela corrente: FUNCTON TamTela RETURN { VTMAXROW(), VTMAXCOL() } V&Beep12 Tipo: TELNET VT100 Emite um beep Sintaxe VTBEEP([<nQtde>]) --> NL Parmetros <nQtde> especifica a quantidade de beep que ser emitido, Caso <nQtde> seja omitido, VTBEEP() emitira um beep. Retorna Automao e coleta de dados 2) 2) VTBEEP() retorna NL Exemplo VTBEEP(3) V&0everso12 Tipo: TELNET VT100 Ativa ou desativa o modo reverso da tela. Sintaxe VTREVERSO([<lRev>]) --> lReverso Parmetros <lRev> Se verdadeiro ativa, falso desativa o modo de tela. Caso <lRev> seja omitido, VTReverso() retorna o modo atual.
Retorna VTREVERSO() retorna o modo atual, verdadeiro que est em reverso, falso no est em reverso.
Exemplo #include 'apvt100.ch'
lReverso:= VTReverso(.t.) @ 0,0 VTSay "Teste 1 VTReverso(lReverso) @ 1,0 VTSay "Teste 2 V&ClearB$er12 Tipo: TELNET VT100 Limpa o buffer de teclado Sintaxe VTCLEARBUFFER() --> NL Retorna VTCLEARBUFFER() retorna NL Exemplo VTCLEARBUFFER() V&*lert12 Tipo: TELNET VT100 Mostra uma messagem na tela Sintaxe VTALERT(<cMsg>,[<cCaption>],[<lCenter>],[<nSleep>]) nTecla Parmetros <cMsg> Mensagem a ser exibida. <cCaption>Titulo da mensagem <lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize. <nSleep> > especifica a quantidade de tempo em milsimo de segundos em a mensagem permanecera na tela, Caso omito, aguardara que seja digitado Enter ou ESC. Retorna Automao e coleta de dados 21 21 VTALERT () retorna o cdigo da tecla digitada.
Exemplo VTAlert("Produto no cadastrado,Aviso,.t.,4000) V&Yes<o12 Tipo: TELNET VT100 Mostra uma messagem a espera de uma confirmao na tela. Sintaxe VTYESNO (<cMsg>,[<cCaption>],[<lCenter>]) lConfrime Parmetros <cMsg> Mensagem a ser exibida. <cCaption>Titulo da mensagem <lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize. Retorna VTYESNO () retorna o verdadeiro caso tenha confirmado.
Exemplo F ! VTYesNo('Confirma a alteracao','Atencao ',.T.) Return .F. ENDF
V&*!"oi!e12 Tipo: TELNET VT100 Executa um menu pop-up Sintaxe VTACHOCE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <actensMenu>, [<altensSelecionaveis>], [<cFuncaoUsuario>],[<ntemnicial>], [lNaoBranco] , [<lMsg>], [<nLinhaJanela>],[<lScroll>]) --> nPosicao Parmetros <nTopo>, <nEsquerda> e <nBase>, <nDireita> so as coordenadas do canto superior esquerdo e canto inferior direito da janela. Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna podem variar entre zero e VTMAXCOL(). <actensMenu> um vetor que contem as cadeias de caracteres que sero exibidas como sendo os itens de menu. Cada item de menu ser mais tarde identificado atravs de sua posio numrica neste vetor. <altensSelecionaveis> um vetor paralelo de valores lgicos, diretamente relacionados a <actensMenu> que especifica os itens de menu que podero ser selecionados. Os elementos podem ser valores lgicos ou cadeias de caracteres. Caso o elemento seja uma cadeia de caracteres, ele avaliado como uma expresso macro que dever retornar um tipo de dado lgico. Em ambos os casos, um valor de falso (.F.) significa que o item de menu correspondente no est disponvel, e um valor de verdadeiro (.T.) significa que est disponvel. <cFuncaoUsuario> o nome de uma funo definida pelo usurio que executada quando uma tecla no reconhecvel for pressionada. O nome da funo especificado como uma expresso caractere sem parnteses ou argumentos. Note que o comportamento de VTACHOCE() afetado pela presena deste argumento. Consulte o texto abaixo para maiores informaes. Automao e coleta de dados 22 22 <ntemnicial> a posio ocupada no vetor de <actensMenu> pelo item que aparecer em destaque quando o menu for exibido pela primeira vez. Caso voc especifique um item de menu que no esteja disponvel, ou caso voc no use argumento algum, o item que aparecer em destaque ser o primeiro item selecionvel do vetor. <lNaoBranco> Se for verdadeiro a opes do menu ser montado conforme o tamanho da opo desconsiderando os espaos em branco direita e esquerda. Caso seja negativa ou omitida a opo do menu ser montado conforme a dimenso da tela do VTACHOCE definida em <nEsquerda> e <nDireita>. <lMsg> Contedo tem que ser NL, parmetro reservado para implementao futura. <nLinhaJanela> o nmero da linha da janela na qual o item de menu inicial aparecer. Retorna VTACHOCE() retorna a posio numrica ocupada pelo item de menu selecionado no vetor de <actensMenu>. Se o processo de seleo for interrompido, VTACHOCE() retorna zero. Funo de usurio: Da mesma forma que as demais funes de interface com o usurio, VTACHOCE() aceita uma funo de usurio. A funo de usurio especificada quando voc deseja aninhar invocaes da funo VTACHOCE() para criar menus hierrquicos ou redefinir teclas. Modos de VTACHOCE() 0-nativo 1-Tentativa de passar incio da lista 2-Tentativa de passar final da lista 3-Normal 4-tens no selecionados
Aps a funo de usurio ter executado as operaes apropriadas ao modo VTACHOCE(), ela deve retornar um valor que solicite ao VTACHOCE() executar uma operao entre o seguinte conjunto de aes: Valores de Retorno da Funo de Controle de VTACHOCE() 0-Aborta seleo 1-Executa seleo 2-Continua VTACHOCE() 3-Vai para o prximo item cuja primeira letra for a tecla pressionada Exemplo acMenutens := {"Um,Dois, "-----", "Tres} alSelectabletens := {.T., .T., .F., .T.} nPosition := VTACHOCE(0, 0, 7, 19, acMenutens, alSelectabletens,TESTECTRL ) Function testectrl(modo,nElem,nElemW) f modo == 1 VtAlert('Top') Elseif Modo == 2 VtAlert('Bottom') Else f VTLastkey() == 27 VtAlert('sair') VTBeep(3) return 0 elsef VTLastkey() == 13 VtAlert('ok') VtBeep(1) return 1 Automao e coleta de dados 23 23 Endif Endf Return 2 V&*BroIse12 Tipo: TELNET VT100 Monta um browse com referencia a um array. Sintaxe VTABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <aCab>, [<atens>], [<aSize>], [<cFuncaoUsuario>],[<ntemnicial>]) --> nPosicao Parmetros <nTopo>, <nEsquerda> e <nBase>, <nDireita> so as coordenadas do canto superior esquerdo e canto inferior direito da janela. Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna podem variar entre zero e VTMAXCOL(). <aCab>, um vetor que contem os ttulos das colunas <atens>, um vetor que contem os dados a serem mostrados <aSize> , um vetor que contem o tamanho de cada coluna <cFuncaoUsuario> o nome de uma funo definida pelo usurio que executada quando uma tecla no reconhecvel for pressionada. O nome da funo especificado como uma expresso caractere sem parnteses ou argumentos. Note que o comportamento de VTABROWSE() afetado pela presena deste argumento. Consulte o texto abaixo para maiores informaes. <ntemnicial> a posio ocupada no vetor de < atens > pelo item que aparecer em destaque quando o menu for exibido pela primeira vez. Caso voc especifique um item de menu que no esteja disponvel, ou caso voc no use argumento algum, o item que aparecer em destaque ser o primeiro item selecionvel do vetor. Retorna VTABROWSE() retorna a posio numrica ocupada pelo item de menu selecionado no vetor de <atens>. Se o processo de seleo for interrompido, VTABROWSE() retorna zero. Funo de usurio: Utilizada da mesma forma que VTACHOCE. Modos de VTABROWSE() 0-nativo 1-Tentativa de passar incio da lista 2-Tentativa de passar final da lista 3-Normal 4-tens no selecionados
Aps a funo de usurio ter executado as operaes apropriadas ao modo VTABROWSE() ela deve retornar um valor que solicite ao VTABROWSE() executar uma operaao entre o seguinte conjunto de aes: Valores de Retorno da Funo de Controle de VTABROWSE()
0-Aborta seleo 1-Executa seleo 2-Continua VTABROWSE() 3-Vai para o prximo item cuja primeira letra for a tecla pressionada Exemplo Automao e coleta de dados 24 24 #NCLUDE 'APVT100.CH' VTClear acab :={"Codigo","Cod ","Descricao ","UM"} aSize := {10,4,20,10} nPos := 12 atens :={{"1010 ",10, "DESCRCAO1","UN "},; {"2010 ",20,"DESCRCAO2","CX "},; {"2020 ",30,"DESCRCAO3","CX "},; {"2010 ",40,"DESCRCAO4","CX "},; {"2020 ",50,"DESCRCAO5","CX "},; {"3010 ",60,"DESCRCAO6","CX "},; {"3020 ",70,"DESCRCAO7","CX "},; {"3030 ",80,"DESCRCAO7","CX "},; {"3040 ",90,"DESCRCAO7","CX "},; {"2010 ",40,"DESCRCAO4","CX "},; {"2020 ",50,"DESCRCAO5","CX "},; {"3010 ",60,"DESCRCAO6","CX "},; {"3020 ",70,"DESCRCAO7","CX "},; {"3030 ",80,"DESCRCAO7","CX "},; {"3050 ",100,"DESCRCAO7","CX "}} npos := VTaBrowse(0,0,7,15,aCab,atens,aSize,'testectrl',nPos) . . . Function testectrl(modo,nElem,nElemW) f modo == 1 VtAlert('Top') Elseif Modo == 2 VtAlert('Bottom') Else f VTLastkey() == 27 VtAlert('sair') VTBeep(3) return 0 elsef VTLastkey() == 13 VtAlert('ok') VtBeep(1) return 1 Endif Endf Return 2 V&?BBroIse12 Tipo: TELNET VT100 Monta um browse com referencia a uma tabela Sintaxe VTDBBROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,<cAlias>, <aCab>, [<aFields>], [<aSize>], [<cFuncaoUsuario>],[<cTop>],[<cBottom>]) --> nRecno Parmetros <nTopo>, <nEsquerda> e <nBase>, <nDireita> so as coordenadas do canto superior esquerdo e canto inferior direito da janela. Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna podem variar entre zero e VTMAXCOL(). <cAlias>, uma string com alias da tabela <aCab>, um vetor que contem os ttulos das colunas <aFields>, um vetor que contem os campos do alias Automao e coleta de dados 2$ 2$ <aSize> , um vetor que contem o tamanho de cada coluna <cFuncaoUsuario> o nome de uma funo definida pelo usurio que executada quando uma tecla no reconhecvel for pressionada. O nome da funo especificado como uma expresso caractere sem parnteses ou argumentos. Note que o comportamento de VTDBBROWSE () afetado pela presena deste argumento. Consulte o texto abaixo para maiores informaes. <cTop> string com a condio de validao de top <cBottom> string com a condio de validao de Bottom Retorna VTDBBROWSE () retorna o recno() Se o processo de seleo for interrompido, VTDBBROWSE () retorna zero. Funo de usurio: Utilizada da mesma forma que VTACHOCE e VTaBROWSE. Modos de VTDBBROWSE () 0-nativo 1-Tentativa de passar incio da lista 2-Tentativa de passar final da lista 3-Normal 4-tens no selecionados
Aps a funo de usurio ter executado as operaes apropriadas ao modo VTDBBROWSE () ela deve retornar um valor que solicite ao VTDBBROWSE () executar uma operao entre o seguinte conjunto de aes: Valores de Retorno da Funo de Controle de VTDBBROWSE () 0-Aborta seleo 1-Executa seleo 2-Continua VTDBBROWSE () 3-Vai para o prximo item cuja primeira letra for a tecla pressionada Exemplo VtClear aFields := {"B1_COD","B1_DESC","B1_UM","B1_PCM"} aSize := {16,20,10,15} aHeader := {'COD','DESCRCAO ','UM',"% CM"} sb1->(dbseek(xfilial()+'00000000000001')) nRecno := VTDBBrowse(0,0,7,15,"SB1",aHeader,aFields,aSize,'testectrl',; "xfilial('SB1')+'00000000000001'",; "xfilial('SB1')+'00000000000002'") vtclear() Exemplo apli!aJo &elnet V&@99 *!+clude ,-"ot.eus/c., *!+clude ,a-0t1))/c., 12 P"o#"ama e3em-lo -a"a Rad!o F"e456+c!a 21 Fu+ct!o+ AICD7)3$839ocal:39ocal!;< 9ocal cEt!4 => ?-ace8@am?338ACB)CCDDE@2A<E1F< 9ocal lG.e+ => /t/ P"!0ate c9ocal P"!0ate c9ocal!; P"!0ate l9ocal!; => 8Get78,7C9DCA9IH,< >> ,?,< P"!0ate +9!+=> ) Automao e coleta de dados 2% 2% IF 39ocal * A A /a+d/ 39ocal * NI9 c9ocal => 39ocal c9ocal!; => 39ocal!; lG.e+ => /I/ E+dII G.!le /t/ +9!+=> ) II lG.e+ c9ocal => ?-ace82< c9ocal!; => ?-ace82)< E+dII 7@Clea"8< J ):) 7@?aK ,I+0e+ta"!o, J 1:) 7@?aK ,Almo3a"!Iado=, J 2:) 7@Get c9ocal -!ct AJLA 7A9ID a!0)3$9oc8< M.e+ lM.e+ II l9ocal!; J 3:) 7@?aK ,9ocal!;acao=, J 4:) 7@Get c9ocal!; 7A9ID a!0)3$9oc;8< M.e+ lM.e+ +9!+ => $ Else +9!+ => 3 E+dII 7@Read II 7@9astNeK8< >> 2& 11 CA?D D U?UARID PRECIDNE E?C DU C9EAR E3!t E+d!I II L a!0)3$C"!aCBA8< /DR/ L a!0)3$CBB8< II L lG.e+ e3!t Else 9oo- E+dII E+dII J +9!+OO:) 7@?aK ,Et!4ueta , J +9!+OO:) 7@Get cEt!4 7A9ID a!0)3$CBC8cEt!4< 7@Read IF 7@9astNeK8< >> 2& a!0)3$F!m8< E+dII II L lG.e+ e3!t E+dII E+dDo Retu"+ 11FUNCAD DE 7A9IDACAD DA 9DCA9IHACAD ?tat!c Fu+ct!o+ a!0)3$9oc8< II Em-tK8c9ocal< 7@Bee-83< 11EI@E U BEEP ND R/F/ 7@Ale"t8AAlmo3a"!Iado +ao -ode se" em P"a+coLA:,A0!so,:/@/:2)))< 11D?@RA A EN?AGE 7@NeKBoa"d8c."82)<< 11 9IPA D GE@ A@I7D C@R9 Q@ Retu"+ /F/ E+d!I Automao e coleta de dados 2& 2& Retu"+ /@/ / / / / F&NCOE! PARA M'CROTERM'NAL% &erCls12 Tipo: Microterminal Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela com espaos em branco. Sintaxe TerCls() Retorna NL Exemplo TerCls() &erSay12 Tipo: Microterminal Escreve no display do microterminal a string especificada pelo parmetro <cMsg> na linha <nLin> e coluna <nCol>. Sintaxe TerSay(nLin,nCol,cMsg) Parmetros nLin = Linha onde se deseja colocar a mensagem nCol = Coluna onde se deseja colocar a mensagem cMsg = Mensagem que se deseja colocar na tela Retorna NL Exemplo TerSay(01,00,"Pressione <ENTER> para continuar.") &er.n#ey12 Tipo: Microterminal Especifica a quantidade de segundos que Ternkey() deve esperar por uma tecla. O valor pode ser especificado em incrementos de um segundo. Se for especificado zero, o programa para ate que uma tecla seja pressionada. Sintaxe Ternkey([nSegundos]) Parmetros nSegundos = Numero de segundos a aguardar Retorna Codigo da Tecla pressionada, se no foi pressionado nada o valor retornado e' "" Exemplo While !TerEsc() Automao e coleta de dados 2' 2' cTecla := Ternkey(0) TerSay(01,00,"Tecla Pressionada "+cTecla) EndDo &erCB$er12 Tipo: Microterminal Libera o buffer de teclado do microterminal, esse comando e' util em rotinas de interface com o usuario de forma a garantir que as teclas a serem processadas do buffer do teclado sao apropriadas a atividade corrente e nao pendentes de uma atividade anterior. Sintaxe TerCBuffer() Retorna Caracteres que estavam pendentes no buffer no teclado do microterminal. Exemplo TerCBuffer() TerSay(01,00,"Pressione qualquer tecla para continuar.") Ternkey(0) &erGet0ead12 Tipo: Microterminal Executa uma entrada de dados no microterminal. Sintaxe TerGetRead(nLin,nCol,uVar,cPict,[bValid],[bWhen]) Parmetros nLin - Linha a se executar a entrada de dados. nCol - Coluna a se executar a entrada de dados. uVar - Variavel a se devolver o valor da entrada de dados. cPict - Picture da entrada de dados, as pictures disponiveis sao: "X" - Para entrada de caracteres numricos(0-9) e letras (A-Z). "9" - Para entrada de caracteres numricos(0-9). "A" - Para entrada de caracteres letra(A-Z). "*" - Para entrada de caracteres numricos(0-9) e letras (A-Z) mas exibindo "*" na tela. "." - Exibe ponto decimal na tela. "/" - Exibe a barra ("/") na tela. bValid - Code Block contendo a validao da entrada de dados. bWhen - Code Block contendo a condio para se executar a entrada de dados. Retorna NL Exemplo lDigNome := .T. cNome := Space(10) cdade := Space(02) TerCls() TerSay(00,00,"Nome:") TerGetRead(00,06,@cNome,"XXXXXXXXXX",{||!Empty(cNome)},{||lDigNome}) TerGetRead(00,00,cdade,"99",{||Val(cdade)>0}) Observaes A varivel da entrada de dados deve ser do tipo caracter. &erEs!12 Tipo: Microterminal Automao e coleta de dados 2( 2( Verifica se a ultima tecla pressionada no microterminal foi a DEL (consideramos como equivalente a <ESC> no teclado normal). Sintaxe TerEsc() Retorna .T. se a ultima tecla pressionada foi <DEL> ou .F. se no foi Exemplo TerCls() While .T. cNome := Space(10) TerSay(00,00,"Nome:") TerGetRead(01,07,@cNome,"XXXXXXXXXX") f TerEsc() Exit Endf EndDo TerCls() TerSay(01,00,"Finalizando...") &erBeep12 Tipo: Microterminal Emite um sinal sonoro pelo 'buzzer' do Microterminal, caso o microterminal no possua este dispositivo instalado nada acontece. Sintaxe TerBeep([nVezes]) Parmetros nVezes - Numero de sinais sonoros a emitir. Retorna NL Exemplo TerBeep(3) // executa 3 sinais sonoros TerBeep() // executa apenas 1 sinal sonoro
&er<$m&er12 Tipo: Microterminal Retorna o numero do microterminal especificado no Monitor de microterminais. Sintaxe TerNumTer() Retorna Numero do microterminal Exemplo nTerminal := TerNumTer() TerSay(00,00,"Terminal : "+StrZero(nTerminal))
&erSave12 Tipo: Microterminal Grava uma regiao da tela do microterminal para posterior exibio. Sintaxe TerSave([nTopo],[nEsquerda],[nBase],[nDireita]) Parmetros nTopo - Linha inicial da regio de tela a ser gravada. nEsquerda - Coluna inicial da regio de tela a ser gravada Automao e coleta de dados 3) 3) nBase - Linha final da regio de tela a ser gravada. nDireita - Coluna final da regio de tela a ser gravada. Retorna regiao de tela especificada na forma de cadeia de caracteres. Exemplo TerCls() TerSay(00,00,"Tela a ser salva.") cTela := TerSave(00,00,01,40) TerCls() TerRestore(00,00,01,40,cTela)
&er0estore12 Tipo: Microterminal Restaura a regio de tela do microterminal gravada pela funo TerSave. Sintaxe TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela) Parmetros nTopo - Linha inicial da regio de tela a ser restaurada. nEsquerda - Coluna inicial da regio de tela a ser restaurada. nBase - Linha final da regio de tela a ser restaurada. nDireita - Coluna final da regio de tela a ser restaurada. cTela - E' uma cadeia de caracteres que contem a regio de tela gravada. Retorna NL Exemplo TerCls() TerSay(00,00,"Tela a ser salva.") cTela := TerSave(00,00,01,40) TerCls() TerRestore(00,00,01,40,cTela) &erPBegin12 Tipo: Microterminal Executa funo para inicio de impresso na porta paralela ou serial do microterminal. Sintaxe TerPBegin([nTerm],cSerPar) Parmetros nTerm - Numero do microterminal a iniciar a impresso, se nada for especificado ser considerado o numero definido no Monitor de Microterminais. cSerPar - nforma qual a sada utilizada para impresso, 'S' para utilizar a sada SERAL ou 'P' para se utilizar a sada PARALELA. Retorna NL Exemplo TerPBegin(,"S") TerPrint("Testando a impresso na sada SERAL") TerPEnd() TerPBegin(,"P") TerPrint("Testando a impresso na sada PARALELA") TerPEnd() Automao e coleta de dados 31 31 &erPrint12 Tipo: Microterminal Envia a string especificada para a sada de impresso definida pela funo TerPBegin. Sintaxe TerPrint( cString, [lSalta] ) Parmetros cString - Cadeia de caracteres a enviar para a sada de impresso. lSalta - nforme .F. para no saltar a linha na impressora aps o envio de cString ou .T. para que se salte uma linha apos o envio de cString, se no especificado .T. e' assumido. Retorna NL Exemplo TerPBegin(,"P") TerPrint("mprimindo uma linha e saltando para proxima linha") TerPrint("mprimindo a linha e nao saltando.",.F.) // no salta a linha TerPrint("Continuando da linha anterior.") TerPEnd() &erPEnd12 Tipo: Microterminal Finaliza impresso iniciada pela funo TerPBegin. Sintaxe TerPEnd() Retorna NL Exemplo TerPBegin(,"S") TerPrint("Testando a impresso na sada SERAL") TerPEnd() &er.sK$it12 Tipo: Microterminal Funo utilizada em pontos do programa para se verificar se o Monitor esta tentando finalizar a aplicao do microterminal, deve ser utilizada em lugares do programa em que o fechamento da aplicao no cause transtornos, como por exemplo, apos a concluso de uma venda. Sintaxe TersQuit() Retorna .F. Exemplo While .T. TerCls() TerSay(00,00,"nicando Venda...") . . . . / TerSay(00,00,"Venda Finalizada...") Automao e coleta de dados 32 32 TersQuit() // caso o monitor esteja finalizando a aplicao somente //neste ponto a finalizao ser efetuada, garantindo //assim que a venda seja concluda. EndDo Exemplo apli!aJo Mi!roterminal *INC9UDE ,PRD@REU?/CR, 121 E3em-lo -a"te de -"o#"amao -a"a m!c"ote"m!+al 121 Fu+ct!o+ AICD@)4)8cIm-CB< 9ocal c7olume 9ocal cEmP 9ocal cD!s- 9ocal cP"oduto P"!0ate cPed!do P"!0ate cCodEmP P"!0ate cIm- => cIm-CB P"!0ate +@amCB) => ' cIm- => PadR8All@"!m8cIm-<:%< II LCB$QS8DP?eeT83F!l!al8<OcIm-<< Co+Dut8,Cod!#o da !m-"esso"a do m!c"ote"m!+al ,O?t"He"o8@e"Num@e"8<:2<OU , +ao e3!ste 8,OcIm-O,<,< 11 Retu"+ E+dII G.!le /t/ @e"IsVu!t8< c7olume => ?-ace8)'< cEmP => ?-ace8)3< cCodEmP => ?-ace8)'< cD!s- => ?-ace8)3< cP"oduto => ?-ace8)'< @e"Cls8< @e"CBuIIe"8< @e"?aK8)):)):,7olume=,< @e"?aK8)1:)):,D!#!te WEN@ERS -a"a +o0o 0olume/,< @e"GetRead8)):)&:Jc7olume:,XXXXXXXX,:YZZ@7ld7ol8Jc7olume:JcEmP<[< II @e"Esc8< 9oo- E+dII @e"Cls8< @e"?aK8)):)):,7olume=,< @e"?aK8)):1(:,EmP=,< @e"?aK8)):)&:c7olume< @e"GetRead8)):23:JcEmP:,XXX,:YZZ @7ldEmP8JcEmP:c7olume<[:YZZ Em-tK8cEmP<[< II @e"Esc8< 9oo- E+dII @e"?aK8)):23:cEmP< @e"?aK8)1:)):,D-e"ado"=,< @e"GetRead8)1:)(:JcCodEmP:,XXXXXXXX,:YZZ @7ldCEmP8<[< II @e"Esc8< 9oo- Automao e coleta de dados 33 33 E+dII @e"Cls8< @e"?aK8)):)):,7olume=,Oc7olumeO, EmP=,OcEmPO, D-e"=,OcCodEmP< 11****** @e"?aK8)1:)):,P"oduto=,< 11 @e"GetRead8)1:)':JcP"oduto:Re-l!cate8,X,:)'<:YZZ @7ldP"od8JcP"oduto:JcD!s-:Jc7olume<[< @e"Cls8< @e"CBuIIe"8< @e"IsVu!t8< E+dDo Retu"+ /@/ ?tat!c Fu+ct!o+ @7ld7ol8c7olume:cEmP:c7ol2< 9ocal aRet=>Y[ 9ocal c?a0@el 9ocal cResBuII ?lee-81))< 11 -ausa -a"a o PuIIe" se" com-letado LLL cResBuII => @e"CBuIIe"8< II cResBuII >> C."813< cResBuII => ,, E+dII c7olume O>cResBuII II c7ol2 >> NI9 /a+d/ LEm-tK8c7olume< aRet => CBRetEt!8c7olume:,)$,< II le+8aRet< >> ) c?a0@el => @e"?a0e8)1:)):)1:4)< @e"?aK8)1:):Pad"8,Et!4ueta !+0al!daLLL,:4)<< 11 @e"Bee-84< ?lee-82)))< @e"Resto"e8)1:)):)1:4):c?a0@el< Retu"+ /F/ E+dII c7olume => aRetE1F ElseII c7ol2 * NI9 aRet => CBRetEt!8c7ol2:,)$,< II le+8aRet< >> ) @e"?aK8)1:):Pad"8,Et!4ueta !+0al!daLLL,:4)<< 11 @e"Bee-84< ?lee-82)))< @e"?aK8)1:)):Pad"8,Co+I!"me o 7olume,:4)<< 11 Retu"+ /F/ E+dII c7ol2 =>aRetE1F E+dII II c7ol2*NI9 /a+d/ c7olume*c7ol2 @e"?aK8)1:):Pad"8,Cod!#o de 0olume d!Ie"e+teLLL,:4)<< 11 @e"Bee-84< ?lee-82)))< @e"?aK8)1:)):Pad"8,,:4)<< Retu"+ /F/ E+dIF II Em-tK8c7olume< c7olume => ?-ace81)< Automao e coleta de dados 34 34 Retu"+ /t/ E+dII 12 / / / 21 Retu"+ /@/ ?tat!c Fu+ct!o+ @7ldEmP8cEmP:c7olume< II Em-tK8cEmP< @e"?aK8)1:)):Pad"8,EmPala#em +ao -ode se" P"a+co/,:4)<< 11 @e"Bee-84< ?lee-82)))< @e"?aK8)1:)):?-ace84)<< Retu"+ /F/ E+dII Retu"+ /@/ / / / Automao e coleta de dados 3$ 3$