You are on page 1of 80

GUIA DE REFERNCIA RPIDA AdvPL

GUIA DE REFERNCIA RPIDA AdvPL

NDICE
AbreExcl..........................................................................................................................................................3 Activate Dialog................................................................................................................................................3 Aleatorio..........................................................................................................................................................3 Avalimp...........................................................................................................................................................4 Aviso................................................................................................................................................................5 AxCadastro......................................................................................................................................................5 @ n1,n2 BmpButton........................................................................................................................................5 @... Bitmap... Size...........................................................................................................................................6 @...To...Browse...............................................................................................................................................6 @...Button........................................................................................................................................................6 Cabec...............................................................................................................................................................7 CalcEst.............................................................................................................................................................7 CalcSaldo.........................................................................................................................................................8 Capital..............................................................................................................................................................8 CGC.................................................................................................................................................................8 @...CheckBox...Var.........................................................................................................................................9 ChkFile............................................................................................................................................................9 Close..............................................................................................................................................................10 CloseOpen.....................................................................................................................................................10 ClosesFile......................................................................................................................................................10 @...ComboBox...Itens...Size.........................................................................................................................10 Comp3...........................................................................................................................................................11 ConfirmSX8...................................................................................................................................................12 Contar............................................................................................................................................................12 ConvMoeda...................................................................................................................................................12 Credito...........................................................................................................................................................12 CriaTrab.........................................................................................................................................................13 CriaVar..........................................................................................................................................................13 DataValida.....................................................................................................................................................13 Debito............................................................................................................................................................14 DeComp3.......................................................................................................................................................14 @...To...Dialog..............................................................................................................................................14 Funes para impresso de etiquetas padro ZPL,ALLEGRO e ELTRON.............................................49 COMANDOS PARA TELNET VT100..........................................................................................................57 FUNCOES PARA TELNET VT100..............................................................................................................61 FUNCOES PARA MICROTERMINAL.......................................................................................................72

GUIA DE REFERNCIA RPIDA AdvPL

FUNES PARA O INTERPRETADOR XBASE


A seguir so apresentadas as funes SIGA Advanced para uso junto ao RD-MAKE / Interpretador xBASE. Na linha seguinte ao nome de cada funo informado onde normalmente ela utilizada, a saber: Processamento: funes usadas em clculos, acesso a arquivos e tratamentos em geral; Impresso: funes usadas exclusivamente na gerao de Relatrios; Telas: funes usadas na gerao de telas, seja DOS ou Windows;

AbreExcl
Tipo: Processamento Fecha o arquivo e reabre exclusivo. Esta funo fecha o arquivo cujo alias est expresso em <cAlias> e o reabre em modo exclusivo para proceder operaes em que isto necessrio, como por exemplo, PACK. Entretanto, prefervel utilizar o depurador do sistema para proceder estas operaes. Se outra estao estiver usando o arquivo, o retorno ser .F.. Sintaxe AbreExcl(cAlias) Parmetros cAlias Nome do Alias do Arquivo. Deve ter obrigatriamente sua estrutura definida no SX3. Exemplo
// IF AbreExcl(SI2) Pack ENDIF AbreExcl( ) dbGoTop( )

Activate Dialog
Tipo: Tela Windows Ativa uma janela previamente definida na funo Dialog e executa os GETs, botes e outros objetos. Sintaxe ACTIVATE DIALOG cVar <CENTERED> [On Init cFuncInit] [Valid cFuncValid] Parmetros cVar Varivel utilizada na funo Dialog para definio da janela. cFuncInit Funo executada automaticamente na abertura do dilogo na tela (Opcional). cFuncValid Funo executada para validar o fechamento da janela de dilogo. Deve retornar um valor lgico (.T. ou .F.) (Opcional) Comentrios A clusula <CENTERED> opcional, se omitida assume as coordenadas definidas na criao da janela. Exemplo Ver exemplo no programa RDDEMO apresentado no final deste Manual. Ver tambm Funo Dialog

Aleatorio
Tipo: Processamento Gera um nmero aleatrio de acordo com a semente passada. Esta funo retorna um nmero aleatrio menor ou igual ao primeiro parmetro informado, usando como semente o segundo parmetro. recomendado que esta semente seja sempre o ltimo nmero aleatrio gerado por esta funo. Sintaxe Aleatorio(nMax,nSeed) Parmetros nMax Nmero mximo para a gerao do nmero aleatrio nSeed Semente para a gerao do nmero aleatrio Retorna nRet Nmero aleatrio retornado Exemplo
// Exemplo do uso da funo Aleatorio:

GUIA DE REFERNCIA RPIDA AdvPL

nSeed := 0 For i := 1 to 100 nSeed := Aleatorio(100,nSeed) ? Str(i,3)+ numero aleatorio gerado: +Str(nSeed,3) Next i inkey(0) Return

Avalimp
Tipo: Relatrios Configura a impressora atravs dos parmetros. Esta funo usada em relatrios especficos que no se utilizam da funo Cabec. Imprimindo o retorno desta funo na impressora, ela se encarregar de configurar a impressora de acordo com o arquivo de driver escolhido, e com as configuraes escolhidas pelo usurio definidas no array aReturn. Sintaxe AvalImp(nLimit) Parmetros nLimit Tamanho do relatrio em colunas. Pode ser 80, 132 ou 220 (respec-tivamente para relatrios de tamanho P,M e G). Retorna cControl String com caracteres de controle, dependente das configuraes escolhidas pelo usurio e do arquivo de driver especificado. Exemplo
// Exemplo de uso da funo AvalImp: #IFNDEF WINDOWS #DEFINE PSAY SAY #ENDIF cCbTxt:= cCbCont:= nOrdem:= 0 nAlfa:= 0 nZ:= 0 nM:= 0 cTamanho:= G cLimite:= 220 cTitulo:= PADC(Nota Fiscal,74) cDesc1:= PADC(Este programa ir emitir a Nota Fiscal de Entrada/Sada,74) cDesc2:= cDesc3:= PADC(da Feeder Industrial Ltda.,74) cNatureza:= aReturn:= {Especial, 1,Administrao, 1, 2, 2,,1} cNomeProg:= NFEEDER cPerg:= ENTSAI nLastKey:= 0 lContinua:= .T. nLi:= 0 wnrel:= NFEEDER nTamNf:=72 // Apenas Informativo Pergunte(cPerg,.F.) // Pergunta no SX1 cString:=SF2" wnrel:= SetPrint(cString,wnrel,cPerg,cTitulo,cDesc1,cDesc2,cDesc3,.T.) SetDefault(aReturn,cString) If nLastKey == 27 Return Endif #IFDEF WINDOWS RptStatus({|| Execute(Relato)}) Return #ENDIF Function Relato SetPrc(0,0) // Aqui est a chamada da funo AvalImp. Configura a // impressora de acordo com as definies em aReturn // escolhidas pelo usurio na funo SetPrint @ 00,00 PSAY AvalImp(220) dbSelectArea(SF2) dbSeek(xFilial()+mv_par01+mv_par03,.T.) // O programa segue normalmente... Return

GUIA DE REFERNCIA RPIDA AdvPL

Aviso
Tipo: Tela DOS/Windows Monta uma janela exibindo o texto desejado e, opcionalmente, disponibilizando opes de escolha para o usurio. Sintaxe Aviso(cTitulo,cMensagem,aOpcoes) Parmetros cTitulo Titulo da janela. cMensagem Mensagem para ser exibida no interior da janela. O tamanho mximo de 90 caracteres. aOpcoes Array de caracteres com as opes para a montagem de menu (na verso DOS) ou dos botes (na verso Windows). Retorna nResp Retorno. Retorna o nmero da opo escolhida pelo usurio. Exemplo
// Exemplo de uso da funo Aviso: While .T. GravaArq() // Funo qualquer (apenas p/exemplo) If !File(TESTE.TXT) aOp:= {Sim,Nao,Cancela} cTit:= Atencao! cMsg:= O arquivo TESTE.TXT nao foi gravado! cMsg:= cMsg + Tenta novamente? nOp:= Aviso(cTit,cMsg,aOp) If nOp == 1 // Sim Loop ElseIf nOp == 3 // Cancela Return Else // Nao ou <ESC> Exit Endif Endif Exit EndDo // Faz o processamento... Return

AxCadastro
Tipo: Processamento Gerao de modelo 1. Rotina para criao e manuteno de cadastros no padro do SIGA Advanced, contendo as opes padronizadas: PESQUISA, INCLU-SO, ALTERAO, VISUALIZAO e EXCLUSO. Disponibiliza o Browse e todas as funes de cadastramento padro. Sintaxe AxCadastro(cAlias,cTitulo,cDel,cOk) Parmetros cAlias Alias do arquivo. Deve obrigatoriamente ter sua estrutura definida no SX3. cTitulo Ttulo da Janela. cDel Funo para validar a excluso. cOk Funo para validar a Incluso/Alterao. Comentrios Deve ser utilizada para editar arquivos especficos (Famlia SZ?), sendo seme-lhante aos cadastros de Clientes, Fornecedores e etc... Exemplo
// Exemplo de uso de cadastro de arquivo especifico: AxCadastro(SZ1,Cadastro de Descontos,.T.",.T.) Return

@ n1,n2 BmpButton
Tipo: Tela Windows Cria um boto de bitmap padro do SigaAdv Win. Sintaxe @ nLinha,nColuna BMPBUTTON TYPE nBotao ACTION cFuncao OBJECT oBtn Parmetros nLinha Nmero da linha superior nColuna Nmero da coluna superior

GUIA DE REFERNCIA RPIDA AdvPL

nBotao Nmero do boto padronizado cFuncao Funo que ser executada oBtn Objeto associado ao boto Comentrios Para executar funes definidas em um mesmo .PR? utilizar a funo Execute(Nome da funo) ou ExecBlock(Nome do Arquivo) para chamar outro .PR?. Exemplo Ver exemplo no programa RDDEMO apresentado no final deste Manual.

@... Bitmap... Size


Tipo: Tela Windows Define a rea em que ser mostrado um BITMAP na janela. Sintaxe @ nLinha,nColuna BITMAP SIZE nAltura,nLargura FILE cArq Parmetros nLinha Nmero da Linha superior nColuna Nmero da Coluna superior nAltura Altura de apresentao do BITMAP nLargura Largura de apresentao do BITMAP cArq Nome do arquivo BITMAP Exemplo Ver exemplo no programa RDDEMO apresentado no final deste Manual.

@...To...Browse
Tipo: Tela Windows Ativa Browse padro SigaAdv Win. Sintaxe @ nLinha1,nColuna1 TO nLInha2,nColuna2 BROWSE cAlias <ENABLE> cCor Parmetros nLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior nColuna2 Nmero da coluna inferior cAlias Alias do Arquivo (apenas arquivos com estrutura no SX3) cCor Expresso que identifica a cor da marca do registro (opcional) Exemplo Marca Verde - Titulo em aberto Marca Vermelha - Titulo pago Comentrios A clusula <ENABLE> opcional, se for omitida no ser disponibilizada coluna que identifica situao do registro (Cor verde/vermelha).

@...Button
Tipo: Tela Windows Cria um boto com texto. Sintaxe @ nLinha,nColuna BUTTON cTexto SIZE nAltura,nLargura ACTION cFuno Object oBtn Parmetros nLinha Nmero da linha superior nColuna Nmero da coluna superior cTexto Texto que ser apresentado no boto. Deve incluir um _ antes da letra que utilizada como Hot Key. Ex.: ( _Salvar,Edi_Tar) nAltura Altura do boto nLargura Largura do boto cFuno Funo que ser executada Object oBtn Objeto associado ao boto.

GUIA DE REFERNCIA RPIDA AdvPL

Comentrios Para executar funes definidas em um mesmo .PR? utilizar a funo Execute(Nome da funo) ou ExecBlock(Nome do Arquivo) para chamar outro .PR?. Exemplo Ver exemplo no programa RDDEMO apresentado no final deste Manual.

Cabec
Tipo: Impresso Esta funo imprime, na impressora selecionada, o cabealho padro dos relat-rios do SIGA Advanced. Devolve o nmero da ltima linha impressa para que seja dada continuidade ao relatrio. Sintaxe Cabec(cTtulo, cTexto1, cTexto2, cProg, cLargura, cControle) Parmetros cTtulo Ttulo do Relatrio cTexto1 Extenso da primeira linha do cabealho cTexto2 Extenso da segunda linha do cabealho cProg Nome do Programa cLargura Largura do relatrio (P/ M/ G) cControle Caractere de controle da impressora (numrico) Retorna nLinha Nmero da ltima linha impressa no cabealho Exemplo
cTitulo := Relao dos Adiantamentos cCabec1 := Cdigo Item Conta Contbil CCusto Projeto Data Valor cCabec2 := ----------- ------- ----------------------- ------------ ------------ -------- -------- cPrograma := ATRF090 cTamanho := P nCaracter := 15 : cRel:=SetPrint(cAlias, cPrograma , , @cTitulo, cDesc1, cDesc2, cDesc3 , .T., aOrd ) SetDefault(aReturn, cString) : nLinha:=Cabec(cTitulo, cCabec1, cCabec2, cPrograma, cTamanho, nCaracter) While !EOF() nLinha:=nLinha+1 @nLinha,1 Say SB1->B1_CODIGO

CalcEst
Tipo: Processamento e Planilha Devolve a quantidade e saldos do estoque de um produto/almoxarifado em uma determinada data. Esta funo utilizada para a obteno dos saldos iniciais em estoque na data em referncia. Sintaxe CalcEst(cProduto, cAlmox, dData) Parmetros cProduto Produto a ser pesquisado cAlmox Almoxarifado a pesquisar dData Data desejada Retorna aArray Array contendo: Elemento 1 - Quantidade inicial em estoque na data Elemento 2 - Custo inicial na data na moeda 1 Elemento 3 - Custo inicial na data na moeda 2 Elemento 4 - Custo inicial na data na moeda 3 Elemento 5 - Custo inicial na data na moeda 4 Elemento 6 - Custo inicial na data na moeda 5 Elemento 7 - Quantidade inicial na segunda unidade de medida Exemplos
aSaldos:=CalcEst(SB1->B1_COD,SB1->B1_LOCPAD, dDataBase) nQuant:=aSaldos[1]

GUIA DE REFERNCIA RPIDA AdvPL

CalcSaldo
Tipo: Processamento e Planilha Calcula o saldo atual de uma determinada conta contbil at um determinado perodo. A conta deve estar posicionada no arquivo SI1 ou SI7, de acordo com a moeda, antes da chamada desta funo. Sintaxe CalcSaldo(nPer,nMoeda,lSalAnt) Parmetros nPer Perodo (1 a 17) que ser usado como limite para o clculo de saldo. nMoeda Moeda para o clculo. Se no informada, assumida a moeda 1. lSalAnt Indica se deve (.T.) ou no (.F.) considerar o saldo inicial da conta. Se no informado, assumido verdadeiro (.T.). Retorna nSld Retorna o Saldo atual da conta na moeda desejada. Exemplos
// Exemplo de uso da funo CALCSALDO: cConta := SA1->A1_CONTA dbSelectArea(SI1) dbSeek(xFilial(SI1)+cConta) ? Saldo atual da conta +cConta+: ? CalcSaldo(Periodo()) Return

Capital
Tipo: Processamento Transforma as letras iniciais em Maisculas e as demais em Minsculas. Sintaxe Capital(cTexto) Parmetros cTexto Texto a ser convertido Exemplo
cCapital:=Capital(TEXTO MAIUSCULO) // O retono ser Texto Maisculo

CGC
Tipo: Processamento Consiste o CGC digitado, tomando como base o algoritmo nacional para verificao do dgito de controle. Esta funo procede um clculo do dgito verificador do nmero do Cadastro Geral de Contribuintes do Ministrio da Fazenda. utilizado o dgito padro mdulo 11 para verificar se as duas ltimas posies da string passada, correspondem a dgitos verificadores vlidos. Calculando primeiro o dgito das 12 primeiras posies e agregando o dgito encontrado ao fim da string, calcula o dgito das 13 posies, obtendo o segundo dgito. Retorna uma expresso lgica verdadeira se as duas ltimas posies do CGC digitado coincidem com o calculado. Sintaxe CGC(ExpC1) Parmetros ExpC1 String de caracteres representando o nmero do C.G.C. sem pontos e traos separadores. Caso este argumento no seja passado para a funo, esta considerar o GET corrente. Retorna ExpL1 Expresso lgica .T. se o CGC vlido (dgito verificador confere) ou .F. se o dgito verificador no confere. Exemplos
cCGC:= Space(14) : @10,16 GET cCGC Picture @R 99.999.999/9999-99 Valid CGC(cCGC)

A mscara do CGC deve vir com @R, para no inserir os pontos e a barra no CGC, o que impossibilita a validao.

GUIA DE REFERNCIA RPIDA AdvPL

@...CheckBox...Var
Tipo: Tela Windows Cria uma caixa de verificao para definir entre Sim/No ou Falso/Verdadeiro. Sintaxe @ nLinha,nColuna CHECKBOX cDesc VAR lSeleo Object oCbx Parmetros nLinha Nmero da linha superior nColuna Nmero da coluna superior cDesc Descrio da caixa. Ex. Atualiza Estoque ? lSeleo Varivel Lgica que identifica se a caixa foi ou no selecionada oCbx Objeto associado ao Checkbox Retorno A varivel <lSeleo> recebe .T. se for selecionada ou .F., se vazia. Comentrios Pode ser utilizada uma seqncia de CHECKBOX para determinar um conjunto de configuraes onde vrios itens podem ser marcados/desmarcados. Deve ser definida uma varivel <lSeleo> para cada CHECKBOX definida. Ex.: Atualiza Estoque - .T./.F. = Marcada/Desmarcada Gera Duplicata - .T./.F. = Marcada/Desmarcada Calcula IPI - .T./.F. = Marcada/Desmarcada

ChkFile
Tipo: Processamento Abre um arquivo do sistema, em modo exclusivo ou compartilhado, verificando a sua existncia bem como dos ndices, criando-os caso no existam. Esta funo retorna verdadeiro (.T.) se o arquivo j estiver aberto ou se o Alias no for informado. Sempre que desejar mudar o modo de acesso do arquivo (de compartilhado para exclusivo ou vice-versa), feche-o antes de cham-la. Sintaxe ChkFile(cAlias,lExcl,newAlias) Parmetros cAlias Alias do arquivo a ser aberto. lExcl Se for informado verdadeiro (.T.), o arquivo ser aberto em modo exclusivo, caso contrrio, o arquivo ser aberto em modo compar-tilhado. Se este parmetro no for informado, ser assumido falso (.F.). newAlis Abre o arquivo com outro apelido. Retorna lRet Retorna verdadeiro (.T.) caso tenha conseguido abrir o arquivo e falso (.F.) caso contrrio. Exemplo
// Exemplo de uso da funo ChkFile: // Tenta abrir o arquivo de clientes como exclusivo: dbSelectArea(SA1) dbCloseArea() lOk := .T. While .T. IF !ChkFile(SA1,.T.) nResp := Alert(Outro usuario usando! Tenta de novo?,{Sim,Nao}) If nResp == 2 lOk := .F. Exit Endif : Endif EndDo If lOk // Faz o processamento com o arquivo... Endif // Finaliza If Select(SA1) dbCloseArea() Endif ChkFile(SA1,.F.) Return

GUIA DE REFERNCIA RPIDA AdvPL

Close
Tipo: Tela Windows Desativa uma janela previamente definida e ativa. Sintaxe Close(cVar) Parmetros cVar Varivel criada durante o comando de definio da janela. Exemplo
@ 75,158 BmpButton type 02 Action Close(oDlg)

CloseOpen
Tipo: Processamento Funo usada para fechar e abrir uma lista de arquivos. Sintaxe CloseOpen(aFecha,aAbre) Parmetros aFecha Array com a lista dos Aliases a serem fechados. aAbre Array com a lista dos Aliases a serem abertos.

Retorna lRet Retorna falso (.F.) se no conseguir abrir algum arquivo (Se o arquivo estiver em uso exclusivo, por exemplo). Caso contrrio, retorna verdadeiro (.T.). Exemplo
// Exemplo de uso da funcao CloseOpen: aFecha := {SA1,SA2",SA3",SB1"} aAbre := {SG1,SH8"} If CloseOpen(aFecha,aAbre) .. Processamento Endif Return

ClosesFile
Tipo: Processamento Esta funo fecha todos os arquivos, exceto os SXs, o SM2 e o SM4. Permite que se indique tambm outros arquivos que no devem ser fechados. Sintaxe ClosesFile(cAlias) Parmetros cAlias String com os Aliases dos arquivos que no devem ser fechados. Devem ser informados separados por barras (/) Retorna lRet Retorna Verdadeiro (.T.) se fechou os arquivos com sucesso. Retorna Falso (.F.), caso contrrio. Exemplo
// Exemplo de uso da funcao CLOSESFILE: // Fecha todos os arquivos menos os cadastros: cEmp := SM0->M0_CODIGO ClosesFile(SA1/SA2/SA3/SA4/SA5/SA6/SA7/SA9/SAA/SAB/SAC) // Processamento. . . // Finalizacao dbCloseAll() OpenFile(cEmp) Return

@...ComboBox...Itens...Size
Tipo: Tela Windows Esta funo semelhante a LISTBOX, mas pode ser utilizada em pequenos espaos, pois os itens s sero mostrados quando a caixa for seleciona. Sintaxe

GUIA DE REFERNCIA RPIDA AdvPL

10

@ nLinha,nColuna COMBOBOX cCont ITENS aArray SIZE nAltura,nLargura Object oCbx Parmetros nLinha Nmero da linha superior nColuna Nmero da coluna superior cCont Contedo caracter do item selecionado na Matriz [1] aArray Array, Matriz [1] com os itens para seleo nAltura Altura para definir o tamanho da caixa nLargura Largura para definir o tamanho da caixa oCbx Objeto relacionado ao boto Retorno O item selecionado pode ser obtido por <cCont> Comentrios Os itens da Matriz [1] devem ser tipo C caracter. Exemplo Ver exemplo no programa RDDEMO apresentado no final deste Manual.

Comp3
Tipo: Processamento Compacta um valor numrico em uma string binria COMP-3. Esta funo utilizada para compactar a movimentao de Clientes e Fornecedores. A descompactao feita pela funo complementar DeComp3. Sintaxe Comp3(aArray) Parmetros aArray Array contendo os 25 campos compactados (o Saldo Inicial, os 12 Dbitos e 12 Crditos) Retorna ExpC1 Nome do Campo aglutinador da compactao. Exemplos
aSaldos:=DeComp3(A1_MOVIMEN) nSaldo:=aSaldos[1] For j := 2 To 24 STEP 2 nSaldo := nSaldo - aSaldos [ j ] + aSaldos [ j + 1 ] Next j aSaldos[1]:=nSaldo AFILL(aSaldos,0,2,24) Reclock(SA1) REPLACE A1_MOVIMEN With Comp3(aSaldos)

Ver tambm Funo DeComp3

Condicao
Tipo: Processamento Esta funo permite avaliar uma condio de pagamento, retornando um array multidimensional com informaes referentes ao valor e vencimento de cada parcela, de acordo com a condio de pagamento. Sintaxe Condicao(nValTot,cCond,nVIPI,dData,nVSol) Parametros nValTot Valor total a ser parcelado cCond Cdigo da condio de pagamento nVIPI Valor do IPI, destacado para condio que obrigue o pagamento do IPI na 1 parcela dData Data inicial para considerar Retorna aRet Array de retorno ( { {VALOR,VENCTO} , ... } ) Exemplo
// Exemplo de uso da funcao Condicao: nValTot := 2500 cCond := 002 // Tipo 1, Duas vezes aParc := Condicao(nValTot,cCond,,dDataBase) ? 1 Parcela: +Transform(aParc[1,1],@E 9,999,999.99") ? Vencto: +DTOC(aParc[1,2]) ? ? 2 Parcela: +Transform(aParc[2,1],@E 9,999,999.99") ? Vencto: +DTOC(aParc[2,2]) inkey(0)

GUIA DE REFERNCIA RPIDA AdvPL

11

Return

ConfirmSX8
Tipo: Processamento Permite a confirmao do nmero sugerido pelo Arquivo de Semforo, atravs da funo GETSX8NUM. Verifique a funo GETSX8NUM para maiores detalhes. Sintaxe ConfirmSx8() Exemplo
cNumSC5:=GetSX8Num(SC5) Replace C5_NUM with cNumSC5 ConfirmSX8()

Verifique os exemplos descritos na funo GETSX8NUM. Contar


Tipo: Processamento Conta o nmero de registros de acordo com a condio determinada. Sintaxe Contar(cAlias, cCond) Parmetros cALias Alias do arquivo cCond Condio para a contagem Exemplo
Contar(SC1,C1_DATPRF < dDataBase)

ConvMoeda
Tipo: Processamento Converte o valor informado para a moeda selecionada. Sintaxe ConvMoeda(dData1,dData2,nValor,cMoeda) Parmetros dData1 Data de emisso dData2 Data de vencimento nValor Valor a ser convertido cMoeda Para qual moeda dever converter Retorna ExpN1 Valor convertido (devolvido pela funo) Comentrios Esta funo converte o valor definido por nValor para a moeda especificada em cMoeda na data dData. A data dData2 no utilizada. O valor nValor considerado em moeda 1. Exemplos
nValor2 := ConvMoeda( D2_EMISSAO, , D2_TOTAL, cMoeda ) nValor1 := ConvMoeda( D1_DTDIGIT, , D1_TOTAL, cMoeda )

Credito
Tipo: Processamento Devolve o valor a crdito de uma determinada conta. Sintaxe Credito(cConta, nMs, nMoeda) Parmetros cConta Cdigo da Conta nMs Ms do movimento desejado nMoeda Moeda desejada para obteno do valor a crdito Exemplo
Credito(11103,03,1)

Ver tambm Funes Debito, Saldo e Movimento

GUIA DE REFERNCIA RPIDA AdvPL

12

CriaTrab
Tipo: Processamento Cria arquivo de trabalho. Sintaxe CriaTrab(aArray,lDbf) Parmetros aArray Array multidimensional contendo os campos a criar {Nome, Tipo, Tamanho, Decimal} lDbf Determina se o arquivo de trabalho deve ser criado ( .T.) ou no (.F. ) Retorna ExpC1 Nome do Arquivo gerado pela funo. Comentrios Esta funo retorna o nome de um arquivo de trabalho que ainda no exista. Caso lDbf = .T., a funo criar um arquivo DBF com este nome e a estrutura definida em aArray. Caso lDbf = .F., a funo no criar arquivo de nenhum tipo, apenas fornecer um nome vlido. Exemplos
// Com lDbf = .F. cArq := CriaTrab(NIL, .F.) cIndice := C9_AGREG++IndexKey() Index on &cIndice To &cArq // Com lDbf = .T. aStru := {} AADD(aStru,{ MARK , C, 1, 0}) AADD(aStru,{ AGLUT , C, 10, 0}) AADD(aStru,{ NUMOP , C, 10, 0}) AADD(aStru,{ PRODUTO, C, 15, 0}) AADD(aStru,{ QUANT , N, 16, 4}) AADD(aStru,{ ENTREGA, D, 8, 0}) AADD(aStru,{ ENTRAJU, D, 8, 0}) AADD(aStru,{ ORDEM , N, 4, 0}) AADD(aStru,{ GERADO , C, 1, 0}) cArqTrab := CriaTrab(aStru, .T.) USE &cArqTrab ALIAS TRB NEW

CriaVar
Tipo: Processamento Esta funo cria uma varivel, retornando o valor do campo, de acordo com o dicionrio de dados. Avalia o inicializador padro e retorna o contedo de acordo com o tipo de dado definido no dicionrio. Sintaxe CriaVar(cCampo,lIniPad,cLado) Parametros cCampo Nome do campo lIniPad Indica se considera (.T.) ou no (.F.) o inicializador cLado Se a varivel for caracter, cLado pode ser: C - centralizado, L - esquerdo ou R - direito Retorna uRet Retorno (tipo de acordo com o dicionrio de dados, considerando inicializador padro) Exemplo
// Exemplo do uso da funo CriaVar: cNumNota := CriaVar(F2_DOC) // Retorna o contedo do // inicializador padro, // se existir, ou espaos em branco Alert(cNumNota) Return

DataValida
Tipo: Processamento Retorna uma data vlida que no seja sbado, domingo ou feriado, a partir de uma data qualquer informada. uma funo til para a gerao de vencimentos reais para ttulos, por exemplo. Sintaxe DataValida(dData) Parametros dData Data informada para validao. Retorna

GUIA DE REFERNCIA RPIDA AdvPL

13

dDtVld Retorna a Data validada. Exemplo


// Exemplo de uso da funcao DataValida: // Pode-se gravar o campo do vencimento real de um // titulo a partir do vencimento informado. dVencto := cTod() : Get dVencto Read dVencRea := DataValida(dVencto) Grava() // Funcao generica. // Um uso interessante, e a obtencao do numero de dias // uteis de determinado mes utilizando-se dessa funcao. // A logica e simples: nDUtil := 0 nMes := 05 nAno := 98 dDtIni := CTOD(01/+StrZero(nMes,2)+/+StrZero(nAno,2) dDtMov := dDtIni While Month(dDtIni) == Month(dDtMov) .And. Year(dDtIni) == Year(dDtMov) If DataValida(dDtMov) == dDtMov nDUtil := nDUtil + 1 Endif dDtMov := dDtMov + 1 EndDo

Debito
Tipo: Processamento Devolve o valor a dbito de uma determinada conta. Sintaxe Debito(cConta, nMs, nMoeda) Parmetros cConta Cdigo da Conta nMs Ms do movimento desejado nMoeda Moeda desejada para obteno do valor a dbito Exemplo
Debito(11103,03,1)

Ver tambm Funes Credito, Saldo e Movimento

DeComp3
Tipo: Processamento Descompacta uma string binria COMP-3 em um array. Esta funo utilizada para descompactar a movimentao de Clientes e Fornecedores. A compactao feita pela funo complementar Comp3. Sintaxe DeComp3(cCampo) Parmetros cCampo Nome do Campo aglutinador da compactao. Retorna aArray Array contendo os 25 campos compactados. Exemplo
aSaldos:= DeComp3(A1_MOVIMEN) nSaldo := aSaldos [ 1 ] For j:= 2 To 24 STEP 2 nSaldo:= nSaldo - aSaldos [ j ] + aSaldos [ j + 1 ] Next j aSaldos[1]:=nSaldo AFILL(aSaldos,0,2,24) Reclock(SA1) REPLACE A1_MOVIMEN With Comp3(aSaldos)

Ver tambm Funo Comp3

@...To...Dialog
Tipo: Tela Windows

GUIA DE REFERNCIA RPIDA AdvPL

14

Define uma nova janela na rea de trabalho. Sintaxe @ nLinha1,nColuna1 TO nLinha2,nColuna2 DIALOG cVar TITLE cTtulo Parmetros nLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior nColuna2 Nmero da coluna inferior cVar Varivel que recebera as definies da nova janela cTtulo Titulo da Janela Comentrios Deve ser utilizada sem conjunto com o comando ACTIVATE DIALOG. Exemplo Ver exemplo no programa RDDEMO apresentado no final deste Manual.

Digito11
Tipo: Processamento Clculo de dgito verificador em mdulo 11. Sintaxe Digito11(cCalc,cDigito) Parmetros cCalc String para calcular o dgito cDigito Dgito de verificao Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Comentrios Esta funo calcula o dgito de verificao de cCalc e o compara com cDigito, verificando a consistncia. Exemplos
@ 9, 10 Get cCodigo; Valid Digito11( SubStr(cCodigo, 1, 5), Substr(cCodigo, 6, 1))

DrawAdv3D
Tipo: Tela DOS Desenha uma janela DOS em 3 dimenses. Sintaxe DrawAdv3D(cTitle, nLinha1, nColuna1, nLInha2, nColuna2, cCorFrente, cCorFundo, cStyle) Parmetros cTitle Ttulo da Janela nLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior nColuna2 Nmero da coluna inferior cCorFrente Cor da letra cCorFundo Cor do fundo cStyle R (onde R = Raised - define a impresso de baixo relevo. O padro alto relevo) Exemplo
// DrawAdv3D(Janela 3D,01,24,20,24,B+,N,R)

DrawAdvWindow
Tipo: Tela DOS Desenha uma janela padro de acordo com a posio relativa passada como parmetro. Para verso DOS. Sintaxe DrawAdvWindow(cTitulo,nLinha1,nColuna1,nLInha2, nColuna2) Parmetros cTitulo Ttulo da janela nLinha1 Linha superior da janela nColuna1 Coluna esquerda da janela nLinha2 Linha inferior da janela nColuna2 Coluna direita da janela Comentrios

GUIA DE REFERNCIA RPIDA AdvPL

15

Esta funo desenha uma janela com o ttulo cTitulo, com o canto superior esquerdo na posio nLinha1, nColuna1 e canto inferior direito na posio nLinha2, nColuna2. Exemplos
DrawAdvWindow(Ttulos em Aberto,3,4,20,76)

EANDigito
Tipo: Processamento Calcula o dgito de controle para o cdigo EAN usado em cdigos de barras. Sintaxe EanDigito(cCod) Parmetros cCod Cdigo de barras para o clculo do dgito. obrigatrio o tamanho de 12 dgitos. Retorna cEan Retorna o cdigo EAN de 13 dgitos, sendo que a ltima posio o dgito calculado. Exemplo
// Exemplo de uso da funcao EANDIGITO: // Gatilho // Dom.: B1_CODBAR // CtaDom.: B1_CODBAR // Regra: Eandigito(PADL(AllTrim(M->B1_CODBAR),12,0")) // Ou usado em um programa AdvPL: cCod := EanDigito(PADL(AllTrim(M->B1_CODBAR),12,0")) cDig := Substr(cCod,12,1) Alert(O digito calculado e: +cDig) Return

Entre
Tipo: Processamento Verifica se o contedo do campo est entre o contedo de duas expresses (ExpX1 <= cCampo <= ExpX2). Se verdadeiro, retorna .T..Usado normalmente em validaes de campos digitados. Sintaxe Entre(ExpX1,ExpX2,cCampo) Parmetros ExpX1 Expresso a comparar >= ExpX2 Expresso a comparar <= cCampo Nome do Campo Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Exemplos
: If Entre(A1,A9",cSerie) @ 5,10 Say Serie Ok Else @ 5,10 Say Serie Invalida Loop EndIf :

Estrut
Tipo: Processamento Funo para obteno da estrutura de um produto previamente cadastrada no SG1 atravs dos Mdulos SIGAEST ou SIGAPCP. Sintaxe Estrut(cProduto) Parmetros cProduto Cdigo do produto PAI da estrutura. Retorna aStru Retorna o array com a estrutura do produto na seguinte sintaxe: { {N , Cdigo , Comp. , Qtd. , TRT }, ... , ... } Esta funo requer que seja declarada a varivel chamada nEstru contendo 0, para o seu correto funcionamento. Exemplo
// Exemplo de uso da funcao Estrut: cPrd := Space(15) aStru := {}

GUIA DE REFERNCIA RPIDA AdvPL

16

nEstru := 0 While .T. @ 10,10 Say Codigo do Produto: @ 10,30 Get cPrd Picture @! Valid(!Empty(cPrd)) Read If LastKey() == 27 Exit Endif If !ExistCpo(SB1,cPrd) Loop Endif i:= 0 aStru := Estrut(cPrd) // Obtem a estrutura nLin := 5 For i := 1 To Len(aStru) @nLin,00 Say Comp.: +aStru[i,3] @nLin,20 Say Quant.: +Str(aStru[i,4],15) nLin := nLin + 1 If nLin > 23 @24,00 Say Tecle <ENTER>... Inkey(0) nLin := 5 Endif Next i EndDo

Execute
Tipo: Processamento Executa uma Funo definida em um mesmo .Pr? nas clusulas <ACTION> ou <VALID>. Sintaxe Execute (cFuno) Parmetro cFuno Funo a ser executada. Exemplo
@ 75,098 BmpButton type 01 action Execute(S500IMP)

ExistChav
Tipo: Processamento Verifica se a chave j existe em determinado Alias. Funo para uso em validaes de campos-chave, para no permitir a duplicidade de registros. Sintaxe ExistChav(cAlias,cChave,nOrdem,cHelp) Parametros cAlias Alias do arquivo no qual a consistncia deve ser avaliada cChave Chave para a pesquisa. Opcional. Se no for informada, o contedo ser automaticamente obtido do GET ativo nOrdem Ordem do ndice para a pesquisa no Alias. Se no for especificado, ser assumida a primeira ordem cHelp Opcional chave de help. Se no for informada, o help ser o padro do sistema (JAGRAVADO) Retorna lRet Retorna Verdadeiro (.T.) se a chave no existir (o que significa que pode ser usada para incluir um novo registro). Caso contrrio, retorna Falso (.F.) e executa um help do sistema. Exemplo
// Exemplo de uso da funcao ExistChav: // Pode-se utiliza-la em uma validacao de usuario, // definada atraves do Configurador: // Campo -> B1_COD // Validacao do Usuario -> ExistChav(SB1) // Ou em um AdvPL: While .T. cEsp := Space(15) @ 00,00 Say Cadastro de Especialidades @10,00 Say Espec.: Get cEsp Pict @! Read If LastKey() == 27 Exit Endif If ExistChav(SZ1,cEsp,1,ESPEXIST) Loop Endif Grava() // Rotina generica

GUIA DE REFERNCIA RPIDA AdvPL

17

EndDo Return

ExistCpo
Tipo: Processamento Verifica se determinada chave existe no Alias especificado. Funo utilizada em processamentos onde o cdigo informado deve existir em determinado cadastro, na sua validao. Sintaxe ExistCpo(cAlias,cChave,nOrdem) Parmetros cAlias Alias do arquivo para a pesquisa cChave Chave a ser pesquisada (opcional). Se no for informada, o conte-do obtido automaticamente do GET em uso nOrdem Nmero da ordem do ndice para Pesquisa (Opcional). Se no for informado, usa a ordem atual do Alias. Retorna lRet Retorna Verdadeiro (.T.) se a chave existir no Alias especificado, caso contrrio, retorna Falso (.F.) e executa um help padro do sistema (REGNOIS). A ordem utilizada na pesquisa a atualmente selecionada. Se no for informado, usa a ordem atual do lias. Exemplo
// Exemplo de uso da funcao ExistCpo: While .T. cProd := Space(15) @10,10 Get cProd Read If LastKey() == 27 Exit Endif If !ExistCpo(SB1,cProd) Loop Endif Grava() // Funcao generica. EndDo Return

ExistIni
Tipo: Processamento Verifica se o campo possui inicializador padro. Sintaxe ExistIni(cCampo) Parmetros cCampo Nome do campo para verificao. Retorna lEx Retorna Verdadeiro (.V.) se o campo possui inicializador padro, caso contrrio, retorna falso (.F.). Exemplo
// Exemplo de uso da funcao ExistIni: // Se existir inicializador no campo B1_COD: If ExistIni(B1_COD) // Chama o inicializador: cCod := CriaVar(B1_COD) Endif Return

GUIA DE REFERNCIA RPIDA AdvPL

18

Extenso
Tipo: Processamento Gera o extenso de um valor numrico. Esta funo retorna um valor, dinheiro ou quantidade, por extenso. Usada para a impresso de cheques, valor de duplicatas, etc. Sintaxe Extenso(nValor,lQtd,nMoeda) Parametros nValor Valor a ser gerado o extenso. lQtd Verdadeiro (.T.) indica que o valor representa uma quantidade. Falso (.F.) indica que o valor representa dinheiro. Se no for especificado, o default falso (.F.). nMoeda - Qual moeda do sistema deve ser o extenso. Retorna cValor Retorna o valor por extenso. Exemplo
// Exemplo de uso da funcao Extenso: nValor := SF2->F2_VALFAT // Gera o extenso do valor, formatando a variavel com // 200 caracteres preenchendo os espacos em branco com * cExtenso := PADR(Extenso(nValor),200,*) // Imprime o extenso em duas linhas (100 caracteres em cada): For nLi := 20 To 21 @nLi,10 Say Substr(cExtenso,(nLi-20)*100+1,100) Next nLi Return

FinNatOrc
Tipo: Processamentoe Planilha Retorna o valor orado da natureza. Sintaxe FinNatOrc(cNatureza,nMs,nMoeda) Parmetros cNatureza Natureza a ser pesquisada nMs Ms para clculo nMoeda Moeda de sada Exemplo
FinNatOrc(R001,10,1)

FinNatPrv
Tipo: Processamento e Planilha Retorna o valor previsto de cada natureza. Sintaxe FinatPrv(cNatureza,dData1,dData2,nMoeda) Parmetros cNatureza Natureza a ser pesquisada dData1 Data Inicial para clculo dData2 Data Final de clculo nMoeda Moeda de sada Exemplo
FinNatPrv(R001,CtoD(01/01/98),dDataBase,1)

FinNatRea
Tipo: Processamento e Planilha Retorna o valor realizado da Natureza. Sintaxe FinNatRea(cNatureza,dData1,dData2,nMoeda) Parmetros cNatureza Natureza a ser pesquisada dData1 Data Inicial para clculo dData2 Data Final de clculo nMoeda Moeda de sada Exemplo
FinNatRea(R001,CtoD(01/01/98),dDataBase,1)

GUIA DE REFERNCIA RPIDA AdvPL

19

aAdd(aL,++) aAdd(aL,|XXXXXXXX Relatorio de Teste Pagina: XXXXX|) aAdd(aL,++++) aAdd(aL,| CODIGO | DESCRICAO | PRECO |) aAdd(aL,++++) aAdd(aL,| XXXXXXX | XXXXXXXXXXXXXXXXXXXXXX | XXXXXX |) aAdd(aL,++++) nLim:= 80 // Relatorio de 80 colunas nLi:= 60 nPg:= 1 dbSelectArea(SB1) dbGoTop() While !EOF() If nLi > 55 nLi := 0 FmtLin({},aL[1],,,@nLi,.T.,nLim) FmtLin({dDataBase,nPg},aL[2],,,@nLi,.T.,nLim) FmtLin({},aL[3],,,@nLi,.T.,nLim) FmtLin({},aL[4],,,@nLi,.T.,nLim) FmtLin({},aL[5],,,@nLi,.T.,nLim) nPg := nPg + 1 Endif aDados := {} aAdd(aDados,Subs(B1_COD,1,7)) aAdd(aDados,Subs(B1_DESC,1,22))

Formula
Tipo: Processamento Interpreta uma frmula cadastrada. Esta funo interpreta uma frmula, previa-mente cadastrada no Arquivo SM4 atravs do Mdulo Configurador, e retorna o resultado com tipo de dado de acordo com a prpria frmula. Sintaxe Formula(cFormula) Parmetros cFormula Cdigo da frmula cadastrada no SM4. Retorna uRet Retorno, com tipo de dado de acordo com a frmula. Exemplo
// Exemplo de uso da funcao formula: // Formula cadastrada no SM4: // Codigo: F01 // Regra : Sao Paulo, +StrZero(Day(dDataBase),2)+ // de +MesExtenso(dDataBase)+ de + // StrZero(Year(dDataBase),4)+. // Ao imprimir esta linha em um programa, por exemplo, @ 00,00 Say Formula(F01) // o resultado impresso sera algo como: // Sao Paulo, 17 de dezembro de 1997. // Formula cadastrada no SM4: // Codigo: F02 // Regra : (GETMV(MV_JUROS)/100)+1 // Ao usar esta formula, pode-se dar um acrescimo em um // valor de acordo com a taxa de juros cadastrada no parametro MV_JUROS: nValor := nValor * Formula(F02)

FuncaMoeda
Tipo: Processamento Retorna um array contendo o valor do titulo em at cinco (5) moedas. Sintaxe FuncaMoeda(dData,nValor,nMoeda) Parmetros dData Data utilizada como referncia nValor Valor utilizado como referncia nMoeda Moeda em que o valor se encontra Retorna aRet Array contendo o valor informado nas cinco moedas ( { nVal1,nVal2,nVal3,nVal4,nVal5 } ) Exemplo
// Exemplo do uso da funcao FuncAMoeda: nValTit := SE1->E1_SALDO nMoeda := SE1->E1_MOEDA aValores := FuncaMoeda(dDataBase,nValTit,nMoeda) For i:=1 to 5

GUIA DE REFERNCIA RPIDA AdvPL

20

? Valor do titulo na +Str(i,1)+ moeda: +; Transform(aValores[i],@E 9,999,999.99") Next i inkey(0) Return

@... GET
Tipo: Tela DOS/Windows Executa um Get, diferenciado pela clusula <F3>. Sintaxe @ nLinha,nColuna GET cVar <PICTURE> cMscara <VALID> cFuno <F3> cConsulta Parmetros nLinha Nmero da Linha em que o Get ser posicionado nColuna Nmero da Coluna em que o Get ser posicionado cVar Varivel a ser editada cMscara Define a mscara de edio (opcional) cFuno Funo que retorna valor lgico para validao da edio (opcional) cConsulta Definio (SXB) da consulta <F3> associada ao contedo de cVar Comentrios Os cdigos utilizados na clusula <F3> devem ser obtidos atravs do arquivo (SXB). No necessrio utilizar o comando READ aps a definio dos Gets.

GetAdvFval
Tipo: Processamento Esta funo permite executar uma pesquisa em um arquivo, pela chave especificada e na ordem especificada, retornando o contedo de um ou mais campos. Sintaxe GetAdvFVal(cAlias,uCpo,uChave,nOrder,uDef) Parmetros cAlias Alias do arquivo. uCpo Nome de um campo ou array contendo os nomes dos campos desejados. uChave Chave para a pesquisa. nOrder Ordem do indice para a pesquisa. uDef Valor ou array default para ser retornado caso a chave no seja encontrada. Retorna uRet Retorna o contedo de um campo ou array com o contedo de vrios campos. Exemplo
// Exemplo de uso da funcao GetAdvFVal: // Obtendo apenas de um campo: cChave := SD2->D2_COD+SD2->D2_LOCAL cDesc := GetAdvFVal(SB1,B1_DESC,cChave,1,SC6->C6_DESCRI) // Obtendo o conteudo de mais de um campo: cChave := SD2->D2_COD+SD2->D2_LOCAL aCpos := {B1_DESC,B1_PRV1",B1_UM} aDados := GetAdvFVal(SB1,aCpos,cChave,1,{SC6->C6_DESCRI,SC6->C6_PRCVEN,SC6->C6_UM})

refere-se aos Itens do Pedido de Venda) e, aps pesquisar no SB1 (Cadastro de Produtos), sugerir a quantidade vendida a partir de um campo especfico:
// Colunas... nPosCod := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_PRODUTO }) nPosQtd := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == C6_QTDVEN }) // Obtm o cdigo do produto cCodigo := aCols[n,nPosCod] // Pesquisa dbSelectArea(SB1) dbSetOrder(1) dbSeek(xFilial(SB1)+cCod) // Altera a quantidade no grid aCols[n,nPosQtd] := SB1->B1_QTSUGER // Campo especfico com a quantidade padro __Return(SB1->B1_QTSUGER)

Para uma melhor compreenso, voc pode analisar os programas RDMOD2.PRX e/ou RDMOD3.PRX que acompanham o SIGA Advanced. Eles esto no diretrio principal do sistema (geralmente \SIGAADV\) e demonstram rotinas usadas para cadastros semelhantes ao Pedido de Vendas e que trabalham com os arrays mencionados.

GUIA DE REFERNCIA RPIDA AdvPL

21

GetMV
Tipo: Processamento Recupera o contedo de parmetros originados em SX6. Sintaxe GetMV(cParam) Parmetros cParam Nome do parmetro a ser pesquisado no SX6 Retorna ExpX1 Contedo do parmetro devolvido pela funo Exemplos
cTabVista := GETMV(MV_TABVIST) cColICMS := GETMV(MV_COLICMS)

GetSX8Num
Tipo: Processamento Fornece um nmero seqencial do Arquivo de Semforo (SX8??0.DBF). Esta funo retorna o prximo nmero, na seqncia e disponvel, para o cadastro no SIGA Advanced e mantm esta numerao para o usurio at o momento em que ele confirme ou abandone a operao. O Arquivo de Semforo usado para evitar a duplicidade de chaves em ambientes multiusurio. Esta funo trabalha junta-mente com outras duas, chamadas CONFIRMSX8 e ROLLBACKSX8. Verifique os exemplos para maiores detalhes. Sintaxe GetSx8Num(cAlias,cCpoSx8) Parmetros cAlias Alias do Arquivo cCpoSx8 Nome do campo para aplicao do semforo Exemplo Para que o Cadastro de Clientes, por exemplo, carregue na incluso o prximo nmero disponvel automaticamente, pode-se utilizar a seguinte sintaxe no inicializador padro do campo A1_COD: GetSx8Num(SA1) Caso seja um arquivo especifico, utilize a sintaxe a seguir: GetSx8Num(SZ1,Z1_COD) Para uso em programas AdvPL, as sintaxes descritas acima tambm so vlidas, no devendo-se esquecer de que a funo GETSX8NUM trabalha junto com as funes CONFIRMSX8 e ROLLBACKSX8, que devem ser chamadas ao final do processamento (procedimento que feito automaticamente em um inicializador padro conforme a sintaxe explicada acima). Exemplo em AdvPL:
cCodNew := GetSx8Num(SZ1,Z1_COD) // Processamento... // Confirmacao ConfirmSx8() // ou Cancelamento RollBackSx8() Return

GravaOrcado
Tipo: Processamento e Planilha Permite que um determinado valor calculado pela planilha seja gravado no Arquivo de Oramentos. Sintaxe GravaOrcado(cConta,nClula,nMs,nMoeda) Parmetros cConta Conta Contbil a ser orada nClula Nmero da clula onde o valor estar contido nMs Ms a ser orado (se nulo, ser ms corrente)

nMoeda Moeda a ser orada (se nula, ser moeda nacional)


Exemplo Para obter um valor referente conta 11102001, sendo que este dever ser orado na Contabilidade para o ms 07 e na moeda 1. Para tanto, cria-se a seguinte expresso: GravaOrcado(11102001,#022,7,1) Esta funo ir devolver o contedo <<< Orado >>>.

Help
Tipo: Tela DOS/Windows Esta funo exibe a ajuda especificada para o campo e permite sua edio. Se for

GUIA DE REFERNCIA RPIDA AdvPL

22

um help novo, escreve-se o texto em tempo de execuo. Sintaxe Help(cHelp,nLinha,cTtulo,cNil,cMensagem,nLinMen,nColMen) Parmetros cHelp Nome da Rotina chamadora do help (sempre branco) nLinha Nmero da linha da rotina chamadora (sempre 1) cTtulo Ttulo do help cNil Sempre NIL cMensagem Mensagem adicional ao help nLinMen Nmero de linhas da Mensagem (relativa janela) nColMen Nmero de colunas da Mensagem (relativa janela) Retorna Nada Exemplos
: If Empty(cArqs) dbSelectArea(cAlias) RecLock(cAlias,.F.) dbDelete() Else Help( ,1,NaoExclui,,cArqs,4,1) Endif

: ImpCadast
Tipo: Impresso Imprime relatrio de cadastros padres do SIGA Advanced. Esta funo monta uma interface padro de relatrio, com parametrizaes de/at, e permite imprimir qualquer arquivo de cadastro definido no sistema. Sintaxe ImpCadast(cCab1,cCab2,cCab3,cNomePrg,cTam,nLim,cAlias) Parmetros cCab1 Primeira linha de cabealho

cCab2 Segunda linha de cabealho cCab3 Terceira linha de cabealho cNomePrg Nome do programa
cTam Tamanho do relatrio (P,M ou G) nLim Limite do relatrio. Mxima coluna a ser impressa cAlias Alias do arquivo de cadastro a ser impresso Exemplo
// Exemplo de uso da funcao Impcadast: // Imprime relatorio de cadastro de produtos: ImpCadast(Cabec1,Cabec2,Cabec3,PRG01",P,80,SB1") Return

IncRegua
Tipo: Impresso Incrementa rgua padro de processamento em relatrios. Sintaxe IncRegua() Parmetros Nil Retorno Nil Exemplo
DbSelectArea(SA1) SetRegua(LastRec()) While ( ! Eof() ) @ Li, 001 PSAY SA1->A1_NOME DbSkip() IncRegua() End

Comentrio Ver tambm SetRegua()

IncProc
Tipo: Tela DOS/Windows

GUIA DE REFERNCIA RPIDA AdvPL

23

Incrementa rgua padro de processamento. Sintaxe IncProc() Parmetros Nil Retorno Nil Exemplo
ProcRegua(1000) For i:= 1 to 1000 IncProc() Next Return

IndRegua
Tipo: Processamento Cria ndice de trabalho, podendo ser condicional. Sintaxe IndRegua(cAlias,cArqtrab,cChave,cPar,cFiltro,cTexto) Parmetros cAlias Alias do arquivo. cArqtrab Nome do arquivo de trabalho retornado pela funo CriaTrab (.F.). cChave Expresso utilizada na chave do novo ndice. cPar Se for igual a D, cria um indice com a chave inversa, do maior valor para o menor. cFiltro Expresso utilizada para filtro. cTexto Texto da rgua de processamento ( Selecionando registros ...). Retorno Nil Exemplo
DbSelectArea(SC5) cFiltro := C5_OK<>X cChave := Dtos(C5_EMISSAO)+C5_VEND1 cIndSC51 := CriaTrab(Nil,.F.) IndRegua(SC5, cIndSC51, cChave, , cFiltro, Selecionando Pedidos...)

LetterOrNum
Tipo: Processamento Verifica se determinado caracter uma letra ou um nmero. Sintaxe LetterOrNum(cChar) Parmetros cChar Caracter para verificao. Retorna lAlfa Retorna Verdadeiro (.V.) se o caracter informado for uma letra ou um nmero. Exemplo
// Exemplo de uso da funcao LetterOrNum: cCh := Inkey(0) If LetterOrNum(cCh) ... Processamento Endif Return

MarkBrowse
Tipo: Processamento Monta um browse padro do sistema, permitindo marcar e desmacar linhas. Sintaxe MarkBrowse(cAlias,cCampo,cCpo,aCampos,lMarc,cMarca,cCtrlM,lBotoes,cTopFun,cBotFun,aCoord) Parmetros cAlias lias do arquivo cCampo Campo que estabelece relao com a culuna de marca cCpo Campo que se estiver vazio muda a cor da linha aCampos Array com os campos para montar o browse lMarc Flag para inicializar marcado ou no cMarca Marca obtida com a funo Getmark cCtrlM Funo para ser executada no Alt_M

GUIA DE REFERNCIA RPIDA AdvPL

24

lBotoes Parmetro obsoleto cTopFun Funo filtro para estabelecer o primeiro registro cTopFun Funo filtro para estabelecer o ltimo registro aCoord Array com as coordenadas da MarkBrowse. Exemplo
cMarca := GetMark() cCadastro := Escolher Clientes aRotina := { { Pesquisar,AxPesqui,0,1}, ; {Visualizar,AxVisual,0,2}} MarkBrow(SA1,A1_OK,SA1->A1_OK,,,cMarca)

MBrowse
Tipo: Processamento Monta um browse padro do sistema, conforme os parmetros. Sintaxe mBrowse(nLinha1, nColuna1, nLinha2, nColuna2, cAlias, aFixe, cCpo, nPar, cCor, n Opc) Parmetros nLinha1 Nmero da linha inicial nColuna1 Nmero da coluna inicial nLinha2 Nmero da linha final nColuna2 Nmero da coluna final cAlias Alias do arquivo aFixe Array contendo os campos fixos (a serem mostrados em primeiro lugar no browse) cCpo Campo a ser tratado. Quando vazio, muda a cor da linha nPar Parmetro obsoleto cCor Funo que retorna um valor lgico, muda a cor da linha nOpc Define qual opo do aRotina que ser utilizada no double click Exemplo
cCadastro := Cadastro de Orcamentos aRotina := {{Pesquisar,AxPesqui,0,1},; {Incluir,ExecBlock(DEMOA,.F.),0,3},; {Altera,ExecBlock(DEMOB),0,4},; {Excluir,ExecBlock(DEMOC,.F.),0,5}} MBrowse(6, 1, 22, 75, SA1)

Media
Tipo: Processamento Retorna a taxa mdia da moeda em um determinado ms/ano. Sintaxe Media(nMoeda,nMes,nAno) Parmetros nTaxa Taxa mdia calculada. nMoeda Moeda para clculo da taxa mdia. nMes Ms para clculo da taxa mdia. Se no informado, assumido o ms da data base. nAno Ano para clculo da taxa mdia. Se no informado, assumido o ano da data base. Exemplo
// Exemplo de uso da funcao Media nTxMed := Media(1) nTaxa := nTxMed @ 00,00 Say Media do mes: +Transform(nTxMed,@E999.99") @ 00,01 Say Taxa calcul.: Get nTaxa Picture @E999.99 Read Return

MesExtenso
Tipo: Processamento Retorna o nome do ms por extenso. Sintaxe MesExtenso(nMes) Parmetros nMes Nmero do ms (1 a 12). Se nMes no for informado, assumido o ms da data base do sistema. Esta varivel tambm pode ser caracter (1 ou 2) ou do tipo data. Retorna cNome Nome do ms retornado por extenso.

GUIA DE REFERNCIA RPIDA AdvPL

25

Exemplo
// Exemplo do uso da funcao MesExtenso: ? Sao Paulo, +STRZERO(Day(dDataBase),2)+ de +; MesExtenso(dDataBase)+ de +StrZero(Year(dDataBase),4)

Modelo2
Tipo: Processamento Exibe formulrio para cadastro segundo o modelo 2 (como a rotina de Nota Fiscal). Sintaxe M o d e l o 2 (c T t u l o ,a C a b e c ,a R o d a p ,a G d ,n O p ,c L O k ,c T O k , [aGetsGD,bF4,cIniCpos,nMax,aCordw,lDelget]) Parmetros cTtulo Ttulo da janela aCabec Array com os campos do cabealho aRodap Array com os campos do rodap aGd Array com as posies para edio dos itens (GETDADOS) nOp Modo de operao (3 ou 4 altera e inclui itens, 6 altera mas no inclui itens, qualquer outro nmero s visualiza os itens) cLOk Funo para validao da linha cTOk Funo para validao de todos os dados (na confirmao) aGetsGD Array Gets editveis (GetDados) Default = Todos. bF4 Codeblock a ser atribudo a tecla F4. Default = Nenhum. cIniCpos String com o nome dos campos que devem ser inicializados ao teclar seta para baixo (GetDados). nMAx Limita o nmero de linhas (GetDados). Default = 99. aCordw Array com quatro elementos numricos, correspondendo s coor-denadas linha superior, coluna esquerda, linha interior e coluna direita, definindo a rea de tela a ser usada. Default = rea de Dados Livre. lDelget Determina se as linhas podem ser deletadas ou no (GetDados) Default = .T. Retorna lRet Retorna .T. se for confirmado Exemplo
//************************************************** // 3,4 Permitem alterar getdados e incluir linhas // 6 So permite alterar getdados e nao incluir linhas // Qualquer outro numero so visualiza nOpcx:=3 dbSelectArea(Sx3) dbSetOrder(1) dbSeek(SX5) nUsado:=0 aHeader:={} While !Eof() .And. (x3_arquivo == SX5) IF X3USO(x3_usado) .AND. cNivel >= x3_nivel nUsado:=nUsado+1 AADD(aHeader,{ TRIM(x3_titulo),x3_campo,; x3_picture,x3_tamanho,x3_decimal,; ExecBlock(Md2valid,.f.,.f.),x3_usado,; x3_tipo, x3_arquivo, x3_context } ) Endif dbSkip() End aCols:=Array(1,nUsado+1) dbSelectArea(Sx3) dbSeek(SX5) nUsado:=0 While !Eof() .And. (x3_arquivo == SX5) IF X3USO(x3_usado) .AND. cNivel >= x3_nivel nUsado:=nUsado+1 IF nOpcx == 3 IF x3_tipo == C

GUIA DE REFERNCIA RPIDA AdvPL

26

aCOLS[1][nUsado] := SPACE(x3_tamanho) Elseif x3_tipo == N aCOLS[1][nUsado] := 0 Elseif x3_tipo == D aCOLS[1][nUsado] := dDataBase Elseif x3_tipo == M aCOLS[1][nUsado] := Else aCOLS[1][nUsado] := .F. Endif Endif Endif dbSkip() End aCOLS[1][nUsado+1] := .F. cCliente:=Space(6) cLoja :=Space(2) dData :=Date() nLinGetD:=0 cTitulo:=TESTE DE MODELO2" aC:={} // aC[n,1] = Nome da Variavel Ex.:cCliente // aC[n,2] = Array com coordenadas do Get [x,y], em // Windows estao em PIXEL // aC[n,3] = Titulo do Campo // aC[n,4] = Picture // aC[n,5] = Validacao // aC[n,6] = F3 // aC[n,7] = Se campo e editavel .t. se nao .f. #IFDEF WINDOWS AADD(aC,{cCliente ,{15,10} ,Cod. do Cliente,@!,; ExecBlock(MD2VLCLI,.F.,.F.),SA1",}) AADD(aC,{cLoja ,{15,200},Loja,@!,,,}) AADD(aC,{dData ,{27,10} ,Data de Emissao,,,,}) #ELSE AADD(aC,{cCliente ,{6,5} ,Cod. do Cliente,@!,; ExecBlock(MD2VLCLI,.F.,.F.),SA1",}) AADD(aC,{cLoja ,{6,40},Loja,@!,,,}) AADD(aC,{dData ,{7,5} ,Data de Emissao,,,,}) #ENDIF aR:={} // aR[n,1] = Nome da Variavel Ex.:cCliente // aR[n,2] = Array com coordenadas do Get [x,y], em // Windows estao em PIXEL // aR[n,3] = Titulo do Campo // aR[n,4] = Picture // aR[n,5] = Validacao // aR[n,6] = F3 // aR[n,7] = Se campo e editavel .t. se nao .f. #IFDEF WINDOWS AADD(aR,{nLinGetD ,{120,10},Linha na GetDados,; @E 999,,,.F.}) #ELSE AADD(aR,{nLinGetD ,{19,05},Linha na GetDados,; @E 999,,,.F.}) #ENDIF #IFDEF WINDOWS aCGD:={44,5,118,315} #ELSE aCGD:={10,04,15,73} #ENDIF cLinhaOk := ExecBlock(Md2LinOk,.f.,.f.) cTudoOk := ExecBlock(Md2TudOk,.f.,.f.) // lRet = .t. se confirmou // lRet = .f. se cancelou lRet:=Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk) // No Windows existe a funcao de apoio CallMOd2Obj() que // retorna o objeto Getdados Corrente Return

Modelo3
Tipo: Processamento Executa cadastro semelhante ao cadastro de Pedidos de Venda, cabealho varivel com itens. Sintaxe

GUIA DE REFERNCIA RPIDA AdvPL

27

Modelo3(cTitulo,cAliasEnchoice,cAliasGetD,aCpoEnchoice,cLinOk,cTudOk,nOpcE,nOpcG,cFieldOk, [lVirtual,nLinhas,aAltEnchoice]) Parmetros cTitulo Ttulo da janela cAliasEnchoice lias do cabealho cAliasGetd lias dos itens aCpoEnchoice Array com os campos que sero mostrados cLinOk Funo para validar a mudana de linha nos itens. cTudOk Funo para validar todos os itens. nOpce Nmero da opo do menu para o cabealho (Enchoice) nOpcG Nmero da opo do menu para o itens (GetDados) cFieldOk Funo para validar os campos dos itens (GetDados) lVirtual Permite visualizar campos virtuais na enchoice. Default = .F. nLinhas Limita o nmero mximo de linhas (GetDados) Default = 99. aAltEnchoice Array com campos alterveis (Enchoice) Default = Todos. Retorna lRet Retorno da funo modelo3. Se True a operao foi confirmada. Exemplo
aRotina := {{ Pesquisa,AxPesqui, 0 , 1},; { Visual,AxVisual, 0 , 2},; { Inclui,AxInclui, 0 , 3},; { Altera,AxAltera, 0 , 4, 20 },; { Exclui,AxDeleta, 0 , 5, 21 }} // // Opcoes de acesso para a Modelo 3 // cOpcao:=VISUALIZAR Do Case Case cOpcao==INCLUIR; nOpcE:=3 ; nOpcG:=3 Case cOpcao==ALTERAR; nOpcE:=3 ; nOpcG:=3 Case cOpcao==VISUALIZAR; nOpcE:=2 ; nOpcG:=2 EndCase // // Cria variaveis M->????? da Enchoice // RegToMemory(SC5,(cOpcao==INCLUIR)) // // Cria aHeader e aCols da GetDados // nUsado:=0 dbSelectArea(SX3) dbSeek(SC6) aHeader:={} While !Eof().And.(x3_arquivo==SC6") If Alltrim(x3_campo)==C6_ITEM dbSkip() Loop Endif If X3USO(x3_usado).And.cNivel>=x3_nivel nUsado:=nUsado+1 Aadd(aHeader,{ TRIM(x3_titulo), x3_campo, x3_picture,; x3_tamanho, x3_decimal,AllwaysTrue(),; x3_usado, x3_tipo, x3_arquivo, x3_context } ) Endif dbSkip() End If cOpcao==INCLUIR aCols:={Array(nUsado+1)} aCols[1,nUsado+1]:=.F. For _ni:=1 to nUsado aCols[1,_ni]:=CriaVar(aHeader[_ni,2]) Next Else aCols:={} dbSelectArea(SC6) dbSetOrder(1) dbSeek(xFilial()+M->C5_NUM) While !eof().and.C6_NUM==M->C5_NUM AADD(aCols,Array(nUsado+1))

GUIA DE REFERNCIA RPIDA AdvPL

28

For _ni:=1 to nUsado aCols[Len(aCols),_ni]:=FieldGet(FieldPos(aHeader[_ni,2])) Next aCols[Len(aCols),nUsado+1]:=.F. dbSkip() End Endif If Len(aCols)>0 // // Executa a Modelo 3 // cTitulo:=Teste de Modelo3() cAliasEnchoice:=SC5" cAliasGetD:=SC6" cLinOk:=AllwaysTrue() cTudOk:=AllwaysTrue() cFieldOk:=AllwaysTrue() aCpoEnchoice:={C5_CLIENTE} _lRet:=Modelo3(cTitulo,cAliasEnchoice,cAliasGetD,aCpoEnchoice,cLinOk,cTudOk,nOpcE,nOpcG,cFieldOk) // // Executar processamento // If _lRet Aviso(Modelo3(),Confirmada operacao!,{Ok}) Endif Endif Return

MontaF3
Tipo: Processamento Permite o acesso janela de Consultas Padronizadas (criadas no SXB) atravs de um GET usando a tecla F3. Sintaxe MontaF3(cAlias) Parmetros cAlias Alias do arquivo ou cdigo de tabela para consulta. Se no informado, desabilita a tecla F3. Exemplo
// Exemplo de uso da funcao MontaF3: // Versao DOS cCod := Space(15) @02,50 Say Digite o codigo: Get cCod Picture @! ; When MontaF3(SB1) Valid(MontaF3()) Read Return // *************************** // Versao WINDOWS // Use a propria clausula do comando get: @ 250,250 To 360,450 Dialog oDlg Title Teste @ 02,50 Get cCod Picture @! F3 SB1 Activate Dialog oDlg Centered Return

MovimCC
Tipo: Processamento Retorna o movimento de um centro de custo mais conta contbil (extracontbil). Sintaxe MovimCC(cCC, cConta, nMs, nMoeda) Parmetros cCC Cdigo do centro de custo cConta Cdigo da conta contbil nMs Referente ao ms nMoeda Moeda desejada para obteno do valor Exemplo
MovimCC(3001, 111001,Month(Ddatabase),1)

Movimento
Tipo: Processamento Devolve o movimento (dbito-crdito) de uma determinada conta, ou seja, o saldo do movimento. Sintaxe Movimento(cCdigo,nMs,nMoeda,dData)

GUIA DE REFERNCIA RPIDA AdvPL

29

Parmetros cCdigo Cdigo da conta nMs Ms do movimento desejado nMoeda Moeda desejada para obteno do movimento dData Data do exerccio desejado Exemplo
Movimento(43,1,1, CTOD ("01/01/95") - retorna o 1 perodo Movimento(`43,1,1,CTOD(01/01/96) - retorna o 13 perodo // Exibe uma mensagem no dialogo MsProcTxt(Processando produto: +B1_COD) // Processamento... dbSkip() EndDo Return

MsBar
Tipo: Impresso Funo para impresso de cdigo de barras na deskjet HP e laser. Sintaxe MSBAR(cTypeBar,nRow,nCol,cCode,oPrint,lCheck,Color,lHorz,nWidth,nHeigth,lBanner,cFont,cMode) Parmetros nTypeBar - String com o tipo do codigo de barras "EAN13","EAN8","UPCA" ,"SUP5" ,"CODE128" "INT25","MAT25,"IND25","CODABAR","CODE3_9" nRow - Numero da Linha em centimentros nCol - Numero da coluna em centimentros cCode - String com o conteudo do codigo oPrint - Obejcto Printer lcheck - Se calcula o digito de controle color - Numero da Cor, utilize a "common.ch" lHort - Se imprime na Horizontal nWidth - Numero do Tamanho da barra em centmetros nHeigth -Numero da Altura da barra em milmetros lBanner - Se imprime o linha em baixo do codigo cFont - String com o tipo de fonte cMode - String com o modo do codigo de barras CO Retorna NIL Exemplo Function TesteBAR() LOCAL wnrel LOCAL cDesc1 :="Teste de codigo de barras" LOCAL cDesc2 :="" LOCAL cDesc3 :="" LOCAL cString :="SA1" LOCAL aRegistros := {} PRIVATE ctitulo PRIVATE ctamanho PRIVATE aReturn PRIVATE cnomprog PRIVATE nLastKey wnrel := "Teste020" wnrel:=SetPrint(cString,wnrel,nil,@ctitulo,cDesc1,cDesc2,cDesc3,.F.,"",.F.,cTamanho) If nLastKey == 27 Set Filter To Return Endif SetDefault(aReturn,cString) If nLastKey == 27 := "Cod.Barras" := "P" := { "Zebrado", 1,"Administracao", 2, 2, 1, "",1 } := "teste020" := 0

GUIA DE REFERNCIA RPIDA AdvPL

30

Set Filter To Endif RptStatus({|lEnd| TesteImp(@lEnd,wnrel,cString)},cTitulo) Return .T. Static Function TesteImp(lEnd,wnrel,cString) Local oPr oPr := ReturnPrtObj() @ 1 ,001 PSAY 'Codigo 128 subset A' MSBAR("CODE128", 3 , 1 ,"12345678901" ,oPr,NIL,NIL,NIL,NIL,NIL,NIL,NIL,"A") oPr := ReturnPrtObj() @ 10 ,001 PSAY 'Codigo 128 subset B' MSBAR("CODE128", 10 , 1 ,"123456789011010" ,oPr,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL) oPr := ReturnPrtObj() @ 20 ,001 PSAY 'Codigo EAN 13' oFont:= TFont():New( "Arial",,nHeight,,lBold,,,,,lUnderLine ) oPr := ReturnPrtObj() MSBAR("EAN13" , 12 , 1 ,"123456789012",oPr,NIL,NIL,NIL,NIL,NIL,NIL,NIL,NIL) Set Filter To dbSetOrder(1) Set device to Screen If aReturn[5] == 1 Set Printer To dbCommitAll() OurSpool(wnrel) Endif MS_FLUSH() Return .T.

MsGetVersion
Tipo: Processamento Retorna array com as verses do Windows NT. Sintaxe MsGetVersion( ) Exemplo
aVersao := MsGetVersion() @ 001, 010 PSAY Versao do Windows : + Str( aVersao[1], 2 ) + . + Str( aVersao[2], 2 ) @ 008, 010 PSAY Versao do Dos : + Str( aVersao[3], 2 ) + . + Str(aVersao[4], 2 )

MsgBox
Tipo: Tela Windows Abre uma caixa de dialogo padronizada para informar o usurio de um Erro deciso a ser tomada ou apenas uma informao (Registro Gravado com sucesso). Sintaxe MSGBOX(cMensagem,cTtulo,cTpCaixa) Parmetros cMensagem Define a mensagem apresentada no interior da janela cTtulo Titulo da janela cTpCaixa Tipo da caixa padronizada Retorno Retorna Nil ou um valor lgico (.T. ou .F.) conforme o tipo de caixa. Comentrios As caixas assumem o tamanho de <cMensagem>. Tipos de caixas: STOP, utiliza um bitmap para advertncia e tem um boto Ok. Retorna Nil.

GUIA DE REFERNCIA RPIDA AdvPL

31

INFO, utiliza um bitmap para advertncia e tem um boto Ok. Retorna Nil. ALERT, utiliza um bitmap para advertncia e tem um boto Ok. Retorna Nil. YESNO, utiliza um bitmap para advertncia e tem dois botes Sim e No, retorna .T. ou .F. RETRYCANCEL, utiliza um bitmap para advertncia e tem dois botes Repetir e Cancelar, retorna .T. ou .F.

@..To...MultiLine
Tipo: Tela Windows Ativa Browse para edio de mltiplos itens padro SigaAdv Win (GetDados Itens SC6). Sintaxe @ nLinha1,nColuna1 TO nLinha2,nColuna2 MULTILINE <<MODIFY>> <<DELETE>> <<VALID>> cFuno <<FREEZE>> nColuna Parmetros nLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior nColuna2 Nmero da coluna inferior cFuno Funo a ser executada para validar mudana de linha <opcional> nColuna Nmero de colunas Congeladas esquerda <opcional> Comentrios As clusulas opcionais permitidas controlam as Alteraes, Excluses e Validaes nas mudanas de linha e congelamento de colunas respectivamente. Devem ser criadas obrigatoriamente as matrizes aHeader [n][n] e aCols[n][n] antes da definio da MULTILINE, sendo que aHeader [n][n] contm informaes sobre os campos que sero editados (SX3) e aCols [n][n] contm os dados referentes aos campos que sero editados.

NaoVazio
Tipo: Processamento Verifica se o campo no est vazio. Sintaxe NaoVazio(cCpo) Parmetros cCpo Campo a verificar Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Exemplos
@ 5,10 Get cCodigo Valid NaoVazio(cCodigo)

Negativo
Tipo: Processamento Verifica se negativo. Sintaxe Negativo(nCpo) Parmetros nCpo Campo a verificar Retorna ExpL1 Se o valor de nCpo for menor que 0, retornado .T., caso contrrio ser retornado .F.. Exemplos
If Negativo (nValTitulo) @ 5,10 Say Valor invalido Loop EndIf

Orcado
Tipo: Processamento Retorna o valor orado de uma conta. Sintaxe Orcado(cConta, nPerodo,nMoeda,dData) Parmetros cConta Cdigo da conta De nPerdodo Referente ao perodo nMoeda Moeda desejada para obteno do valor

GUIA DE REFERNCIA RPIDA AdvPL

32

dData Data para converso (em formato data ou caracter), caso no informada, ser utilizada a DataBase do sistema Exemplo
Orcado(11102001,1,1)

OrcadoCC
Tipo: Processamento Recupera o valor orado da Conta x Centro de Custo para utilizao na planilha. Sintaxe OrcadoCC(cConta,cCC,nPerodo,nMoeda,dData) Parmetros cConta Cdigo da Conta cCC Cdigo do Centro de Custo nPerodo Perodo (default ms da database) nMoeda Moeda (default 1) dData Data para converso se moeda de 2 a 5 - (default dDataBase) Exemplo
OrcadoCC( 111001,3001,3,2)

OpenFile
Tipo: Processamento a funo que exibe o diagnstico de arquivos, verificando a existncia dos arquivos de dados e os ndices do sistema, criando caso no existam, etc. Abre os arquivos de acordo com o mdulo onde executada ou de acordo com a parametrizao. Sintaxe OpenFile(cEmp) Parmetros cEmp Cdigo da empresa que deve ser aberta. Exemplo
// Exemplo de uso da funcao openfile: cEmp := SM0->M0_CODIGO // Elimina os indices de todos os arquivos abertos no // SX2 para reindexacao dbSelectArea(SX2) dbGoTop() While !EOF() If Select(SX2->X2_CHAVE) > 0 dbSelectArea(SX2->X2_CHAVE) dbCloseArea() cEsp := AllTrim(SX2->X2_PATH) cEsp := cEsp + AllTrim(SX2->X2_ARQUIVO) + "*" + RetIndExt() fErase(cEsp) Endif dbSelectArea(SX2) dbSkip() EndDo dbCloseAll() // Fecha todos os arquivos OpenFile(cEmp) // Abre os arquivos (reindexa) Return * Parmetro cEmp apenas no Windows.

OurSpool
Tipo: Impresso Abre a tela do gerenciador de impresso do sistema. O gerenciador mostra os relatrios impressos em disco gravados no diretrio definido atravs do parmetro MV_RELATO. Sintaxe OurSpool(cArq) Parmetros cArq Nome do arquivo. Este parmetro opcional, se informado, o gerenciador de impresso j aberto neste arquivo. Exemplo
// Exemplo de uso da funcao ourspool: // Ativa o gerenciador de impressao: OurSpool() // Para verificar o uso desta funcao em relatorios, // verifique o exemplo da funcao AVALIMP.

GUIA DE REFERNCIA RPIDA AdvPL

33

Return

Pergunte
Tipo: Impresso Esta funo permite acessar e editar um grupo de perguntas do arquivo SX1. Mostra uma tela contendo as perguntas gravadas em SX1 a serem respondidas ou confirmadas pelo usurio. Sintaxe Pergunte(cGrupo, lVar) Parmetros cGrupo Nome do Grupo de perguntas. lVar .F. - devolve o contedo das variveis, no apresentando a janela de perguntas; .T. - permite a alterao das variveis, apresentando a janela. Retorna ExpL1 .T. se o grupo de perguntas existe. Exemplos
pergunte(AFR090,.T.) // Variveis utilizadas na pergunta // mv_par01 a partir da data // mv_par02 at a data // mv_par03 da conta // mv_par04 at a conta // mv_par05 do centro de custo // mv_par06 at o centro de custo // mv_par07 do cdigo // mv_par08 at o cdigo // mv_par09 do projeto // mv_par10 at o projeto // mv_par11 moeda

Periodo
Tipo: Processamento Devolve o perodo contbil de acordo com o exerccio atual. Sintaxe Periodo(dData,nMoeda) Parametros dData Data a ser considerada. Se no for especificada, assumida a data base. nMoeda Moeda a ser considerada. Se no for especificada, assumida a primeira moeda. Retorna nPer Perodo contbil retornado. Exemplo

Veja o exemplo da funo CALCSALDO. Pertence


Tipo: Processamento Verifica se o campo est contido em outro. Sintaxe Pertence(cString,cCampo) Parmetros cString String que deve estar contida no cCampo cCampo Campo a verificar Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Exemplo
SetCursor(1) @ 09,19 Get cTipo Picture @! Valid Pertence(CL\VD\PD,cTipo)

PesqPict
Tipo: Processamento Pesquisa, no dicionrio de dados, qual a picture usada em um determinado campo, seja para a edio em tela ou para a impresso de relatrios. Sintaxe PesqPict(cAlias,cCampo,nTam) Parmetros cAlias Alias do arquivo cCampo Nome do campo

GUIA DE REFERNCIA RPIDA AdvPL

34

nTam Opcional, para campos numricos, ser usado como o tamanho do campo para definio da picture. Se no informado, e usado o tamanho padro no dicionrio de dados. Retorna cPic Picture do campo Exemplo
// Exemplo de uso da funcao PesqPict // Em um relatorio pode-se usar a sintaxe abaixo para // formatacao automatica de acordo com o dicionario de // dados: @ nLin,20 Say Total: @ nLin,27 Say SF2->F2_VALBRUT Picture PesqPict(SF2,F2_VALBRUT) // ... Return

PesqPictQt
Tipo: Processamento Devolve a Picture de um campo de quantidade, de acordo com o dicionrio de dados. Esta funo geralmente utilizada quando h pouco espao disponvel para impresso de valores em relatrios, quando o valor nEdio no informado, ela tem o comportamento semelhante ao da funo X3Picture, pois busca o tamanho do campo no dicionrio de dados. Sintaxe PesqPictQt(cCampo,nEdio) Parmetros cCampo Nome do campo a verificar a picture nEdio Espao disponvel para edio Retorna ExpC Picture ideal para o espao definido por nEdio, sem a separao dos milhares por vrgula Exemplo
@ 8,10 Say SB2->B2_QATU Picture PesqPictQt (B2_QATU,8)

Posicione
Tipo: Processamento Posiciona o arquivo em um determinado registro. Sintaxe Posicione(cAlias, nOrdem, cChave, cCampo) Parmetros cAlias Alias do arquivo nOrdem Ordem utilizada cChave Chave pesquisa cCampo Campo a ser retornado Retorna Retorna o contedo do campo passado com o permetro. Exemplo
Posicione(SA1,1,xFilial(SA1)+001,A1_NOME)

Positivo
Tipo: Processamento Verifica se positivo. Sintaxe Positivo(nCampo) Parmetros nCampo Campo a verificar Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Comentrios Se cCampo for maior ou igual ( >= ) a zero a funo retorna .T. Caso contrrio retorna .F. Exemplo
@ 09,07 Get nValor Picture 999999 Valid Positivo ( nValor )

GUIA DE REFERNCIA RPIDA AdvPL

35

ProcRegua
Tipo: Tela DOS/Windows Inicializa rgua padro de processamento. Sintaxe ProcRegua(nRegs,nLinha,nColuna) Parmetros nRegs Nmero de registros que sero processados. nLinha Nmero da Linha da rgua nColuna Nmero da Coluna da rgua Retorna Nil Exemplo
ProcRegua(1000) For i:= 1 to 1000 IncProc() Next Return

No programa para Windows a ProcRegua s utiliza o primeiro parmetro. No programa para DOS so utilizados os trs parmetros. = Ver tambm IncProc()

ProxReg
Tipo: Processamento Retorna o ltimo registro incrementado. Esta funo retorna um valor, numrico ou caracter, contendo o prximo nmero a partir do ltimo registro encontrado. O campo que levado em considerao aquele que se encontra posicionado no SX3 (dicionrio de dados). Pode ser usada para obter os prximos valores para campos dos tipos: Caracter, Numrico e Data. Sintaxe ProxReg(nInc,nPos,nIndice) Parmetros nInc Valor a incrementar nPos Tamanho nndice Nmero do ndice a ser utilizado Retorna uRet Prximo nmero (ltimo registro incrementado) Exemplo
// Exemplo de uso da funo ProxReg: dbSelectArea(SX3) dbSetOrder(2) dbSeek(A1_COD) dbSelectArea(SA1) cProx := ProxReg(1,6,1) // Retorna o possvel prximo // cdigo para o cadastro de // cliente dbSelectArea(SX3) dbSeek(D2_NUMSEQ) dbSelectArea(SD2) nProx := ProxReg(1,,4) // Retorna o proximo nmero // seqencial Return

@...Radio
Tipo: Tela Windows Cria uma caixa de seleo semelhante a CHECKBOX, todos os itens so apresentados mas apenas um pode ser selecionado. Sintaxe @ nLinha,nColuna RADIO aArray VAR nPos Object oRdx Parmetros nLinha Nmero da linha superior nColuna Nmero da coluna superior aArray Matriz [1] com os Itens nPos Contm a posio na Matriz[1] do item selecionado oRdx Objeto associado Radiobox() Retorno

GUIA DE REFERNCIA RPIDA AdvPL

36

O item selecionado pode ser obtido por - Matriz [n3] Comentrios Os itens da Matriz [1] devem ser do tipo C caracter. Pode ser utilizada para definir uma caracterstica em um conjunto. Ex.Tipo da Condio de pagamento Tipo 1 Tipo 2 Tipo 3

RecLock
Tipo: Processamento Tenta efetuar um lock no registro do banco de dados informado. Sintaxe RecLock(cAlias,lAdiciona) Parmetros cAlias Alias do Banco de Dados lAdiciona .T. adiciona registro ao Banco de Dados Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Comentrios Esta funo tenta colocar o registro corrente do arquivo cAlias em lock. necessrio colocar um registro em lock sempre que se for efetuar uma atualizao no mesmo, como um comando Replace ou um Delete. Caso lAdiciona = .T., a funo RecLock inclui (com um Append Blank) um registro no arquivo cAlias. Se a operao for bem sucedida, retorna .T. Exemplo
// Excluso de Registro // Com lAdiciona = .F. If ! RecLock(SF1,.F.) @ 1,1 Say Registro em uso por outra estao Loop EndIf dbDelete() dbUnLock() Com ExpL2 = .T. // Incluso de Registro RecLock(SF1,.T.) Replace F1_TIPO With cTipo, F1_DOC With cNFiscal,; F1_SERIE With cSerie ,F1_EMISSAO With dDEmissao,; F1_LOJA With cLoja ,F1_FORNECE With Subs(cA100For,1,6) dbUnLock()

Aps a atualizao do registro, deve-se executar a funo MsUnlock().

RecMoeda
Tipo: Processamento Rotina para obteno do valor da moeda desejada em determinada data. Sintaxe RecMoeda(dData,nMoeda) Parmetros dData Data para obteno do valor da moeda. nMoeda Moeda desejada. Retorna nVMoeda Retorna o Valor da moeda na data desejada. Exemplo
// Exemplo de uso da funcao RecMoeda: nDolar := RecMoeda(dDataBase,2) nValDolar := SE1->E1_VALOR * nDolar Return

RestArea
Tipo: Processamento Restaura a rea RestArea a partir do array. Sintaxe RestArea(aArray) Parmetros aArray Expresso Array para restaurao Exemplo
aArray:=GetArea() RestArea(aArray)

GUIA DE REFERNCIA RPIDA AdvPL

37

Ver tambm Funo GetArea( )

RetASC
Tipo: Processamento Retorna um cdigo de letras quando ultrapassar o nmero mximo de dgitos. Sintaxe RetAsc(cOri,nTam,lAlfa) Parmetros cOri String original a ser convertida. nTam Tamanho mximo para a converso. lAlfa Indica se o retorno deve conter letras (.T.) ou somente nmeros (.F.) Retorna cStr Retorna a String formada com letras ou nmeros. Exemplo
// Exemplo de uso da funcao RetAsc: // Suponha a existencia de um campo caracter de tamanho // 2. Usando a funcao RetAsc com o parametro lAlfa ver// dadeiro (.T.) se o numero ultrapassar 99 retornara A0 cCod := StrZero(ProxReg(1,2,1),2) // Se ultrapassar 99 retorna A0 cCod := RetAsc(cCod,2,.T.) __Return(cCod)

RetIndex
Tipo: Processamento Devolve os ndices padres do SIGA. Sintaxe RetIndex(cAlias) Parmetros cAlias Alias do Arquivo Retorna Nmero ndices existentes no SINDEX Comentrios Baseado no SINDEX, abre todos os ndices padres para o arquivo em pauta. Exemplo
Select SA1 Index on A1_ACUM to TRAB : SINDEX := RetIndex (SA1)

RollBackSX8
Tipo: Processamento Retorna o nmero obtido pela funo GETSX8NUM no semforo como pendente. Verifique a funo GETSX8NUM para maiores detalhes. Sintaxe RollBackSx8() Exemplo Verifique os exemplos na funo GETSX8NUM.

RptStatus
Tipo: Processamento (Apenas Windows) Executa funo de detalhe do relatrio. Sintaxe RptStatus(bBlock) => RptStatus(bBlock, cTtulo, cMsg) Parmetros bBlock Bloco de cdigo que define a funo a ser executada. cTtulo Ttulo do dilogo de processamento. cMsg Mensagem do dilogo de processamento. Comentrios Pode ser utilizada com os parmetros: RptStatus( { | | Execute(Nome da Funo) } )

GUIA DE REFERNCIA RPIDA AdvPL

38

Saldo
Tipo: Processamento Calcula o saldo de uma determinada conta at o perodo informado e na moeda especificada. Sintaxe Saldo(cConta,nPer,nMoeda) Parmetros cConta Cdigo da conta desejada. nPer Perodo contbil at o qual ser feito o clculo. nMoeda Moeda desejada. Retorna nSld Retorna o Saldo da conta at o perodo desejado. Exemplo
// Exemplo de uso da funcao Saldo: cConta := SA1->A1_CONTA nSl := Saldo(cConta,Periodo(dDataBase,2),2) cSl := Transform(nSl,@E 9,999,999.99") Alert(O saldo da conta +cConta+ na moeda 2 e: +cSl) Return

SaldoCC
Tipo: Processamento Calcula o saldo atual em um determinado centro de custo ou conta (extracontbil). O arquivo SI3 deve estar posicionado para a obteno dos valores para o clculo. Sintaxe SaldoCC(cCC,cConta,nPer,nMoeda) Parmetros cCC Centro de Custo desejado cConta Cdigo da conta nPer Perodo at o qual o acmulo deve ser calculado nMoeda Moeda desejada Retorna nSld Saldo atual retorna do. Exemplo
// Exemplo de uso da funcao SaldoCC: // Assumindo-se que o SI3 esta posicionado, nao e neces// sario informar o centro de custo e a conta. nSld := SaldoCC(,,12,1) return

SaldoCusto
Tipo: Processamento Calcula o saldo dos centro de custos extracontbeis. Sintaxe SaldoCusto(cCC1,cCC2,cConta1,cConta2,nMs,nMoeda) Parmetros cCC1 Centro de Custo Inicial cCC2 Centro de Custo Final cConta1 Conta Inicial cConta2 Conta Final nMs Ms (se nula, assume o ms de referncia da database) nMoeda Moeda (se nula, ser assumido 1) Exemplo
SaldoCusto(1007, 1099, 3, 4, 10, 1)

SaldoSB2
Tipo: Processamento Esta funo calcula o saldo atual do produto (do Arquivo SB2), descontando os valores empenhados, reservados, etc. necessrio que o Arquivo SB2 esteja posicionado no produto desejado. Sintaxe SaldoSB2() Retorna

GUIA DE REFERNCIA RPIDA AdvPL

39

nSld Retorna o Saldo do produto calculado. Exemplo


// Exemplo de uso da funcao SaldoSb2: cProd := Space(15) @ 10,10 Get cProd Picture @! Read dbSelectArea(SB2) dbSeek(cProd) cSld := Transform(SaldoSb2(),@E 9,999,999.99") Alert(Este produto tem um saldo de: +cSld) Return

SetDefault
Tipo: Processamento Habilita os padres definidos pela funo SetPrint. Sintaxe SetDefault (aArray, cAlias) Parmetros aArray Array aReturn, preenchido pelo SetPrint [1] Reservado para Formulrio [2] Reservado para N de Vias [3] Destinatrio [4] Formato => 1-Comprimido 2-Normal [5] Mdia => 1-Disco 2-Impressora [6] Porta ou Arquivo 1-LPT1... 4-COM1... [7] Expresso do Filtro [8] Ordem a ser selecionada [9]..[10]..[n] Campos a Processar (se houver) cAlias Alias do arquivo a ser impresso. Retorna Nil Comentrios Esta funo habilita os padres de relatrio alterados pela funo SetPrint. Exemplo
// Define Variveis cString:= SB1 NomeRel:= MATR290 cPerg := MTR290 titulo := RELAO PARA ANLISE DOS ESTOQUES cDesc1 := Este relatrio demonstra a situao de cada item em cDesc2 := relao ao seu saldo , seu empenho , suas entradas previstas cDesc3 := e sua classe ABC. aOrd := { Por Codigo , Por Tipo } Tamanho := G // Envia controle para a funo SETPRINT NomeRel:= SetPrint( cString, NomeRel, cPerg, @titulo, cDesc1, ; cDesc2, cDesc3, .F., aOrd, .F., Tamanho) If LastKey() = 27 .or. nLastKey = 27 RestScreen(3,0,24,79,cSavScr1) Return Endif SetDefault(aReturn,cAlias) If LastKey() = 27 .OR. nLastKey = 27 RestScreen(3,0,24,79,cSavScr1) Return Endif

SetDlg
Tipo: Tela Windows Colocar um ttulo em uma Dialog. Sintaxe SetDlg(oWnd, cText) Parmetros oWnd Objeto da janela cText Novo Texto Exemplo
If ( INCLUI )

GUIA DE REFERNCIA RPIDA AdvPL

40

cCaption := Inclusao de Pedidos ElseIf ( ALTERA ) cCaption := Alteracao de Pedidos EndIf SetDlg( oDlg, cCaption )

SetPrint
Tipo: Impresso Altera os padres de impresso. Sintaxe SetPrint(cAlias, cNomeRel, cPerg, cDesc1, cDesc2, cDesc3, cDesc4, lDic, aOrdem, lComp, cClass) Parmetros cAlias Alias do Arquivo Principal (se existir) cNomeRel Nome padro do relatrio cPerg Nome do grupo de perguntas cDesc1 ..cDesc4 Descrio do Relatrio lDic Habilita o Dicionrio de Dados .T. Habilita (s utilizar em conjunto com a funo ImpCadast) .F. Desabilita aOrdem Array contendo as ordens de indexao do arquivo principal. lComp Habilita a alterao da compresso do relatrio .T. Habilita .F. Desabilita cClass Classificao do Relatrio por Tamanho ( G, M ou P ) P 80 colunas M 132 colunas G 220 colunas Retorna ExpC Nome do arquivo com o relatrio impresso em disco opcionalmente alterado pelo usurio Comentrios Esta funo possibilita a alterao de determinados padres dos relatrios. Ela funciona em conjunto com a funo SetDefault. Exemplo
// Define Variveis cString:= SB1 NomeRel:= MATR290 cPerg := MTR290 titulo := RELAO PARA ANLISE DOS ESTOQUES cDesc1 := Este relatrio demonstra a situao de cada item em cDesc2 := relao ao seu saldo , seu empenho , suas entradas previstas cDesc3 := e sua classe ABC. aOrd := { Por Codigo , Por Tipo } Tamanho:= G // Envia controle para a funo SETPRINT NomeRel := SetPrint( cString, NomeRel, cPerg, @titulo, cDesc1,; cDesc2, cDesc3, .F., aOrd, .F., Tamanho ) If LastKey() = 27 .or. nLastKey = 27 RestScreen(3,0,24,79,cSavScr1) Return Endif SetDefault(aReturn,cAlias) If LastKey() = 27 .OR. nLastKey = 27 RestScreen(3,0,24,79,cSavScr1) Return Endif

SetRegua
Tipo: Impresso (DOS/ Windows) Inicializa rgua padro em relatrios. Sintaxe SetRegua(nRegs) Parmetros nRegs Nmero de registros que sero processados. Retorno Nil Exemplo

GUIA DE REFERNCIA RPIDA AdvPL

41

DbSelectArea(SA1) SetRegua(LastRec()) While ( ! Eof() ) @ Li, 001 PSAY SA1->A1_NOME DbSkip() IncRegua() End Do

Comentrio Ver tambm incRegra.

SldBco
Tipo: Processamento Retorna o saldo bancrio em uma data. Sintaxe SldBco(cBanco,cAgncia,cConta,dData,nMoeda) Parmetros cBanco Cdigo do Banco cAgncia Agncia Bancria cConta Conta Bancria dData Data do Saldo nMoeda Moeda do Saldo Bancrio Exemplo
SldBco(409,00198,011122, dDataBase,1)

SldCliente
Tipo: Processamento Retorna o saldo a receber do cliente em uma determinada data. Sintaxe SldCliente(cCliente,dData,nMoeda,lSaldo) Parmetros cCliente Cdigo do Cliente+Loja dData Data do Movimento a Receber (padro dDataBase) nMoeda Moeda lSaldo Se .T. considera o saldo do SE5 (padro .T.) Exemplo
SldCliente(00000101,dDataBase)

SldFornece
Tipo: Processamento Retorna o saldo a pagar do fornecedor em uma data. Sintaxe SldFornece(cFornece,dData,nMoeda,lSaldo) Parmetros cFornece Cdigo do Fornecedor+Loja dData Data do Movimento a Pagar (padro dDataBase) nMoeda Moeda - (padro 1) lSaldo Se .T. considera o saldo do SE5 (padro .T.) Exemplo
SldFornece(00000101")

SldPagar
Tipo: Processamento Retorna o saldo a pagar em uma determinada data. Sintaxe SldPagar(dData,nMoeda,lData) Parmetros dData Data do Movimento a Pagar ( padro dDataBase) nMoeda Moeda (padro 1) lData Se .T. At a Data, .F. Somente Data (padro .T.) Exemplo
SldPagar(dDataBase,1,.T.)

SldReceber
Tipo: Processamento

GUIA DE REFERNCIA RPIDA AdvPL

42

Retorna o saldo a receber em uma data. Sintaxe SldReceber(dData,nMoeda,lData) Parmetros dData Data do Movimento a Receber. nMoeda Moeda - default 1 lData .T. - at a Data; .F. - somente Data (o padro .T.) Exemplo
SldReceber(Data,1,.T.)

SomaContas
Tipo: Processamento Retorna o saldo acumulado de um grupo de contas, de acordo com a sintaxe apresentada. Esta funo considera somente contas de classe A analtica Sintaxe SomaContas(cLista,nMs,nMoeda)

GUIA DE REFERNCIA RPIDA AdvPL

43

Parmetros cLista Lista de contas, cercada por aspas (). O separador : (dois pontos) informa intervalo de contas De-At. O separador , (vrgula) informa separao de contas. nMs Ms (default ms da database) nMoeda Moeda (default 1) Exemplo
SomaContas(11101001,3,1) Devolve o saldo da conta em questo no ms 3 na moeda 1.

SomaMovim
Tipo: Processamento Retorna o movimento dentro de um intervalo de contas analticas. Sintaxe SomaMovim(cConta1, cConta2, nMs, nMoeda) Parmetros cConta1 Cdigo da conta De cConta2 Cdigo da conta At nMs Referente ao ms nMoeda Moeda desejada para obteno do valor Exemplo
SomaMovim(41304,41305,12,1)

Somar
Tipo: Processamento Faz o somatrio de um arquivo, retornando o valor acumulado de um campo determinado. Sintaxe Somar(cAlias, cCond, cCampo) Parmetros cAlias Alias do arquivo cCond Condio para soma cCampo Campo a ser somado Exemplo
Somar(SI1",I1_CLASSE='S' ,I1_SALANT)

Caso o usurio no deseje definir nenhuma condio, a ExpC2 deve ser .T..

SomaSaldo
Tipo: Processamento Retorna o saldo atual entre um intervalo de contas. Sintaxe SomaSaldo(cConta1, cConta2, nPerodo, nMoeda)

Parmetros cConta1 Cdigo da conta De cConta2 Cdigo da conta At nPerodo Referente ao perodo nMoeda Moeda desejada para obteno do valor Exemplo
SomaSaldo(31001,31010,12,1)

SQLtoTRB
Tipo: Processamento Appenda uma query a um arquivo temporario. O arquivo temporrio deve ser criado e aberto antes de chamar a funo. Sintaxe SQLtoTRB(cQuery,aStruTRB,cAliasTRB) Parmetros cQuery Query a ser executada aStruTrb Estrutura do arquivo de trabalho {Nome,Tipo,Tamanho,Decimais} cAliasTRB Alias do arquivo de trabalho Exemplo

GUIA DE REFERNCIA RPIDA AdvPL

44

CQuery CQuery CQuery CQuery AStru

:= Select C5_NUM PEDIDO, C5_CLIENTE CLIENTE, C9_PRODUTO PRODUTO, Sum(C9_QTDLIB) TOTALLIB From += RetSqlName(SC5)+ SC5,+RetSqlName(SC9)+ SC9 += Where C9_PEDIDO=C5_NUM AND SC5.D_E_L_E_T_ = AND SC9.D_E_L_E_T_ = += Group by C5_NUM,C5_CLIENTE,C9_PRODUTO := { { PEDIDO,C,6,0 },; { CLIENTE,C,6,0},; { PRODUTO,C,15,0 } ,; {TOTALLIB,N,16,2} }

cNomeArq:=CriaTrab( aStru, .T. ) dbUseArea(.T.,__LocalDriver,cNomeArq,"TRB",.T.,.F.) SQLToTRB(cQuery,aStru,TRB)

SumMovimCC
Tipo: Processamento Retorna o movimento de um intervalo de centro de custos extracontbeis. Poder ser`parametrizados tambm um grupo de contas. Sintaxe SumMovimCC(cCC1,cCC2,cConta1,cConta2,nMs,nMoeda) Parmetros cCC1 do Centro de Custo cCC2 at Centro de Custo cConta1 da Conta cConta2 at a Conta nMs Ms (default ms da database) nMoeda Moeda (default 1) Exemplo
SumMovimCC( 3001,3100,31001,31010,12,1)

Tabela
Tipo: Processamento Devolve o contedo da tabela de acordo com a chave. Esta funo usada para a obtencao do contedo de uma determinada tabela, na chave especificada. Retorna o conteudo, possibilitando inclusive a exibio de um help caso a tabela no exista. Sintaxe Tabela(cTab,cChav,lPrint) Parmetros cTab Nmero da tabela a pesquisar (deve ser informado como caracter). cChav Chave a pesquisar na tabela informada. lPrint Indica se deve (.T.) ou no (.F.) exibir o help ou a chave NOTAB se a tabela no existir. Retorna cRet Contedo da tabela na chave especificada. Retorna nulo caso a tabela no exista ou a chave no seja

encontrada.
Exemplo
// Exemplo de uso da funcao tabela: // Suponha a existencia da tabela 99 (tabela de // vendedor x Comissao): // Chave Conteudo // // V0 10 // V1 2.20 // V3 5 // Pode-se fazer um gatilho que, quando da informacao do // codigo do vendedor no cadastro, sugira o percentual // da tabela acima, de acordo com as duas primeiras po// sicoes do codigo digitado: //Gatilho-Dominio : A3_COD // Cta. Dominio: A3_COMIS // Regra : Val(Tabela(99,Left(M->A3_COD,2)))

TamSX3
Tipo: Processamento Retorna o tamanho de um campo no SX3 (dicionrio de dados). Sintaxe

GUIA DE REFERNCIA RPIDA AdvPL

45

TamSx3(cCampo) Parmetros cCampo Nome do campo. Retorna aTam Array com o tamanho e decimais do campo. Exemplo
// Exemplo de uso da funcao TAMSX3 // Array auxiliar: aCampos := { {B1_COD ,C},; {B1_DESC,C},; {B1_QE ,N},; {B1_PRV1,N} } // Cria arquivo de trabalho com o tamanho dos campos // exatamente como na base de dados, evitando erros de ] // Data Width Error: i := 0 aStru := {} For i:=1 To Len(aCampos) cCpo := aCampos[i,1] cTp := aCampos[i,2] aTam := TamSx3(cCpo) aAdd(aStru,{cCpo,cTp,aTam[1],aTam[2]) Next i cArq := CriaTrab(aStru,.T.) // O programa continua. . . Return

Texto
Tipo: Processamento No permite a digitao seguida de mais de um espao em branco, em campo do tipo Caracter. Sintaxe Texto(ExpC) Parmetros ExpC1 Expresso a ser verificada Exemplo
Texto()

@ ...TO
Tipo: Tela Desenha um box 3d. Sintaxe @ nLInha1,nColuna1 TO nLinha2,nColuna2 <TITLE> cTtulo Parmetros nLinha1 Nmero da linha superior nColuna1 Nmero da coluna superior nLinha2 Nmero da linha inferior nColuna2 Nmero da coluna inferior cTtulo Titulo apresentado na linha superior (opcional) Comentrios A clusula TITLE opcional. Se for omitida, o box no ter ttulo. Exemplo
@ 000, 000 TO 430, 500 DIALOG oDlg TITLE Interpretador xBase for Windows @ 060, 005 TO 185, 245 TITLE Exemplos @ 070, 010 BUTTON _Objetos B sicos SIZE 70,20 ACTION Execute(BasicObj) @ 070, 090 BUTTON _Browses SIZE 70,20 ACTION Execute(Browse) @ 130, 170 BUTTON Dlg c/Refresh SIZE 70,20 ACTION Execute(DlgDinam) @ 160, 090 BUTTON SQL SIZE 70,20 ACTION Execute(SqlDemo) @ 192,218 BMPBUTTON TYPE 1 ACTION Close(oDlg) ACTIVATE DIALOG oDlg CENTERED

TM
Tipo: Processamento Devolve a Picture de impresso de campos numricos dependendo do espao disponvel. Sintaxe TM(nValor, nEdio, nDec) Parmetros nValor Valor a ser editado nEdio Espao disponvel para edio

GUIA DE REFERNCIA RPIDA AdvPL

46

nDec Nmero de casas decimais Retorna ExpC1 Picture ideal para edio do valor nValor. Comentrios Esta rotina leva em considerao duas variveis: MV_MILHAR Determina se deve haver separao de milhar; MV_CENT Nmero de casas decimais padro da moeda corrente. Para ajustar o valor passado (ExpN1) ao espao disponvel (ExpN2) o programa verifica se pode haver separao de milhar, neste caso, a rotina eliminar tantos pontos decimais quantos sejam necessrios ao ajuste do tamanho. Caso no seja possvel ajustar o valor ao espao dado, ser colocado na picture o caracter de estouro de campo . O programa tambm ajusta um valor ao nmero de decimais (ExpN3), sempre imprimindo a quantidade de decimais passados no parmetro. Exemplo
Cabec(Ttulo,Cabec1,Cabec2,NomeProg,Tamanho,nTipo) Endif li:=li+1 nSalAnt := nSaldoAtu-nCompras-nRecProd-nRecCons @li,00 Say cTipAnt @li,05 Say nSalAnt Picture TM(nSalAnt, 14) @li,23 Say nCompras Picture TM(nCompras, 17, 3)

Se o contedo do campo nSalAnt for: 3.423.659.234,48 o valor ser impresso como: 3423659.234,48

Variao
Tipo: Processamento Retorna a variao em percentual entre dois valores. Sintaxe Variao(nFator1,nFator2) Parmetros nFator1 Primeiro fator comparativo nFator2 Segundo fator comparativo Exemplo
Variacao(100000,50000)

Vazio
Tipo: Processamento Verifica se o campo est vazio. Sintaxe Vazio(cCampo) Parmetros cCampo Campo a verificar Retorna ExpL1 Valor Lgico de Retorno (.T. ou .F.) Comentrios Retorna .T. se ExpC1 estiver vazio. Exemplo
@ 9,10 Get cCodigo Valid !Vazio(cCodigo)

X3Picture
Tipo: Processamento Devolve a Picture do campo de acordo com o dicionrio de dados. Sintaxe X3Picture(cCampo) Parmetros cCampo Nome do campo a verificar a picture. Retorna ExpC1 Picture do campo no dicionrio de dados. Comentrios Funo geralmente usada para atribuir aos relatrios a efetiva picture de campos numricos em relatrios. Exemplo
:

GUIA DE REFERNCIA RPIDA AdvPL

47

cRel:=SetPrint(cAlias, cPrograma , , @cTitulo, cDesc1, cDesc2, cDesc3 , .T., aOrd ) SetDefault(aReturn, cString) : While !EOF() nLinha:=nLinha+1 @nLinha, 1 Say SB2->B2_QATU Picture X3Picture(B2_QATU)

: XFilial
Tipo: Processamento Retorna a filial utilizada por determinado arquivo. Esta funo utilizada para permitir que pesquisas e consultas em arquivos trabalhem somente com os dados da filial corrente, dependendo claro se o arquivo est compartilhado ou no (definio que feita atravs do Mdulo Configurador). importante verificar que esta funo no tem por objetivo retornar apenas a filial corrente, mas retorn-la caso o arquivo seja exclusivo. Se o arquivo estiver compartilhado, a funo xFilial retornar dois espaos em branco. Sintaxe xFilial(cAlias) Parmetros cAlias Alias do arquivo desejado. Se no for especificado, o arquivo tratado ser o da rea corrente. Retorna cFilArq Retorna a Filial para o arquivo desejado.

GUIA DE REFERNCIA RPIDA AdvPL

48

Exemplo
// Exemplo de uso da funcao xFilial: // Supondo que a filial corrente seja a 01: @ 10,10 Say xFilial(SB1) // A linha acima ira imprimir 01 se o arquivo de // produtos estiver exclusivo. Se estiver compartilhado // imprimira . // Usando em processamentos (Pesquisa e processa // enquanto for a mesma filial): dbSeek(xFilial()+mv_par01) While !EOF() .And. xFilial() == SB1->B1_FILIAL ... Processamento Enddo Return

XMoeda
Tipo: Processamento Rotina para converso de valores entre moedas. Sintaxe xMoeda(nVMo,nMo,nMd,dData,nDec) Parmetros nVMo Valor na moeda origem. nMo Nmero da moeda origem. nMd Nmero da moeda destino. dData Data para converso. nDec Nmero de decimais. Se no informado, assume-se 2 casas deci-mais. Retorna nVMoeda Retorna o Valor na moeda de destino. Exemplo
// Exemplo de uso da funcao xMoeda: nVal := SE1->E1_VALOR // Valor na moeda 1 nVM3 := 0 // Contera o valor na moeda 3 nVM3 := xMoeda(nVal,1,3,dDataBase) Return

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

Microsiga

Sentido do movimento de impresso

Visualizao do posicionamento da imagem na etiqueta no padro Allegro:

GUIA DE REFERNCIA RPIDA AdvPL

49

Microsiga
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 [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

mm

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 MSCBPRINTER("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)

MSCBClosePrinter
Tipo: Impresso

GUIA DE REFERNCIA RPIDA AdvPL

50

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 Parmetros nXmm = 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 Exemplo MSCBSAY(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

GUIA DE REFERNCIA RPIDA AdvPL

51

cRotao cTypePrt

= String com o tipo de Rotao = 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: Impresso 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,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

GUIA DE REFERNCIA RPIDA AdvPL

52

J - Margem a margem (justificado) Exemplo MSCBSAYMEMO (1,10,8,4,cTexto,"N","A","9,5",.f.,"C")

MSCBBox
Tipo: Impresso Imprime 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: Impresso Imprime 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") Exemplo MSCBLineH(01,10,80,3,"B")

MSCBLineV
Tipo: 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")

MSCBLoadGrf
Tipo: 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

GUIA DE REFERNCIA RPIDA AdvPL

53

Exemplo MSCBLOADGRF("LOGO.GRF")

MSCBGrafic
Tipo: Impresso Imprime 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]= Imprime em reverso quando tiver sobre um box preto Exemplo MSCBGRAFIC(3,3,"LOGO",.t.)

MSCBChkStatus
Tipo: 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

GUIA DE REFERNCIA RPIDA AdvPL

54

| 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

GUIA DE REFERNCIA RPIDA AdvPL

55

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)

GUIA DE REFERNCIA RPIDA AdvPL

56

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 VT100 Exibe dados em uma linha e coluna especificadas Sintaxe @ <nLin>, <nCol> [VTSAY <exp> [PICTURE <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. PICTURE <cSayPicture> define a mascara para a sada de exp. Exemplo nQtd :=15.45 cDesc := "Teste descricao"

GUIA DE REFERNCIA RPIDA AdvPL

57

// @ 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 Sintaxe VTCLEAR [SCREEN]

@...VTGet
Tipo: TELNET VT100 Cria um novo objeto VTGET e o coloca em exibio na tela Sintaxe @ <nLin>, <nCol> [VTSAY <exp> [PICTURE <cSayPicture>]] VTGET <idVar> [PICTURE <cGetPicture>] [WHEN <lPreCondicao>] [VALID <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 PICTURE <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 . PICTURE <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. VALID <lPosCondicao> especifica uma expresso que deve ser satisfeita antes que o cursor possa deixar a regio de edio do VTGET corrente. O VALID<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 VALID <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; VALID nNumber > 0

GUIA DE REFERNCIA RPIDA AdvPL

58

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 <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 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 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

GUIA DE REFERNCIA RPIDA AdvPL

59

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 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> [PICTURE <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. PICTURE <cSayPicture> 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 <nLin>, <nCol> Parmetros <nLin> e <nCol> 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 <nCodigoTecla> TO [<idRotina>]

GUIA DE REFERNCIA RPIDA AdvPL

60

Parmetros <nCodigoTecla> o valor VTINKEY() da tecla a qual se atribui a rotina. TO <idRotina> especifica o nome da rotina que executada quando se aperta uma tecla. 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 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 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 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) cadeia de caracteres.

GUIA DE REFERNCIA RPIDA AdvPL

61

VTRestore()
Tipo: TELNET VT100 Exibe uma regio de tela gravada em uma localizao especificada Sintaxe VTRESTORE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <aTela>) --> NIL 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 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(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <nLinhas>) --> NIL 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 NIL. Exemplo VTSCROLL(0,0, VTMAXROW(),VTMAXCOL,1)

VTLastKey()
Tipo: TELNET VT100 Retorna o valor VTINKEY() da ltima tecla extrada do buffer de teclado Sintaxe VTLASTKEY() --> nCodInkey Retorna VTLASTKEY() retorna um nmero de -39 a 386 que identifica o valor VTINKEY() buffer de teclado. da ltima tecla extrada do

GUIA DE REFERNCIA RPIDA AdvPL

62

Descrio VTLASTKEY() 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(<nCodInkey>, [<bAao>]) --> bAcaoCorrente Parmetros <nCodInkey> o valor INKEY() 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 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(<cCodigoTecla>) Parmetros <cCodigoTecla> o conjunto de caracteres a ser colocado no buffer de teclado. Exemplo

GUIA DE REFERNCIA RPIDA AdvPL

63

#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([<nSegundos>]) --> nCodInkey Parmetros <nSegundos> 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 <nSegundos> seja omitido, VTINKEY() no espera por uma tecla. Retorna

GUIA DE REFERNCIA RPIDA AdvPL

64

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. Exemplo While .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 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: FUNCTION TamTela RETURN { VTMAXROW(), VTMAXCOL() }

VTBeep()
Tipo: TELNET VT100 Emite um beep Sintaxe VTBEEP([<nQtde>]) --> NIL Parmetros <nQtde> especifica a quantidade de beep que ser emitido, Caso <nQtde> seja omitido, VTBEEP() emitira um beep. Retorna VTBEEP() retorna NIL Exemplo

GUIA DE REFERNCIA RPIDA AdvPL

65

VTBEEP(3)

VTReverso()
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

VTClearBuffer()
Tipo: TELNET VT100 Limpa o buffer de teclado Sintaxe VTCLEARBUFFER() --> NIL Retorna VTCLEARBUFFER() retorna NIL Exemplo VTCLEARBUFFER()

VTAlert()
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 VTALERT () retorna o cdigo da tecla digitada. Exemplo

GUIA DE REFERNCIA RPIDA AdvPL

66

VTAlert(Produto no cadastrado,Aviso,.t.,4000)

VTYesNo()
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 IF ! VTYesNo(Confirma a alteracao,'Atencao ',.T.) Return .F. ENDIF

VTAchoice()
Tipo: TELNET VT100 Executa um menu pop-up Sintaxe VTACHOICE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <acItensMenu>, [<alItensSelecionaveis>], [<cFuncaoUsuario>],[<nItemInicial>], [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(). <acItensMenu> 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. <alItensSelecionaveis> um vetor paralelo de valores lgicos, diretamente relacionados a <acItensMenu> 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 VTACHOICE() afetado pela presena deste argumento. Consulte o texto abaixo para maiores informaes. <nItemInicial> a posio 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 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 VTACHOICE definida em <nEsquerda> e <nDireita>. <lMsg> Contedo tem que ser NIL, parmetro reservado para implementao futura.

GUIA DE REFERNCIA RPIDA AdvPL

67

<nLinhaJanela> 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 <acItensMenu>. 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 Exemplo acMenuItens := {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 VT100 Monta um browse com referencia a um array. Sintaxe VTABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, <aCab>, [<aItens>], [<aSize>], [<cFuncaoUsuario>],[<nItemInicial>]) --> nPosicao

GUIA DE REFERNCIA RPIDA AdvPL

68

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 <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 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. <nItemInicial> 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 <aItens>. 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 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 "},;

","UM"}

GUIA DE REFERNCIA RPIDA AdvPL

69

{"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 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 <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 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

GUIA DE REFERNCIA RPIDA AdvPL

70

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

GUIA DE REFERNCIA RPIDA AdvPL

71

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: Microterminal Apaga todos os caracteres existentes na tela no microterminal preenchendo a tela com espaos em branco. Sintaxe TerCls() Retorna NIL Exemplo

GUIA DE REFERNCIA RPIDA AdvPL

72

TerCls()

TerSay()
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 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]) Parmetros nSegundos = Numero de segundos a aguardar Retorna Codigo 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: Microterminal Executa uma entrada de dados no microterminal.

GUIA DE REFERNCIA RPIDA AdvPL

73

Sintaxe TerGetRead(nLin,nCol,uVar,cPict,[bValid],[bWhen]) Parmetros nLin nCol uVar cPict - Linha a se executar a entrada de dados. - Coluna a se executar a entrada de dados. - Variavel a se devolver o valor da entrada de dados. - 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 <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") If TerEsc() Exit EndIf EndDo TerCls() TerSay(01,00,"Finalizando...")

TerBeep()
Tipo: Microterminal Emite um sinal sonoro pelo buzzer do Microterminal, caso o microterminal no possua este dispositivo instalado nada acontece.

GUIA DE REFERNCIA RPIDA AdvPL

74

Sintaxe TerBeep([nVezes]) Parmetros nVezes - Numero de sinais sonoros a emitir. Retorna NIL Exemplo TerBeep(3) TerBeep() // executa 3 sinais sonoros // 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: 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 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) 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

GUIA DE REFERNCIA RPIDA AdvPL

75

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 numero definido no Monitor de Microterminais. cSerPar Informa qual a sada utilizada para impresso, 'S' para 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()

for especificado ser considerado o utilizar a sada SERIAL ou 'P' para se

TerPrint()
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 - 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 Exemplo TerPBegin(,"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: Microterminal Finaliza impresso iniciada pela funo TerPBegin. Sintaxe TerPEnd()

GUIA DE REFERNCIA RPIDA AdvPL

76

Retorna NIL Exemplo TerPBegin(,"S") TerPrint("Testando a impresso na sada SERIAL") TerPEnd()

TerIsQuit()
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 cause transtornos, como por exemplo, apos a concluso 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 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()

GUIA DE REFERNCIA RPIDA AdvPL

77

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 <ENTER> 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)

GUIA DE REFERNCIA RPIDA AdvPL

78

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. . . .
GetClientIp() -- Recupera o cdigo IP da mquina. ReadVar() -- Varivel posicionada FunName() Nome da funo posicionada. ParamIxb[n] Parmetro enviado pela rotina. MSMM -- Converte campos memo. ProcName(n) Pilha de chamada

GUIA DE REFERNCIA RPIDA AdvPL

79

GUIA DE REFERNCIA RPIDA AdvPL

80

You might also like