Vous êtes sur la page 1sur 53

GUIA DE REFERÊNCIA RÁPIDA AdvPL

GUIA DE REFERÊNCIA RÁPIDA AdvPL

1
DeComp3.............................................................................................11
@...To...Dialog....................................................................................12
ÍNDICE Funções para impressão de etiquetas padrão ZPL,ALLEGRO e
ELTRON.................................................................................................35
COMANDOS PARA TELNET VT100................................................40
AbreExcl................................................................................................3 FUNCOES PARA TELNET VT100.....................................................43
Activate Dialog......................................................................................3 FUNCOES PARA MICROTERMINAL.............................................50
Aleatorio................................................................................................3
Avalimp..................................................................................................3
Aviso......................................................................................................4
AxCadastro............................................................................................4
@ n1,n2 BmpButton..............................................................................5
@... Bitmap... Size.................................................................................5
@...To...Browse.....................................................................................5
@...Button..............................................................................................5
Cabec......................................................................................................6
CalcEst...................................................................................................6
CalcSaldo...............................................................................................6
Capital....................................................................................................7
CGC.......................................................................................................7
@...CheckBox...Var...............................................................................7
ChkFile...................................................................................................7
Close......................................................................................................8
CloseOpen..............................................................................................8
ClosesFile...............................................................................................8
@...ComboBox...Itens...Size..................................................................8
Comp3....................................................................................................9
Condicao................................................................................................9
ConfirmSX8...........................................................................................9
Contar...................................................................................................10
ConvMoeda..........................................................................................10
Credito..................................................................................................10
CriaTrab...............................................................................................10
CriaVar.................................................................................................11
DataValida...........................................................................................11
Debito...................................................................................................11
GUIA DE REFERÊNCIA RÁPIDA AdvPL

2
Comentários
FUNÇÕES PARA O INTERPRETADOR XBASE A cláusula <CENTERED> é opcional, se omitida assume as coordenadas
definidas na criação da janela.
A seguir são apresentadas as funções SIGA Advanced para uso junto ao RD- Exemplo
MAKE / Interpretador xBASE. Na linha seguinte ao nome de cada função é Ver exemplo no programa RDDEMO apresentado no final deste Manual.
informado onde normalmente ela é utilizada, a saber: Ver também
• Processamento: funções usadas em cálculos, acesso a arquivos e tratamentos Função Dialog
em geral;
• Impressão: funções usadas exclusivamente na geração de Relatórios;
• Telas: funções usadas na geração de telas, seja DOS ou Windows;
Aleatorio
Tipo: Processamento
AbreExcl Gera um número aleatório de acordo com a semente passada. Esta função
retorna um número aleatório menor ou igual ao primeiro parâmetro informado,
Tipo: Processamento usando como semente o segundo parâmetro. É recomendado que esta semente
Fecha o arquivo e reabre exclusivo. Esta função fecha o arquivo cujo alias está seja sempre o último número aleatório gerado por esta função.
expresso em <cAlias> e o reabre em modo exclusivo para proceder operações Sintaxe
em que isto é necessário, como por exemplo, PACK. Entretanto, é preferível Aleatorio(nMax,nSeed)
utilizar o depurador do sistema para proceder estas operações. Se outra estação Parâmetros
estiver usando o arquivo, o retorno será .F.. nMax – Número máximo para a geração do número aleatório
Sintaxe nSeed – Semente para a geração do número aleatório
AbreExcl(cAlias) Retorna
Parâmetros nRet – Número aleatório retornado
cAlias – Nome do Alias do Arquivo. Deve ter obrigatóriamente sua estrutura Exemplo
definida no SX3. // Exemplo do uso da função Aleatorio:
Exemplo nSeed := 0
// For i := 1 to 100
IF AbreExcl(“SI2”) nSeed := Aleatorio(100,nSeed)
Pack ? Str(i,3)+”§ numero aleatorio gerado: “+Str(nSeed,3)
ENDIF Next i
AbreExcl( ) inkey(0)
dbGoTop( ) Return

Activate Dialog
Tipo: Tela Windows Avalimp
Ativa uma janela previamente definida na função Dialog e executa os GETs, Tipo: Relatórios
botões e outros objetos. Configura a impressora através dos parâmetros. Esta função é usada em
Sintaxe relatórios específicos que não se utilizam da função “Cabec”. Imprimindo o retorno
ACTIVATE DIALOG cVar <CENTERED> [On Init cFuncInit] [Valid cFuncValid] desta função na impressora, ela se encarregará de configurar a impressora de
Parâmetros acordo com o arquivo de driver escolhido, e com as configurações escolhidas pelo
cVar – Variável utilizada na função Dialog para definição da janela. usuário definidas no array aReturn.
cFuncInit – Função executada automaticamente na abertura do diálogo na Sintaxe
tela (Opcional). AvalImp(nLimit)
cFuncValid– Função executada para validar o fechamento da janela de diálogo.
Deve retornar um valor lógico (.T. ou .F.) (Opcional)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

3
Parâmetros Aviso
nLimit – Tamanho do relatório em colunas. Pode ser 80, 132 ou 220 (respec- Tipo: Tela DOS/Windows
tivamente para relatórios de tamanho “P”,”M” e “G”). Monta uma janela exibindo o texto desejado e, opcionalmente, disponibilizando
Retorna opções de escolha para o usuário.
cControl – String com caracteres de controle, dependente das configurações Sintaxe
escolhidas pelo usuário e do arquivo de driver especificado. Aviso(cTitulo,cMensagem,aOpcoes)
Exemplo Parâmetros
// Exemplo de uso da função AvalImp:
#IFNDEF WINDOWS cTitulo – Titulo da janela.
#DEFINE PSAY SAY cMensagem – Mensagem para ser exibida no interior da janela. O tamanho
#ENDIF máximo é de 90 caracteres.
cCbTxt:= “” aOpcoes – Array de caracteres com as opções para a montagem de menu
cCbCont:= “”
nOrdem:= 0 (na versão DOS) ou dos botões (na versão Windows).
nAlfa:= 0 Retorna
nZ:= 0 nResp – Retorno. Retorna o número da opção escolhida pelo usuário.
nM:= 0 Exemplo
cTamanho:= “G”
// Exemplo de uso da função Aviso:
cLimite:= 220
While .T.
cTitulo:= PADC(“Nota Fiscal”,74)
GravaArq() // Função qualquer (apenas p/exemplo)
cDesc1:= PADC(“Este programa irá emitir a Nota Fiscal de Entrada/Saída”,74)
If !File(“TESTE.TXT”)
cDesc2:= “”
aOp:= {“Sim”,”Nao”,”Cancela”}
cDesc3:= PADC(“da Feeder Industrial Ltda.”,74)
cTit:= “Atencao!”
cNatureza:= “”
cMsg:= “O arquivo TESTE.TXT nao foi gravado!”
aReturn:= {“Especial”, 1,”Administração”, 1, 2, 2,””,1}
cMsg:= cMsg + “ Tenta novamente?”
cNomeProg:= “NFEEDER”
nOp:= Aviso(cTit,cMsg,aOp)
cPerg:= “ENTSAI”
If nOp == 1 // Sim
nLastKey:= 0
Loop
lContinua:= .T.
ElseIf nOp == 3 // Cancela
nLi:= 0
Return
wnrel:= “NFEEDER”
Else // Nao ou <ESC>
nTamNf:=72 // Apenas Informativo
Exit
Pergunte(cPerg,.F.) // Pergunta no SX1
Endif
cString:=”SF2"
Endif
wnrel:= SetPrint(cString,wnrel,cPerg,cTitulo,cDesc1,cDesc2,cDesc3,.T.)
Exit
SetDefault(aReturn,cString)
EndDo
If nLastKey == 27
// Faz o processamento...
Return
Return
Endif
#IFDEF WINDOWS
RptStatus({|| Execute(Relato)})
Return
#ENDIF
AxCadastro
Tipo: Processamento
Function Relato Geração de modelo 1. Rotina para criação e manutenção de cadastros no padrão
SetPrc(0,0)
// Aqui está a chamada da função AvalImp. Configura a
do SIGA Advanced, contendo as opções padronizadas: PESQUISA, INCLU-SÃO,
// impressora de acordo com as definições em aReturn ALTERAÇÃO, VISUALIZAÇÃO e EXCLUSÃO.
// escolhidas pelo usuário na função SetPrint Disponibiliza o Browse e todas as funções de cadastramento padrão.
@ 00,00 PSAY AvalImp(220) Sintaxe
dbSelectArea(“SF2”)
dbSeek(xFilial()+mv_par01+mv_par03,.T.)
AxCadastro(cAlias,cTitulo,cDel,cOk)
// O programa segue normalmente...
Return

GUIA DE REFERÊNCIA RÁPIDA AdvPL

4
Parâmetros cArq – Nome do arquivo BITMAP
cAlias – Alias do arquivo. Deve obrigatoriamente ter sua estrutura definida no Exemplo
SX3. Ver exemplo no programa RDDEMO apresentado no final deste Manual.
cTitulo – Título da Janela.
cDel – Função para validar a exclusão.
cOk – Função para validar a Inclusão/Alteração. @...To...Browse
Comentários Tipo: Tela Windows
Deve ser utilizada para editar arquivos específicos (Família SZ?), sendo Ativa Browse padrão SigaAdv Win.
seme-lhante aos cadastros de Clientes, Fornecedores e etc... Sintaxe
Exemplo @ nLinha1,nColuna1 TO nLInha2,nColuna2 BROWSE cAlias <ENABLE>
// Exemplo de uso de cadastro de arquivo especifico:
AxCadastro(“SZ1”,”Cadastro de Descontos”,”.T.",”.T.”) cCor
Return Parâmetros
nLinha1 – Número da linha superior
nColuna1 – Número da coluna superior
@ n1,n2 BmpButton nLinha2 – Número da linha inferior
Tipo: Tela Windows nColuna2 – Número da coluna inferior
Cria um botão de bitmap padrão do SigaAdv Win. cAlias – Alias do Arquivo (apenas arquivos com estrutura no SX3)
Sintaxe cCor – Expressão que identifica a cor da marca do registro (opcional)
@ nLinha,nColuna BMPBUTTON TYPE nBotao ACTION cFuncao OBJECT Exemplo
oBtn Marca “Verde” - Titulo em aberto
Parâmetros Marca “Vermelha” - Titulo pago
nLinha – Número da linha superior Comentários
nColuna – Número da coluna superior A cláusula <ENABLE> é opcional, se for omitida não será disponibilizada
nBotao – Número do botão padronizado coluna que identifica situação do registro (Cor verde/vermelha).
cFuncao – Função que será executada
oBtn – Objeto associado ao botão
Comentários @...Button
Para executar funções definidas em um mesmo .PR? utilizar a função Tipo: Tela Windows
Execute(“Nome da função”) ou ExecBlock(“Nome do Arquivo”) para chamar Cria um botão com texto.
outro .PR?. Sintaxe
Exemplo @ nLinha,nColuna BUTTON cTexto SIZE nAltura,nLargura ACTION
Ver exemplo no programa RDDEMO apresentado no final deste Manual. cFunção Object oBtn
Parâmetros
nLinha – Número da linha superior
@... Bitmap... Size nColuna – Número da coluna superior
Tipo: Tela Windows cTexto – Texto que será apresentado no botão. Deve incluir um “_” antes
Define a área em que será mostrado um BITMAP na janela. da letra que utilizada como Hot Key. Ex.: ( “_Salvar”,”Edi_Tar”)
Sintaxe nAltura – Altura do botão
@ nLinha,nColuna BITMAP SIZE nAltura,nLargura FILE cArq nLargura – Largura do botão
Parâmetros cFunção – Função que será executada
nLinha – Número da Linha superior Object oBtn – Objeto associado ao botão.
nColuna – Número da Coluna superior
nAltura – Altura de apresentação do BITMAP
nLargura – Largura de apresentação do BITMAP
GUIA DE REFERÊNCIA RÁPIDA AdvPL

5
Comentários Sintaxe
Para executar funções definidas em um mesmo .PR? utilizar a função CalcEst(cProduto, cAlmox, dData)
Execute(“Nome da função”) ou ExecBlock(“Nome do Arquivo”) para chamar Parâmetros
outro .PR?. cProduto – Produto a ser pesquisado
Exemplo cAlmox – Almoxarifado a pesquisar
Ver exemplo no programa RDDEMO apresentado no final deste Manual. dData – Data desejada
Retorna
aArray – Array contendo:
Cabec Elemento 1 - Quantidade inicial em estoque na data
Tipo: Impressão Elemento 2 - Custo inicial na data na moeda 1
Esta função imprime, na impressora selecionada, o cabeçalho padrão dos relató- Elemento 3 - Custo inicial na data na moeda 2
rios do SIGA Advanced. Devolve o número da última linha impressa para que seja Elemento 4 - Custo inicial na data na moeda 3
dada continuidade ao relatório. Elemento 5 - Custo inicial na data na moeda 4
Sintaxe Elemento 6 - Custo inicial na data na moeda 5
Cabec(cTítulo, cTexto1, cTexto2, cProg, cLargura, cControle) Elemento 7 - Quantidade inicial na segunda unidade de medida
Parâmetros Exemplos
aSaldos:=CalcEst(SB1->B1_COD,SB1->B1_LOCPAD, dDataBase)
cTítulo – Título do Relatório nQuant:=aSaldos[1]
cTexto1 – Extenso da primeira linha do cabeçalho
cTexto2 – Extenso da segunda linha do cabeçalho
cProg – Nome do Programa CalcSaldo
cLargura – Largura do relatório (P/ M/ G)
cControle – Caractere de controle da impressora (numérico) Tipo: Processamento e Planilha
Retorna Calcula o saldo atual de uma determinada conta contábil até um determinado
nLinha – Número da última linha impressa no cabeçalho período. A conta deve estar posicionada no arquivo “SI1” ou “SI7”, de acordo com
Exemplo a moeda, antes da chamada desta função.
cTitulo := “Relação dos Adiantamentos” Sintaxe
cCabec1 := “Código Item Conta Contábil CCusto Projeto Data Valor” CalcSaldo(nPer,nMoeda,lSalAnt)
cCabec2 := “----------- ------- ----------------------- ------------ ------------ -------- --------” Parâmetros
cPrograma := “ATRF090”
nPer – Período (1 a 17) que será usado como limite para o cálculo de
cTamanho := “P”
nCaracter := 15 saldo.
: nMoeda – Moeda para o cálculo. Se não informada, é assumida a moeda
cRel:=SetPrint(cAlias, cPrograma , , @cTitulo, cDesc1, cDesc2, cDesc3 , .T., aOrd ) 1.
SetDefault(aReturn, cString)
lSalAnt – Indica se deve (.T.) ou não (.F.) considerar o saldo inicial da
:
nLinha:=Cabec(cTitulo, cCabec1, cCabec2, cPrograma, cTamanho, nCaracter) conta.
While !EOF() Se não informado, é assumido verdadeiro (.T.).
nLinha:=nLinha+1 Retorna
@nLinha,1 Say SB1->B1_CODIGO
nSld – Retorna o Saldo atual da conta na moeda desejada.
Exemplos
// Exemplo de uso da função CALCSALDO:
CalcEst cConta := SA1->A1_CONTA
dbSelectArea(“SI1”)
Tipo: Processamento e Planilha dbSeek(xFilial(“SI1”)+cConta)
Devolve a quantidade e saldos do estoque de um produto/almoxarifado em uma ? “Saldo atual da conta “+cConta+”:”
determinada data. Esta função é utilizada para a obtenção dos saldos iniciais em ? CalcSaldo(Periodo())
estoque na data em referência. Return

GUIA DE REFERÊNCIA RÁPIDA AdvPL

6
Capital @...CheckBox...Var
Tipo: Processamento Tipo: Tela Windows
Transforma as letras iniciais em Maiúsculas e as demais em Minúsculas. Cria uma caixa de verificação para definir entre Sim/Não ou Falso/Verdadeiro.
Sintaxe Sintaxe
Capital(cTexto) @ nLinha,nColuna CHECKBOX cDesc VAR lSeleção Object oCbx
Parâmetros Parâmetros
cTexto – Texto a ser convertido nLinha – Número da linha superior
Exemplo nColuna – Número da coluna superior
cCapital:=Capital(“TEXTO MAIUSCULO”) cDesc – Descrição da caixa. Ex. “Atualiza Estoque ?”
// O retono será “Texto Maiúsculo”
lSeleção – Variável Lógica que identifica se a caixa foi ou não selecionada
oCbx – Objeto associado ao Checkbox
Retorno
CGC A variável <lSeleção> recebe “.T.” se for selecionada ou “.F.”, se vazia.
Tipo: Processamento Comentários
Consiste o CGC digitado, tomando como base o algoritmo nacional para Pode ser utilizada uma seqüência de CHECKBOX para determinar um
verificação do dígito de controle. Esta função procede um cálculo do dígito conjunto de configurações onde vários itens podem ser marcados/desmarcados.
verificador do número do Cadastro Geral de Contribuintes do Ministério da Deve ser definida uma variável <lSeleção> para cada CHECKBOX definida. Ex.:
Fazenda. É utilizado o dígito padrão módulo 11 para verificar se as duas últimas “Atualiza Estoque” - .T./.F. = Marcada/Desmarcada
posições da string passada, correspondem a dígitos verificadores válidos. “Gera Duplicata” - .T./.F. = Marcada/Desmarcada
Calculando primeiro o dígito das 12 primeiras posições e agregando o dígito “Calcula IPI” - .T./.F. = Marcada/Desmarcada
encontrado ao fim da string, calcula o dígito das 13 posições, obtendo o segundo
dígito. Retorna uma expressão lógica verdadeira se as duas últimas posições do
CGC digitado coincidem com o calculado. ChkFile
Sintaxe
CGC(ExpC1) Tipo: Processamento
Parâmetros Abre um arquivo do sistema, em modo exclusivo ou compartilhado, verificando a
ExpC1 – String de caracteres representando o número do C.G.C. sem sua existência bem como dos índices, criando-os caso não existam. Esta função
pontos e traços separadores. Caso este argumento não seja passado para a retorna verdadeiro (.T.) se o arquivo já estiver aberto ou se o Alias não for
função, esta considerará o GET corrente. informado. Sempre que desejar mudar o modo de acesso do arquivo (de
Retorna compartilhado para exclusivo ou vice-versa), feche-o antes de chamá-la.
ExpL1 – Expressão lógica .T. se o CGC é válido (dígito verificador Sintaxe
confere) ou .F. se o dígito verificador não confere. ChkFile(cAlias,lExcl,newAlias)
Exemplos Parâmetros
cCGC:= Space(14) cAlias – Alias do arquivo a ser aberto.
: lExcl – Se for informado verdadeiro (.T.), o arquivo será aberto em modo
@10,16 GET cCGC Picture “@R 99.999.999/9999-99” Valid CGC(cCGC) exclusivo, caso contrário, o arquivo será aberto em modo compar-tilhado.
A máscara do CGC deve vir com @R, para não inserir os pontos e a Se este parâmetro não for informado, será assumido falso (.F.).
barra no CGC, o que impossibilita a validação. newAlis – Abre o arquivo com outro apelido.
Retorna
lRet – Retorna verdadeiro (.T.) caso tenha conseguido abrir o arquivo e
falso (.F.) caso contrário.

GUIA DE REFERÊNCIA RÁPIDA AdvPL

7
Exemplo Retorna
// Exemplo de uso da função ChkFile: lRet – Retorna falso (.F.) se não conseguir abrir algum arquivo (Se o
// Tenta abrir o arquivo de clientes como exclusivo:
arquivo estiver em uso exclusivo, por exemplo). Caso contrário, retorna
dbSelectArea(“SA1”)
dbCloseArea() verdadeiro (.T.).
lOk := .T. Exemplo
While .T. // Exemplo de uso da funcao CloseOpen:
IF !ChkFile(“SA1”,.T.) aFecha := {“SA1”,”SA2",”SA3",”SB1"}
nResp := Alert(“Outro usuario usando! Tenta de novo?”,{“Sim”,”Nao”}) aAbre := {“SG1”,”SH8"}
If nResp == 2 If CloseOpen(aFecha,aAbre)
lOk := .F. .. Processamento
Exit Endif
Endif Return
:
Endif
EndDo
If lOk ClosesFile
// Faz o processamento com o arquivo... Tipo: Processamento
Endif
Esta função fecha todos os arquivos, exceto os SXs, o SM2 e o SM4. Permite que
// Finaliza
If Select(“SA1”) se indique também outros arquivos que não devem ser fechados.
dbCloseArea() Sintaxe
Endif ClosesFile(cAlias)
ChkFile(“SA1”,.F.)
Parâmetros
Return
cAlias – String com os Aliases dos arquivos que não devem ser fechados.
Devem ser informados separados por barras (“/”)
Retorna
Close lRet – Retorna Verdadeiro (.T.) se fechou os arquivos com sucesso.
Tipo: Tela Windows Retorna Falso (.F.), caso contrário.
Desativa uma janela previamente definida e ativa. Exemplo
Sintaxe // Exemplo de uso da funcao CLOSESFILE:
Close(cVar) // Fecha todos os arquivos menos os cadastros:
cEmp := SM0->M0_CODIGO
Parâmetros ClosesFile(“SA1/SA2/SA3/SA4/SA5/SA6/SA7/SA9/SAA/SAB/SAC”)
cVar – Variável criada durante o comando de definição da janela. // Processamento. . .
Exemplo // Finalizacao
@ 75,158 BmpButton type 02 Action Close(oDlg) dbCloseAll()
OpenFile(cEmp)
Return
CloseOpen
Tipo: Processamento @...ComboBox...Itens...Size
Função usada para fechar e abrir uma lista de arquivos.
Sintaxe Tipo: Tela Windows
CloseOpen(aFecha,aAbre) Esta função é semelhante a LISTBOX, mas pode ser utilizada em pequenos
Parâmetros espaços, pois os itens só serão mostrados quando a caixa for seleciona.
aFecha – Array com a lista dos Aliases a serem fechados. Sintaxe
aAbre – Array com a lista dos Aliases a serem abertos. @ nLinha,nColuna COMBOBOX cCont ITENS aArray SIZE
nAltura,nLargura Object oCbx

GUIA DE REFERÊNCIA RÁPIDA AdvPL

8
Parâmetros Condicao
nLinha – Número da linha superior
Tipo: Processamento
nColuna – Número da coluna superior
Esta função permite avaliar uma condição de pagamento, retornando um array
cCont – Conteúdo caracter do item selecionado na Matriz [1]
multidimensional com informações referentes ao valor e vencimento de cada
aArray – Array, Matriz [1] com os itens para seleção
parcela, de acordo com a condição de pagamento.
nAltura – Altura para definir o tamanho da caixa
Sintaxe
nLargura – Largura para definir o tamanho da caixa
Condicao(nValTot,cCond,nVIPI,dData,nVSol)
oCbx – Objeto relacionado ao botão
Parametros
Retorno
nValTot – Valor total a ser parcelado
O item selecionado pode ser obtido por <cCont>
cCond – Código da condição de pagamento
Comentários
nVIPI – Valor do IPI, destacado para condição que obrigue o pagamento
Os itens da Matriz [1] devem ser tipo “C” caracter.
do IPI na 1ª parcela
Exemplo
dData – Data inicial para considerar
Ver exemplo no programa RDDEMO apresentado no final deste Manual.
Retorna
aRet – Array de retorno ( { {VALOR,VENCTO} , ... } )
Exemplo
Comp3 // Exemplo de uso da funcao Condicao:
Tipo: Processamento nValTot := 2500
cCond := “002” // Tipo 1, Duas vezes
Compacta um valor numérico em uma string binária COMP-3. Esta função é aParc := Condicao(nValTot,cCond,,dDataBase)
utilizada para compactar a movimentação de Clientes e Fornecedores. A ? “1¦ Parcela: “+Transform(aParc[1,1],”@E 9,999,999.99")
descompactação é feita pela função complementar DeComp3. ? “ Vencto: “+DTOC(aParc[1,2])
Sintaxe ? “”
? “2¦ Parcela: “+Transform(aParc[2,1],”@E 9,999,999.99")
Comp3(aArray) ? “ Vencto: “+DTOC(aParc[2,2])
Parâmetros inkey(0)
aArray – Array contendo os 25 campos compactados (o Saldo Inicial, os Return
12 Débitos e 12 Créditos)
Retorna
ExpC1 – Nome do Campo aglutinador da compactação. ConfirmSX8
Exemplos Tipo: Processamento
aSaldos:=DeComp3(A1_MOVIMEN) Permite a confirmação do número sugerido pelo Arquivo de Semáforo, através da
nSaldo:=aSaldos[1]
For j := 2 To 24 STEP 2 função GETSX8NUM. Verifique a função GETSX8NUM para maiores detalhes.
nSaldo := nSaldo - aSaldos [ j ] + aSaldos [ j + 1 ] Sintaxe
Next j ConfirmSx8()
aSaldos[1]:=nSaldo Exemplo
AFILL(aSaldos,0,2,24)
cNumSC5:=GetSX8Num(“SC5”)
Reclock(“SA1”)
Replace C5_NUM with cNumSC5
REPLACE A1_MOVIMEN With Comp3(aSaldos)
ConfirmSX8()
Ver também
Verifique os exemplos descritos na função GETSX8NUM.
Função DeComp3

GUIA DE REFERÊNCIA RÁPIDA AdvPL

9
Exemplo
Contar Credito(“11103”,03,1)
Ver também
Tipo: Processamento Funções Debito, Saldo e Movimento
Conta o número de registros de acordo com a condição determinada.
Sintaxe
Contar(cAlias, cCond)
Parâmetros CriaTrab
cALias – Alias do arquivo Tipo: Processamento
cCond – Condição para a contagem Cria arquivo de trabalho.
Exemplo Sintaxe
Contar(“SC1”,“C1_DATPRF < dDataBase”) CriaTrab(aArray,lDbf)
Parâmetros
aArray – Array multidimensional contendo os campos a criar {Nome, Tipo,
ConvMoeda Tamanho, Decimal}
Tipo: Processamento lDbf – Determina se o arquivo de trabalho deve ser criado ( .T.) ou não
Converte o valor informado para a moeda selecionada. (.F. )
Sintaxe Retorna
ConvMoeda(dData1,dData2,nValor,cMoeda) ExpC1 – Nome do Arquivo gerado pela função.
Parâmetros Comentários
dData1 – Data de emissão Esta função retorna o nome de um arquivo de trabalho que ainda não
dData2 – Data de vencimento exista.
nValor – Valor a ser convertido Caso lDbf = .T., a função criará um arquivo DBF com este nome e a
cMoeda – Para qual moeda deverá converter estrutura definida em aArray.
Retorna Caso lDbf = .F., a função não criará arquivo de nenhum tipo, apenas
ExpN1 – Valor convertido (devolvido pela função) fornecerá um nome válido.
Comentários Exemplos
Esta função converte o valor definido por nValor para a moeda // Com lDbf = .F.
cArq := CriaTrab(NIL, .F.)
especificada em cMoeda na data dData. cIndice := “C9_AGREG+”+IndexKey()
A data dData2 não é utilizada. Index on &cIndice To &cArq
O valor nValor é considerado em moeda 1. // Com lDbf = .T.
Exemplos aStru := {}
nValor2 := ConvMoeda( D2_EMISSAO, , D2_TOTAL, cMoeda ) AADD(aStru,{ “MARK” , “C”, 1, 0})
nValor1 := ConvMoeda( D1_DTDIGIT, , D1_TOTAL, cMoeda ) AADD(aStru,{ “AGLUT” , “C”, 10, 0})
AADD(aStru,{ “NUMOP” , “C”, 10, 0})
AADD(aStru,{ “PRODUTO”, “C”, 15, 0})
AADD(aStru,{ “QUANT” , “N”, 16, 4})
Credito AADD(aStru,{ “ENTREGA”, “D”, 8, 0})
AADD(aStru,{ “ENTRAJU”, “D”, 8, 0})
Tipo: Processamento AADD(aStru,{ “ORDEM” , “N”, 4, 0})
Devolve o valor a crédito de uma determinada conta. AADD(aStru,{ “GERADO” , “C”, 1, 0})
Sintaxe cArqTrab := CriaTrab(aStru, .T.)
Credito(cConta, nMês, nMoeda) USE &cArqTrab ALIAS TRB NEW
Parâmetros
cConta – Código da Conta
nMês – Mês do movimento desejado
nMoeda – Moeda desejada para obtenção do valor a crédito

GUIA DE REFERÊNCIA RÁPIDA AdvPL

10
// uteis de determinado mes utilizando-se dessa funcao.
// A logica e simples:
CriaVar nDUtil := 0
Tipo: Processamento nMes := 05
nAno := 98
Esta função cria uma variável, retornando o valor do campo, de acordo com o dDtIni := CTOD(“01/”+StrZero(nMes,2)+”/”+StrZero(nAno,2)
dicionário de dados. Avalia o inicializador padrão e retorna o conteúdo de acordo dDtMov := dDtIni
com o tipo de dado definido no dicionário. While Month(dDtIni) == Month(dDtMov) .And. Year(dDtIni) == Year(dDtMov)
Sintaxe If DataValida(dDtMov) == dDtMov
nDUtil := nDUtil + 1
CriaVar(cCampo,lIniPad,cLado) Endif
Parametros dDtMov := dDtMov + 1
cCampo – Nome do campo EndDo
lIniPad – Indica se considera (.T.) ou não (.F.) o inicializador
cLado – Se a variável for caracter, cLado pode ser: “C” - centralizado, “L”
- esquerdo ou “R” - direito Debito
Retorna Tipo: Processamento
uRet – Retorno (tipo de acordo com o dicionário de dados, considerando Devolve o valor a débito de uma determinada conta.
inicializador padrão) Sintaxe
Exemplo Debito(cConta, nMês, nMoeda)
// Exemplo do uso da função CriaVar:
Parâmetros
cNumNota := CriaVar(“F2_DOC”) // Retorna o conteúdo do
// inicializador padrão, cConta – Código da Conta
// se existir, ou espaços em branco nMês – Mês do movimento desejado
Alert(cNumNota) nMoeda – Moeda desejada para obtenção do valor a débito
Return
Exemplo
Debito(“11103”,03,1)
Ver também
DataValida Funções Credito, Saldo e Movimento
Tipo: Processamento
Retorna uma data válida que não seja sábado, domingo ou feriado, a partir de DeComp3
uma data qualquer informada. É uma função útil para a geração de vencimentos Tipo: Processamento
reais para títulos, por exemplo. Descompacta uma string binária COMP-3 em um array. Esta função é utilizada
Sintaxe para descompactar a movimentação de Clientes e Fornecedores. A compactação
DataValida(dData) é feita pela função complementar Comp3.
Parametros Sintaxe
dData – Data informada para validação. DeComp3(cCampo)
Retorna Parâmetros
dDtVld – Retorna a Data validada. cCampo – Nome do Campo aglutinador da compactação.
Exemplo Retorna
// Exemplo de uso da funcao DataValida:
// Pode-se gravar o campo do vencimento real de um aArray – Array contendo os 25 campos compactados.
// titulo a partir do vencimento informado. Exemplo
dVencto := cTod(“”) aSaldos:= DeComp3(A1_MOVIMEN)
: nSaldo := aSaldos [ 1 ]
Get dVencto For j:= 2 To 24 STEP 2
Read nSaldo:= nSaldo - aSaldos [ j ] + aSaldos [ j + 1 ]
dVencRea := DataValida(dVencto) Next j
Grava() // Funcao generica. aSaldos[1]:=nSaldo
// Um uso interessante, e a obtencao do numero de dias AFILL(aSaldos,0,2,24)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

11
Reclock(“SA1”) DrawAdv3D
REPLACE A1_MOVIMEN With Comp3(aSaldos)
Tipo: Tela DOS
Ver também
Desenha uma janela DOS em 3 dimensões.
Função Comp3
Sintaxe
DrawAdv3D(cTitle, nLinha1, nColuna1, nLInha2, nColuna2, cCorFrente,
cCorFundo, cStyle)
@...To...Dialog Parâmetros
Tipo: Tela Windows cTitle – Título da Janela
Define uma nova janela na área de trabalho. nLinha1 – Número da linha superior
Sintaxe nColuna1 – Nùmero da coluna superior
@ nLinha1,nColuna1 TO nLinha2,nColuna2 DIALOG cVar TITLE cTítulo nLinha2 – Número da linha inferior
Parâmetros nColuna2 – Número da coluna inferior
nLinha1 – Número da linha superior cCorFrente – Cor da letra
nColuna1 – Número da coluna superior cCorFundo – Cor do fundo
nLinha2 – Número da linha inferior cStyle – R (onde R = Raised - define a impressão de baixo relevo. O
nColuna2 – Número da coluna inferior padrão é alto relevo)
cVar – Variável que recebera as definições da nova janela Exemplo
cTítulo – Titulo da Janela //
Comentários DrawAdv3D(“Janela 3D”,01,24,20,24,B+,N,R)
Deve ser utilizada sem conjunto com o comando ACTIVATE DIALOG.
Exemplo DrawAdvWindow
Ver exemplo no programa RDDEMO apresentado no final deste Manual. Tipo: Tela DOS
Desenha uma janela padrão de acordo com a posição relativa passada como
Digito11
parâmetro. Para versão DOS.
Tipo: Processamento
Sintaxe
Cálculo de dígito verificador em módulo 11.
DrawAdvWindow(cTitulo,nLinha1,nColuna1,nLInha2, nColuna2)
Sintaxe
Parâmetros
Digito11(cCalc,cDigito)
cTitulo – Título da janela
Parâmetros
nLinha1 – Linha superior da janela
cCalc – String para calcular o dígito
nColuna1 – Coluna esquerda da janela
cDigito – Dígito de verificação
nLinha2 – Linha inferior da janela
Retorna
nColuna2 – Coluna direita da janela
ExpL1 – Valor Lógico de Retorno (.T. ou .F.)
Comentários
Comentários
Esta função desenha uma janela com o título cTitulo, com o canto
Esta função calcula o dígito de verificação de cCalc e o compara com
superior esquerdo na posição nLinha1, nColuna1 e canto inferior direito na
cDigito, verificando a consistência.
posição nLinha2, nColuna2.
Exemplos
@ 9, 10 Get cCodigo; Exemplos
Valid Digito11( SubStr(cCodigo, 1, 5), Substr(cCodigo, 6, 1)) DrawAdvWindow(“Títulos em Aberto”,3,4,20,76)

EANDigito
Tipo: Processamento
Calcula o dígito de controle para o código EAN usado em códigos de barras.
Sintaxe
EanDigito(cCod)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

12
Parâmetros Parâmetros
cCod – Código de barras para o cálculo do dígito. É obrigatório o tamanho cProduto – Código do produto PAI da estrutura.
de 12 dígitos. Retorna
Retorna aStru – Retorna o array com a estrutura do produto na seguinte sintaxe:
cEan – Retorna o código EAN de 13 dígitos, sendo que a última posição é { {Nº , Código , Comp. , Qtd. , TRT }, ... , ... }
o dígito calculado. Esta função requer que seja declarada a variável chamada “nEstru”
Exemplo contendo 0, para o seu correto funcionamento.
// Exemplo de uso da funcao EANDIGITO: Exemplo
// Gatilho // Exemplo de uso da funcao Estrut:
// Dom.: B1_CODBAR cPrd := Space(15)
// CtaDom.: B1_CODBAR aStru := {}
// Regra: Eandigito(PADL(AllTrim(M->B1_CODBAR),12,”0")) nEstru := 0
// Ou usado em um programa AdvPL: While .T.
cCod := EanDigito(PADL(AllTrim(M->B1_CODBAR),12,”0")) @ 10,10 Say “Codigo do Produto: “
cDig := Substr(cCod,12,1) @ 10,30 Get cPrd Picture “@!” Valid(!Empty(cPrd))
Alert(“O digito calculado e’: “+cDig) Read
Return If LastKey() == 27
Exit
Entre Endif
Tipo: Processamento If !ExistCpo(“SB1”,cPrd)
Loop
Verifica se o conteúdo do campo está entre o conteúdo de duas expressões Endif
(ExpX1 <= cCampo <= ExpX2). Se verdadeiro, retorna .T..Usado normalmente i:= 0
em validações de campos digitados. aStru := Estrut(cPrd) // Obtem a estrutura
Sintaxe nLin := 5
For i := 1 To Len(aStru)
Entre(ExpX1,ExpX2,cCampo) @nLin,00 Say “Comp.: “+aStru[i,3]
Parâmetros @nLin,20 Say “Quant.: “+Str(aStru[i,4],15)
ExpX1 – Expressão a comparar >= nLin := nLin + 1
ExpX2 – Expressão a comparar <= If nLin > 23
@24,00 Say “Tecle <ENTER>...”
cCampo – Nome do Campo Inkey(0)
Retorna nLin := 5
ExpL1 – Valor Lógico de Retorno (.T. ou .F.) Endif
Exemplos Next i
: EndDo
If Entre(“A1”,”A9",cSerie)
@ 5,10 Say “Serie Ok” Execute
Else Tipo: Processamento
@ 5,10 Say “Serie Invalida”
Executa uma Função definida em um mesmo .Pr? nas cláusulas <ACTION> ou
Loop
EndIf <VALID>.
: Sintaxe
Execute (cFunção)
Estrut Parâmetro
Tipo: Processamento cFunção – Função a ser executada.
Função para obtenção da estrutura de um produto previamente cadastrada no Exemplo
SG1 através dos Módulos “SIGAEST” ou “SIGAPCP”. @ 75,098 BmpButton type 01 action Execute(S500IMP)
Sintaxe
Estrut(cProduto)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

13
ExistChav Parâmetros
Tipo: Processamento cAlias – Alias do arquivo para a pesquisa
Verifica se a chave já existe em determinado Alias. Função para uso em cChave – Chave a ser pesquisada (opcional). Se não for informada, o
validações de campos-chave, para não permitir a duplicidade de registros. conteú-do
Sintaxe é obtido automaticamente do GET em uso
ExistChav(cAlias,cChave,nOrdem,cHelp) nOrdem – Número da ordem do Índice para Pesquisa (Opcional). Se não
Parametros for informado, usa a ordem atual do Alias.
cAlias – Alias do arquivo no qual a consistência deve ser avaliada Retorna
cChave – Chave para a pesquisa. Opcional. Se não for informada, o lRet – Retorna Verdadeiro (.T.) se a chave existir no Alias especificado,
conteúdo será automaticamente obtido do GET ativo caso contrário, retorna Falso (.F.) e executa um help padrão do sistema
nOrdem – Ordem do índice para a pesquisa no Alias. Se não for (“REGNOIS”). A ordem utilizada na pesquisa é a atualmente selecionada.
especificado, será assumida a primeira ordem Se não for informado, usa a ordem atual do álias.
cHelp – Opcional chave de help. Se não for informada, o help será o Exemplo
padrão do sistema (“JAGRAVADO”) // Exemplo de uso da funcao ExistCpo:
While .T.
Retorna cProd := Space(15)
lRet – Retorna Verdadeiro (.T.) se a chave não existir (o que significa que @10,10 Get cProd
pode ser usada para incluir um novo registro). Caso contrário, retorna Read
Falso (.F.) e executa um help do sistema. If LastKey() == 27
Exit
Exemplo Endif
// Exemplo de uso da funcao ExistChav: If !ExistCpo(“SB1”,cProd)
// Pode-se utiliza-la em uma validacao de usuario, Loop
// definada atraves do Configurador: Endif
// Campo -> B1_COD Grava() // Funcao generica.
// Validacao do Usuario -> ExistChav(“SB1”) EndDo
// Ou em um AdvPL: Return
While .T.
cEsp := Space(15)
@ 00,00 Say “Cadastro de Especialidades” ExistIni
@10,00 Say “Espec.: “ Get cEsp Pict “@!” Tipo: Processamento
Read
Verifica se o campo possui inicializador padrão.
If LastKey() == 27
Exit Sintaxe
Endif ExistIni(cCampo)
If ExistChav(“SZ1”,cEsp,1,”ESPEXIST”) Parâmetros
Loop
cCampo – Nome do campo para verificação.
Endif
Grava() // Rotina generica Retorna
EndDo lEx – Retorna Verdadeiro (.V.) se o campo possui inicializador padrão,
Return caso contrário, retorna falso (.F.).
Exemplo
ExistCpo // Exemplo de uso da funcao ExistIni:
Tipo: Processamento // Se existir inicializador no campo B1_COD:
Verifica se determinada chave existe no Alias especificado. Função utilizada em If ExistIni(“B1_COD”)
// Chama o inicializador:
processamentos onde o código informado deve existir em determinado cadastro, cCod := CriaVar(“B1_COD”)
na sua validação. Endif
Sintaxe Return
ExistCpo(cAlias,cChave,nOrdem)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

14
Extenso cNatureza – Natureza a ser pesquisada
Tipo: Processamento dData1 – Data Inicial para cálculo
Gera o extenso de um valor numérico. Esta função retorna um valor, dinheiro ou dData2 – Data Final de cálculo
quantidade, por extenso. Usada para a impressão de cheques, valor de nMoeda – Moeda de saída
duplicatas, etc. Exemplo
Sintaxe FinNatPrv(“R001”,CtoD(“01/01/98”),dDataBase,1)
Extenso(nValor,lQtd,nMoeda)
Parametros FinNatRea
nValor – Valor a ser gerado o extenso. Tipo: Processamento e Planilha
lQtd – Verdadeiro (.T.) indica que o valor representa uma quantidade. Retorna o valor realizado da Natureza.
Falso (.F.) indica que o valor representa dinheiro. Se não for especificado, Sintaxe
o default é falso (.F.). FinNatRea(cNatureza,dData1,dData2,nMoeda)
nMoeda - Qual moeda do sistema deve ser o extenso. Parâmetros
Retorna cNatureza – Natureza a ser pesquisada
cValor – Retorna o valor por extenso. dData1 – Data Inicial para cálculo
Exemplo dData2 – Data Final de cálculo
// Exemplo de uso da funcao Extenso: nMoeda – Moeda de saída
nValor := SF2->F2_VALFAT Exemplo
// Gera o extenso do valor, formatando a variavel com FinNatRea(“R001”,CtoD(“01/01/98”),dDataBase,1)
// 200 caracteres preenchendo os espacos em branco com * aAdd(aL,”+—————————————————————+”)
cExtenso := PADR(Extenso(nValor),200,”*”) aAdd(aL,”|XXXXXXXX Relatorio de Teste Pagina: XXXXX|”)
// Imprime o extenso em duas linhas (100 caracteres em cada): aAdd(aL,”+————+————————————+————+”)
For nLi := 20 To 21 aAdd(aL,”| CODIGO | DESCRICAO | PRECO |”)
@nLi,10 Say Substr(cExtenso,(nLi-20)*100+1,100) aAdd(aL,”+————+————————————+————+”)
Next nLi aAdd(aL,”| XXXXXXX | XXXXXXXXXXXXXXXXXXXXXX | XXXXXX |”)
Return aAdd(aL,”+————+————————————+————+”)
nLim:= 80 // Relatorio de 80 colunas
FinNatOrc nLi:= 60
nPg:= 1
Tipo: Processamentoe Planilha dbSelectArea(“SB1”)
Retorna o valor orçado da natureza. dbGoTop()
Sintaxe While !EOF()
FinNatOrc(cNatureza,nMês,nMoeda) If nLi > 55
nLi := 0
Parâmetros FmtLin({},aL[1],,,@nLi,.T.,nLim)
cNatureza – Natureza a ser pesquisada FmtLin({dDataBase,nPg},aL[2],,,@nLi,.T.,nLim)
nMês – Mês para cálculo FmtLin({},aL[3],,,@nLi,.T.,nLim)
nMoeda – Moeda de saída FmtLin({},aL[4],,,@nLi,.T.,nLim)
FmtLin({},aL[5],,,@nLi,.T.,nLim)
Exemplo nPg := nPg + 1
FinNatOrc(“R001”,10,1) Endif
aDados := {}
FinNatPrv aAdd(aDados,Subs(B1_COD,1,7))
aAdd(aDados,Subs(B1_DESC,1,22))
Tipo: Processamento e Planilha
Retorna o valor previsto de cada natureza.
Sintaxe
FinatPrv(cNatureza,dData1,dData2,nMoeda)

Parâmetros
GUIA DE REFERÊNCIA RÁPIDA AdvPL

15
Formula Next i
inkey(0)
Tipo: Processamento Return
Interpreta uma fórmula cadastrada. Esta função interpreta uma fórmula, previa-
mente cadastrada no Arquivo SM4 através do Módulo Configurador, e retorna o @... GET
resultado com tipo de dado de acordo com a própria fórmula. Tipo: Tela DOS/Windows
Sintaxe Executa um Get, diferenciado pela cláusula <F3>.
Formula(cFormula) Sintaxe
Parâmetros @ nLinha,nColuna GET cVar <PICTURE> cMáscara <VALID> cFunção
cFormula – Código da fórmula cadastrada no SM4. <F3> cConsulta
Retorna Parâmetros
uRet – Retorno, com tipo de dado de acordo com a fórmula. nLinha – Número da Linha em que o Get será posicionado
Exemplo nColuna – Número da Coluna em que o Get será posicionado
// Exemplo de uso da funcao formula:
cVar – Variável a ser editada
// Formula cadastrada no SM4:
// Codigo: F01 cMáscara – Define a máscara de edição (opcional)
// Regra : “Sao Paulo, “+StrZero(Day(dDataBase),2)+ cFunção – Função que retorna valor lógico para validação da edição
// “ de “+MesExtenso(dDataBase)+” de “+ (opcional)
// StrZero(Year(dDataBase),4)+”.”
cConsulta – Definição (SXB) da consulta <F3> associada ao conteúdo de
// Ao imprimir esta linha em um programa, por exemplo,
@ 00,00 Say Formula(“F01”) cVar
// o resultado impresso sera algo como: Comentários
// Sao Paulo, 17 de dezembro de 1997. Os códigos utilizados na cláusula <F3> devem ser obtidos através do
// Formula cadastrada no SM4:
arquivo (SXB). Não é necessário utilizar o comando READ após a definição dos
// Codigo: F02
// Regra : (GETMV(“MV_JUROS”)/100)+1 Gets.
// Ao usar esta formula, pode-se dar um acrescimo em um
// valor de acordo com a taxa de juros cadastrada no parametro MV_JUROS: GetAdvFval
nValor := nValor * Formula(“F02”)
Tipo: Processamento
FuncaMoeda Esta função permite executar uma pesquisa em um arquivo, pela chave
Tipo: Processamento especificada e na ordem especificada, retornando o conteúdo de um ou mais
Retorna um array contendo o valor do titulo em até cinco (5) moedas. campos.
Sintaxe Sintaxe
FuncaMoeda(dData,nValor,nMoeda) GetAdvFVal(cAlias,uCpo,uChave,nOrder,uDef)
Parâmetros Parâmetros
dData – Data utilizada como referência cAlias – Alias do arquivo.
nValor – Valor utilizado como referência uCpo – Nome de um campo ou array contendo os nomes dos campos
nMoeda – Moeda em que o valor se encontra desejados.
Retorna uChave – Chave para a pesquisa.
aRet – Array contendo o valor informado nas cinco moedas nOrder – Ordem do indice para a pesquisa.
( { nVal1,nVal2,nVal3,nVal4,nVal5 } ) uDef – Valor ou array “default” para ser retornado caso a chave não seja
Exemplo encontrada.
// Exemplo do uso da funcao FuncAMoeda: Retorna
nValTit := SE1->E1_SALDO uRet – Retorna o conteúdo de um campo ou array com o conteúdo de
nMoeda := SE1->E1_MOEDA vários campos.
aValores := FuncaMoeda(dDataBase,nValTit,nMoeda)
For i:=1 to 5
? “Valor do titulo na “+Str(i,1)+”¦ moeda: “+;
Transform(aValores[i],”@E 9,999,999.99")

GUIA DE REFERÊNCIA RÁPIDA AdvPL

16
Exemplo GetSX8Num
// Exemplo de uso da funcao GetAdvFVal: Tipo: Processamento
// Obtendo apenas de um campo:
cChave := SD2->D2_COD+SD2->D2_LOCAL Fornece um número seqüencial do Arquivo de Semáforo (SX8??0.DBF). Esta
cDesc := GetAdvFVal(“SB1”,”B1_DESC”,cChave,1,SC6->C6_DESCRI) função retorna o próximo número, na seqüência e disponível, para o cadastro no
// Obtendo o conteudo de mais de um campo: SIGA Advanced e mantém esta numeração para o usuário até o momento em que
cChave := SD2->D2_COD+SD2->D2_LOCAL ele confirme ou abandone a operação. O Arquivo de Semáforo é usado para
aCpos := {“B1_DESC”,”B1_PRV1",”B1_UM”}
aDados := GetAdvFVal(“SB1”,aCpos,cChave,1,{SC6->C6_DESCRI,SC6- evitar a duplicidade de chaves em ambientes multiusuário. Esta função trabalha
>C6_PRCVEN,SC6->C6_UM}) junta-mente com outras duas, chamadas CONFIRMSX8 e ROLLBACKSX8.
refere-se aos Itens do Pedido de Venda) e, após pesquisar no SB1 Verifique os exemplos para maiores detalhes.
(Cadastro de Produtos), sugerir a quantidade vendida a partir de um Sintaxe
campo específico: GetSx8Num(cAlias,cCpoSx8)
// Colunas... Parâmetros
nPosCod := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == “C6_PRODUTO” }) cAlias – Alias do Arquivo
nPosQtd := aScan(aHeader,{ |x| Upper(AllTrim(x[2])) == “C6_QTDVEN” })
// Obtém o código do produto cCpoSx8 – Nome do campo para aplicação do semáforo
cCodigo := aCols[n,nPosCod] Exemplo
// Pesquisa Para que o Cadastro de Clientes, por exemplo, carregue na inclusão o
dbSelectArea(“SB1”) próximo número disponível automaticamente, pode-se utilizar a seguinte sintaxe
dbSetOrder(1)
dbSeek(xFilial(“SB1”)+cCod) no inicializador padrão do campo “A1_COD”:
// Altera a quantidade no grid GetSx8Num(“SA1”)
aCols[n,nPosQtd] := SB1->B1_QTSUGER // Campo específico com a quantidade Caso seja um arquivo especifico, utilize a sintaxe a seguir:
padrão GetSx8Num(“SZ1”,”Z1_COD”)
__Return(SB1->B1_QTSUGER)
Para uso em programas AdvPL, as sintaxes descritas acima também são válidas,
Para uma melhor compreensão, você pode analisar os programas RDMOD2.PRX
não devendo-se esquecer de que a função GETSX8NUM trabalha junto com as
e/ou RDMOD3.PRX que acompanham o SIGA Advanced. Eles estão no diretório
funções CONFIRMSX8 e ROLLBACKSX8, que devem ser chamadas ao final do
principal do sistema (geralmente \SIGAADV\) e demonstram rotinas usadas para
processamento (procedimento que é feito automaticamente em um inicializador
cadastros semelhantes ao Pedido de Vendas e que trabalham com os arrays
padrão conforme a sintaxe explicada acima).
mencionados.
Exemplo em AdvPL:
cCodNew := GetSx8Num(“SZ1”,”Z1_COD”)
GetMV // Processamento...
Tipo: Processamento // Confirmacao
ConfirmSx8()
Recupera o conteúdo de parâmetros originados em SX6. // ou Cancelamento
Sintaxe RollBackSx8()
GetMV(cParam) Return
Parâmetros
cParam – Nome do parâmetro a ser pesquisado no SX6 GravaOrcado
Retorna Tipo: Processamento e Planilha
ExpX1 – Conteúdo do parâmetro devolvido pela função Permite que um determinado valor calculado pela planilha seja gravado no
Exemplos Arquivo de Orçamentos.
cTabVista := GETMV(“MV_TABVIST”) Sintaxe
cColICMS := GETMV(“MV_COLICMS”)
GravaOrcado(cConta,nCélula,nMês,nMoeda)
Parâmetros
cConta – Conta Contábil a ser orçada
nCélula – Número da célula onde o valor estará contido
nMês – Mês a ser orçado (se nulo, será mês corrente)
nMoeda – Moeda a ser orçada (se nula, será moeda nacional)
GUIA DE REFERÊNCIA RÁPIDA AdvPL

17
Exemplo nLim – Limite do relatório. Máxima coluna a ser impressa
Para obter um valor referente à conta “11102001”, sendo que este deverá cAlias – Alias do arquivo de cadastro a ser impresso
ser orçado na Contabilidade para o mês “07” e na moeda “1”. Para tanto, cria-se a Exemplo
seguinte expressão: GravaOrcado(“11102001”,#022,7,1) // Exemplo de uso da funcao Impcadast:
// Imprime relatorio de cadastro de produtos:
Esta função irá devolver o conteúdo “<<< Orçado >>>”. ImpCadast(Cabec1,Cabec2,Cabec3,”PRG01",”P”,80,”SB1")
Return
Help
Tipo: Tela DOS/Windows IncRegua
Esta função exibe a ajuda especificada para o campo e permite sua edição. Se for Tipo: Impressão
um help novo, escreve-se o texto em tempo de execução. Incrementa régua padrão de processamento em relatórios.
Sintaxe Sintaxe
Help(cHelp,nLinha,cTítulo,cNil,cMensagem,nLinMen,nColMen) IncRegua()
Parâmetros Parâmetros
cHelp – Nome da Rotina chamadora do help (sempre branco) Nil
nLinha – Número da linha da rotina chamadora (sempre 1) Retorno
cTítulo – Título do help Nil
cNil – Sempre NIL Exemplo
cMensagem – Mensagem adicional ao help DbSelectArea(“SA1”)
nLinMen – Número de linhas da Mensagem (relativa à janela) SetRegua(LastRec())
While ( ! Eof() )
nColMen – Número de colunas da Mensagem (relativa à janela) @ Li, 001 PSAY SA1->A1_NOME
Retorna DbSkip()
Nada IncRegua()
Exemplos End
: Comentário
If Empty(cArqs) Ver também SetRegua()
dbSelectArea(cAlias)
RecLock(cAlias,.F.)
dbDelete() IncProc
Else Tipo: Tela DOS/Windows
Help(“ “,1,”NaoExclui”,,cArqs,4,1) Incrementa régua padrão de processamento.
Endif
Sintaxe
: IncProc()
Parâmetros
ImpCadast Nil
Tipo: Impressão Retorno
Imprime relatório de cadastros padrões do SIGA Advanced. Esta função monta Nil
uma interface padrão de relatório, com parametrizações de/até, e permite imprimir Exemplo
qualquer arquivo de cadastro definido no sistema. ProcRegua(1000)
Sintaxe For i:= 1 to 1000
ImpCadast(cCab1,cCab2,cCab3,cNomePrg,cTam,nLim,cAlias) IncProc()
Next
Parâmetros Return
cCab1 – Primeira linha de cabeçalho
cCab2 – Segunda linha de cabeçalho
cCab3 – Terceira linha de cabeçalho
cNomePrg– Nome do programa
cTam – Tamanho do relatório (“P”,”M” ou “G”)
GUIA DE REFERÊNCIA RÁPIDA AdvPL

18
IndRegua MarkBrowse
Tipo: Processamento Tipo: Processamento
Cria índice de trabalho, podendo ser condicional. Monta um browse padrão do sistema, permitindo marcar e desmacar linhas.
Sintaxe Sintaxe
IndRegua(cAlias,cArqtrab,cChave,cPar,cFiltro,cTexto) MarkBrowse(cAlias,cCampo,cCpo,aCampos,lMarc,cMarca,cCtrlM,lBotoes
Parâmetros ,cTopFun,cBotFun,aCoord)
cAlias – Alias do arquivo. Parâmetros
cArqtrab – Nome do arquivo de trabalho retornado pela função CriaTrab cAlias – Álias do arquivo
(.F.). cCampo – Campo que estabelece relação com a culuna de marca
cChave – Expressão utilizada na chave do novo índice. cCpo – Campo que se estiver vazio muda a cor da linha
cPar – Se for igual a ‘D’, cria um indice com a chave inversa, do maior aCampos – Array com os campos para montar o browse
valor para o menor. lMarc – Flag para inicializar marcado ou não
cFiltro – Expressão utilizada para filtro. cMarca – Marca obtida com a função Getmark
cTexto – Texto da régua de processamento ( “Selecionando registros ...”). cCtrlM – Função para ser executada no Alt_M
Retorno lBotoes – Parâmetro obsoleto
Nil cTopFun – Função filtro para estabelecer o primeiro registro
Exemplo cTopFun – Função filtro para estabelecer o último registro
DbSelectArea(“SC5”) aCoord – Array com as coordenadas da MarkBrowse.
cFiltro := “C5_OK<>’X’”
Exemplo
cChave := “Dtos(C5_EMISSAO)+C5_VEND1”
cMarca := GetMark()
cIndSC51 := CriaTrab(Nil,.F.)
cCadastro := “Escolher Clientes”
IndRegua(“SC5”, cIndSC51, cChave, , cFiltro, “Selecionando Pedidos...”)
aRotina := { { “Pesquisar”,”AxPesqui”,0,1}, ;
{“Visualizar”,”AxVisual”,0,2}}
LetterOrNum MarkBrow(“SA1”,”A1_OK”,”SA1->A1_OK”,,,cMarca)
Tipo: Processamento
Verifica se determinado caracter é uma letra ou um número. MBrowse
Sintaxe Tipo: Processamento
LetterOrNum(cChar) Monta um browse padrão do sistema, conforme os parâmetros.
Parâmetros Sintaxe
cChar – Caracter para verificação. mBrowse(nLinha1, nColuna1, nLinha2, nColuna2, cAlias, aFixe, cCpo,
Retorna nPar, cCor, n Opc)
lAlfa – Retorna Verdadeiro (.V.) se o caracter informado for uma letra ou Parâmetros
um número. nLinha1 – Número da linha inicial
Exemplo nColuna1 – Número da coluna inicial
// Exemplo de uso da funcao LetterOrNum: nLinha2 – Número da linha final
cCh := Inkey(0) nColuna2 – Número da coluna final
If LetterOrNum(cCh)
cAlias – Alias do arquivo
... Processamento
Endif aFixe – Array contendo os campos fixos (a serem mostrados em primeiro
Return lugar no browse)
cCpo – Campo a ser tratado. Quando vazio, muda a cor da linha
nPar – Parâmetro obsoleto
cCor – Função que retorna um valor lógico, muda a cor da linha
nOpc – Define qual opção do aRotina que será utilizada no double click

GUIA DE REFERÊNCIA RÁPIDA AdvPL

19
Exemplo Modelo2
cCadastro := “Cadastro de Orcamentos” Tipo: Processamento
aRotina := {{“Pesquisar”,”AxPesqui”,0,1},;
{“Incluir”,’ExecBlock(“DEMOA”,.F.)’,0,3},; Exibe formulário para cadastro segundo o modelo 2 (como a rotina de Nota
{“Altera”,’ExecBlock(“DEMOB”)’,0,4},; Fiscal).
{“Excluir”,’ExecBlock(“DEMOC”,.F.)’,0,5}} Sintaxe
MBrowse(6, 1, 22, 75, “SA1”) 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])
Media Parâmetros
Tipo: Processamento cTítulo – Título da janela
Retorna a taxa média da moeda em um determinado mês/ano. aCabec – Array com os campos do cabeçalho
Sintaxe aRodapé – Array com os campos do rodapé
Media(nMoeda,nMes,nAno) aGd – Array com as posições para edição dos itens (GETDADOS)
Parâmetros nOp – Modo de operação (3 ou 4 altera e inclui itens, 6 altera mas não
nTaxa – Taxa média calculada. inclui itens, qualquer outro número só visualiza os itens)
nMoeda – Moeda para cálculo da taxa média. cLOk – Função para validação da linha
nMes – Mês para cálculo da taxa média. Se não informado, é assumido o cTOk – Função para validação de todos os dados (na confirmação)
mês da data base. aGetsGD – Array Gets editáveis (GetDados)
nAno – Ano para cálculo da taxa média. Se não informado, é assumido o Default = Todos.
ano da data base. bF4 – Codeblock a ser atribuído a tecla F4.
Exemplo Default = Nenhum.
// Exemplo de uso da funcao Media
cIniCpos – String com o nome dos campos que devem ser inicializados ao
nTxMed := Media(1)
nTaxa := nTxMed teclar seta para baixo (GetDados).
@ 00,00 Say “Media do mes: “+Transform(nTxMed,”@E999.99") nMAx – Limita o número de linhas (GetDados).
@ 00,01 Say “Taxa calcul.: “ Get nTaxa Picture “@E999.99” Default = 99.
Read
aCordw – Array com quatro elementos numéricos, correspondendo às
Return
coor-denadas
MesExtenso linha superior, coluna esquerda, linha interior e coluna
Tipo: Processamento direita, definindo a área de tela a ser usada.
Retorna o nome do mês por extenso. Default = Área de Dados Livre.
Sintaxe lDelget – Determina se as linhas podem ser deletadas ou não (GetDados)
MesExtenso(nMes) Default = .T.
Parâmetros Retorna
nMes – Número do mês (1 a 12). Se “nMes” não for informado, é lRet – Retorna .T. se for confirmado
assumido o mês da data base do sistema. Esta variável também pode ser Exemplo
//**************************************************
caracter (“1” ou “2”) ou do tipo data. // 3,4 Permitem alterar getdados e incluir linhas
Retorna // 6 So permite alterar getdados e nao incluir linhas
cNome – Nome do mês retornado por extenso. // Qualquer outro numero so visualiza
Exemplo nOpcx:=3
// Exemplo do uso da funcao MesExtenso: dbSelectArea(“Sx3”)
? “Sao Paulo, “+STRZERO(Day(dDataBase),2)+” de “+; dbSetOrder(1)
MesExtenso(dDataBase)+” de “+StrZero(Year(dDataBase),4) dbSeek(“SX5”)
nUsado:=0
aHeader:={}
While !Eof() .And. (x3_arquivo == “SX5”)
IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1

GUIA DE REFERÊNCIA RÁPIDA AdvPL

20
AADD(aHeader,{ TRIM(x3_titulo),x3_campo,; aR:={}
x3_picture,x3_tamanho,x3_decimal,; // aR[n,1] = Nome da Variavel Ex.:”cCliente”
”ExecBlock(‘Md2valid’,.f.,.f.)”,x3_usado,; // aR[n,2] = Array com coordenadas do Get [x,y], em
x3_tipo, x3_arquivo, x3_context } ) // Windows estao em PIXEL
Endif // aR[n,3] = Titulo do Campo
dbSkip() // aR[n,4] = Picture
End // aR[n,5] = Validacao
aCols:=Array(1,nUsado+1) // aR[n,6] = F3
dbSelectArea(“Sx3”) // aR[n,7] = Se campo e’ editavel .t. se nao .f.
dbSeek(“SX5”) #IFDEF WINDOWS
nUsado:=0 AADD(aR,{“nLinGetD” ,{120,10},”Linha na GetDados”,;
While !Eof() .And. (x3_arquivo == “SX5”) “@E 999”,,,.F.})
IF X3USO(x3_usado) .AND. cNivel >= x3_nivel #ELSE
nUsado:=nUsado+1 AADD(aR,{“nLinGetD” ,{19,05},”Linha na GetDados”,;
IF nOpcx == 3 “@E 999”,,,.F.})
IF x3_tipo == “C” #ENDIF
aCOLS[1][nUsado] := SPACE(x3_tamanho) #IFDEF WINDOWS
Elseif x3_tipo == “N” aCGD:={44,5,118,315}
aCOLS[1][nUsado] := 0 #ELSE
Elseif x3_tipo == “D” aCGD:={10,04,15,73}
aCOLS[1][nUsado] := dDataBase #ENDIF
Elseif x3_tipo == “M” cLinhaOk := “ExecBlock(‘Md2LinOk’,.f.,.f.)”
aCOLS[1][nUsado] := “” cTudoOk := “ExecBlock(‘Md2TudOk’,.f.,.f.)”
Else // lRet = .t. se confirmou
aCOLS[1][nUsado] := .F. // lRet = .f. se cancelou
Endif lRet:=Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk)
Endif // No Windows existe a funcao de apoio CallMOd2Obj() que
Endif // retorna o objeto Getdados Corrente
dbSkip() Return
End
aCOLS[1][nUsado+1] := .F.
cCliente:=Space(6)
Modelo3
cLoja :=Space(2) Tipo: Processamento
dData :=Date() Executa cadastro semelhante ao cadastro de Pedidos de Venda, cabeçalho
nLinGetD:=0 variável com itens.
cTitulo:=”TESTE DE MODELO2"
aC:={} Sintaxe
// aC[n,1] = Nome da Variavel Ex.:”cCliente” Modelo3(cTitulo,cAliasEnchoice,cAliasGetD,aCpoEnchoice,cLinOk,cTudO
// aC[n,2] = Array com coordenadas do Get [x,y], em k,nOpcE,nOpcG,cFieldOk, [lVirtual,nLinhas,aAltEnchoice])
// Windows estao em PIXEL Parâmetros
// aC[n,3] = Titulo do Campo
// aC[n,4] = Picture cTitulo – Título da janela
// aC[n,5] = Validacao cAliasEnchoice – Álias do cabeçalho
// aC[n,6] = F3 cAliasGetd – Álias dos itens
// aC[n,7] = Se campo e’ editavel .t. se nao .f. aCpoEnchoice – Array com os campos que serão mostrados
#IFDEF WINDOWS
AADD(aC,{“cCliente” ,{15,10} ,”Cod. do Cliente”,”@!”,; cLinOk – Função para validar a mudança de linha nos itens.
‘ExecBlock(“MD2VLCLI”,.F.,.F.)’,”SA1",}) cTudOk – Função para validar todos os itens.
AADD(aC,{“cLoja” ,{15,200},”Loja”,”@!”,,,}) nOpce – Número da opção do menu para o cabeçalho (Enchoice)
AADD(aC,{“dData” ,{27,10} ,”Data de Emissao”,,,,}) nOpcG – Número da opção do menu para o itens (GetDados)
#ELSE
AADD(aC,{“cCliente” ,{6,5} ,”Cod. do Cliente”,”@!”,; cFieldOk – Função para validar os campos dos itens (GetDados)
ExecBlock(“MD2VLCLI”,.F.,.F.)’,”SA1",}) lVirtual – Permite visualizar campos virtuais na enchoice.
AADD(aC,{“cLoja” ,{6,40},”Loja”,”@!”,,,}) Default = .F.
AADD(aC,{“dData” ,{7,5} ,”Data de Emissao”,,,,}) nLinhas – Limita o número máximo de linhas (GetDados)
#ENDIF
GUIA DE REFERÊNCIA RÁPIDA AdvPL

21
Default = 99. dbSeek(xFilial()+M->C5_NUM)
While !eof().and.C6_NUM==M->C5_NUM
aAltEnchoice – Array com campos alteráveis (Enchoice) AADD(aCols,Array(nUsado+1))
Default = Todos. For _ni:=1 to nUsado
Retorna aCols[Len(aCols),_ni]:=FieldGet(FieldPos(aHeader[_ni,2]))
lRet – Retorno da função modelo3. Se True a operação foi confirmada. Next
aCols[Len(aCols),nUsado+1]:=.F.
Exemplo dbSkip()
aRotina := {{ “Pesquisa”,”AxPesqui”, 0 , 1},;
End
{ “Visual”,”AxVisual”, 0 , 2},;
Endif
{ “Inclui”,”AxInclui”, 0 , 3},;
If Len(aCols)>0
{ “Altera”,”AxAltera”, 0 , 4, 20 },;
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
{ “Exclui”,”AxDeleta”, 0 , 5, 21 }}
//³ Executa a Modelo 3 ³
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//³ Opcoes de acesso para a Modelo 3 ³
cTitulo:=”Teste de Modelo3()”
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cAliasEnchoice:=”SC5"
cOpcao:=”VISUALIZAR”
cAliasGetD:=”SC6"
Do Case
cLinOk:=”AllwaysTrue()”
Case cOpcao==”INCLUIR”; nOpcE:=3 ; nOpcG:=3
cTudOk:=”AllwaysTrue()”
Case cOpcao==”ALTERAR”; nOpcE:=3 ; nOpcG:=3
cFieldOk:=”AllwaysTrue()”
Case cOpcao==”VISUALIZAR”; nOpcE:=2 ; nOpcG:=2
aCpoEnchoice:={“C5_CLIENTE”}
EndCase
_lRet:=Modelo3(cTitulo,cAliasEnchoice,cAliasGetD,aCpoEnchoice,cLinOk,cTudOk,nOpcE,n
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
OpcG,cFieldOk)
//³ Cria variaveis M->????? da Enchoice ³
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//³ Executar processamento ³
RegToMemory(“SC5”,(cOpcao==”INCLUIR”))
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
If _lRet
//³ Cria aHeader e aCols da GetDados ³
Aviso(“Modelo3()”,”Confirmada operacao!”,{“Ok”})
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Endif
nUsado:=0
Endif
dbSelectArea(“SX3”)
Return
dbSeek(“SC6”)
aHeader:={}
While !Eof().And.(x3_arquivo==”SC6") MontaF3
If Alltrim(x3_campo)==”C6_ITEM” Tipo: Processamento
dbSkip()
Loop Permite o acesso à janela de Consultas Padronizadas (criadas no SXB) através
Endif de um GET usando a tecla F3.
If X3USO(x3_usado).And.cNivel>=x3_nivel Sintaxe
nUsado:=nUsado+1 MontaF3(cAlias)
Aadd(aHeader,{ TRIM(x3_titulo), x3_campo, x3_picture,;
x3_tamanho, x3_decimal,”AllwaysTrue()”,; Parâmetros
x3_usado, x3_tipo, x3_arquivo, x3_context } ) cAlias – Alias do arquivo ou código de tabela para consulta. Se não
Endif informado, desabilita a tecla F3.
dbSkip() Exemplo
End // Exemplo de uso da funcao MontaF3:
If cOpcao==”INCLUIR” // Versao DOS
aCols:={Array(nUsado+1)} cCod := Space(15)
aCols[1,nUsado+1]:=.F. @02,50 Say “Digite o codigo: “ Get cCod Picture “@!” ;
For _ni:=1 to nUsado When MontaF3(“SB1”) Valid(MontaF3())
aCols[1,_ni]:=CriaVar(aHeader[_ni,2]) Read
Next Return
Else // ***************************
aCols:={} // Versao WINDOWS
dbSelectArea(“SC6”) // Use a propria clausula do comando get:
dbSetOrder(1) @ 250,250 To 360,450 Dialog oDlg Title “Teste”
GUIA DE REFERÊNCIA RÁPIDA AdvPL

22
@ 02,50 Get cCod Picture “@!” F3 “SB1”
Activate Dialog oDlg Centered
Return
MsgBox
Tipo: Tela Windows
MovimCC Abre uma caixa de dialogo padronizada para informar o usuário de um Erro
Tipo: Processamento decisão a ser tomada ou apenas uma informação (“Registro Gravado com
Retorna o movimento de um centro de custo mais conta contábil (extracontábil). sucesso”).
Sintaxe Sintaxe
MovimCC(cCC, cConta, nMês, nMoeda) MSGBOX(cMensagem,cTítulo,cTpCaixa)
Parâmetros Parâmetros
cCC – Código do centro de custo cMensagem – Define a mensagem apresentada no interior da janela
cConta – Código da conta contábil cTítulo – Titulo da janela
nMês – Referente ao mês cTpCaixa – Tipo da caixa padronizada
nMoeda – Moeda desejada para obtenção do valor Retorno
Exemplo Retorna Nil ou um valor lógico (.T. ou .F.) conforme o tipo de caixa.
MovimCC(“3001”, “111001”,Month(Ddatabase),1) Comentários
As caixas assumem o tamanho de <cMensagem>.
Movimento Tipos de caixas:
Tipo: Processamento “STOP”, utiliza um bitmap para advertência e tem um botão “Ok”. Retorna
Devolve o movimento (débito-crédito) de uma determinada conta, ou seja, o saldo Nil.
do movimento. “INFO”, utiliza um bitmap para advertência e tem um botão “Ok”. Retorna
Sintaxe Nil.
Movimento(cCódigo,nMês,nMoeda,dData) “ALERT”, utiliza um bitmap para advertência e tem um botão “Ok”.
Parâmetros Retorna Nil.
cCódigo – Código da conta “YESNO”, utiliza um bitmap para advertência e tem dois botões “Sim” e
nMês – Mês do movimento desejado “Não”,
nMoeda – Moeda desejada para obtenção do movimento retorna .T. ou .F.
dData – Data do exercício desejado “RETRYCANCEL”, utiliza um bitmap para advertência e tem dois botões
Exemplo “Repetir” e “Cancelar”, retorna .T. ou .F.
Movimento(“43”,1,1, CTOD ("01/01/95") - retorna o 1º período
Movimento(`43”,1,1,CTOD(“01/01/96”) - retorna o 13º período @..To...MultiLine
// Exibe uma mensagem no dialogo
Tipo: Tela Windows
MsProcTxt(“Processando produto: “+B1_COD)
// Processamento... Ativa Browse para edição de múltiplos itens padrão SigaAdv Win (GetDados Itens
dbSkip() SC6).
EndDo Sintaxe
Return
@ nLinha1,nColuna1 TO nLinha2,nColuna2 MULTILINE <<MODIFY>>
<<DELETE>> <<VALID>> cFunção <<FREEZE>> nColuna
MsGetVersion Parâmetros
Tipo: Processamento nLinha1 – Número da linha superior
Retorna array com as versões do Windows NT. nColuna1 – Número da coluna superior
Sintaxe nLinha2 – Número da linha inferior
MsGetVersion( ) nColuna2 – Número da coluna inferior
Exemplo cFunção – Função a ser executada para validar mudança de linha
aVersao := MsGetVersion()
@ 001, 010 PSAY ‘Versao do Windows : ‘ + Str( aVersao[1], 2 ) + ‘.’ + Str( <opcional>
aVersao[2], 2 ) nColuna – Número de colunas “Congeladas à esquerda” <opcional>
@ 008, 010 PSAY ‘Versao do Dos : ‘ + Str( aVersao[3], 2 ) + ‘.’ + Str(aVersao[4], 2 )
GUIA DE REFERÊNCIA RÁPIDA AdvPL

23
Comentários dData – Data para conversão (em formato data ou caracter), caso não
As cláusulas opcionais permitidas controlam as Alterações, Exclusões e informada, será utilizada a DataBase do sistema
Validações nas mudanças de linha e congelamento de colunas respectivamente. Exemplo
Devem ser criadas obrigatoriamente as matrizes aHeader [n][n] e aCols[n][n] Orcado(“11102001”,1,1)
antes da definição da MULTILINE, sendo que aHeader [n][n] contém informações
sobre os campos que serão editados (SX3) e aCols [n][n] contém os dados OrcadoCC
referentes aos campos que serão editados. Tipo: Processamento
Recupera o valor orçado da Conta x Centro de Custo para utilização na planilha.
NaoVazio Sintaxe
Tipo: Processamento OrcadoCC(cConta,cCC,nPeríodo,nMoeda,dData)
Verifica se o campo não está vazio. Parâmetros
Sintaxe cConta – Código da Conta
NaoVazio(cCpo) cCC – Código do Centro de Custo
Parâmetros nPeríodo – Período (default mês da database)
cCpo – Campo a verificar nMoeda – Moeda (default 1)
Retorna dData – Data para conversão se moeda de 2 a 5 - (default dDataBase)
ExpL1 – Valor Lógico de Retorno (.T. ou .F.) Exemplo
OrcadoCC( “111001”,“3001”,3,2)
Exemplos
@ 5,10 Get cCodigo Valid NaoVazio(cCodigo)
OpenFile
Negativo Tipo: Processamento
Tipo: Processamento É a função que exibe o diagnóstico de arquivos, verificando a existência dos
Verifica se é negativo. arquivos de dados e os índices do sistema, criando caso não existam, etc. Abre
Sintaxe os arquivos de acordo com o módulo onde é executada ou de acordo com a
Negativo(nCpo) parametrização.
Parâmetros Sintaxe
nCpo – Campo a verificar OpenFile(cEmp)
Retorna Parâmetros
ExpL1 – Se o valor de nCpo for menor que 0, é retornado .T., caso cEmp – Código da empresa que deve ser aberta.
contrário será retornado .F.. Exemplo
// Exemplo de uso da funcao openfile:
Exemplos cEmp := SM0->M0_CODIGO
If Negativo (nValTitulo) // Elimina os indices de todos os arquivos abertos no
@ 5,10 Say “Valor invalido” // SX2 para reindexacao
Loop dbSelectArea(“SX2”)
EndIf dbGoTop()
While !EOF()
Orcado If Select(SX2->X2_CHAVE) > 0
dbSelectArea(SX2->X2_CHAVE)
Tipo: Processamento dbCloseArea()
Retorna o valor orçado de uma conta. cEsp := AllTrim(SX2->X2_PATH)
Sintaxe cEsp := cEsp + AllTrim(SX2->X2_ARQUIVO) + "*" + RetIndExt()
Orcado(cConta, nPeríodo,nMoeda,dData) fErase(cEsp)
Endif
Parâmetros dbSelectArea(“SX2”)
cConta – Código da conta De dbSkip()
nPerídodo – Referente ao período EndDo
nMoeda – Moeda desejada para obtenção do valor dbCloseAll() // Fecha todos os arquivos
OpenFile(cEmp) // Abre os arquivos (reindexa)
GUIA DE REFERÊNCIA RÁPIDA AdvPL

24
Return Periodo
* Parâmetro cEmp apenas no Windows.
Tipo: Processamento
Devolve o período contábil de acordo com o exercício atual.
OurSpool Sintaxe
Tipo: Impressão Periodo(dData,nMoeda)
Abre a tela do gerenciador de impressão do sistema. O gerenciador mostra os Parametros
relatórios impressos em disco gravados no diretório definido através do parâmetro dData – Data a ser considerada. Se não for especificada, é assumida a
“MV_RELATO”. data base.
Sintaxe nMoeda – Moeda a ser considerada. Se não for especificada, é assumida
OurSpool(cArq) a primeira moeda.
Parâmetros Retorna
cArq – Nome do arquivo. Este parâmetro é opcional, se informado, o nPer – Período contábil retornado.
gerenciador de impressão já é aberto neste arquivo. Exemplo
Exemplo
// Exemplo de uso da funcao ourspool:
Veja o exemplo da função CALCSALDO.
// Ativa o gerenciador de impressao:
OurSpool() Pertence
// Para verificar o uso desta funcao em relatorios,
Tipo: Processamento
// verifique o exemplo da funcao AVALIMP.
Return Verifica se o campo está contido em outro.
Sintaxe
Pergunte Pertence(cString,cCampo)
Tipo: Impressão Parâmetros
Esta função permite acessar e editar um grupo de perguntas do arquivo SX1. cString – String que deve estar contida no cCampo
Mostra uma tela contendo as perguntas gravadas em SX1 a serem respondidas cCampo – Campo a verificar
ou confirmadas pelo usuário. Retorna
Sintaxe ExpL1 – Valor Lógico de Retorno (.T. ou .F.)
Pergunte(cGrupo, lVar) Exemplo
SetCursor(1)
Parâmetros @ 09,19 Get cTipo Picture “@!” Valid Pertence(“CL\VD\PD”,cTipo)
cGrupo – Nome do Grupo de perguntas.
lVar – .F. - devolve o conteúdo das variáveis, não apresentando a janela PesqPict
de perguntas; .T. - permite a alteração das variáveis, apresentando a Tipo: Processamento
janela. Pesquisa, no dicionário de dados, qual a picture usada em um determinado
Retorna campo, seja para a edição em tela ou para a impressão de relatórios.
ExpL1 – .T. se o grupo de perguntas existe. Sintaxe
Exemplos PesqPict(cAlias,cCampo,nTam)
pergunte(“AFR090”,.T.)
// Variáveis utilizadas na pergunta Parâmetros
// mv_par01 a partir da data cAlias – Alias do arquivo
// mv_par02 até a data cCampo – Nome do campo
// mv_par03 da conta
nTam – Opcional, para campos numéricos, será usado como o tamanho
// mv_par04 até a conta
// mv_par05 do centro de custo do campo para definição da picture. Se não informado, e usado o
// mv_par06 até o centro de custo tamanho padrão no dicionário de dados.
// mv_par07 do código Retorna
// mv_par08 até o código
cPic – Picture do campo
// mv_par09 do projeto
// mv_par10 até o projeto
// mv_par11 moeda
GUIA DE REFERÊNCIA RÁPIDA AdvPL

25
Exemplo Positivo
// Exemplo de uso da funcao PesqPict Tipo: Processamento
// Em um relatorio pode-se usar a sintaxe abaixo para
// formatacao automatica de acordo com o dicionario de Verifica se é positivo.
// dados: Sintaxe
@ nLin,20 Say “Total: “ Positivo(nCampo)
@ nLin,27 Say SF2->F2_VALBRUT Picture PesqPict(“SF2”,”F2_VALBRUT”) Parâmetros
// ...
Return nCampo – Campo a verificar
Retorna
PesqPictQt ExpL1 – Valor Lógico de Retorno (.T. ou .F.)
Tipo: Processamento Comentários
Devolve a Picture de um campo de quantidade, de acordo com o dicionário de Se cCampo for maior ou igual ( >= ) a zero a função retorna .T.
dados. Esta função geralmente é utilizada quando há pouco espaço disponível Caso contrário retorna .F.
para impressão de valores em relatórios, quando o valor nEdição não é Exemplo
@ 09,07 Get nValor Picture “999999” Valid Positivo ( nValor )
informado, ela tem o comportamento semelhante ao da função “X3Picture”, pois
busca o tamanho do campo no dicionário de dados.
ProcRegua
Sintaxe
Tipo: Tela DOS/Windows
PesqPictQt(cCampo,nEdição)
Inicializa régua padrão de processamento.
Parâmetros
Sintaxe
cCampo – Nome do campo a verificar a picture
ProcRegua(nRegs,nLinha,nColuna)
nEdição – Espaço disponível para edição
Parâmetros
Retorna
nRegs – Número de registros que serão processados.
ExpC – Picture ideal para o espaço definido por nEdição, sem a
nLinha – Número da Linha da régua
separação dos milhares por vírgula
nColuna – Número da Coluna da régua
Exemplo
@ 8,10 Say SB2->B2_QATU Picture PesqPictQt (“B2_QATU”,8) Retorna
Nil
Posicione Exemplo
ProcRegua(1000)
Tipo: Processamento For i:= 1 to 1000
Posiciona o arquivo em um determinado registro. IncProc()
Sintaxe Next
Return
Posicione(cAlias, nOrdem, cChave, cCampo)
Parâmetros No programa para Windows a ProcRegua só utiliza o primeiro parâmetro. No
cAlias – Alias do arquivo programa para DOS são utilizados os três parâmetros.
nOrdem – Ordem utilizada = Ver também IncProc()
cChave – Chave pesquisa
cCampo – Campo a ser retornado ProxReg
Retorna Tipo: Processamento
Retorna o conteúdo do campo passado com o perímetro. Retorna o último registro incrementado. Esta função retorna um valor, numérico
Exemplo ou caracter, contendo o próximo número a partir do último registro encontrado. O
Posicione(“SA1”,1,xFilial(“SA1”)+001,“A1_NOME”) campo que é levado em consideração é aquele que se encontra posicionado no
SX3 (dicionário de dados). Pode ser usada para obter os próximos valores para
campos dos tipos: Caracter, Numérico e Data.

GUIA DE REFERÊNCIA RÁPIDA AdvPL

26
RecLock
Sintaxe Tipo: Processamento
ProxReg(nInc,nPos,nIndice) Tenta efetuar um lock no registro do banco de dados informado.
Parâmetros Sintaxe
nInc – Valor a incrementar RecLock(cAlias,lAdiciona)
nPos – Tamanho Parâmetros
nÍndice – Número do índice a ser utilizado cAlias – Alias do Banco de Dados
Retorna lAdiciona – .T. adiciona registro ao Banco de Dados
uRet – Próximo número (último registro incrementado) Retorna
Exemplo ExpL1 – Valor Lógico de Retorno (.T. ou .F.)
// Exemplo de uso da função ProxReg: Comentários
dbSelectArea(“SX3”)
dbSetOrder(2) Esta função tenta colocar o registro corrente do arquivo cAlias em lock.
dbSeek(“A1_COD”) É necessário colocar um registro em lock sempre que se for efetuar uma
dbSelectArea(“SA1”) atualização no mesmo, como um comando Replace ou um Delete. Caso
cProx := ProxReg(1,6,1) // Retorna o possível próximo lAdiciona = .T., a função RecLock inclui (com um Append Blank) um
// código para o cadastro de
// cliente registro no arquivo cAlias. Se a operação for bem sucedida, retorna .T.
dbSelectArea(“SX3”) Exemplo
dbSeek(“D2_NUMSEQ”) // Exclusão de Registro
dbSelectArea(“SD2”) // Com lAdiciona = .F.
nProx := ProxReg(1,,4) // Retorna o próoximo número If ! RecLock(“SF1”,.F.)
// seqüencial @ 1,1 Say “Registro em uso por outra estação”
Return Loop
EndIf
dbDelete()
@...Radio dbUnLock()
Tipo: Tela Windows Com ExpL2 = .T.
Cria uma caixa de seleção semelhante a CHECKBOX, todos os itens são // Inclusão de Registro
RecLock(“SF1”,.T.)
apresentados mas apenas um pode ser selecionado. Replace F1_TIPO With cTipo, F1_DOC With cNFiscal,;
Sintaxe F1_SERIE With cSerie ,F1_EMISSAO With dDEmissao,;
@ nLinha,nColuna RADIO aArray VAR nPos Object oRdx F1_LOJA With cLoja ,F1_FORNECE With Subs(cA100For,1,6)
Parâmetros dbUnLock()
nLinha – Número da linha superior Após a atualização do registro, deve-se executar a função MsUnlock().
nColuna – Número da coluna superior RecMoeda
aArray – Matriz [1] com os Itens Tipo: Processamento
nPos – Contém a posição na Matriz[1] do item selecionado Rotina para obtenção do valor da moeda desejada em determinada data.
oRdx – Objeto associado à Radiobox() Sintaxe
Retorno RecMoeda(dData,nMoeda)
O item selecionado pode ser obtido por - “Matriz [n3]” Parâmetros
Comentários dData – Data para obtenção do valor da moeda.
Os itens da Matriz [1] devem ser do tipo “C” caracter. Pode ser utilizada nMoeda – Moeda desejada.
para definir uma característica em um conjunto. Ex.Tipo da Condição de Retorna
pagamento nVMoeda – Retorna o Valor da moeda na data desejada.
• Tipo 1 Exemplo
• Tipo 2 // Exemplo de uso da funcao RecMoeda:
nDolar := RecMoeda(dDataBase,2)
• Tipo 3 nValDolar := SE1->E1_VALOR * nDolar
Return

GUIA DE REFERÊNCIA RÁPIDA AdvPL

27
RestArea Comentários
Tipo: Processamento Baseado no SINDEX, abre todos os índices padrões para o arquivo em
Restaura a área RestArea a partir do array. pauta.
Sintaxe Exemplo
RestArea(aArray) Select SA1
Index on A1_ACUM to TRAB
Parâmetros :
aArray – Expressão Array para restauração SINDEX := RetIndex (“SA1”)
Exemplo
aArray:=GetArea()
RestArea(aArray)
RollBackSX8
Ver também Tipo: Processamento
Função GetArea( ) Retorna o número obtido pela função GETSX8NUM no semáforo como
pendente. Verifique a função GETSX8NUM para maiores detalhes.
Sintaxe
RetASC
RollBackSx8()
Tipo: Processamento
Exemplo
Retorna um código de letras quando ultrapassar o número máximo de dígitos.
Verifique os exemplos na função GETSX8NUM.
Sintaxe
RetAsc(cOri,nTam,lAlfa)
Parâmetros RptStatus
cOri – String original a ser convertida. Tipo: Processamento (Apenas Windows)
nTam – Tamanho máximo para a conversão. Executa função de detalhe do relatório.
lAlfa – Indica se o retorno deve conter letras (.T.) ou somente números Sintaxe
(.F.) RptStatus(bBlock) => RptStatus(bBlock, cTítulo, cMsg)
Retorna Parâmetros
cStr – Retorna a String formada com letras ou números. bBlock – Bloco de código que define a função a ser executada.
Exemplo cTítulo – Título do diálogo de processamento.
// Exemplo de uso da funcao RetAsc: cMsg – Mensagem do diálogo de processamento.
// Suponha a existencia de um campo caracter de tamanho Comentários
// 2. Usando a funcao RetAsc com o parametro lAlfa ver- Pode ser utilizada com os parâmetros:
// dadeiro (.T.) se o numero ultrapassar 99 retornara A0
RptStatus( { | | Execute(“Nome da Função”) } )
cCod := StrZero(ProxReg(1,2,1),2)
// Se ultrapassar 99 retorna A0
cCod := RetAsc(cCod,2,.T.) Saldo
__Return(cCod) Tipo: Processamento
Calcula o saldo de uma determinada conta até o período informado e na moeda
RetIndex especificada.
Tipo: Processamento Sintaxe
Devolve os índices padrões do SIGA. Saldo(cConta,nPer,nMoeda)
Sintaxe Parâmetros
RetIndex(cAlias) cConta – Código da conta desejada.
Parâmetros nPer – Período contábil até o qual será feito o cálculo.
cAlias – Alias do Arquivo nMoeda – Moeda desejada.
Retorna
Número Índices existentes no SINDEX

GUIA DE REFERÊNCIA RÁPIDA AdvPL

28
Retorna SaldoSB2
nSld – Retorna o Saldo da conta até o período desejado. Tipo: Processamento
Exemplo Esta função calcula o saldo atual do produto (do Arquivo SB2), descontando os
// Exemplo de uso da funcao Saldo: valores empenhados, reservados, etc. É necessário que o Arquivo SB2 esteja
cConta := SA1->A1_CONTA
nSl := Saldo(cConta,Periodo(dDataBase,2),2) posicionado no produto desejado.
cSl := Transform(nSl,”@E 9,999,999.99") Sintaxe
Alert(“O saldo da conta “+cConta+” na moeda 2 e’: “+cSl) SaldoSB2()
Return Retorna
nSld – Retorna o Saldo do produto calculado.
SaldoCC Exemplo
Tipo: Processamento // Exemplo de uso da funcao SaldoSb2:
Calcula o saldo atual em um determinado centro de custo ou conta (extracontábil). cProd := Space(15)
@ 10,10 Get cProd Picture “@!”
O arquivo SI3 deve estar posicionado para a obtenção dos valores para o cálculo. Read
Sintaxe dbSelectArea(“SB2”)
SaldoCC(cCC,cConta,nPer,nMoeda) dbSeek(cProd)
Parâmetros cSld := Transform(SaldoSb2(),”@E 9,999,999.99")
Alert(“Este produto tem um saldo de: “+cSld)
cCC – Centro de Custo desejado Return
cConta – Código da conta
nPer – Período até o qual o acúmulo deve ser calculado SetDefault
nMoeda – Moeda desejada Tipo: Processamento
Retorna Habilita os padrões definidos pela função SetPrint.
nSld – Saldo atual retorna do. Sintaxe
Exemplo SetDefault (aArray, cAlias)
// Exemplo de uso da funcao SaldoCC:
Parâmetros
// Assumindo-se que o SI3 esta posicionado, nao e neces-
// sario informar o centro de custo e a conta. aArray – Array aReturn, preenchido pelo SetPrint
nSld := SaldoCC(,,12,1) [1] Reservado para Formulário
return [2] Reservado para Nº de Vias
[3] Destinatário
SaldoCusto [4] Formato => 1-Comprimido 2-Normal
Tipo: Processamento [5] Mídia => 1-Disco 2-Impressora
Calcula o saldo dos centro de custos extracontábeis. [6] Porta ou Arquivo 1-LPT1... 4-COM1...
Sintaxe [7] Expressão do Filtro
SaldoCusto(cCC1,cCC2,cConta1,cConta2,nMês,nMoeda) [8] Ordem a ser selecionada
Parâmetros [9]..[10]..[n] Campos a Processar (se houver)
cCC1 – Centro de Custo Inicial cAlias – Alias do arquivo a ser impresso.
cCC2 – Centro de Custo Final Retorna
cConta1 – Conta Inicial Nil
cConta2 – Conta Final Comentários
nMês – Mês (se nula, assume o mês de referência da database) Esta função habilita os padrões de relatório alterados pela função
nMoeda – Moeda (se nula, será assumido 1) SetPrint.
Exemplo
SaldoCusto(“1007”, “1099”, “3”, “4”, “10, 1)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

29
cAlias – Alias do Arquivo Principal (se existir)
Exemplo cNomeRel – Nome padrão do relatório
// Define Variáveis cPerg – Nome do grupo de perguntas
cString:= “SB1”
cDesc1 ..cDesc4 – Descrição do Relatório
NomeRel:= “MATR290”
cPerg := “MTR290” lDic – Habilita o Dicionário de Dados
titulo := “RELAÇÃO PARA ANÁLISE DOS ESTOQUES” .T. – Habilita (só utilizar em conjunto com a função ImpCadast)
cDesc1 := “Este relatório demonstra a situação de cada item em “ .F. – Desabilita
cDesc2 := “relação ao seu saldo , seu empenho , suas entradas previstas”
aOrdem – Array contendo as ordens de indexação do arquivo principal.
cDesc3 := “e sua classe ABC.”
aOrd := {“ Por Codigo “,” Por Tipo “} lComp – Habilita a alteração da compressão do relatório
Tamanho := “G” .T. – Habilita
// Envia controle para a função SETPRINT .F. – Desabilita
NomeRel:= SetPrint( cString, NomeRel, cPerg, @titulo, cDesc1, ;
cClass – Classificação do Relatório por Tamanho ( “G”, “M” ou “P” )
cDesc2, cDesc3, .F., aOrd, .F., Tamanho)
If LastKey() = 27 .or. nLastKey = 27 P – 80 colunas
RestScreen(3,0,24,79,cSavScr1) M – 132 colunas
Return G – 220 colunas
Endif
Retorna
SetDefault(aReturn,cAlias)
If LastKey() = 27 .OR. nLastKey = 27 ExpC – Nome do arquivo com o relatório impresso em disco
RestScreen(3,0,24,79,cSavScr1) opcionalmente alterado pelo usuário
Return Comentários
Endif
Esta função possibilita a alteração de determinados padrões dos
relatórios. Ela funciona em conjunto com a função SetDefault.
SetDlg Exemplo
Tipo: Tela Windows // Define Variáveis
Colocar um título em uma Dialog. cString:= “SB1”
Sintaxe NomeRel:= “MATR290”
cPerg := “MTR290”
SetDlg(oWnd, cText) titulo := “RELAÇÃO PARA ANÁLISE DOS ESTOQUES”
Parâmetros cDesc1 := “Este relatório demonstra a situação de cada item em “
oWnd – Objeto da janela cDesc2 := “relação ao seu saldo , seu empenho , suas entradas previstas”
cText – Novo Texto cDesc3 := “e sua classe ABC.”
aOrd := {“ Por Codigo “,” Por Tipo “}
Exemplo Tamanho:= “G”
If ( INCLUI ) // Envia controle para a função SETPRINT
cCaption := ‘Inclusao de Pedidos’ NomeRel := SetPrint( cString, NomeRel, cPerg, @titulo, cDesc1,;
ElseIf ( ALTERA ) cDesc2, cDesc3, .F., aOrd, .F., Tamanho )
cCaption := ‘Alteracao de Pedidos’ If LastKey() = 27 .or. nLastKey = 27
EndIf RestScreen(3,0,24,79,cSavScr1)
SetDlg( oDlg, cCaption ) Return
Endif
SetPrint SetDefault(aReturn,cAlias)
If LastKey() = 27 .OR. nLastKey = 27
Tipo: Impressão RestScreen(3,0,24,79,cSavScr1)
Altera os padrões de impressão. Return
Sintaxe Endif
SetPrint(cAlias, cNomeRel, cPerg, cDesc1, cDesc2, cDesc3, cDesc4, lDic,
aOrdem, lComp, cClass)

Parâmetros
GUIA DE REFERÊNCIA RÁPIDA AdvPL

30
SetRegua SldFornece
Tipo: Impressão (DOS/ Windows) Tipo: Processamento
Inicializa régua padrão em relatórios. Retorna o saldo a pagar do fornecedor em uma data.
Sintaxe Sintaxe
SetRegua(nRegs) SldFornece(cFornece,dData,nMoeda,lSaldo)
Parâmetros Parâmetros
nRegs – Número de registros que serão processados. cFornece – Código do Fornecedor+Loja
Retorno dData – Data do Movimento a Pagar (padrão é dDataBase)
Nil nMoeda – Moeda - (padrão é 1)
Exemplo lSaldo – Se .T. considera o saldo do SE5 (padrão é .T.)
DbSelectArea(“SA1”) Exemplo
SetRegua(LastRec()) SldFornece(“00000101")
While ( ! Eof() )
@ Li, 001 PSAY SA1->A1_NOME
DbSkip() SldPagar
IncRegua() Tipo: Processamento
End Do Retorna o saldo a pagar em uma determinada data.
Comentário Sintaxe
Ver também incRegra. SldPagar(dData,nMoeda,lData)
Parâmetros
SldBco dData – Data do Movimento a Pagar ( padrão é dDataBase)
Tipo: Processamento nMoeda – Moeda (padrão é 1)
Retorna o saldo bancário em uma data. lData – Se .T. Até a Data, .F. Somente Data (padrão é .T.)
Sintaxe Exemplo
SldBco(cBanco,cAgência,cConta,dData,nMoeda) SldPagar(dDataBase,1,.T.)
Parâmetros
cBanco – Código do Banco SldReceber
cAgência – Agência Bancária Tipo: Processamento
cConta – Conta Bancária Retorna o saldo a receber em uma data.
dData – Data do Saldo Sintaxe
nMoeda – Moeda do Saldo Bancário SldReceber(dData,nMoeda,lData)
Exemplo Parâmetros
SldBco(“409”,”00198”,”011122”, dDataBase,1) dData – Data do Movimento a Receber.
nMoeda – Moeda - default 1
SldCliente lData – .T. - até a Data; .F. - somente Data (o padrão é .T.)
Tipo: Processamento Exemplo
Retorna o saldo a receber do cliente em uma determinada data. SldReceber(Data,1,.T.)
Sintaxe
SldCliente(cCliente,dData,nMoeda,lSaldo) SomaContas
Parâmetros Tipo: Processamento
cCliente – Código do Cliente+Loja Retorna o saldo acumulado de um grupo de contas, de acordo com a sintaxe
dData – Data do Movimento a Receber (padrão é dDataBase) apresentada. Esta função considera somente contas de classe “A” – analítica
nMoeda – Moeda Sintaxe
lSaldo – Se .T. considera o saldo do SE5 (padrão é .T.) SomaContas(cLista,nMês,nMoeda)
Exemplo
SldCliente(“00000101”,dDataBase)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

31
Parâmetros Parâmetros
cLista – Lista de contas, cercada por aspas (“”). cConta1 – Código da conta De
O separador “:” (dois pontos) informa intervalo de contas De-Até. cConta2 – Código da conta Até
O separador “ ,” (vírgula) informa separação de contas. nPeríodo – Referente ao período
nMês – Mês (default mês da database) nMoeda – Moeda desejada para obtenção do valor
nMoeda – Moeda (default 1) Exemplo
Exemplo SomaSaldo(“31001”,“31010”,12,1)
SomaContas(“11101001”,3,1)
Devolve o saldo da conta em questão no mês 3 na moeda 1. SumMovimCC
Tipo: Processamento
SomaMovim Retorna o movimento de um intervalo de centro de custos extracontábeis. Poderá
Tipo: Processamento ser`parametrizados também um grupo de contas.
Retorna o movimento dentro de um intervalo de contas analíticas. Sintaxe
Sintaxe SumMovimCC(cCC1,cCC2,cConta1,cConta2,nMês,nMoeda)
SomaMovim(cConta1, cConta2, nMês, nMoeda) Parâmetros
Parâmetros cCC1 – do Centro de Custo
cConta1 – Código da conta De cCC2 – até Centro de Custo
cConta2 – Código da conta Até cConta1 – da Conta
nMês – Referente ao mês cConta2 – até a Conta
nMoeda – Moeda desejada para obtenção do valor nMês – Mês (default mês da database)
Exemplo nMoeda – Moeda (default 1)
SomaMovim(“41304”,“41305”,12,1)
Exemplo
SumMovimCC( “3001”,“3100“,“31001”,“31010”,12,1)
Somar
Tipo: Processamento Tabela
Faz o somatório de um arquivo, retornando o valor acumulado de um campo Tipo: Processamento
determinado. Devolve o conteúdo da tabela de acordo com a chave. Esta função é usada para
Sintaxe a obtencao do conteúdo de uma determinada tabela, na chave especificada.
Somar(cAlias, cCond, cCampo) Retorna o conteudo, possibilitando inclusive a exibição de um “help” caso a tabela
Parâmetros não exista.
cAlias – Alias do arquivo Sintaxe
cCond – Condição para soma Tabela(cTab,cChav,lPrint)
cCampo – Campo a ser somado Parâmetros
Exemplo cTab – Número da tabela a pesquisar (deve ser informado como
Somar(“SI1”",“I1_CLASSE='S' ”,“I1_SALANT”)
caracter).
Caso o usuário não deseje definir nenhuma condição, a ExpC2 deve ser “.T.”. cChav – Chave a pesquisar na tabela informada.
lPrint – Indica se deve (.T.) ou não (.F.) exibir o help ou a chave NOTAB
SomaSaldo se a tabela não existir.
Tipo: Processamento Retorna
Retorna o saldo atual entre um intervalo de contas. cRet – Conteúdo da tabela na chave especificada. Retorna nulo caso a
Sintaxe tabela não exista ou a chave não seja encontrada.
SomaSaldo(cConta1, cConta2, nPeríodo, nMoeda)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

32
Exemplo Texto
// Exemplo de uso da funcao tabela: Tipo: Processamento
// Suponha a existencia da tabela 99 (tabela de
// vendedor x Comissao): Não permite a digitação seguida de mais de um espaço em branco, em campo do
// Chave Conteudo tipo Caracter.
// ————————————————————— Sintaxe
// V0 10 Texto(ExpC)
// V1 2.20
// V3 5 Parâmetros
// Pode-se fazer um gatilho que, quando da informacao do ExpC1 – Expressão a ser verificada
// codigo do vendedor no cadastro, sugira o percentual Exemplo
// da tabela acima, de acordo com as duas primeiras po- Texto()
// sicoes do codigo digitado:
//Gatilho-Dominio : A3_COD
// Cta. Dominio: A3_COMIS @ ...TO
// Regra : Val(Tabela(“99”,Left(M->A3_COD,2))) Tipo: Tela
Desenha um box 3d.
TamSX3 Sintaxe
Tipo: Processamento @ nLInha1,nColuna1 TO nLinha2,nColuna2 <TITLE> cTítulo
Retorna o tamanho de um campo no SX3 (dicionário de dados). Parâmetros
Sintaxe nLinha1 – Número da linha superior
TamSx3(cCampo) nColuna1 – Número da coluna superior
Parâmetros nLinha2 – Número da linha inferior
cCampo – Nome do campo. nColuna2 – Número da coluna inferior
Retorna cTítulo – Titulo apresentado na linha superior (opcional)
aTam – Array com o tamanho e decimais do campo. Comentários
Exemplo A cláusula TITLE é opcional. Se for omitida, o box não terá título.
// Exemplo de uso da funcao TAMSX3 Exemplo
// Array auxiliar: @ 000, 000 TO 430, 500 DIALOG oDlg TITLE “Interpretador xBase for Windows”
aCampos := { {“B1_COD” ,”C”},; @ 060, 005 TO 185, 245 TITLE ‘Exemplos’
{“B1_DESC”,”C”},; @ 070, 010 BUTTON “_Objetos B sicos” SIZE 70,20 ACTION Execute(BasicObj)
{“B1_QE” ,”N”},; @ 070, 090 BUTTON “_Browses” SIZE 70,20 ACTION Execute(Browse)
{“B1_PRV1”,”N”} } @ 130, 170 BUTTON “Dlg c/Refresh “ SIZE 70,20 ACTION Execute(DlgDinam)
// Cria arquivo de trabalho com o tamanho dos campos @ 160, 090 BUTTON “SQL” SIZE 70,20 ACTION Execute(SqlDemo)
// exatamente como na base de dados, evitando erros de ] @ 192,218 BMPBUTTON TYPE 1 ACTION Close(oDlg)
// “Data Width Error”: ACTIVATE DIALOG oDlg CENTERED
i := 0
aStru := {}
For i:=1 To Len(aCampos) TM
cCpo := aCampos[i,1] Tipo: Processamento
cTp := aCampos[i,2] Devolve a Picture de impressão de campos numéricos dependendo do espaço
aTam := TamSx3(cCpo)
disponível.
aAdd(aStru,{cCpo,cTp,aTam[1],aTam[2])
Next i Sintaxe
cArq := CriaTrab(aStru,.T.) TM(nValor, nEdição, nDec)
// O programa continua. . . Parâmetros
Return
nValor – Valor a ser editado
nEdição – Espaço disponível para edição
nDec – Número de casas decimais

GUIA DE REFERÊNCIA RÁPIDA AdvPL

33
Retorna Comentários
ExpC1 – Picture ideal para edição do valor nValor. Retorna .T. se ExpC1 estiver vazio.
Comentários Exemplo
Esta rotina leva em consideração duas variáveis: @ 9,10 Get cCodigo Valid !Vazio(cCodigo)
MV_MILHAR – Determina se deve haver separação de milhar;
MV_CENT – Número de casas decimais padrão da moeda corrente. X3Picture
Para ajustar o valor passado (ExpN1) ao espaço disponível (ExpN2) o programa Tipo: Processamento
verifica se pode haver separação de milhar, neste caso, a rotina eliminará tantos Devolve a Picture do campo de acordo com o dicionário de dados.
pontos decimais quantos sejam necessários ao ajuste do tamanho. Caso não seja Sintaxe
possível ajustar o valor ao espaço dado, será colocado na picture o caracter de X3Picture(cCampo)
estouro de campo «. O programa também ajusta um valor ao número de decimais Parâmetros
(ExpN3), sempre imprimindo a quantidade de decimais passados no parâmetro. cCampo – Nome do campo a verificar a picture.
Retorna
Exemplo ExpC1 – Picture do campo no dicionário de dados.
Cabec(Título,Cabec1,Cabec2,NomeProg,Tamanho,nTipo) Comentários
Endif Função geralmente usada para atribuir aos relatórios a efetiva picture de
li:=li+1
nSalAnt := nSaldoAtu-nCompras-nRecProd-nRecCons campos numéricos em relatórios.
@li,00 Say cTipAnt Exemplo
@li,05 Say nSalAnt Picture TM(nSalAnt, 14) :
@li,23 Say nCompras Picture TM(nCompras, 17, 3) cRel:=SetPrint(cAlias, cPrograma , , @cTitulo, cDesc1, cDesc2, cDesc3 ,
Se o conteúdo do campo nSalAnt for: 3.423.659.234,48 o valor será impresso .T., aOrd )
SetDefault(aReturn, cString)
como: 3423659.234,48 :
While !EOF()
Variação nLinha:=nLinha+1
@nLinha, 1 Say SB2->B2_QATU Picture X3Picture(“B2_QATU”)
Tipo: Processamento
Retorna a variação em percentual entre dois valores. :
Sintaxe
Variação(nFator1,nFator2) XFilial
Parâmetros Tipo: Processamento
nFator1 – Primeiro fator comparativo Retorna a filial utilizada por determinado arquivo. Esta função é utilizada para
nFator2 – Segundo fator comparativo permitir que pesquisas e consultas em arquivos trabalhem somente com os dados
Exemplo da filial corrente, dependendo é claro se o arquivo está compartilhado ou não
Variacao(100000,50000) (definição que é feita através do Módulo Configurador). É importante verificar que
esta função não tem por objetivo retornar apenas a filial corrente, mas retorná-la
Vazio caso o arquivo seja exclusivo. Se o arquivo estiver compartilhado, a função xFilial
Tipo: Processamento retornará dois espaços em branco.
Verifica se o campo está vazio. Sintaxe
Sintaxe xFilial(cAlias)
Vazio(cCampo) Parâmetros
Parâmetros cAlias – Alias do arquivo desejado. Se não for especificado, o arquivo
cCampo – Campo a verificar tratado será o da área corrente.
Retorna Retorna
ExpL1 – Valor Lógico de Retorno (.T. ou .F.) cFilArq – Retorna a Filial para o arquivo desejado.

GUIA DE REFERÊNCIA RÁPIDA AdvPL

34
Exemplo X
// 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
Microsiga
// imprimira “ “.
// Usando em processamentos (Pesquisa e processa
// enquanto for a mesma filial):
dbSeek(xFilial()+mv_par01)
While !EOF() .And. xFilial() == SB1->B1_FILIAL
... Processamento Y Sentido do movimento
Enddo
de impressão
Return

XMoeda
Tipo: Processamento
Visualização do posicionamento da imagem na etiqueta no padrão Allegro:
Rotina para conversão de valores entre moedas.
Sintaxe
xMoeda(nVMo,nMo,nMd,dData,nDec)
Parâmetros
Y
nVMo – Valor na moeda origem.
nMo – Número da moeda origem.
nMd – Número da moeda destino.
dData – Data para conversão.
nDec – Número de decimais. Se não informado, assume-se 2 casas deci-
mais. Microsiga
Retorna
X
nVMoeda – Retorna o Valor na moeda de destino.
Exemplo
// Exemplo de uso da funcao xMoeda: Sentido do movimento
nVal := SE1->E1_VALOR // Valor na moeda 1 de impressão
nVM3 := 0 // Contera o valor na moeda 3
nVM3 := xMoeda(nVal,1,3,dDataBase)
Return

Nota:
Parâmetros que estiverem entre [], significa que não são OBRIGATÓRIOS, os
Funções para impressão de etiquetas padrão parâmetros que estiverem com (*), significa que são ignorados no padrão Allegro
ZPL,ALLEGRO e ELTRON e Eltron.

Visualização do posicionamento da imagem na etiqueta no padrão Zebra


(ZPL,EPL): MSCBPrinter
(OBS: Alguns modelos de impressoras ELTRON, possuem o alinhamento da folha
Tipo: Impressão
de etiqueta centralizado, por isso deve-se considerar o ponto de impressão da
posição+a margem)

GUIA DE REFERÊNCIA RÁPIDA AdvPL

35
Configura modelo da impressora, saída utilizada, resolução na impressão
e tamanho da etiqueta a ser impresso.
MSCBBegin
Parâmetros Tipo: Impressão
[ModelPrt] = String com o modelo de impressora: Inicializa a montagem da imagem para cada etiqueta
Zebra: S400, S600, S500-6, Z105S-6, Z16S-6, S300, S500-8,
Z105S-8, Z160S-8, Z140XI, Z90XI e Z170ZI. Parâmetros
Allegro: [nQtde] = Quantidade de cópias
ALLEGRO, PRODIGY, DMX e DESTINY. [nVeloc] = Velocidade (1,2,3,4,5,6) polegadas por segundo
Eltron: [nTamanho]= Tamanho da etiqueta em Milímetros.
ELTRON E ARGOX
cPorta = String com a porta
[nDensidade] = Numero com a densidade referente a quantidade de pixel por Exemplo:
mm MSCBBEGIN(3,4,40)
[nTamanho] = Tamanho da etiqueta em Milímetros.
[lSrv] = Se .t. imprime no server,.f. no client MSCBEnd
[nPorta] = numero da porta de outro server Tipo: Impressão
[cServer] = endereço IP de outro server Finaliza a montagem da imagem
[cEnv] = environment do outro server
[nMemoria] = Numero com bloco de memória Exemplo
MSCBEND()

Observações: MSCBSay
O parâmetro nDensidade não é necessário informar, pois ModelPrt o Tipo: Impressão
atualizará automaticamente. A utilização deste parâmetro (nDensidade) deverá Imprime uma String
ser quando não souber o modelo da impressora, a aplicação entendera que se
trata de uma impressora Zebra. Parâmetros
O tamanho da etiqueta será necessário quando a mesma não for nXmm = Posição X em Milímetros
continua. nYmm = Posição Y em Milímetros
cTexto = String a ser impressa
Exemplo cRotação = String com o tipo de Rotação (N,R,I,B)
MSCBPRINTER("S500-8", "COM2:9600,e,7,2",NIL, 42) N-Normal
MSCBPRINTER("S500-8", "LPT1",NIL, 42) R-Cima p/baixo
MSCBPRINTER("S600","COM1:9600,N,8,2",NIL,NIL,.T.,1024,"SERVER- I-Invertido
AP","ENVCODEBASEPORT609") B-Baixo p/ Cima
MSCBPRINTER("S600", "LPT1",NIL, 42,.F.,NIL,NIL,NIL,10240) 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
MSCBClosePrinter Eltron: (0,1,2,3,4,5)
Tipo: Impressão cTam = String com o tamanho da Fonte
*[lReverso]= Imprime em reverso quando tiver sobre um box preto
Finaliza a conexão com a impressora [lSerial] = Serializa o código
[cIncr] = Incrementa quando for serial positivo ou negativo
Exemplo *[lZerosL] = Coloca zeros a esquerda no numero serial
MSCBClosePrinter()
GUIA DE REFERÊNCIA RÁPIDA AdvPL

36
[nLargura] = Largura da barra mais fina em pontos default 3
[nRelacao] = Relação entre as barras finas e grossas em pontos default 2
Exemplo [lCompacta] = Compacta o código de barra
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010",.t.) [lSerial] = Serializa o código
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010",.t.,.t.,"3",.t.) [cIncr] = Incrementa quando for serial positivo ou negativo
*[lZerosL] = Coloca zeros a esquerda no numero serial
MSCBSayBar
Tipo: Impressão
Imprime Código de Barras Exemplo
Parâmetros MSCBSAYBAR(20,22,AllTrim(SB1->B1_CODBAR),"N","C",13)
nXmm = Posição X em Milímetros *MSCBSayMemo
nYmm = Posição Y em Milímetros Tipo: Impressão
cConteudo = String a ser impressa Monta e imprime um campo MEMO
cRotação = String com o tipo de Rotação
cTypePrt = String com o Modelo de Código de Barras Parâmetros
Zebra: nXmm = Posição X em Milímetros
2 - Interleaved 2 of 5 nYmm = Posição Y em Milímetros
3 - Code 39 nLMemomm = Tamanho da 1 linha do campo memo em Milímetros
8 - EAN 8 nQLinhas = Quantidade de linhas
E - EAN 13 cTexto = String a ser impressa
U - UPC A cRotação = String com o tipo de Rotação (N,R,I,B)
9 - UPC E cFonte = String com o tipo de Fonte (A,B,C,D,E,F,G,H,0)
C - CODE 128 cTam = String com o tamanho da Fonte
Allegro: [lReverso]= lógica se imprime em reverso quando tiver
D - Interleaved 2 of 5 sobre um box preto
A - Code 39 [cAlign] = String com o tipo de Alinhamento do memo
G - EAN 8 L - Esquerda
F - EAN 13 R - Direita
B - UPC A C - Centro
C - UPC E J - Margem a margem (justificado)
E - CODE 128 Exemplo
Eltron: MSCBSAYMEMO (1,10,8,4,cTexto,"N","A","9,5",.f.,"C")
2 - Interleaved 2 of 5
3 - Code 39 MSCBBox
E80 - EAN 8 Tipo: Impressão
E30 - EAN 13 Imprime um Box
UA0 - UPC A
UE0 - UPC E Parâmetros
1 - CODE 128 nX1mm = Posição X1 em Milímetros
nY1mm = Posição Y1 em Milímetros
[nAltura] = Altura do código de Barras em Milímetros nX2mm = Posição X2 em Milímetros
*[ lDigver] = Imprime dígito de verificação nY2mm = Posição Y2 em Milímetros
[lLinha] = Imprime a linha de código [nEspessura]= Numero com a espessura em pixel
*[lLinBaixo]= Imprime a linha de código acima das barras *[cCor] = String com a Cor Branca ou Preta ("W" ou "B")
[cSubSetIni]= Utilizado no code128
GUIA DE REFERÊNCIA RÁPIDA AdvPL

37
Parâmetros
Exemplo cImagem = nome do arquivo que será carregado
MSCBBOX(12,01,31,10,37)
Exemplo
MSCBLineH MSCBLOADGRF("LOGO.GRF")
Tipo: Impressão
Imprime uma linha horizontal MSCBGrafic
Tipo: Impressão
Parâmetros Imprime gráfico que está armazenado na memória da impressora
nX1mm = Posição X1 em Milímetros
nY1mm = Posição Y1 em Milímetros Parâmetros
nX2mm = Posição X2 em Milímetros nXmm = Posição X em Milímetros
[nEspessura]= Numero com a espessura em pixel nYmm = Posição Y em Milímetros
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B") cArquivo = Nome do gráfico que foi carregado na memória da impressora
(não colocar a extensão .GRF)
Exemplo *[lReverso]= Imprime em reverso quando tiver sobre um box preto
MSCBLineH(01,10,80,3,"B") Exemplo
MSCBGRAFIC(3,3,"LOGO",.t.)

MSCBLineV MSCBChkStatus
Tipo: Impressão Tipo: Impressão
Imprime uma linha vertical Seta ou visualiza o controle de status do sistema com a impressora.

Parâmetros Parâmetros
nX1mm = Posição X1 em Milímetros [lStatus] = Lógica ativa/desativa o controle
nY1mm = Posição Y1 em Milímetros
nY2mm = Posição X2 em Milímetros Retorno
[nEspessura] = Numero com a espessura em pixel Retorna o Status
*[cCor] = String com a Cor Branca ou Preta ("W" ou "B")
Com o status ativado, sempre que a aplicação enviar qualquer informação
Exemplo para a impressora, será analisado o status, caso esteja com o buffer cheio, sem
MSCBLineV(01,10,80,3,"B") papel ou sem ribbon, o sistema aguardara até que os itens anteriores estejam
solucionados.
MSCBLoadGrf
Tipo: Impressão Exemplo
Carrega uma imagem para memória da impressora MSCBCHKSTATUS(.f.) // desativa a verificação

Observações
MSCBWrite
Para o padrão Zebra, arquivo do gráfico tem que ser do tipo GRF, gerado Tipo: Impressão
através de um PCX ou TIF no software fornecido pelo fabricante da zebra. Permite enviar para porta uma linha de programação nativa da
Para o padrão Allegro e Eltron, arquivo do gráfico pode ser do tipo BMP, Impressora.
PCX e IMG. Não precisa ser convertido.
Parâmetros
GUIA DE REFERÊNCIA RÁPIDA AdvPL

38
cConteudo = Linha de programação nativa da impressora. MSCBSAY(35,5,SB1->B1_COD,"N","E","28,15")
Exemplo MSCBSAY(4,12,"Descricao","N","B","11,7")
MSCBWRITE("^FO1,1^GB400,50,25^FS") MSCBSAY(4,16,SB1->B1_DESC,"N","F","26,13")
MSCBLINEH(01,20,80)
MSCBSAYBAR(20,22,AllTrim(SB1->B1_CODBAR),"N","C",13,.f.,.t.,,,3,2,.t.)
Tipos de Fontes para Zebra: //monta código de barras
As fontes A,B,C,D,E,F,G,H, são do tipo BITMAPPEDs, tem tamanhos MSCBEND() //Fim da Imagem da Etiqueta
definidos e podem ser expandidas proporcionalmente as dimensões mínimas. MSCBCLOSPRINTER()
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 memória da .
impressora, portanto torna-se um processamento lento. .
.

Tipos de fontes para Allegro: Utilizando as funções: Exemplo padrão Allegro.


As fontes 0,1,2,3,4,5,6,7,8, são do tipo BITMAPPEDs, tem tamanho .
definido e podem ser expandidos. .
Exemplo: Fonte do tipo 1, 1X1 ou 1x2 ou 1x3 ou 2x1 ou 2x2… .
MSCBPRINTER("ALLEGRO","COM2:9600,N,8,2",,45)
A fonte 9 (Nove) é do tipo ESCALAR, esta será gerada na memória da MSCBLOADGRF("d:\ver207\teste.bmp")
impressora, portanto torna-se um processamento lento, as dimensões deste tipo MSCBBEGIN (2,3)
de fonte tem que ser passando junto com o tamanho da fonte. MSCBBOX(01,01,75,41,2)
Exemplo. cTam := “001,001,002” MSCBGRAFIC(3,33,"teste")
\_____/ \_/ MSCBLineH(14,31.7,31,35)
| | MSCBSAY(16,36," MICROSIGA","N","1","001,002")
| | dimensão da fonte que pode ser de 0 à 9 MSCBSAY(16,33.5,"SOFTWARE S/A","N","1","001,002")
| tamanho da fonte MSCBLineH(1.6,31,74.4)
MSCBSAY(35,38,"Codigo Interno","N","9","001,001,001")
Utilizando as funções: Exemplo padrão Zebra. MSCBSAY(35,35, SB1->B1_COD,"N","2","001,001")
. MSCBSAY(3,28,"Descricao","N","9","001,001,001")
. MSCBSAY(3,22,SB1->B1_DESC,"N","2","001,001")
. MSCBLineH(1.6,20,74.4)
MSCBSAYBAR(15,05,AllTrim(SB1->B1_CODBAR),;
MSCBPRINTER("S500-8","COM2:9600,e,7,2",,42) //Seta tipo de impressora "N","E",11,,.T.,,,3,2,.f.,.t.,"03",)
padrao ZPL MSCBEND()
MSCBLOADGRF("LOGO.GRF") //Carrega o logotipo para impressora MSCBCLOSPRINTER()
MSCBBEGIN(2,4) //Inicio da Imagem da Etiqueta
//com 2 copias e velocidade 4 etiquetas por polegadas .
MSCBBOX(01,01,80,40) //Monta BOX .
MSCBBOX(12,01,31.5,10,37) .
MSCBGRAFIC(2.3,2.5,"LOGO") //Posiciona o logotio
MSCBSAY(15,3,"MICROSIGA ","N","C","018,010") //Imprime Texto
MSCBSAY(13,6.5,"SOFTWARE S/A","N","C","018,010")
MSCBLineH(01,10,80) //Monta Linha Horizontal
MSCBSAY(35,2,"Código Interno","N","B","11,7")

GUIA DE REFERÊNCIA RÁPIDA AdvPL

39
Utilizando as funções: Exemplo padrão Eltron.
Exemplo
. nQtd :=15.45
. cDesc := "Teste descricao"
. //
MSCBPRINTER("ELTRON","COM2:9600,N,8,2",,) @ 1, 1 VTSAY nQtd PICTURE "@9999.99"
MSCBLOADGRF("d:\ver207\teste.bmp") @ 2, 1 VTSAY “Teste VTG100”
MSCBBEGIN (2,3) @ 4, 1 VTSAY cDesc PICTURE "@!"
MSCBBOX(01,01,75,41,2)
MSCBGRAFIC(3,33,"teste")
MSCBLineH(14,31.7,31,35) VTClear Screen
MSCBSAY(16,36," MICROSIGA","N","1","1,2") Tipo: TELNET VT100
MSCBSAY(16,33.5,"SOFTWARE S/A","N","1","1,2") Apaga a tela e coloca o cursor na posição inicial
MSCBLineH(1.6,31,74.4)
MSCBSAY(35,38,"Codigo Interno","N","9","1,1") Sintaxe
MSCBSAY(35,35, SB1->B1_COD,"N","2","1,1") VTCLEAR [SCREEN]
MSCBSAY(3,28,"Descricao","N","9","1,1")
MSCBSAY(3,22,SB1->B1_DESC,"N","2","1,1") @...VTGet
MSCBLineH(1.6,20,74.4) Tipo: TELNET VT100
MSCBSAYBAR (15,05,AllTrim(SB1->B1_CODBAR),"N","1",11,,.T.,,,3,2,.f.,.t.,,) Cria um novo objeto VTGET e o coloca em exibição na tela
MSCBEND()
MSCBCLOSPRINTER() Sintaxe
@ <nLin>, <nCol>
. [VTSAY <exp>
. [PICTURE <cSayPicture>]]
. VTGET <idVar>
[PICTURE <cGetPicture>]
[WHEN <lPreCondicao>]
COMANDOS PARA TELNET VT100. [VALID <lPosCondicao>]
[PASSWORD]
[F3<tabela>]
@...VTSay
Tipo: TELNET VT100 Parâmetros
Exibe dados em uma linha e coluna especificadas <nLin> e <nCol> São as coordenadas de linha e coluna para a operação. Se a
clausula VTSAY está presente, especificam as coordenadas para o VTSAY, e o
Sintaxe VTGET ‚ exibido a direita deste.
@ <nLin>, <nCol>
[VTSAY <exp> [PICTURE <cSayPicture>]] VTSAY exibe o valor de <exp> nas coordenadas especificadas. Caso a
PICTURE <cSayPicture> seja especificada.
Parâmetros VTGET <idVar> define o nome da variável de qualquer tipo de dados a ser
<nLin> e <nCol> são as coordenadas de linha e coluna da sa¡da. editada. Ela pode ser caractere, data ou numérica .
Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale PICTURE <cGetPicture> especifica uma mascara para exibição e as regras
para as colunas. para edição do VTGET.
VTSAY <exp> exibe o resultado de uma expressão de qualquer tipo. WHEN <lPreCondicao> especifica uma expressão que deve ser satisfeita
PICTURE <cSayPicture> define a mascara para a saída de exp.
GUIA DE REFERÊNCIA RÁPIDA AdvPL

40
antes do cursor entrar na região de edição de VTGET. Se <lCondicao> ‚ avaliada VALID respectivo, caso tenha sido
como verdadeira (.T.), ‚ permitido ao cursor entrar; de outra forma, o VTGET especificada.
corrente ‚ saltado e o cursor move-se para o próximo VTGET.

VALID <lPosCondicao> especifica uma expressão que deve ser satisfeita O exemplo abaixo define vários VTGETs e a seguir usa o comando
antes que o cursor possa deixar a região de edição do VTGET corrente. O READ:
VALID<lPosCondicao> ‚ avaliado sempre que o usuário tenta deixar a região de
edição do VTGET, a menos que a tecla Esc seja pressionada . Se #include ‘vt100.ch’
<lPosCondicao> retorna falso (.F.), o controle retorna ao VTGET e o usuário cVar1 := cVar2 := cVar3 := SPACE(10)
não pode deixa -lo até que <lPosCondicao> retorne verdadeiro (.T.) ou o @ 1, 1 SAY "Um :" VTGET cVar1 VALID !EMPTY(cVar1)
usuário aperte Esc. Um VALID <lPosCondicao> pode conter ou ser uma @ 2, 1 SAY "Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
função definida pelo usuário, permitindo-lhe executar buscas e outros tipos de @ 3, 1 SAY "Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
operações de validação. VTREAD
PASSWORD Monta o VTGET para entrada de dados com * na tela, utilizado
para SENHAS VTSave Screen
F3 Associa este VTGET a uma tabela do SXB ou Sx5. Tipo: TELNET VT100
Grava a tela corrente numa variável
Descrição
Quando um comando VTREAD ‚ especificado, um VTGET executa uma edição Sintaxe
do conteúdo de <idVar> de qualquer tipo de dado. Quando um objeto VTGET VTSAVE SCREEN TO <idVar>
‚ criado, o nome e valor corrente de <idVar> são guardados no objeto VTGET. O
valor de <idVar> fica armazenado no que‚ chamado de buffer do VTGET. O Parâmetros
buffer de VTGET ‚ o que ‚ realmente mostrado na tela e editado. TO <idVar> especifica a variável que serão atribuídos os conteúdos da tela
corrente.
Exemplo
#include ‘vt100.ch’ Exemplo
nNumber = 0
@ 0, 0 VTSAY "Digite um numero”; #include ‘vt100.ch’
VTGET nNumber; VTSave Screen To aTela
VALID nNumber > 0 cVar1 := cVar2 := cVar3 := SPACE(10)
VTRead @ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
Tipo: TELNET VT100 @ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
Ativa edição em tela usando objetos GET @ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD
Sintaxe VTRestore Screen From aTela
VTREAD

Descrição VTRestore Screen


O comando READ executa um módulo de edição em tela usando todos os Tipo: TELNET VT100
objetos VTGET criados e adicionados. Exibe uma tela guardada

Dentro de um READ, o usuário pode editar o buffer de cada objeto VTGET Sintaxe
bem como mover-se de um objeto GET para outro. Antes que o usuário possa
entrar com um objeto VTGET, o controle passa para o respectivo WHEN. VTRESTORE SCREEN [FROM <aTela>]
Quando o usuário pressiona uma tecla de saída de VTGET, o controle passa
GUIA DE REFERÊNCIA RÁPIDA AdvPL

41
#include ‘vt100.ch’
Parâmetros @ 7, 1 VTPause “Tecle ENTER p/ Continuar”
FROM <aTela> especifica uma variável que contem o conteúdo da tela a ser
exibida. VTSetSize
Tipo: TELNET VT100
Exemplo Seta o limite da área de trabalho.
#include ‘vt100.ch’
VTSave Screen To aTela Sintaxe
cVar1 := cVar2 := cVar3 := SPACE(10) VTSETSIZE <nLin>, <nCol>
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3) Parâmetros
VTREAD <nLin> e <nCol> são as coordenadas máximas de linha e coluna.
VTRestore Screen From aTela

VTPause Exemplo
Tipo: TELNET VT100 #include ‘vt100.ch’
Suspende a execução de um programa até que seja pressionada a tecla ENTER VTSetSize 8,20

Sintaxe VTSet Key


#include ‘vt100.ch’ Tipo: TELNET VT100
VTPAUSE Atribui a chamada de uma rotina a uma tecla

Sintaxe
VTSET KEY <nCodigoTecla> TO [<idRotina>]

Parâmetros
@...VTPause <nCodigoTecla> ‚ o valor VTINKEY() da tecla a qual se atribui a rotina.
Tipo: TELNET VT100 TO <idRotina> especifica o nome da rotina que é executada quando se aperta
Exibe dados em uma linha e coluna especificadas e para a execução de um uma tecla. Se <idRotina> não é especificada, a definição corrente é liberada.
programa até que seja pressionada a tecla ENTER

Sintaxe Exemplo
@ <nLin>, <nCol> Este exemplo demonstra como usar VTSET KEY para invocar uma rotina
[VTPAUSE <exp> [PICTURE <cSayPicture>]] quando o usuário aperta. A tecla ‘A’.

Parâmetros #include ‘vt100.ch’


<nLin> e <nCol> são as coordenadas de linha e coluna da sa¡da. VTSET KEY 65 TO TESTE
Os valores de linha podem variar entre zero e VTMAXROW(). O mesmo vale CCodigo := space(6)
para as colunas. @ 1, 1 VTGET cCodigo
VTPAUSE <exp> exibe o resultado de uma expressão de qualquer tipo. VTREAD
PICTURE <cSayPicture> define a mascara para a saída de exp. RETURN

Exemplo FUNCTION Teste()

GUIA DE REFERÊNCIA RÁPIDA AdvPL

42
@ 2,1 VTSay ‘TESTE’
RETURN NIL VTRestore()
Tipo: TELNET VT100
Exibe uma região de tela gravada em uma localização especificada

Sintaxe
FUNCOES PARA TELNET VT100 RESTSCREEN(<nTopo>, <nEsquerda>,
<nBase>, <nDireita>, <aTela>) --> NIL
VTReadVar() Parâmetros
Tipo: TELNET VT100 <nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as
Retorna o nome da variável VTGET corrente coordenadas da informação de tela contida em <aTela>.
<aTela> ‚ uma variável conteúdo o conteúdo da tela gravada.
Sintaxe
VTREADVAR() --> cNomeVar Retorna
RESTSCREEN() sempre retorna NIL.
Retorna
VTREADVAR() retorna o nome da variável associada ao objeto VTGET
corrente. Exemplo
#include ‘vt100.ch’
VTSave() aTela := VTSave(0,0,4,10)
Tipo: TELNET VT100 cVar1 := cVar2 := cVar3 := SPACE(10)
Grava uma região de tela para posterior exibição @ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1)
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um"
Sintaxe @ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTSAVE (<nTopo>, <nEsquerda>, <nBase>, <nDireita>) --> cTela VTREAD
VTRestore(0,0,4,10,aTela)
Parâmetros
<nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as VTScroll()
coordenadas da região de tela a ser gravada. Caso <nBase> ou Tipo: TELNET VT100
<nDireita> seja maior do que VTMAXROW() ou VTMAXCOL(), a tela é cortada. Rola uma região de tela para cima ou para baixo
Retorna Sintaxe
VTSAVE () retorna a região de tela especificada na forma de uma
cadeia de caracteres. VTSCROLL(<nTopo>, <nEsquerda>,
<nBase>, <nDireita>, <nLinhas>) --> NIL
Exemplo
#include ‘vt100.ch’ Parâmetros
aTela := VTSave(0,0,4,10) <nTopo>, <nEsquerda>, <nBase>, e <nDireita> definem as coordenadas da
cVar1 := cVar2 := cVar3 := SPACE(10) regiao a ser rolada. Valores de linha e coluna podem variar entre 0, 0 e
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1) VTMAXROW(), VTMAXCOL().
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um" <nLinhas> define a quantidade de linhas a serem roladas. Um valor maior do
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3) que zero rola para cima a quantidade especificada de linhas.
VTREAD
VTRestore(0,0,4,10,aTela)
GUIA DE REFERÊNCIA RÁPIDA AdvPL

43
Um valor menor do que zero rola para baixo a quantidade especificada de Atribui um bloco de ação a uma tecla
linhas. Um valor de zero apaga a rea especificada.
Sintaxe
Retorna VTSETKEY(<nCodInkey>, [<bA‡ao>]) --> bAcaoCorrente
VTSCROLL() sempre retorna NIL.
Parâmetros
Exemplo <nCodInkey> ‚ o valor INKEY() da tecla a ser associada ou questionada.
VTSCROLL(0,0, VTMAXROW(),VTMAXCOL,1) <bAcao> especifica o bloco de código a ser automaticamente executado
sempre que a tecla especificada for pressionada durante um estado de espera.
VTLastKey()
Tipo: TELNET VT100 Retorna
Retorna o valor VTINKEY() da última tecla extraída do buffer de teclado VTSETKEY() retorna o bloco de ação correntemente associado a tecla
especificada, ou NIL caso a tecla especificada nao esteja associada a um bloco.
Sintaxe
VTLASTKEY() --> nCodInkey Exemplo
#include ‘vt100.ch’
Retorna bKeyAnt := VTSetKey(65,{|| teste()})
VTLASTKEY() retorna um n£mero de -39 a 386 que identifica o valor CCodigo := space(6)
VTINKEY() da última tecla extraída do buffer de teclado. @ 1, 1 VTGET cCodigo
VTREAD
Descrição VTSetKey(65,bKeyAnt)
VTLASTKEY() ‚ uma função de tratamento de teclado que informa o valor
VTINKEY() da última tecla capturada do buffer de teclado pela função VTINKEY(), RETURN
ou por um estado de espera como VTREAD, VTPAUSE,
VTACHOICE(),VTABROWSE ou VTDBBROWSE. VTLASTKEY() retorna seu FUNCTION Teste()
valor corrente @ 2,1 VTSay ‘TESTE’
até que outra tecla seja capturada do buffer de teclado. RETURN NIL

Exemplo VTKeyBoard()
#include ‘vt100.ch’ Tipo: TELNET VT100
aTela := VTSave(0,0,4,10) Coloca uma cadeia de caracteres (string) no buffer de teclado
cVar1 := cVar2 := cVar3 := SPACE(10)
@ 1, 1 SAY " Um :" VTGET cVar1 VALID !EMPTY(cVar1) Sintaxe
@ 2, 1 SAY " Dois:" VTGET cVar2 WHEN RTRIM(cVar1) != "Um" VTKEYBOARD(<cCodigoTecla>)
@ 3, 1 SAY " Tres:" VTGET cVar3 VALID !EMPTY(cVar3)
VTREAD Parâmetros
VTRestore(0,0,4,10,aTela) <cCodigoTecla> ‚ o conjunto de caracteres a ser colocado no buffer de
If VTLastKey() == 27 teclado.
Return .f.
Endif Exemplo
#include ‘vt100.ch’
bKeyAnt := VTSetKey(65,{|| teste()})
VTSetKey() CCodigo := space(6)
Tipo: TELNET VT100 @ 1, 1 VTGET cCodigo
VTREAD
GUIA DE REFERÊNCIA RÁPIDA AdvPL

44
VTSetKey(65,bKeyAnt) Extrai um caractere do buffer de teclado

RETURN Sintaxe

FUNCTION Teste() VTINKEY([<nSegundos>]) --> nCodInkey


@ 2,1 VTSay ‘TESTE’
VTKeyBoard(chr(27)) Parâmetros
RETURN NIL <nSegundos> especifica a quantidade de segundos que VTINKEY() deve
esperar por uma tecla. O valor pode ser especificado em incrementos do
VTRow() tamanho de até um décimo de segundo. Se for especificado zero, o programa
Tipo: TELNET VT100 para até‚ que uma tecla seja pressionada. Caso <nSegundos>
Retorna a posição de linha do cursor na tela seja omitido, VTINKEY() não espera por uma tecla.

Sintaxe Retorna
VTROW() --> nLinha VTINKEY() retorna um valor numérico inteiro de -39 at‚ 386, que identifica a
tecla extraída do buffer de teclado. Caso o buffer de teclado esteja vazio,
Retorna VTINKEY() retorna zero.
VTROW() retorna a posição de linha do cursor na forma de um valor numérico
inteiro. A faixa do valor de retorno varia entre zero e VTMAXROW(). Exemplo
While .t.
IF VtInkey(1) == 27 // correspondente a tela ESC
Exemplo exit
@ 0,0 VTSay “Teste” EndIf
@ VTRow()+1 ,0 VTSay “Teste2” End

VTMaxCol()
VTCol() Tipo: TELNET VT100
Tipo: TELNET VT100 Determina a coluna máxima visível na tela
Retorna a posição de coluna do cursor na tela
Sintaxe
Sintaxe VTMAXCOL() --> nColuna
VTCOL() --> nCol
Retorna
Retorna VTMAXCOL() retorna o número da coluna visível mais a direita para fins de
VTCOL() retorna um valor numérico inteiro. A faixa do valor de retorno é de exibição.
zero até VTMAXCOL().
Exemplo
Exemplo @ 1, int(VTMaxCOL()/2) VTSAY “*”
@ 1, 1 VTSAY "Cliente: " + TRIM(Cliente)
@ VTROW(), VTCOL() + 1 VTSAY Status
VTMaxRow()
Tipo: TELNET VT100
VTInkey() Determina a máxima linha visível na tela
Tipo: TELNET VT100

GUIA DE REFERÊNCIA RÁPIDA AdvPL

45
Sintaxe Parâmetros
VTMAXROW() --> nLinha <lRev> Se verdadeiro ativa, falso desativa o modo de tela. Caso <lRev> seja
omitido, VTReverso() retorna o modo atual.
Retorna
VTMAXROW() retorna o número da última linha visível para fins de exibição. Retorna
VTREVERSO() retorna o modo atual, verdadeiro que está em reverso, falso
Descrição não está em reverso.
VTMAXROW() ‚ uma função de tratamento de tela que pode ser utilizada para
determinar a m xima linha visível da tela. N£meros de linha e coluna Exemplo
come‡am com zero em Clipper. #include ‘vt100.ch’

Exemplo lReverso:= VTReverso(.t.)


A seguinte função definida pelo usuário, TamTela(), utiliza VTMAXROW() e @ 0,0 VTSay “Teste 1”
VTMAXCOL() para retornar um vetor que contém o tamanho da tela corrente: VTReverso(lReverso)
@ 1,0 VTSay “Teste 2”
FUNCTION TamTela
RETURN { VTMAXROW(), VTMAXCOL() }
VTClearBuffer()
Tipo: TELNET VT100
VTBeep() Limpa o buffer de teclado
Tipo: TELNET VT100 Sintaxe
Emite um beep
Sintaxe VTCLEARBUFFER() --> NIL
VTBEEP([<nQtde>]) --> NIL
Retorna
Parâmetros
<nQtde> especifica a quantidade de beep que será emitido, Caso <nQtde> VTCLEARBUFFER() retorna NIL
seja omitido, VTBEEP() emitira um beep.
Exemplo
Retorna VTCLEARBUFFER()

VTBEEP() retorna NIL


VTAlert()
Exemplo Tipo: TELNET VT100
Mostra uma messagem na tela
VTBEEP(3) Sintaxe
VTALERT(<cMsg>,[<cCaption>],[<lCenter>],[<nSleep>]) nTecla
VTReverso()
Tipo: TELNET VT100
Ativa ou desativa o modo reverso da tela. Parâmetros
<cMsg> Mensagem a ser exibida.
Sintaxe <cCaption>Titulo da mensagem
VTREVERSO([<lRev>]) --> lReverso <lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize.

GUIA DE REFERÊNCIA RÁPIDA AdvPL

46
<nSleep> > especifica a quantidade de tempo em milésimo de segundos em a Parâmetros
mensagem permanecera na tela, Caso omito, aguardara que seja digitado Enter <nTopo>, <nEsquerda> e <nBase>, <nDireita> são as coordenadas do canto
ou ESC. 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
Retorna VTMAXCOL().

VTALERT () retorna o código da tecla digitada. <acItensMenu> é um vetor que contem as cadeias de caracteres que serão
exibidas como sendo os itens de menu. Cada item de menu será mais tarde
Exemplo identificado através de sua posição numérica neste vetor.

<alItensSelecionaveis> é um vetor paralelo de valores lógicos, diretamente


VTAlert(“Produto não cadastrado”,”Aviso”,.t.,4000) relacionados a <acItensMenu> que especifica os itens de menu que poderão ser
selecionados. Os elementos podem ser valores lógicos ou cadeias de
VTYesNo() caracteres. Caso o elemento seja uma cadeia de caracteres, ele é avaliado
Tipo: TELNET VT100 como uma expressão macro que deverá retornar um tipo de dado lógico. Em
Mostra uma messagem a espera de uma confirmação na tela. ambos os casos, um valor de falso (.F.) significa que o item de menu
correspondente não está disponível, e um valor de verdadeiro (.T.) significa que
Sintaxe está disponível.
VTYESNO (<cMsg>,[<cCaption>],[<lCenter>]) lConfrime
<cFuncaoUsuario> é o nome de uma função definida pelo usuário que é
Parâmetros executada quando uma tecla não reconhecível for pressionada. O nome da
<cMsg> Mensagem a ser exibida. função é especificado como uma expressão caractere sem parênteses ou
<cCaption>Titulo da mensagem argumentos. Note que o comportamento de VTACHOICE() é afetado pela
<lCenter> Se verdadeiro centraliza a mensagem conforme o VTSetSize. presença deste argumento. Consulte o texto abaixo para maiores informações.

Retorna <nItemInicial> é a posição ocupada no vetor de <acItensMenu> pelo item que


VTYESNO () retorna o verdadeiro caso tenha confirmado. aparecer em destaque quando o menu for exibido pela primeira vez. Caso você
especifique um item de menu que não esteja disponível, ou caso você não use
Exemplo argumento algum, o item que aparecer em destaque será o primeiro item
IF ! VTYesNo(‘Confirma a alteracao’,'Atencao ',.T.) selecionável do vetor.
Return .F. <lNaoBranco> Se for verdadeiro a opções do menu será montado conforme o
ENDIF tamanho da opção desconsiderando os espaços em branco à direita e esquerda.
Caso seja negativa ou omitida a opção do menu será montado conforme a
dimensão da tela do VTACHOICE definida em <nEsquerda> e <nDireita>.
VTAchoice()
Tipo: TELNET VT100 <lMsg> Conteúdo tem que ser NIL, parâmetro reservado para implementação
Executa um menu pop-up futura.

Sintaxe <nLinhaJanela> É o número da linha da janela na qual o item de menu inicial


VTACHOICE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>, aparecerá.
<acItensMenu>, [<alItensSelecionaveis>],
[<cFuncaoUsuario>],[<nItemInicial>], [lNaoBranco] , [<lMsg>],
[<nLinhaJanela>],[<lScroll>]) --> nPosicao Retorna

GUIA DE REFERÊNCIA RÁPIDA AdvPL

47
VTACHOICE() retorna a posição numérica ocupada pelo item de menu VtBeep(1)
selecionado no vetor de <acItensMenu>. Se o processo de seleção for return 1
interrompido, VTACHOICE() retorna zero. Endif
EndIf
Return 2
Função de usuário: Da mesma forma que as demais funções de interface
com o usuário, VTACHOICE() aceita uma função de usuário. A função de VTABrowse()
usuário é especificada quando você deseja aninhar invocações da função Tipo: TELNET VT100
VTACHOICE() para criar menus hierárquicos ou redefinir teclas. Monta um browse com referencia a um array.

Modos de VTACHOICE() Sintaxe


0-Inativo VTABROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,
1-Tentativa de passar início da lista <aCab>, [<aItens>], [<aSize>],
2-Tentativa de passar final da lista [<cFuncaoUsuario>],[<nItemInicial>]) --> nPosicao
3-Normal
4-tens não selecionados Parâmetros
<nTopo>, <nEsquerda> e <nBase>, <nDireita> são as
Após a função de usuário ter executado as operações apropriadas ao modo coordenadas do canto superior esquerdo e canto inferior direito da janela.
VTACHOICE(), ela deve retornar um valor que solicite ao VTACHOICE() executar Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna
uma operação entre o seguinte conjunto de ações: podem variar entre zero e VTMAXCOL().

Valores de Retorno da Função de Controle de VTACHOICE() <aCab>, é um vetor que contem os títulos das colunas
0-Aborta seleção <aItens>, é um vetor que contem os dados a serem mostrados
1-Executa seleção <aSize> , é um vetor que contem o tamanho de cada coluna
2-Continua VTACHOICE()
3-Vai para o próximo item cuja primeira letra for a tecla pressionada <cFuncaoUsuario> é o nome de uma função definida pelo usuário que é
executada quando uma tecla não reconhecível for pressionada. O nome da
Exemplo função é especificado como uma expressão caractere sem parênteses ou
acMenuItens := {“Um”,”Dois”, "-----", “Tres”} argumentos. Note que o comportamento de VTABROWSE() é afetado pela
alSelectableItens := {.T., .T., .F., .T.} presença deste argumento. Consulte o texto abaixo para maiores informações.
nPosition := VTACHOICE(0, 0, 7, 19, acMenuItens,
alSelectableItens,”TESTECTRL” ) <nItemInicial> é a posição ocupada no vetor de < aItens > pelo item que
aparecer em destaque quando o menu for exibido pela primeira vez. Caso você
Function testectrl(modo,nElem,nElemW) especifique um item de menu que não esteja disponível, ou caso você não use
If modo == 1 argumento algum, o item que aparecer em destaque será o primeiro item
VtAlert('Top') selecionável do vetor.
Elseif Modo == 2
VtAlert('Bottom') Retorna
Else VTABROWSE() retorna a posição numérica ocupada pelo item de menu
If VTLastkey() == 27 selecionado no vetor de <aItens>. Se o processo de seleção for interrompido,
VtAlert('sair') VTABROWSE() retorna zero.
VTBeep(3)
return 0
elseIf VTLastkey() == 13 Função de usuário: Utilizada da mesma forma que VTACHOICE.
VtAlert('ok')
GUIA DE REFERÊNCIA RÁPIDA AdvPL

48
Modos de VTABROWSE()
0-Inativo Function testectrl(modo,nElem,nElemW)
1-Tentativa de passar início da lista If modo == 1
2-Tentativa de passar final da lista VtAlert('Top')
3-Normal Elseif Modo == 2
4-Itens não selecionados VtAlert('Bottom')
Else
Após a função de usuário ter executado as operações apropriadas ao modo If VTLastkey() == 27
VTABROWSE() ela deve retornar um valor que solicite ao VTABROWSE() VtAlert('sair')
executar uma operaçãao entre o seguinte conjunto de ações: VTBeep(3)
return 0
Valores de Retorno da Função de Controle de VTABROWSE() elseIf VTLastkey() == 13
VtAlert('ok')
0-Aborta seleção VtBeep(1)
1-Executa seleção return 1
2-Continua VTABROWSE() Endif
3-Vai para o próximo item cuja primeira letra for a tecla pressionada EndIf
Return 2

Exemplo VTDBBrowse()
#INCLUDE ‘VT100.CH’ Tipo: TELNET VT100
VTClear Monta um browse com referencia a uma tabela
acab :={"Codigo","Cod ","Descricao ","UM"}
aSize := {10,4,20,10} Sintaxe
nPos := 12 VTDBBROWSE(<nTopo>, <nEsquerda>, <nBase>, <nDireita>,<cAlias>,
aItens :={{"1010 ",10, "DESCRICAO1","UN "},; <aCab>, [<aFields>], [<aSize>], [<cFuncaoUsuario>],[<cTop>],[<cBottom>]) -->
{"2010 ",20,"DESCRICAO2","CX "},; nRecno
{"2020 ",30,"DESCRICAO3","CX "},;
{"2010 ",40,"DESCRICAO4","CX "},; Parâmetros
{"2020 ",50,"DESCRICAO5","CX "},; <nTopo>, <nEsquerda> e <nBase>, <nDireita> são as
{"3010 ",60,"DESCRICAO6","CX "},; coordenadas do canto superior esquerdo e canto inferior direito da janela.
{"3020 ",70,"DESCRICAO7","CX "},; Valores de linha podem variar entre zero e VTMAXROW(), e valores de coluna
{"3030 ",80,"DESCRICAO7","CX "},; podem variar entre zero e VTMAXCOL().
{"3040 ",90,"DESCRICAO7","CX "},;
{"2010 ",40,"DESCRICAO4","CX "},; <cAlias>, é uma string com alias da tabela
{"2020 ",50,"DESCRICAO5","CX "},; <aCab>, é um vetor que contem os títulos das colunas
{"3010 ",60,"DESCRICAO6","CX "},; <aFields>, é um vetor que contem os campos do alias
{"3020 ",70,"DESCRICAO7","CX "},; <aSize> , é um vetor que contem o tamanho de cada coluna
{"3030 ",80,"DESCRICAO7","CX "},;
{"3050 ",100,"DESCRICAO7","CX "}} <cFuncaoUsuario> é o nome de uma função definida pelo usuário que é
npos := VTaBrowse(0,0,7,15,aCab,aItens,aSize,'testectrl',nPos) executada quando uma tecla não reconhecível for pressionada. O nome da
. função é especificado como uma expressão caractere sem parênteses ou
. argumentos. Note que o comportamento de VTDBBROWSE () é afetado pela
. presença deste argumento. Consulte o texto abaixo para maiores informações.
<cTop> string com a condição de validação de top
GUIA DE REFERÊNCIA RÁPIDA AdvPL

49
<cBottom> string com a condição de validação de Bottom
Sintaxe
Retorna TerCls()
VTDBBROWSE () retorna o recno() Se o processo de seleção for interrompido, Retorna
VTDBBROWSE () retorna zero. NIL
Função de usuário: Utilizada da mesma forma que VTACHOICE e Exemplo
VTaBROWSE. TerCls()

Modos de VTDBBROWSE () TerSay()


0-Inativo Tipo: Microterminal
1-Tentativa de passar início da lista Escreve no display do microterminal a string especificada pelo parâmetro
2-Tentativa de passar final da lista <cMsg> na linha <nLin> e coluna <nCol>.
3-Normal
4-Itens não selecionados Sintaxe
TerSay(nLin,nCol,cMsg)
Após a função de usuário ter executado as operações apropriadas ao modo
VTDBBROWSE () ela deve retornar um valor que solicite ao VTDBBROWSE () Parâmetros
executar uma operação entre o seguinte conjunto de ações: nLin = Linha onde se deseja colocar a mensagem
nCol = Coluna onde se deseja colocar a mensagem
Valores de Retorno da Função de Controle de VTDBBROWSE () cMsg = Mensagem que se deseja colocar na tela
0-Aborta seleção
1-Executa seleção Retorna
2-Continua VTDBBROWSE () NIL
3-Vai para o próximo item cuja primeira letra for a tecla pressionada
Exemplo
Exemplo TerSay(01,00,"Pressione <ENTER> para continuar.")
VtClear
aFields := {"B1_COD","B1_DESC","B1_UM","B1_PICM"} TerInkey()
aSize := {16,20,10,15} Tipo: Microterminal
aHeader := {'COD','DESCRICAO ','UM',"% ICM"} Especifica a quantidade de segundos que TerInkey() deve esperar por
uma tecla. O valor pode ser especificado em incrementos de um segundo. Se for
SB1->(DbSeek(xfilial()+'00000000000001')) especificado zero, o programa para ate que uma tecla seja pressionada.
ctop:="xFilial('SB1')+'00000000000001'"
cBottom:="xFilial('SB1')+'00000000000002'" Sintaxe
nRecno TerInkey([nSegundos])

Parâmetros
nSegundos = Numero de segundos a aguardar
FUNCOES PARA MICROTERMINAL.
Retorna
Codigo da Tecla pressionada, se não foi pressionado nada o valor
TerCls() retornado e' ""
Tipo: Microterminal
Apaga todos os caracteres existentes na tela no microterminal Exemplo
preenchendo a tela com espaços em branco.
GUIA DE REFERÊNCIA RÁPIDA AdvPL

50
While !TerEsc() Retorna
cTecla := TerInkey(0) NIL
TerSay(01,00,"Tecla Pressionada "+cTecla)
EndDo Exemplo

TerCBuffer() lDigNome := .T.


Tipo: Microterminal cNome := Space(10)
Libera o buffer de teclado do microterminal, esse comando e' util em cIdade := Space(02)
rotinas de interface com o usuario de forma a garantir que as teclas a serem TerCls()
processadas do buffer do teclado sao apropriadas a atividade corrente e nao TerSay(00,00,"Nome:")
pendentes de uma atividade anterior. TerGetRead(00,06,@cNome,"XXXXXXXXXX",{||!Empty(cNome)},{||lDigNome})
TerGetRead(00,00,cIdade,"99",{||Val(cIdade)>0})
Sintaxe
TerCBuffer() Observações
A variável da entrada de dados deve ser do tipo caracter.
Retorna
Caracteres que estavam pendentes no buffer no teclado do microterminal. TerEsc()
Tipo: Microterminal
Exemplo Verifica se a ultima tecla pressionada no microterminal foi a DEL
TerCBuffer() (consideramos como equivalente a <ESC> no teclado normal).
TerSay(01,00,"Pressione qualquer tecla para continuar.")
TerInkey(0) Sintaxe
TerEsc()
TerGetRead()
Tipo: Microterminal Retorna
Executa uma entrada de dados no microterminal. .T. se a ultima tecla pressionada foi <DEL> ou .F. se não foi

Sintaxe Exemplo
TerGetRead(nLin,nCol,uVar,cPict,[bValid],[bWhen]) TerCls()
Parâmetros While .T.
cNome := Space(10)
nLin - Linha a se executar a entrada de dados. TerSay(00,00,"Nome:")
nCol - Coluna a se executar a entrada de dados. TerGetRead(01,07,@cNome,"XXXXXXXXXX")
uVar - Variavel a se devolver o valor da entrada de dados. If TerEsc()
cPict - Picture da entrada de dados, as pictures disponiveis sao: Exit
"X" - Para entrada de caracteres numéricos(0-9) e letras (A-Z). EndIf
"9" - Para entrada de caracteres numéricos(0-9). EndDo
"A" - Para entrada de caracteres letra(A-Z). TerCls()
"*" - Para entrada de caracteres numéricos(0-9) e letras (A-Z) mas TerSay(01,00,"Finalizando...")
exibindo "*" na tela.
"." - Exibe ponto decimal na tela. TerBeep()
"/" - Exibe a barra ("/") na tela. Tipo: Microterminal
bValid - Code Block contendo a validação da entrada de dados. Emite um sinal sonoro pelo ‘buzzer’ do Microterminal, caso o
bWhen - Code Block contendo a condição para se executar a entrada de dados. microterminal não possua este dispositivo instalado nada acontece.

GUIA DE REFERÊNCIA RÁPIDA AdvPL

51
TerCls()
Sintaxe TerRestore(00,00,01,40,cTela)
TerBeep([nVezes])
TerRestore()
Parâmetros Tipo: Microterminal
nVezes - Numero de sinais sonoros a emitir. Restaura a região de tela do microterminal gravada pela função TerSave.

Retorna Sintaxe
NIL TerRestore([nTopo],[nEsquerda],[nBase],[nDireita],cTela)

Exemplo Parâmetros
TerBeep(3) // executa 3 sinais sonoros nTopo - Linha inicial da região de tela a ser restaurada.
TerBeep() // executa apenas 1 sinal sonoro nEsquerda - Coluna inicial da região de tela a ser restaurada.
nBase - Linha final da região de tela a ser restaurada.
TerNumTer() nDireita - Coluna final da região de tela a ser restaurada.
Tipo: Microterminal cTela - E' uma cadeia de caracteres que contem a região
Retorna o numero do microterminal especificado no Monitor de de tela gravada.
microterminais. Retorna
NIL
Sintaxe Exemplo
TerNumTer() TerCls()
Retorna TerSay(00,00,"Tela a ser salva.")
Numero do microterminal cTela := TerSave(00,00,01,40)
TerCls()
Exemplo TerRestore(00,00,01,40,cTela)
nTerminal := TerNumTer()
TerSay(00,00,"Terminal : "+StrZero(nTerminal)) TerPBegin()
Tipo: Microterminal
TerSave() Executa função para inicio de impressão na porta paralela ou serial do
Tipo: Microterminal microterminal.
Grava uma regiao da tela do microterminal para posterior exibição.
Sintaxe Sintaxe
TerSave([nTopo],[nEsquerda],[nBase],[nDireita]) TerPBegin([nTerm],cSerPar)
Parâmetros Parâmetros
nTopo - Linha inicial da região de tela a ser gravada. nTerm -
nEsquerda - Coluna inicial da região de tela a ser gravada Numero do microterminal a iniciar a impressão, se nada for
nBase - Linha final da região de tela a ser gravada. especificado será considerado o numero definido no Monitor de
nDireita - Coluna final da região de tela a ser gravada. Microterminais.
Retorna cSerPar -
regiao de tela especificada na forma de cadeia de caracteres. Informa qual a saída utilizada para impressão, 'S' para
Exemplo utilizar a saída SERIAL ou 'P' para se utilizar a saída PARALELA.
TerCls()
TerSay(00,00,"Tela a ser salva.") Retorna
cTela := TerSave(00,00,01,40) NIL

GUIA DE REFERÊNCIA RÁPIDA AdvPL

52
Exemplo TerPrint("Testando a impressão na saída SERIAL")
TerPBegin(,"S") TerPEnd()
TerPrint("Testando a impressão na saída SERIAL")
TerPEnd() TerIsQuit()
TerPBegin(,"P") Tipo: Microterminal
TerPrint("Testando a impressão na saída PARALELA") Função utilizada em pontos do programa para se verificar se o Monitor
TerPEnd() esta tentando finalizar a aplicação do microterminal, deve ser utilizada em
lugares do programa em que o fechamento da aplicação cause transtornos,
TerPrint() como por exemplo, apos a conclusão de uma venda.
Tipo: Microterminal
Envia a string especificada para a saída de impressão definida pela Sintaxe
função TerPBegin. TerIsQuit()

Sintaxe Retorna
TerPrint( cString, [lSalta] ) .F.
Parâmetros
cString - Cadeia de caracteres a enviar para a saída de impressão. Exemplo
lSalta - Informe .F. para não saltar a linha na impressora após o envio de cString While .T.
ou .T. para que se salte uma linha apos o envio de cString, se não especificado TerCls()
.T. e' assumido. TerSay(00,00,"Inicando Venda...")
.
Retorna .
NIL .
.
Exemplo .
TerSay(00,00,"Venda Finalizada...")
TerPBegin(,"P") TerIsQuit() // caso o monitor esteja finalizando a aplicação somente
TerPrint("Imprimindo uma linha e saltando para proxima linha") //neste ponto a finalização será efetuada, garantindo
TerPrint("Imprimindo a linha e nao saltando.",.F.) // não salta a linha //assim que a venda seja concluída.
TerPrint("Continuando da linha anterior.") EndDo
TerPEnd()

TerPEnd()
Tipo: Microterminal
Finaliza impressão iniciada pela função TerPBegin.

Sintaxe
TerPEnd()

Retorna
NIL

Exemplo
TerPBegin(,"S")

GUIA DE REFERÊNCIA RÁPIDA AdvPL

53