a linguagem advpl - helpfacil.comhelpfacil.com/forum/anexo/advpl - a linguagem.pdf · a linguagem...

127
A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade uma evolução na utilização de linguagens no padrão xBase pela Microsiga Software S.A. (Clipper, Visual Objects e depois FiveWin). Com a criação da tecnologia Protheus, era necessário criar uma linguagem que suportasse o padrão xBase para a manutenção de todo o código existente do sistema de ERP Siga Advanced. Foi então criada a linguagem chamada Advanced Protheus Language. O AdvPl é uma extensão do padrão xBase de comandos e funções, operadores, estruturas de controle de fluxo e palavras reservadas, contando também com funções e comandos disponibilizados pela Microsiga que a torna uma linguagem completa para a criação de aplicações ERP prontas para a Internet. Também é uma linguagem orientada a objetos e eventos, permitindo ao programador desenvolver aplicações visuais e criar suas próprias classes de objetos. Quando compilados, todos os arquivos de código tornam-se unidades de inteligência básicas, chamados APO´s (de Advanced Protheus Objects). Tais APO´s são mantidos em um repositório e carregados dinamicamente pelo Protheus Server para a execução. Como não existe a linkedição, ou união física do código compilado a um determinado módulo ou aplicação, funções criadas em AdvPl podem ser executadas em qualquer ponto do ambiente Advanced Protheus. O compilador e o interpretador da linguagem AdvPl é o próprio servidor Protheus (Protheus Server), e existe um ambiente visual para desenvolvimento integrado (Protheus IDE) onde o código pode ser criado, compilado e depurado. Os programas em AdvPl podem conter comandos ou funções de interface com o usuário. De acordo com tal característica, tais programas são subdivididos nas seguintes categorias: Programação Com Interface Própria com o Usuário Nesta categoria entram os programas desenvolvidos para serem executados através do terminal remoto do Protheus, o Protheus Remote. O Protheus Remote é a aplicação encarregada da interface e da interação com o usuário, sendo que todo o processamento do código em AdvPl, o acesso ao banco de dados e o gerenciamento de conexões é efetuado no Protheus Server. O Protheus Remote é o principal meio de acesso a execução de rotinas escritas em AdvPl no Protheus Server, e por isso permite executar qualquer tipo de código, tenha ele interface com o usuário ou não. Porém nesta categoria são considerados apenas os programas que realizem algum tipo de interface remota utilizando o protocolo de comunicação do Protheus. Pode-se criar rotinas para a customização do sistema ERP Advanced Protheus, desde

Upload: duongphuc

Post on 01-Feb-2018

263 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

A Linguagem AdvPl

Revisão: 09/06/2003

A Linguagem AdvPl teve seu início em 1994, sendo na verdade uma evolução na

utilização de linguagens no padrão xBase pela Microsiga Software S.A. (Clipper, Visual

Objects e depois FiveWin). Com a criação da tecnologia Protheus, era necessário criar

uma linguagem que suportasse o padrão xBase para a manutenção de todo o código

existente do sistema de ERP Siga Advanced. Foi então criada a linguagem chamada

Advanced Protheus Language.

O AdvPl é uma extensão do padrão xBase de comandos e funções, operadores,

estruturas de controle de fluxo e palavras reservadas, contando também com funções e

comandos disponibilizados pela Microsiga que a torna uma linguagem completa para a

criação de aplicações ERP prontas para a Internet. Também é uma linguagem orientada

a objetos e eventos, permitindo ao programador desenvolver aplicações visuais e criar

suas próprias classes de objetos.

Quando compilados, todos os arquivos de código tornam-se unidades de inteligência

básicas, chamados APO´s (de Advanced Protheus Objects). Tais APO´s são mantidos

em um repositório e carregados dinamicamente pelo Protheus Server para a execução.

Como não existe a linkedição, ou união física do código compilado a um determinado

módulo ou aplicação, funções criadas em AdvPl podem ser executadas em qualquer

ponto do ambiente Advanced Protheus.

O compilador e o interpretador da linguagem AdvPl é o próprio servidor Protheus

(Protheus Server), e existe um ambiente visual para desenvolvimento integrado

(Protheus IDE) onde o código pode ser criado, compilado e depurado.

Os programas em AdvPl podem conter comandos ou funções de interface com o

usuário. De acordo com tal característica, tais programas são subdivididos nas seguintes

categorias:

Programação Com Interface Própria com o Usuário

Nesta categoria entram os programas desenvolvidos para serem executados através do

terminal remoto do Protheus, o Protheus Remote. O Protheus Remote é a aplicação

encarregada da interface e da interação com o usuário, sendo que todo o processamento

do código em AdvPl, o acesso ao banco de dados e o gerenciamento de conexões é

efetuado no Protheus Server. O Protheus Remote é o principal meio de acesso a

execução de rotinas escritas em AdvPl no Protheus Server, e por isso permite executar

qualquer tipo de código, tenha ele interface com o usuário ou não. Porém nesta

categoria são considerados apenas os programas que realizem algum tipo de interface

remota utilizando o protocolo de comunicação do Protheus.

Pode-se criar rotinas para a customização do sistema ERP Advanced Protheus, desde

Page 2: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

processos adicionais até mesmo relatórios. A grande vantagem é aproveitar todo o

ambiente montado pelos módulos do ERP Advanced Protheus. Porém, com o AdvPl é

possível até mesmo criar toda uma aplicação, ou módulo, do começo.

Todo o código do sistema ERP Advanced Protheus é escrito em AdvPl.

Programação Sem Interface Própria com o Usuário

As rotinas criadas sem interface são consideradas nesta categoria porque geralmente

têm uma utilização mais específica do que um processo adicional ou um relatório novo.

Tais rotinas não têm interface com o usuãrio através do Protheus Remote, e qualquer

tentativa nesse sentido (como a criação de uma janela padrão) ocasionará uma exceção

em tempo de execução. Estas rotinas são apenas processos, ou Jobs, executados no

Protheus Server. Algumas vezes, a interface destas rotinas fica a cargo de aplicações

externas, desenvolvidas em outras linguagens, que são responsáveis por iniciar os

processos no servidor Protheus através dos meios disponíveis de integração e

conectividade no Protheus.

De acordo com a utilização e com o meio de conectividade utilizado, estas rotinas são

subcategorizadas assim:

Programação por Processos

Programação de RPC

Programação Web

Programação TelNet

Programação por Processos

Rotinas escritas em AdvPl podem ser iniciadas como processos individuais (sem

interface) no Protheus Server através de duas maneiras: Iniciadas por outra rotina AdvPl

através da chamada de funções como StartJob ou CallProc ou iniciadas

automaticamente na inicialização do Protheus Server (quando propriamente

configurado).

Programação de RPC

Através de uma biblioteca de funções disponível no Protheus (uma API de

comunicação), pode-se executar rotinas escritas em AdvPl diretamente no Protheus

Server, através de aplicações externas escritas em outras linguagens. Isto é o que se

chama de RPC (de Remote Procedure Call, ou Chamada de Procedimentos Remota).

O servidor Protheus também pode executar rotinas em AdvPl em outros servidores

Protheus através de conexão TCP/IP direta utilizando o conceito de RPC. Do mesmo

Page 3: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

modo, aplicações externas podem requisitar a execução de rotinas escritas em AdvPl

através de conexão TCP/IP direta.

Programação Web

O Protheus Server pode também ser executado como um servidor Web, respondendo a

requisições HTTP. No momento destas requisições, pode executar rotinas escritas em

AdvPl como processos individuais, enviando o resultado das funções como retorno das

requisições para o cliente HTTP (como por exemplo um Browser de Internet). Qualquer

rotina escrita em AdvPl que não contenha comandos de interface pode ser executada

através de requisições HTTP. O Protheus permite a compilação de arquivos HTML

contendo código AdvPl embutido. São os chamados arquivos AdvPl ASP, para a

criação de páginas dinâmicas.

Programação TelNet

TelNet é parte da gama de protocolos TCP/IP que permite a conexão a um computador

remoto através de uma aplicação cliente deste protocolo. O Protheus Server pode

emular um terminal TelNet, através da execução de rotinas escritas em AdvPl. Ou seja,

pode-se escrever rotinas AdvPl cuja interface final será um terminal TelNet ou um

coletor de dados móvel.

Page 4: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Classes da Interface Visual

tSrvObject

Revisão: 22/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe mãe de todas as classes de interface.

Características

Classe abstrata inicial de todas as classes de interface do Advpl. Não deve ser

instanciada diretamente.

Propriedades

Propriedade Tipo Descrição

nLeft Numérico. Coordenada horizontal em pixels.

nTop Numérico. Coordenada vertical em pixels.

nWidth Numérico. Largura em pixels.

nHeight Numérico. Altura em pixels.

cCaption Caractere. Título ou conteúdo do objeto.

cTooltip Caractere. Mensagem exibida quando objeto exibe seu tooltip.

lShowHint Lógico. Flag que ativa .T. ou desativa .F. a exibição do tooltip do

objeto.

cMsg Caractere. Mensagem exibida na barra de status da janela principal

quando o objeto ganha foco.

nClrText Numérico. Cor do texto do objeto.

nClrPane Numérico. Cor do fundo do objeto.

bWhen Bloco de

código.

Executado quando há movimentação de foco na janela.Se

retornar .T. o objeto continua habilitado, se retornar .F. o

objeto será desabilitado.

bValid Bloco de

código.

Executado quando o conteúdo do objeto é modificado e

deverá ser validado. Deve retornar .T. se o conteúdo é válido

e .F. se conteúdo inválido.

blClicked Bloco de Executado quando acionado click do botão esquerdo do

Page 5: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

código. mouse sobre o objeto.

brClicked Bloco de

código.

Executado quando acionado click do botão direito do mouse

sobre o objeto.

blDblClick Bloco de

código.

Executado quando acionado duplo click do botão esquerdo

do mouse sobre o objeto.

oWnd Objeto. Janela onde o objeto foi criado.

lVisible Booleano. Se .T. o objeto é visível, se .F. o objeto é invisível.

Cargo Objeto ou

variável. Conteúdo associado ao objeto.

bLostFocus Bloco de

código. Executado quando objeto perde foco.

bGotFocus Bloco de

código. Executado quando objeto ganha foco.

Métodos

SetFocus

Sintaxe SetFocus( )

Descrição Força o foco de entrada de dados mudar para o objeto.

Retorno NIL

Hide

Sintaxe Hide( )

Descrição Torna objeto invisível.

Retorno NIL

Show

Sintaxe Show( )

Descrição Torna objeto visível.

Retorno NIL

Enable

Sintaxe Enable( )

Descrição Habilita o objeto.

Retorno NIL

Page 6: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Disable

Sintaxe Disable( )

Descrição Desabilita o objeto.

Retorno NIL

Refresh

Sintaxe Refresh( )

Descrição Força atualização (sincronia) de propriedades entre o programa e o

Protheus Remote.

Page 7: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tFont

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe que encapsula fonte de edição.

Hierarquia

tFontAbs -> tFont

Descrição

Utilize objeto tFont para modificar a fonte padrão de controles visuais.

Propriedades

Vide classes ancestrais.

Métodos

New

Descrição Método construtor da classe.

Sintaxe New([acName], [nPar2], [anHeight], [lPar4], [alBold], [nPar6],

[lPar7], [nPar8], [alItalic], [alUnderline])

Parâmetros

Parâmetro Tipo / Descrição

acName Caractere, opcional. Nome da fonte, o padrão é

“Arial”.

nPar2 Reservado.

anHeight Numérico, opcional. Tamanho da fonte. O padrão é -

11.

lPar4 Reservado.

alBold Lógico, opcional. Se .T. o estilo da fonte será negrito.

nPar6 Reservado.

lPar7 Reservado.

Page 8: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

nPar8 Reservado.

alItalic Lógico, opcional. Se .T. o estilo da fonte será itálico.

alUnderline Lógico, opcional. Se .T. o estilo da fonte será

sublinhado.

Retorno O objeto criado.

Exemplo

#INCLUDE "PROTHEUS.CH"

User Function Teste()

Local oDlg, oSay

Local oFont:= TFont():New("Courier New",,-14,.T.)

DEFINE MSDIALOG oDlg FROM 0,0 TO 200,200 TITLE "My dialog" PIXEL

// Apresenta o tSay com a fonte Courier New

oSay := TSay():New( 10, 10, {|| "Mensagem"},oDlg,, oFont,,,, .T.,

CLR_WHITE,CLR_RED )

/* o comando abaixo proporciona o mesmo resultado

@ 10,10 SAY oSay PROMPT "Mensagem" FONT oFont COLOR CLR_WHITE,CLR_RED

OF oDlg PIXEL

*/

oSay:lTransparent:= .F.

ACTIVATE MSDIALOG oDlg CENTERED

Return

Page 9: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tControl

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe abstrata mãe de todos os controles editáveis.

Hierarquia

tSrvObject -> tControl

Características

tControl é a classe comum entre todos os componentes visuais editáveis.

Propriedades

Nome Tipo / Descrição

Align

Numérico. Alinhamento do controle no espaço disponibilizado pelo seu

objeto parente. 0 = Nenhum (padrão), 1= no topo, 2 = no rodapé, 3= a

esquerda, 4 = a direita e 5 = em todo o parente.

lModified Lógico. Se .T. indica que o conteúdo da variável associada ao controle foi

modificado.

lReadOnly Lógico. Se .T. o conteúdo da variável associada ao controle permanecerá

apenas para leitura.

hParent Numérico. Handle (identificador) do objeto sobre o qual o controle foi

criado.

bChange Bloco de código. Executado quando o estado ou conteúdo do controle é

modificado pela ação sobre o controle.

Métodos

SetFocus

Descrição Força mudança do foco de entrada de dados para o controle.

Sintaxe SetFocus( )

REtorno NIL

Page 10: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tButton

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de botão.

Hierarquia

tSrvObject -> tControl -> tButton

Descrição

Utilize a classe tButton para criar um controle visual do tipo botão.

Propriedades

Nome Tipo / Descrição

lProcessing Lógico. Se .T. indica o botão está efetuando uma ação.

bAction Bloco de código. Executado quando o botão é pressionado.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [acCaption], [aoWnd], [abAction],

[anWidth], [anHeight], [nPar8], [aoFont], [lPar10],

[alPixel],[lPar12],[cPar13], [lPar14], [abWhen], [bPar16], [lPar17])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels ou

carateres.

anCol Numérico, opcional. Coordenada horizontal em pixels

ou caracteres.

acCaption Caractere, opcional. Titulo do botão.

aoWnd Objeto, opcional. Janela ou controle onde o botão

Page 11: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

deverá ser criado.

abAction Bloco de código, opcional. Bloco que deverá ser

acionado quando o botão for pressionado.

anWidth Numérico, opcional. Largura do botão em pixels.

anHeight Numérico, opcional. Altura do botão em pixels.

nPar8 Reservado.

aoFont Objeto, opcional. Objeto tipo tFont com propriedades

da fonte utilizada para o título do botão.

lPar10 Reservado.

alPixel

Lógico, opcional. Se .T. considera as coordenadas

passadas em pixels, se .F. (padrão) considera em

caracteres.

lPar12 Reservado.

cPar13 Reservado.

lPar14 Reservado.

abWhen

Bloco de código, opcional. Executado quando mudança

de foco de entrada de dados está sendo efetuada na

janela onde o controle foi criado. O bloco deve retornar

.T. se o controle deve permanecer habilitado ou .F. se

não.

bPar16 Reservado.

lPar17 Reservado.

Exemplo

#include “protheus.ch”

User Function TesteGet()

Local oDlg, oButton, oCombo, cCombo, aItems:=

{“item1”,”item2”,”item3”}

cCombo:= aItems[2]

DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE “Meu Combo”

oCombo:= tComboBox():New(10,10,{|u|if(PCount()>0,cCombo:=u,cCombo)},;

aItems,100,20,oDlg,,{||MsgStop(“Mudou item”)},,,,.T.,,,,,,,,,”cCombo”)

// Botão para fechar a janela

oButton:=tButton():New(30,10,”fechar”,oDlg,{||oDlg:End()},100,20,,,,.T

.)

ACTIVATE MSDIALOG oDlg CENTERED

MsgStop( “O valor é ”+cCombo )

Return NIL

Page 12: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tCheckBox

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de caixa checkbox.

Hierarquia

tSrvObject -> tControl -> tCheckBox

Descrição

Utilize a classe tCheckbox quando desejar criar um controle que possua dois estados .T.

ou .F..

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [acCaption], [abSetGet], [aoWnd],

[anWidth], [anHeight], [nPar8], [abClick], [aoFont], [abValid],

[anClrFore], [anClrBack], [lPar14], [alPixel], [cPar16], [lPar17],

[abWhen])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels ou

carateres.

anCol Numérico, opcional. Coordenada horizontal em pixels

ou caracteres.

acCaption Caractere, opcional. Texto exibido pelo controle.

abSetGet

Bloco de código, opcional. Bloco de código no formato

{|u| if( Pcount( )>0, <var>:= u, <var> ) } que o controle

utiliza para atualizar a variável <var>. <var> deve ser

tipo lógico, se <var> = .T. então o controle aparecerá

checado.

aoWnd Objeto, opcional. Janela ou controle onde o controle

deverá ser criado.

Page 13: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

nPar8 Reservado.

abClick

Bloco de código, opcional. Executado quando o

controle click do botão esquerdo do mouse é acionado

sobre o controle.

aoFont Objeto, opcional. Objeto tipo tFont com propriedades

da fonte utilizada para o texto do controle.

abValid

Bloco de código, opcional. Executado quando o

conteúdo do controle deve ser validado, deve retornar

.T. se o conteúdo for válido e .F. quando o conteúdo

for inválido.

anClrFore Numérico, opcional. Cor de fundo do controle.

anClrBack Numérico, opcional. Cor do texto do controle.

lPar14 Reservado.

alPixel Lógico, opcional. Se .T. as coordenadas informadas

são em pixels, se .F. são em caracteres.

cPar16 Reservado.

lPar17 Reservado.

abWhen

Bloco de código, opcional. Executado quando mudança

de foco de entrada de dados está sendo efetuada na

janela onde o controle foi criado. O bloco deve retornar

.T. se o controle deve permanecer habilitado ou .F. se

não.

Retorno O objeto construído.

Exemplo

#include “protheus.ch”

User Function Teste()

Local oDlg, oButton, oCheck, lCheck:=.F.

DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE “Meu programa”

oCheck:= tCheckBox():New(10,10,”funcionou?”,;

{|u|if( pcount()>0,lCheck:=u,lCheck)};

,oDlg,100,20,,,,,,,,.T.)

oButton:=tButton():New(30,10,”fechar”,oDlg,{||oDlg:End()},;

100,20,,,,.T.)

ACTIVATE MSDIALOG oDlg CENTERED

If lCheck

MsgStop( “Funcionou!” )

Endif

Return NIL

Page 14: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tComboBox

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de combobox.

Hierarquia

tSrvObject -> tControl -> tComboBox

Descrição

Utilize a classe tComboBox para cria uma entrada de dados com múltipla escolha com

item definido em uma lista vertical, acionada por F4 ou pelo botão esquerdo localizado

na parte direita do controle. A variável associada ao controle terá o valor de um dos

itens selecionados ou no caso de uma lista indexada, o valor de seu índice.

Propriedades

Nome Tipo / Descrição

aItems

Array. Lista de itens, caracteres, a serem exibidos. Pode ter os seguintes

formatos: a) Seqüencial, exemplo: {“item1”,”item2”,...,”itemN”} ou b)

Indexada, exemplo: {“a=item1”,”b=item2”, ..., “n=itemN”}.

nAt Numérico. Posição do item selecionado.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [abSetGet], [anItems], [anWidth],

[anHeight], [aoWnd], [nPar8], [abChange], [abValid], [anClrText],

[anClrBack], [alPixel], [aoFont], [cPar15], [lPar16], [abWhen],

[lPar18], [aPar19], [bPar20], [cPar21], [acReadVar])

Parâmetros Parâmetro Tipo / Descrição

Page 15: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anRow Numérico, opcional. Coordenada vertical em pixels ou

caracteres.

anCol Numérico, opcional. Coordenada horizontal em pixels

ou caracteres.

abSetGet

Bloco de código, opcional. Bloco de código no

formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que

o controle utiliza para atualizar a variável <var>.

<var> deve ser tipo caracter. Se a lista for seqüencial,

o controle atualizará <var> com o conteúdo do item

selecionado, se a lista for indexada, <var> será

atualizada com o valor do índice do item selecionado.

anItems

Array, opcional. Lista de items, caracteres, a serem

exibidos. Pode ter os seguintes formatos: a)

Seqüencial, exemplo: {“item1”,”item2”,...,”itemN”}

ou b) Indexada, exemplo: {“a=item1”,”b=item2”, ...,

“n=itemN”}.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

aoWnd Objeto, opcional. Janela ou controle onde o controle

será criado.

nPar8 Reservado.

abChange Bloco de código, opcional. Executado quando o

controle modifica o item selecionado.

abValid

Bloco de código, opcional. Executado quando o

conteúdo do controle deve ser validado, deve retornar

.T. se o conteúdo for válido e .F. quando o conteúdo

for inválido.

anClrBack Numérico, opcional. Cor de fundo do controle.

anClrText Numérico, opcional. Cor do texto do controle.

alPixel Lógico, opcional. Se .T. as coordenadas informadas

são em pixels, se .F. são em caracteres.

aoFont

Objeto, opcional. Objeto tipo tFont utilizado para

definir as características da fonte utilizada para exibir

o conteúdo do controle.

cPar15 Reservado.

lPar16 Reservado.

abWhen

Bloco de código, opcional. Executado quando

mudança de foco de entrada de dados está sendo

efetuada na janela onde o controle foi criado. O bloco

deve retornar .T. se o controle deve permanecer

habilitado ou .F. se não.

lPar18 Reservado.

aPar19 Reservado.

bPar20 Reservado.

cPar21 Reservado.

Page 16: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

acReadVar

Caractere, opcional. Nome da variável que o controle

deverá manipular, deverá ser a mesma variável

informada no parâmetro abSetGet, e será o retorno da

função ReadVar( ).

Retorno O objeto criado.

Select

Descrição Muda o item selecionado no combobox.

Sintaxe Select( [anItem] )

Parâmetros Parâmetro Tipo / Descrição

anItem Numérico, opcional. Posição do item a ser selecionado.

Retorno NIL

Exemplo

#include “protheus.ch”

User Function TesteGet()

Local oDlg, oButton, oCombo, cCombo, aItems:=

{“item1”,”item2”,”item3”}

cCombo:= aItems[2]

DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE “Meu Combo”

oCombo:= tComboBox():New(10,10,{|u|if(PCount()>0,cCombo:=u,cCombo)},;

aItems,100,20,oDlg,,{||MsgStop(“Mudou item”)},;

,,,.T.,,,,,,,,,”cCombo”)

// Botão para fechar a janela

@ 40,10 BUTTON oButton PROMPT “Fechar” OF oDlg PIXEL ACTION oDlg:End()

ACTIVATE MSDIALOG oDlg CENTERED

MsgStop( “O valor é ”+cCombo )

Return NIL

Page 17: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tGet

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de controle para entrada de dados editáveis.

Hierarquia

tSrvObject -> tControl -> tGet

Descrição

Use tGet para criar um controle que armazene ou altere o conteúdo de uma variável

através de digitação. O conteúdo da variável só é modicado quando o controle perde o

foco de edição para outro controle.

Propriedades

Nome Tipo / Descrição

lPassword Lógico. Se .T. o controle se comporta como entrada de dados de senha,

exibindo asteriscos ‘*’ para esconder o conteúdo digitado.

Picture Caractere. Máscara de formatação do conteúdo a ser exibido.

Métodos

New

Descrição Método construtor do controle.

Sintaxe

New([anRow], [anCol], [abSetGet], [aoWnd], [anWidth],

[anHeight], [acPict], [abValid], [anClrFore], [anClrBack], [aoFont],

[lPar12], [oPar13], [alPixel], [cPar15], [lPar16], [abWhen],

[lPar18], [lPar19], [abChange], [alReadOnly], [alPassword],

[cPar23], [acReadVar], [cPar25], [lPar26], [nPar27], [lPar28])

Parâmetros Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels

Page 18: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

ou caracteres.

anCol Numérico, opcional. Coordenada horizontal em pixels

ou caracteres.

abSetGet

Bloco de código, opcional. Bloco de código no

formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que

o controle utiliza para atualizar a variável <var>.

<var> deve ser tipo caracter, numérico ou data.

aoWnd Objeto, opcional. Janela ou controle onde o controle

será criado.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

acPict Caractere, opcional. Máscara de formatação do

conteúdo a ser exibido.

abValid

Bloco de código, opcional. Executado quando o

conteúdo do controle deve ser validado, deve retornar

.T. se o conteúdo for válido e .F. quando o conteúdo

for inválido.

anClrFore Numérico, opcional. Cor de fundo do controle.

anClrBack Numérico, opcional. Cor do texto do controle.

aoFont

Objeto, opcional. Objeto tipo tFont utilizado para

definir as características da fonte utilizada para exibir

o conteúdo do controle.

lPar12 Reservado.

oPar13 Reservado.

alPixel Lógico, opcional. Se .T. as coordenadas informadas

são em pixels, se .F. são em caracteres.

cPar15 Reservado.

lPar16 Reservado.

abWhen

Bloco de código, opcional. Executado quando

mudança de foco de entrada de dados está sendo

efetuada na janela onde o controle foi criado. O bloco

deve retornar .T. se o controle deve permanecer

habilitado ou .F. se não.

lPar18 Reservado.

lPar19 Reservado.

abChange Bloco de código, opcional. Executado quando o

controle modifica o valor da variável associada.

alReadOnly Lógico, opcional. Se .T. o controle não poderá ser

editado.

alPassword

Lógico, opcional. Se .T. o controle exibirá asteriscos

“*” no lugar dos caracteres exibidos pelo controle

para simular entrada de senha.

cPar23 Reservado.

acReadVar Caractere, opcional. Nome da variável que o controle

deverá manipular, deverá ser a mesma variável

Page 19: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

informada no parâmetro abSetGet, e será o retorno da

função ReadVar( ).

cPar25 Reservado.

lPar26 Reservado.

nPar27 Reservado.

lPar28 Reservado.

Retorno O controle construído.

Exemplo

#include “protheus.ch”

User Function TesteGet()

Local oDlg, oGet1, oButton, nGet1:=0

DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE “Meu Get”

oGet1:= TGet():New(10,10,{|u| if(PCount()>0,nGet1:=u,nGet1}}, oDlg,;

100,20,”@E 999,999.99”,;

{|o|nGet1>1000.00},,,,,,.T.,,,,,,,,,,”nGet1”)

/* Tem o mesmo efeito

@ 10,10 MSGET oGet1 VAR nGet1 SIZE 100,20 OF oDlg PIXEL PICTURE “@E

999,999.99” VALID nGet1>1000.00

*/

// Botão para fechar a janela

@ 40,10 BUTTON oButton PROMPT “Fechar” OF oDlg PIXEL ACTION oDlg:End()

ACTIVATE MSDIALOG oDlg CENTERED

MsgStop( “O valor é ”+Transform(nGet1,”@E 999,999.00”) )

Return NIL

Page 20: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tGroup

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de painel de grupo de controles.

Hierarquia

tSrvObject -> tControl -> tGroup

Descrição

Utilize a classe tGroup para criar um painel onde controles visuais podem ser agrupados

ou classificados. É criada uma borda com título em volta dos controles agrupados.

Métodos

New

Descrição Método construtor da classe.

Sintaxe New([anTop], [anLeft], [anBottom], [anRight], [acCaption],

[aoWnd], [anClrText], [anClrPane], [alPixel], [lPar10])

Parâmetros

Parâmetro Tipo / Descrição

anTop Numérico, opcional. Coordenada vertical superior em

pixels ou caracteres.

anLeft Numérico, opcional. Coordenada horizontal esquerda

em pixels ou caracteres.

anBottom Numérico, opcional. Coordenada vertical inferior em

pixels ou caracteres.

anRight Numérico, opcional. Coordenada horizontal direita em

pixels ou caracteres.

acCaption Caractere, opcional. Título do grupo.

aoWnd Objeto, opcional. Janela ou controle onde o controle

será criado.

anClrText Numérico, opcional. Cor do texto.

Page 21: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anClrPane Numérico, opcional. Cor do fundo.

alPixel Lógico, opcional. Se .T. as coordenadas informadas são

em pixels, se .F. são em caracteres.

lPar10 Reservado.

Retorno O objeto criado.

Exemplo

#include “protheus.ch”

User function teste()

Local oDlg, oGroup, oGet1, oGet2, cGet1:=Space(10),;

cGet2:= Space(10)

DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 TITLE “My test” PIXEL

oGroup:= tGroup():New(10,10,200,200,”grupo de gets”,oDlg,,,.T.)

@ 10,10 MSGET oGet1 VAR cGet1 SIZE 100,10 OF oGroup PIXEL

@ 30,10 MSGET oGet2 VAR cGet2 SIZE 100,10 OF oGroup PIXEL

ACTIVATE MSDIALOG oDlg CENTERED

Return NIL

Page 22: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tListBox

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de lista de items.

Hierarquia

tSrvObject -> tControl -> tListbox

Descrição

Utilize a classe tListbox para criar uma janela com itens selecionáveis e barra de

rolagem. Ao selecionar um item, uma variável é atualizada com o conteúdo do item

selecionado.

Propriedades

Nome Tipo / Descrição

nAt Numérico. Posição do item selecionado.

aItems Array de items caracteres. Lista do itens selecionáveis.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [abSetGet], [aaItems], [anWidth],

[anHeigth], [abChange], [aoWnd], [abValid], [anClrFore],

[anClrBack], [alPixel], [lPar13], [abLDBLClick], [aoFont],

[cPar16], [lPar17], [abWhen], [aPar19], [bPar20], [lPar21],

[lPar22], [abRightClick] )

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels

ou caracteres.

Page 23: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anCol Numérico, opcional. Coordenada horizontal em

pixels ou caracteres.

abSetGet

Bloco de código, opcional. Bloco de código no

formato {|u| if( Pcount( )>0, <var>:= u, <var> )}

que o controle utiliza para atualizar a variável

<var>. <var> deve ser tipo caracter ou numérica.

aaItems Array de items caracteres, opcional. Lista de items

selecionáveis.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

abChange Bloco de código, opcional. Executado quando o

item selecionado é alterado.

aoWnd Objeto, opcional. Janela ou controle onde o

controle será criado.

abValid

Bloco de código, opcional. Executado quando o

conteúdo do controle deve ser validado, deve

retornar .T. se o conteúdo for válido e .F. quando o

conteúdo for inválido.

anClrFore Numérico, opcional. Cor de fundo do controle.

anClrBack Numérico, opcional. Cor do texto do controle.

alPixel Lógico, opcional. Se .T. as coordenadas informadas

são em pixels, se .F. são em caracteres.

lPar13 Reservado.

abLDBLClick

Bloco de código, opcional. Executado quando

acionado duplo click do botão esquerdo do mouse

sobre o controle.

aoFont

Objeto, opcional. Objeto tipo tFont utilizado para

definir as características da fonte utilizada para

exibir o conteúdo do controle.

cPar16 Reservado.

lPar17 Reservado.

abWhen

Bloco de código, opcional. Executado quando

mudança de foco de entrada de dados está sendo

efetuada na janela onde o controle foi criado. O

bloco deve retornar .T. se o controle deve

permanecer habilitado ou .F. se não.

aPar19 Reservado.

bPar20 Reservado.

lPar21 Reservado.

lPar22 Reservado.

abRightClick

Bloco de código, opcional. Executado quando

acionado click do botão direito do mouse sobre o

controle.

Retorno O objeto criado.

Page 24: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Select

Descrição Força a seleção de um item.

Sintaxe Select( [anItem] )

Parâmetros Parâmetro Tipo / Descrição

nItem Numérico, opcional. Posição do item a ser selecionado.

Retorno NIL

Add

Descrição Insere ou adiciona novo item.

Sintaxe Add( cText, nPos )

Parâmetros

Parâmetro Tipo / Descrição

cText Caractere, obrigatório. Texto do item.

nPos

Numérico, obrigatório. Se 0 ou maior que o número de

itens, insere o item no final da lista. Se valor entre 1 e

número de itens, insere o item na posição informada,

empurrando o item anterior para baixo.

Retorno NIL

Modify

Descrição Modifica o texto de um item.

Sintaxe Modify( cText, nPos )

Parâmetros

Parâmetro Tipo / Descrição

cText Caractere, obrigatório. Novo texto do item.

nPos

Numérico, obrigatório. Posição a ser modificada deve

ser maior que 0 e menor ou igual que o número de

itens.

Retorno NIL

Del

Descrição Apaga um item.

Sintaxe Del( nPos )

Page 25: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Parâmetros

Parâmetro Tipo / Descrição

nPos Numérico, obrigatório. Posição a ser excluida, deve ser

maior que 0 e menor ou igual que o número de itens.

Retorno NIL

Len

Descrição Retorna o número de itens.

Sintaxe Len( )

Retorno Numérico. Número de itens.

Reset

Descrição Apaga todos os itens.

Sintaxe Reset( )

Retorno NIL

Exemplo

#include “protheus.ch”

User Funcion Teste()

Local oDlg, oList, nList:= 1, aItems:={}

Aadd(aItems,”Item 1”)

Aadd(aItems,”Item 2”)

Aadd(aItems,”Item 3”)

Aadd(aItems,”Item 4”)

DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE “Teste”

oList:= tListBox():New(10,10,{|u|if(Pcount()>0,nList:=u,nList)};

,aItems,100,100,,oDlg,,,,.T.)

ACTIVATE MSDIALOG oDlg CENTERED

Return NIL

Page 26: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tMeter

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de régua de processamento.

Hierarquia

tSrvObject -> tControl -> tMeter

Descrição

Utilize a classe tMeter para criar um controle que exibe uma régua (gauge) de

processamento, descrevendo o andamento de um processo atraves da exibição de uma

barra horizontal.

Propriedades

Nome Tipo / Descrição

nTotal Numérico. Número total de passos até o preenchimento da régua de

processo.

lPercentage Lógico. Se .T. considera o passo de movimentação em porcentagem.

nClrBar Numérico. Cor da barra de andamento.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [abSetGet], [anTotal], [aoWnd],

[anWidth], [anHeight], [lPar8], [alPixel], [oPar10], [cPar11],

[alNoPerc], [anClrPane], [nPar14], [anClrBar], [nPar16], [lPar17])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels ou

caracteres.

Page 27: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anCol Numérico, opcional. Coordenada horizontal em pixels

ou caracteres.

abSetGet

Bloco de código, opcional. Bloco de código no formato

{|u| if( Pcount( )>0, <var>:= u, <var> ) } que o controle

utiliza para atualizar a variável <var>. <var> deve ser

tipo numérico.

anTotal Numérico, opcional. Numero total de passos até o

preenchimento da régua de processo.

aoWnd Objeto, opcional. Janela ou controle onde o controle

sera criado.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

lPar8 Reservado.

alPixel Lógico, opcional. Se .T. as coordenadas informadas são

em pixels, se .F. são em caracteres.

oPar10 Reservado.

cPar11 Reservado.

alNoPerc Lógico, opcional. Se .T. (padrão) não considera os

passos de atualização em porcentagem.

anClrPane Numérico, opcional. Cor de fundo do controle.

nPar14 Reservado.

anClrBar Numérico, opcional. Cor da barra de andamento.

nPar16 Reservado.

lPar17 Reservado.

Retorno O objeto criado.

Set

Descrição Atualiza a posição da régua de processamento.

Sintaxe Set( [nVal] )

Parâmetros

Parâmetro Tipo / Descrição

nVal Numérico, opcional. Novo valor da posição da régua de

processamento.

Retorno NIL

Exemplo

#include “protheus.ch”

STATIC lRunning:=.F., lStop:=.F.

User Function Teste()

Page 28: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Local oDlg, oMeter, nMeter:=0, oBtn1, oBtn2

DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 TITLE “Teste”

oMeter:= tMeter():New(10,10,{|u|if(Pcount()>0,nMeter:=u,nMeter)};

,100,oDlg,100,20,,.T.) // cria a régua

// botão para ativar andamento da régua

@ 30,10 BUTTON oBtn1 PROMPT “Run” OF oDlg PIXEL ACTION

RunMeter(oMeter)

@ 50,10 BUTTON oBtn2 PROMPT “Stop” OF oDlg PIXEL ACTION lStop:=.T.

ACTIVATE MSDIALOG oDlg CENTERED

Return NIL

STATIC Function RunMeter(oMeter)

If lRunning

Return

Endif

lRunning:= .T.

oMeter:Set(0) // inicia a régua

While .T. .and. !lStop

Sleep(1000) // pára 1 segundo

ProcessMessages() // atualiza a pintura da janela, processa

mensagens do windows

nCurrent:= Eval(oMeter:bSetGet) // pega valor corrente da régua

nCurrent+=10 // atualiza régua

oMeter:Set(nCurrent)

if nCurrent==oMeter:nTotal

Return

endif

Enddo

lRunning:= .F.

lStop:= .F.

Return

Page 29: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tMultiGet

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de campo Memo de edição.

Hierarquia

tSrvObject -> tControl -> tMultiGet

Descrição

Utilize a classe tMultiget para criar controle de edição de texto de múltiplas linhas.

Propriedades

Nome Tipo / Descrição

lWordWrap Lógico. Se .T., faz quebra automática de linhas.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [abSetGet], [aoWnd], [anWidth],

[anHeight], [aoFont], [alHScroll], [anClrFore], [anClrBack],

[oPar11], [alPixel], [cPar13], [lPar14], [abWhen], [lPar16],

[lPar17], [alReadOnly], [abValid], [bPar20], [lPar21],

[alNoBorder], [alNoVScroll])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels

ou caracteres.

anCol Numérico, opcional. Coordenada horizontal em

pixels ou caracteres.

abSetGet Bloco de código, opcional. Bloco de código no

Page 30: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que

o controle utiliza para atualizar a variável <var>.

<var> deve ser tipo caracter.

aoWnd Objeto, opcional. Janela ou controle onde o controle

será criado.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

aoFont

Objeto, opcional. Objeto tipo tFont utilizado para

definir as características da fonte utilizada para exibir

o conteúdo do controle.

alHScroll Lógico, opcional. Se .T., habilita barra de rolagem

horizontal.

anClrFore Numérico, opcional. Cor de fundo do controle.

anClrBack Numérico, opcional. Cor do texto do controle.

oPar11 Reservado.

alPixel Lógico, opcional. Se .T. as coordenadas informadas

são em pixels, se .F. são em caracteres.

cPar13 Reservado.

lPar14 Reservado.

abWhen

Bloco de código, opcional. Executado quando

mudança de foco de entrada de dados está sendo

efetuada na janela onde o controle foi criado. O bloco

deve retornar .T. se o controle deve permanecer

habilitado ou .F. se não.

lPar16 Reservado.

lPar17 Reservado.

alReadOnly Lógico, opcional. Se .T. o controle so permitira

leitura.

abValid

Bloco de código, opcional. Executado quando o

conteúdo do controle deve ser validado, deve retornar

.T. se o conteúdo for válido e .F. quando o conteúdo

for inválido.

bPar20 Reservado.

lPar21 Reservado.

alNoBorder Lógico, opcional. Se .T. cria controle sem borda.

alNoVScroll Lógico, opcional. Se .T., habilita barra de rolagem

vertical.

Retorno O objeto criado.

EnableVScroll

Descrição Habilita a barra de rolagem vertical.

Page 31: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Sintaxe EnableVScroll( lEnable )

Parâmetros

Parâmetro Tipo / Descrição

lEnable Lógico, obrigatório. Se .T. habilita se .F. desabilita a

barra de rolagem.

Retorno NIL

EnableHScroll

Descrição Habilita a barra de rolagem horizontal.

Sintaxe EnableHScroll( lEnable )

Parâmetros

Parâmetro Tipo / Descrição

lEnable Lógico, obrigatório. Se .T. habilita se .F. desabilita a

barra de rolagem.

Retorno NIL

Exemplo

#include “protheus.ch”

User Function Teste()

Local oDlg, oMemo, cMemo:= space(50)

DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE “My test”

oMemo:= tMultiget():New(10,10,{|u|if(Pcount()>0,cMemo:=u,cMemo)};

,oDlg,100,100,,,,,,.T.)

@ 200,10 BUTTON oBtn PROMPT “Fecha” OF oDlg PIXEL ACTION oDlg:End()

ACTIVATE MSDIALOG oDlg CENTERED

MsgStop(cMemo)

Return NIL

Page 32: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tPanel

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de painel estático.

Hierarquia

tSrvObject -> tControl -> tPanel

Descrição

Utilize a classe tPanel quando desejar criar um painel estático, onde podem ser criados

outros controles com o objetivo de organizar ou agrupar componentes visuais.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [acText], [aoWnd], [aoFont], [alCentered],

[lPar6], [anClrText], [anClrBack], [anWidth], [anHeight],

[alLowered], [alRaised])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels.

anCol Numérico, opcional. Coordenada horizontal em pixels.

acText Caractere, opcional. Texto a ser exibido ao fundo.

aoWnd Objeto, opcional. Janela ou controle onde será criado o

objeto.

alCentered Lógico, opcional. Se .T. exibe o texto de título ao

centro do controle.

lPar6 Reservado.

anClrText Numérico, opcional. Cor do texto do controle.

anClrBack Numérico, opcional. Cor do fundo do controle.

anWidth Numérico, opcional. Largura do controle em pixels.

Page 33: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anHeight Numérico, opcional. Altura do controle em pixels.

alLowered Lógico, opcional. Se .T. exibe o painel rebaixado em

relação ao controle de fundo.

alRaised Lógico, opcional. Se .T. exibe a borda do controle

rebaixada em relação ao controle de fundo.

Retorno O objeto criado.

Exemplo

#include “protheus.ch”

User Function Teste()

Local oDlg, oPanel, oBtn1, oBtn2

DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE “My test”

oPanel:= tPanel():New(10,10,””,oDlg,,,,,CLR_BLUE,100,100) // cria o

painel

@ 10,10 BUTTON oBtn1 PROMPT “hide” OF oPanel ACTION oPanel:Hide() //

cria botão sobre o painel

@ 200,10 BUTTON oBtn2 PROMPT “show” OF oDlg ACTION oPanel:Show() //

cria botão fora o painel

ACTIVATE MSDIALOG oDlg CENTERED

Return

Page 34: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tRadMenu

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de radio group.

Hierarquia

tSrvObject -> tControl -> tRadMenu

Descrição

Utilize a classe tRadMenu para criar um controle que possibilita escolha de item através

de uma lista.

Propriedades

Nome Tipo / Descrição

nOption Numérico. Item selecionado.

aItems Array de caracteres. Lista de items selecionáveis.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [aacItems], [abSetGet], [aoWnd], [aPar6],

[abChange], [anClrText], [anClrPan], [cPar10], [lPar11],

[abWhen], [anWidth], [anHeight], [abValid], [lPar16], [lPar17],

[alPixel])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels ou

caracteres.

anCol Numérico, opcional. Coordenada horizontal em pixels

ou caracteres.

Page 35: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

aacItems Array de caracteres, opcional. Lista de opções.

abSetGet

Bloco de código, opcional. Bloco de código no formato

{|u| if( Pcount( )>0, <var>:= u, <var> ) } que o controle

utiliza para atualizar a variável <var>. <var> deve ser

tipo numérico.

aoWnd Objeto, opcional. Janela ou controle onde o controle

será criado.

aPar6 Reservado.

abChange Bloco de código, opcional. Executado quando o item

selecionado é alterado.

anClrText Numérico, opcional. Cor do texto do controle

anClrPan Numérico, opcional. Cor de fundo do controle.

cPar10 Reservado.

lPar11 Reservado.

abWhen

Bloco de código, opcional. Executado quando mudança

de foco de entrada de dados está sendo efetuada na

janela onde o controle foi criado. O bloco deve retornar

.T. para que o controle permaneça habilitado, ou .F. se

não.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

abValid

Bloco de código, opcional. Executado quando o

conteúdo do controle deva ser validado, retornando .T.

se o conteúdo for válido, e .F. quando inválido.

lPar16 Reservado.

Lpar17 Reservado.

alPixel Lógico, opcional. Se .T. as coordenadas informadas são

em pixels, se .F. são em caracteres.

Retorno O objeto criado.

EnableItem

Descrição Habilita ou desabilita item.

Sintaxe EnableItem( [nItem], [lEnable])

Parâmetros

Parâmetro Tipo / Descrição

nItem Numérico, opcional. Item selecionado.

lEnable Lógico, opcional. Se .T. habilita o item se .F. desabilita

o item.

Retorno NIL

Exemplo

Page 36: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

#include “protheus.ch”

User Function Teste()

Local oDlg, oButton, oRadio, nRadio:=1

Local aOptions:={“escolha1”,”escolha2”}

DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE “Meu Get”

oRadio:= tRadMenu():New(10,10,aOptions,;

{|u|if(PCount()>0,nRadio:=u,nRadio)},;

oDlg,,,,,,,,100,20,,,,.T.)

@ 40,10 BUTTON oButton PROMPT “Fechar” OF oDlg PIXEL ACTION oDlg:End()

ACTIVATE MSDIALOG oDlg CENTERED

MsgStop(“Escolheu “+aOptions[nRadio] )

Return NIL

Page 37: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tSay

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de label.

Hierarquia

tSrvObject -> tControl -> tSay

Descrição

O objeto tipo tSay exibe o conteúdo de texto estático sobre uma janela ou controle.

Propriedades

Nome Tipo / Descrição

lWordWrap Lógico. Se .T. quebra o texto em várias linhas de maneira a enquadrar o

conteúdo na área determinada para o controle, sendo o padrão .F.

lTransparent Lógico. Se .T. a cor de fundo do controle é ignorada assumindo o conteúdo

ou cor do controle ou janela ao fundo, sendo o padrão .T.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anRow], [anCol], [abText], [aoWnd], [acPicture], [aoFont],

[lPar7], [lPar8], [lPar9], [alPixels], [anClrText], [anClrBack],

[anWidth], [anHeight], [lPar15], [lPar16], [lPar17], [lPar18],

[lPar19])

Parâmetros

Parâmetro Tipo / Descrição

anRow Numérico, opcional. Coordenada vertical em pixels ou

caracteres.

anCol Numérico, opcional. Coordenada horizontal em pixels

Page 38: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

ou caracteres.

abText Codeblock, opcional. Quando executado deve retornar

uma cadeia de caracteres a ser exibida.

aoWnd Objeto, opcional. Janela ou diálogo onde o controle

será criado.

acPicture Caractere, opcional. Picture de formatação do conteúdo

a ser exibido.

aoFont

Objeto, opcional. Objeto tipo tFont para configuração

do tipo de fonte que será utilizado para exibir o

conteúdo.

lPar7 Reservado.

lPar8 Reservado.

lPar9 Reservado.

alPixels

Lógico, opcional. Se .T. considera coordenadas

passadas em pixels se .F., padrão, considera as

coordenadas passadas em caracteres.

anClrText Numérico, opcional. Cor do conteúdo do controle.

anClrBack Numérico, opcional. Cor do fundo do controle.

anWidth Numérico, opcional. Largura do controle em pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

lPar15 Reservado.

lPar16 Reservado.

lPar17 Reservado.

lPar18 Reservado.

lPar19 Reservado.

Retorno O objeto criado.

SetText

Descrição Modifica o conteúdo a ser exibido pelo controle.

Sintaxe SetText( [xVal] )

Parâmetros

Parâmetro Tipo / Descrição

xVal Caracter / Numérico / Data, Opcional. Valor a ser

exibido.

Retorno NIL

Page 39: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo

#include “protheus.ch”

User Function Teste()

Local oDlg, oSay

DEFINE MSDIALOG oDlg FROM 0,0 TO 200,200 TITLE “My dialog” PIXEL

oSay:= tSay():New(10,10,{||”para exibir”},oDlg,,,,;

,,.T.,CLR_WHITE,CLR_RED,100,20)

ACTIVATE MSDIALOG oDlg CENTERED

Return NIL

Page 40: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tScrollBox

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de área de scroll.

Hierarquia

tSrvObject -> tControl -> tScrollbox

Descrição

Utilize a classe tScrollbox para criar um painel com scroll deslizantes nas laterais do

controle.

Métodos

New

Descrição Método construtor da classe.

Sintaxe New([aoWnd], [anTop], [anLeft], [anHeight], [anWidth],

[alVertical], [alHorizontal], [alBorder])

Parâmetros

Parâmetro Tipo / Descrição

aoWnd Objeto, opcional. Janela ou controle onde o controle

será criado.

anTop Numérico, opcional. Coordenada vertical em pixels.

anLeft Numérico, opcional. Coordenada horizontal em

pixels.

anHeight Numérico, opcional. Altura do controle em pixels.

anWidth Numérico, opcional. Largura do controle em pixels.

alVertical Lógico, opcional. Se .T. exibe a barra de scroll

vertical.

alHorizontal Lógico, opcional. Se .T. exibe a barra de scroll

horizontal.

alBorder Lógico, opcional. Se .T. exibe a borda do controle.

Retorno O objeto criado.

Page 41: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo

#include “protheus.ch”

User Function Teste()

Local oDlg, oScr, oGet1, oGet2, oGet3

Local cGet1, cGet2, cGet3

cGet1:= Space(10)

cGet2:= Space(10)

cGet3:= Space(10)

DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL “My test”

oScr:= TScrollBox():New(oDlg,10,10,200,200,.T.,.T.,.T.) // cria

controles dentro do scrollbox

@ 10,10 MSGET oGet1 VAR cGet1 SIZE 100,10 OF oScr PIXEL

@ 50,10 MSGET oGet2 VAR cGet2 SIZE 100,10 OF oScr PIXEL

@ 150,100 MSGET oGet3 VAR cGet3 SIZE 100,10 OF oScr PIXEL

ACTIVATE MSDIALOG oDlg CENTERED

Return NIL

Page 42: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Classe TIBrowser

Exemplo de uso da classe TIBrowser

Revisão: 09/06/2003

Abrangência

Versão 6.09 Versão 7.10

#include "protheus.ch"

function teste()

local oDlg, oTIBrowser, oBtnNav, oBtnPrint, oBtnHome

DEFINE MSDIALOG oDlg FROM 0,0 TO 320,460 PIXEL TITLE "Teste TIBrowser"

oTIBrowser:= TIBrowser():New( 10,10, 150, 150,

"http://www.google.com", oDlg )

@ 10, 160 BUTTON oBtnNav PROMPT "Ir para Microsiga" SIZE 50,10 ACTION

oTIBrowser:Navigate("http://www.microsiga.com.br") OF oDlg PIXEL

@ 20, 160 BUTTON oBtnPrint PROMPT "Imprimir" SIZE 50,10 ACTION

oTIBrowser:Print() OF oDlg PIXEL

@ 30, 160 BUTTON oBtnHome PROMPT "Home" SIZE 50,10 ACTION

oTIBrowser:GoHome() OF oDlg PIXEL

ACTIVATE MSDIALOG oDlg CENTERED

return

Page 43: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TIBROWSER:GOHOME

Revisão: 09/06/2003

Abrangência

Versão 6.09 Versão 7.10

Sintaxe

TIBROWSER:GOHOME ( ) --> nil

Retorno

Tipo Descrição

(NULO) Este método retorna nil

Descrição

Direciona navegação para página <HOME> cadastrada no Internet Explorer

Page 44: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TIBROWSER:NAVIGATE

Revisão: 09/06/2003

Abrangência

Versão 6.09 Versão 7.10

Sintaxe

TIBROWSER:NAVIGATE ( < ahRef > ) --> nil

Parâmetros

Argumento Tipo Descrição

ahRef Caracter Endereço da página a ser navegada

Retorno

Tipo Descrição

(NULO) Este método sempre retorna nil

Descrição

Troca a página a ser visualizada

Page 45: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TIBROWSER:NEW

Revisão: 09/06/2003

Abrangência

Versão 6.09 Versão 7.10

Sintaxe

TIBROWSER:NEW ( < anRow > , < anCol > , < anWidth > , < anHeight > , [ ainitLink

] , [ anWindow ] ) --> Retorno

Parâmetros

Argumento Tipo Descrição

anRow Numérico coordenada vertical

anCol Numérico Coordenada horizontal

anWidth Numérico Largura do objeto

anHeight Numérico Altura do objeto

ainitLink Caracter

Endereço da página inicial a ser carregada, se não

informada, carregará a página <HOME> cadastrada no

Internet Explorer.

anWindow Objeto Janela ou componente visual onde o objeto será criado

Retorno

Tipo Descrição

Objeto Retorna o objeto criado

Descrição

Cria uma instância do Microsoft Internet Explorer(tm) dentro de um componente visual.

Para que o objeto esteja disponível para o usuário, é necesário configurar no arquivo de

configuração do AP Remote (Ex: ap6rmt.ini ) como abaixo:

[config]

BrowserEnabled=1

ATENÇAO: A classe somente funcionará se o MS Internet Explorer estiver instalado na

máquina que está executando o AP Remote.

Page 46: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TIBROWSER:PRINT

Revisão: 09/06/2003

Abrangência

Versão 6.09 Versão 7.10

Sintaxe

TIBROWSER:PRINT ( ) --> nil

Retorno

Tipo Descrição

(NULO) Este método retorna nil

Descrição

Imprime a página que esta sendo visualizada

Page 47: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo de uso da Classe TWBrowse

Revisão: 16/09/2004

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versão 8.11

A função abaixo cria uma janela de dialogo, com uma twBrowse ocupando toda a

extensão do diálogo, realizando uma consulta na Tabela SX5, filtrada através do índice

1, para mostrar apenas os elementos pertencentes à tabela 01 do SX5.

Vale lembrar que, para testar o fonte abaixo, deve-se compilá-lo no projeto, e inserir

uma chamada à esta função no Menu do ERP.

#INCLUDE 'PROTHEUS.CH'

User Function TstTWBrw()

dbselectarea('SX5')

DbSetORder(1)

DEFINE MSDIALOG oDlg TITLE 'Exemplo TWBrowse' FROM 000, 000 TO 500,

600 PIXEL

oBrw := TWBrowse():New( NIL,NIL,NIL,NIL,;

{|| { SX5->X5_TABELA, SX5->X5_CHAVE, SX5->X5_DESCRI ,

str(SX5->(recno()),8,0) } },;

{ 'Tabela','Chave','Descrição', 'RECNO'},;

NIL, oDlg, "X5_FILIAL+X5_TABELA" ," 01" , "

01" ,,,,,,,,,, "SX5", .T. )

// Ajusta alinhamento do TWBrowse para pegar o dialogo inteiro

oBrw:Align := CONTROL_ALIGN_ALLCLIENT

ACTIVATE MSDIALOG oDlg CENTERED

Return

Page 48: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

New

Revisão: 16/09/2004

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

TWBrowse():New ( [ nRow ] , [ bScroll ] , [ Param25 ] , [ Param27 ] , [ nCol ] , [

nWidth ] , [ nHeigth ] , < bLine > , < aHeaders > , [ aColSizes ] , [ oWnd ] , [ cField ] , [

cTopLimit ] , [ cBottomLiit ] , [ bChange ] , [ bLDblClick ] , [ Param14 ] , [ oFont ] , [

Param16 ] , [ nClrFore ] , [ nClrBack ] , [ Param19 ] , [ Param20 ] , [ cAlias ] , [ lPixel ]

, [ Param23 ] , [ Param24 ] ) --> oObjTWBrowse

Parâmetros

Argumento Tipo Descrição

nRow Numérico Coordenada vertical inicial do Objeto.

bScroll Lógico Caso .T., habilita barra de scroll horizontal e botões de

navegação vertical.

Param25 (NULO) ( parâmetro reservado )

Param27 (NULO) ( parâmetro reservado )

nCol Numérico Coordenada horizontal inicial do Objeto

nWidth Numérico Tamanho horizontal do objeto

nHeigth Numérico Tamanho vertical do objeto

bLine Code-Block

Code-Block, que deve retornar um array, com uma

dimensão, onde devem ser retornados as strings

referentes aos elementos referentes às colunas do

Browse.

aHeaders Array

Array, que deve retornar um array, com uma dimensão,

contendo as strings referentes aos Títulos das colunas do

Browse.

aColSizes Array

Array, com uma dimensão, onde devem ser retornados os

números referentes ào tamanho horizontal das colunas do

Browse. Caso especificado NIL, os tamanhos das

colunas são calculados automaticamente.

oWnd Objeto Objeto visual sobre o qual a tWBrowse será criada.

cField Caracter

Utilizado para especificar a expressão de índice para

definição de limite superior e inferior do Browse. Este

parâmetro é utilizado quando realizado um browse de

uma tabela, aberta sob um alias, com uma expressão de

índice.

Page 49: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

cTopLimit Caracter

Utilizado para especificar uma string, de acordo com a

chave de índice passada em cField, a ser utilizada para

identificar o limite superior do Browse. Apenas devemos

informar conteúdo neste, caso o parâmetro cField seja

especificado.

cBottomLiit Caracter

Utilizado para especificar uma string, de acordo com a

chave de índice passada em cField, a ser utilizada para

identificar o limite inferior do Browse. Apenas devemos

informar conteúdo neste, caso o parâmetro cField seja

especificado.

bChange Code-Block

Ação a ser executada quando alterado o foco entre as

linhas do Browse. Recebe o objeto do Browse como

parâmetro.

bLDblClick Code-Block Ação a ser executada quando executado um dupli-clique

sobre uma célula do Browse.

Param14 (NULO) ( parâmetro reservado )

oFont Objeto Objeto referente à uma fonte alternativa para exibição

dos dados neste Browse.

Param16 (NULO) ( parâmetro reservado )

nClrFore Numérico Cor de escrita dos dados no TWBrowse. Verifique cores

disponíveis no include "colors.ch"

nClrBack Numérico Cor de fundo da área da TWBrowse não preenchida com

dados. Verifique cores disponíveis no include "colors.ch"

Param19 (NULO) ( parâmetro reservado )

Param20 (NULO) ( parâmetro reservado )

cAlias Caracter

Caso o Browse seja realizado sobre uma tabela aberta,

estecifique o alias da tabela a ser utilizada neste

parâmetro.

lPixel Lógico

Caso .T., indica que as coordenadas de tela são

especificadas em PIXELS. Caso contrário, são

coordenadas especificadas em CARACTERES.

Param23 (NULO) ( parâmetro reservado )

Param24 (NULO) ( parâmetro reservado )

Retorno

Tipo Descrição

Objeto Retorna uma nova instância do Objeto da Classe TWBrowse.

Descrição

Contrutor da Classe TWBrowse.

Retorna uma nova instância do Objeto da Classe TWBrowse.

Page 50: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Classes de Janelas

MSDialog

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de diálogo de entrada de dados.

Hierarquia

tSrvObject -> tWindow -> tDialog -> MSDialog

Características

MSDialog deve ser utilizada como padrão de janela para entrada de dados. MSDialog é

um tipo de janela diálogo modal, isto é, não permite que outra janela ativa receba dados

enquanto esta estiver ativa.

Propriedades

Vide classes ancestrais.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anTop], [anLeft], [anBottom], [anRight], [acCaption],

[cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack],

[oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [lPar17])

Parâmetros

Parâmetro Tipo / Descrição

anTop Numérico, opcional. Coordenada vertical superior em

pixels ou caracteres.

anLeft Numérico, opcional. Coordenada horizontal esquerda

em pixels ou caracteres.

Page 51: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

anBotom Numérico, opcional. Coordenada vertical inferior em

pixels ou caracteres.

anRight Numérico, opcional. Coordenada horizontal direita em

pixels ou caracteres.

acCaption Caractere, opcional. Título da janela.

cPar6 Reservado.

nPar7 Reservado.

lPar8 Reservado.

nPar9 Reservado.

anClrText Numérico,opcional. Cor do texto.

anClrBack Numérico,opcional. Cor de fundo.

oPar12 Reservado.

aoWnd Objeto, opcional. Janela mãe da janela a ser criada,

padrão é a janela principal do programa.

alPixel Lógico, opcional. Se .T. considera as coordenadas

passadas em pixels, se .F. considera caracteres.

oPar15 Reservado.

oPar16 Reservado.

nPar17 Reservado.

Retorno O Diálogo criado.

Exemplo

#INCLUDE “protheus.ch”

User Function Teste()

// cria diálogo

Local oDlg:=MSDialog():New(10,10,300,300,”Meu

dialogo”,,,,,CLR_BLACK,CLR_WHITE,,,.T.)

// ativa diálogo centralizado

oDlg:Activate(,,,.T.,{||msgstop(“validou!”),.T.},,{||msgstop(“iniciand

o…”) )

Return

Page 52: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tDialog

Revisão: 24/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de janela de diálogo.

Hierarquia

tSrvObject -> tWindow -> tDialog

Características

Classe de janela de diálogo de entrada de dados, uso reservado, recomenda-se utilizar a

classe MSDialog que é herdada desta classe.

Propriedades

Vide classes ancestrais.

Métodos

New

Descrição Método construtor da classe.

Sintaxe

New([anTop], [anLeft], [anBottom], [anRight], [acCaption],

[cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack],

[oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [nPar17],

[anWidth], [anHeight])

Parâmetros

Parâmetro Tipo / Descrição

anTop Numérico, opcional. Coordenada vertical superior em

pixels ou caracteres.

anLeft Numérico, opcional. Coordenada horizontal esquerda

em pixels ou caracteres.

anBotom Numérico, opcional. Coordenada vertical inferior em

Page 53: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

pixels ou caracteres.

anRight Numérico, opcional. Coordenada horizontal direita em

pixels ou caracteres.

acCaption Caractere, opcional. Título da janela.

cPar6 Reservado.

nPar7 Reservado.

lPar8 Reservado.

nPar9 Reservado.

anClrText Numérico,opcional. Cor do texto.

anClrBack Numérico,opcional. Cor de fundo.

oPar12 Reservado.

aoWnd Objeto, opcional. Janela mãe da janela a ser criada,

padrão é a janela principal do programa.

alPixel Lógico, opcional. Se .T. considera as coordenadas

passadas em pixels, se .F. considera caracteres.

oPar15 Reservado.

oPar16 Reservado.

nPar17 Reservado.

anWidth Numérico, opcional. Largura da janela em pixels.

anHeight Numérico, opcional. Altura da janela em pixels.

Retorno O Diálogo criado.

Activate

Descrição Ativa (exibe) o diálogo. Chamar somente uma vez este método.

Sintaxe Activate([bPar1], [bPar2], [bPar3], [alCentered], [abValid], [lPar6],

[abInit], [bPar8], [bPar9] )

Parâmetros

Parâmetro Tipo / Descrição

bPar1 Reservado.

bPar2 Reservado.

bPar3 Reservado.

alCentered Lógico, opcional. Se .T. exibe a janela centralizada, .F.

é padrão.

abValid

Bloco de código, opcional. Deve retornar .T. se

conteúdo do diálogo é válido, se retornar .F. o diálogo

não fechará quando solicitada de encerrar.

lPar6 Reservado.

abInit Bloco de código, opcional. Executado quando o

diálogo inicia exibição.

Page 54: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

bPar8 Reservado.

bPar9 Reservado.

Retorno NIL

End

Descrição Encerra (fecha) o diálogo.

Sintaxe End( )

Retorno Lógico .T. se o diálogo foi encerrado.

Exemplo

#INCLUDE "PROTHEUS.CH"

User Function Teste()

Local oDlg

// cria diálogo

oDlg := MSDialog():New(10,10,300,300,"Meu

dialogo",,,,,CLR_BLACK,CLR_WHITE,,,.T.)

// ativa diálogo centralizado

oDlg:Activate(,,,.T.,{||msgstop("validou!"),.T.},,{||msgstop("iniciand

o...")} )

/* os comandos abaixo proporcionam o mesmo resultado

// cria diálogo

DEFINE DIALOG oDlg TITLE "Meu dialogo" FROM 10,10 TO 300,300 COLOR

CLR_BLACK,CLR_WHITE PIXEL

// ativa diálogo centralizado

ACTIVATE DIALOG oDlg CENTER ON INIT (msgstop("iniciando...")) VALID

(msgstop("validou!"),.T.)

*/

Return NIL

Page 55: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tWindow

Revisão: 23/02/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Classe de janela principal de programa.

Hierarquia

tSrvObject -> tWindow

Características

Classe de janela principal de programa, deverá existir apenas uma instância deste objeto

na execução do programa.

Propriedades

bInit Bloco de código. Executado quando a janela está sendo exibida.

lEscClose Lógico. Se .T. habilita o <ESC> cancelar a execução da janela.

oCtlFocus Objeto. Objeto contido na janela que está com foco de entrada de dados.

Métodos

New

Descrição Método construtor da janela.

Sintaxe

New( [anTop], [anLeft],[anBottom], [anRight], [acTitle], [nPar6],

[oPar7] ,[oPar8],[oPar9], [aoParent], [lPar11], [lPar12],

[anClrFore], [anClrBack], [oPar15], [cPar16], [lPar17], [lPar18],

[lPar19], [lPar20], [alPixel] );

Parâmetros

Parâmetro Tipo / Descrição

nTop Numérico, opcional. Coordenada vertical superior em

pixels ou caracteres.

nLeft Numérico, opcional. Coordenada horizontal esquerda

em pixels ou caracteres.

Page 56: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

nBottom Numérico, opcional. Coordenada vertical inferior em

pixels ou caracteres.

nRight Numérico, opcional. Coordenada horizontal inferior em

pixels ou caracteres.

cTitle Caractere, opcional. Título da janela.

nPar6 Reservado.

oPar7 Reservado.

oPar8 Reservado.

oPar9 Reservado.

oParent Objeto, opcional. Janela mãe da janela corrente.

lPar11 Reservado.

lPar12 Reservado.

nClrFore Numérico, opcional. Cor de fundo da janela.

nClrText Numérico, opcional. Cor do texto da janela.

oPar15 Reservado.

cPar16 Reservado.

lPar17 Reservado.

lPar18 Reservado.

lPar19 Reservado.

lPar20 Reservado.

lPixel

Lógico, opcional. Se .T. (padrão) considera

coordenadas passadas em pixels, se .F. considera

caracteres.

Retorno Objeto. A janela construída.

Activate

Descrição Ativa (exibe) a janela. Chamar esse método apenas uma vez.

Sintaxe

Activate([acShow], [bPar2], [bPar3], [bPar4], [bPar5], [bPar6], [

abInit ], [bPar8], [bPar9], [bPar10], [bPar11], [bPar12] ,[bPar13],

[bPar14], [bPar15], [abValid], [bPar17], [bPar18] ).

Parâmetros

Parâmetro Tipo / Descrição

acShow Caracter, opcional. “ICONIZED” para janela iconizada

ou “MAXIMIZED” para janela maximizada.

bPar2 Reservado.

bPar3 Reservado.

bPar4 Reservado.

bPar5 Reservado.

bPar6 Reservado.

abInit Bloco de código. Executado quando janela está sendo

exibida.

bPar8 Reservado.

Page 57: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

bPar9 Reservado.

bPar10 Reservado.

bPar11 Reservado.

bPar12 Reservado.

bPar13 Reservado.

bPar14 Reservado.

bPar15 Reservado.

abValid

Bloco de código. Executado quando a janela for

solicitada de fechar. Deverá retornar .T. se o conteúdo

da janela for válido, ou .F. se não. Se o bloco retornar

.F. a janela não fechará.

bPar17 Reservado.

bPar18 Reservado.

Retorno NIL

End

Descrição Solicita encerramento da janela.

Sintaxe End( )

Retorno Lógico. .T. se encerrou a janela e .F. se não.

Center

Descrição Centraliza a janela.

Sintaxe Center( )

Retorno NIL

Exemplo

#INCLUDE "PROTHEUS.CH"

USER FUNCTION Teste()

Local oWindow

Local abInit:= {||conout("ativando!")}

Local abValid:= {||conout("encerrando!"),.T.}

oWindow:= tWindow():New( 10, 10, 200, 200, "Meu

programa",,,,,,,,CLR_WHITE,CLR_BLACK,,,,,,,.T. )

oWindow:Activate("MAXIMIZED",,,,,,abInit,,,,,,,,,abValid,,)

/* os comandos abaixo proporcionam o mesmo resultado

DEFINE WINDOW oWindow FROM 10, 10 TO 200,200 PIXEL TITLE "Meu

programa" COLOR CLR_WHITE,CLR_BLACK

ACTIVATE WINDOW oWindow MAXIMIZED ON INIT abInit VALID abValid

*/

Return NIL

Page 58: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Classes não visuais

Classe TMailManager

Revisão: 09/06/2003

Descrição

A TMailManager é uma classe que tem por finalidade criar conexões em servidores

SMTP ou POP

Metodos

New()

Construtor do objeto.

Init( cPop, cSmtp, cUser, cPass,

nTimeOut, nPor )

Inicia uma nova conexão no servidor

Parametro Descrição

cPop Endereço do servidor POP, no caso de conexão SMTP passe esse como

""(branco).

cSmtp Endereço do servidor SMTP, no caso de conexão POP passe esse como

""(branco).

cUser Login no servidor.

cPass Senha no servidor.

nTimeOut Time out para a conexão.

nPort Porta para se conectar.

Page 59: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

SmtpConnect()

Conecta com o servidor, atraves dos parametros de Init

SetSmtpTimeOut( nTimeOut )

Configura o tempo para que uma conexão estabelecida ao servidor seja finalizada por

time-out

Parametro Descrição

nTimeOut Tempo para que a conexão seja fechada por Time-Out.

SmtpDisconnect()

Disconecta com o servidor SMTP

POPConnect()

Conecta com o servidor, atraves dos parametros de Init

SetPopTimeOut( nTimeOut )

Configura o tempo para que uma conexão estabelecida ao servidor seja finalizada por

time-out

Parametro Descrição

nTimeOut Tempo para que a conexão seja fechada por Time-Out.

GetNumMsgs( @nNumMsg )

Retorna o numero de mensagens que existem no servidor

Parametro Descrição

nNumMsg Parametro passado por referencia, retorna nele o numero de mensagens que

estão no servidor.

Page 60: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

DeleteMsg( nMsg )

Deleta uma mensagem do servidor

Parametro Descrição

nMsg Numero da mensagem a ser deletada.

POPDisconnect()

Disconecta com o servidor POP

Page 61: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:DELETEMSG

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:DELETEMSG ( < nMsg > ) --> Nil

Parâmetros

Argumento Tipo Descrição

nMsg Numérico Numero da mensagem a ser deletada.

Retorno

Tipo Descrição

(NULO) Nil

Descrição

Deleta uma mensagem do servidor

Page 62: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:GETNUMMSGS

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:GETNUMMSGS ( < @nNumMsg > ) --> nRet

Parâmetros

Argumento Tipo Descrição

nNumMsg Numérico Parametro passado por referencia, retorna nele o numero

de mensagens que estão no servidor.

Retorno

Tipo Descrição

Numérico 0 = Lista recebida com sucesso

Descrição

Retorna o numero de mensagens que existem no servidor

Page 63: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:INIT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:INIT ( < cPop > , < cSmtp > , < cUser > , < cPass > , [ nTimeOut ]

, [ nPort ] ) --> Nil

Parâmetros

Argumento Tipo Descrição

cPop Caracter Endereço do servidor POP, no caso de conexão SMTP

passe esse como ""(branco).

cSmtp Caracter Endereço do servidor SMTP, no caso de conexão POP

passe esse como ""(branco)

cUser Caracter Login no servidor.

cPass Caracter Senha no servidor.

nTimeOut Numérico Time out para a conexão.

nPort Numérico Porta para se conectar.

Retorno

Tipo Descrição

(NULO) Nil

Descrição

Inicia uma nova conexão no servidor

Page 64: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:NEW

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:NEW ( ) --> oServer

Retorno

Tipo Descrição

Objeto Construtor do objeto.

Descrição

Construtor do objeto.

Page 65: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:POPCONNECT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:POPCONNECT ( ) --> Nil

Retorno

Tipo Descrição

(NULO) Nil

Descrição

Conecta com o servidor, atraves dos parametros de Init

Page 66: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:POPDISCONNECT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:POPDISCONNECT ( ) --> nRet

Retorno

Tipo Descrição

Numérico 0 = Disconectado

Descrição

Disconecta com o servidor POP

Page 67: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:SETPOPTIMEOUT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:SETPOPTIMEOUT ( < nTimeOut > ) --> nRet

Parâmetros

Argumento Tipo Descrição

nTimeOut Numérico Tempo para que a conexão seja fechada por Time-Out.

Retorno

Tipo Descrição

Numérico 0 = Time out setado

Descrição

Configura o tempo para que uma conexão estabelecida ao servidor seja finalizada por

time-out

Page 68: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:SETSMTPTIMEO

UT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:SETSMTPTIMEOUT ( < nTimeOut > ) --> nRet

Parâmetros

Argumento Tipo Descrição

nTimeOut (NULO) Tempo para que a conexão seja fechada por Time-Out.

Retorno

Tipo Descrição

(NULO) 0 - Time out configurado

Descrição

Configura o tempo para que uma conexão estabelecida ao servidor seja finalizada por

time-out

Page 69: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:SMTPCONNECT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:SMTPCONNECT ( ) --> nRet

Retorno

Tipo Descrição

Numérico 0 - Conectado

Descrição

Conecta com o servidor, atraves dos parametros de Init

Page 70: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMANAGER:SMTPDISCONNE

CT

Revisão: 09/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMANAGER:SMTPDISCONNECT ( ) --> nRet

Retorno

Tipo Descrição

Numérico 0 = Disconectado

Descrição

Disconecta com o servidor SMTP

Page 71: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

TMAILMESSAGE:SEND

Revisão: 14/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Sintaxe

TMAILMESSAGE:SEND ( < oServer > ) --> nRet

Parâmetros

Argumento Tipo Descrição

oServer Caracter Instancia do servidor criado (SMTP).

Retorno

Tipo Descrição

Numérico 0 = E-mail enviado com sucesso

Descrição

Envia o e-mail recebendo como parametro a instancia do servidor criado (SMTP).

Page 72: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

tSocketClient

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Descrição

Esta classe permite estabelecer uma conexão cliente de socket do tipo TCP genérica.

Enviar e receber dados através de uma socket genérico e também pode ser usada como

base para implementação de protocolos não suportados pelo protheus.

Métodos

Método Descrição

CloseConnection Finaliza a conexão TCP genérica (socket ) do objeto corrente.

Connect Estabelece um conexão TCP genérica (socket ).

IsConnected Verifica se existe conexão valida no objeto corrente.

New Cria o objeto tSocketClient, sem conexão ativa.

Receive Recebe os dados pela conexão ativa do objeto, qualquer tipo de

dado pode ser recebido.

Reset Finaliza anormalmente a conexão, não avisa o outro lado que a

conexão será finalizada.

Deve ser utilizado apenas em casos extremos.

Send Transmite o buffer pela conexão TCP Genérica ativa.

Page 73: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

CloseConnection

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

oObj:CloseConnection ( ) --> Nil

Retorno

Tipo Descrição

(NULO) Nil

Descrição

Finaliza a conexão TCP genérica (socket ) do objeto corrente.

Page 74: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Connect

Revisão: 30/06/2003

Sintaxe

oObj:Connect ( < nPorta > , < cIP > , < nTimeout > ) --> nSucesso

Parâmetros

Argumento Tipo Descrição

nPorta Numérico Numero da porta onde a conexão deve ser realizada

cIP Caracter Número IP ou nome do servidor onde a conexão deve ser

realizada

nTimeout Numérico Número em milisegundos que o método deve esperar para

conectar

Retorno

Tipo Descrição

Numérico Retorna 0 (Zero) se conectou com sucesso, diferente de zero se a conexão

falhou.

Descrição

Estabelece um conexão TCP genérica (socket ).

Page 75: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

IsConnected

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

oObj:IsConnected ( ) --> lLogico

Retorno

Tipo Descrição

Lógico Retorna True se a conexão esta ativa e false caso esteja

inválida/desconectado.

Descrição

Verifica se existe conexão valida no objeto corrente.

Page 76: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

New

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

tSocketClient():New ( ) --> oSocket

Retorno

Tipo Descrição

Objeto Retorna um Objeto do tipo tSocketClient

Descrição

Cria o objeto tSocketClient, sem conexão ativa.

Page 77: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Receive

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

oObj:Receive ( < @cBuffer > , < nTimeout > ) --> nQtdRecebida

Parâmetros

Argumento Tipo Descrição

cBuffer Caracter Buffer que conterá os dados a serem recebidos.

nTimeout Numérico tempo em milisegundos que a função receive espera até

receber algum dado pela conexão.

Retorno

Tipo Descrição

Numérico Qtde de bytes recebidos, se houver algum erro nQtdRecebida será menor

que zero.

Descrição

Recebe os dados pela conexão ativa do objeto, qualquer tipo de dado pode ser recebido.

Page 78: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Reset

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

oObj:Reset ( ) --> NIL

Retorno

Tipo Descrição

(NULO) Retorno nulo.

Descrição

Finaliza anormalmente a conexão, não avisa o outro lado que a conexão será finalizada.

Deve ser utilizado apenas em casos extremos.

Page 79: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Send

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Sintaxe

oObj:Send ( [ cBuffer ] ) --> nQtdTrasmitido

Parâmetros

Argumento Tipo Descrição

cBuffer Caracter Buffer com os dados a serem transmitidos pela conexão.

Retorno

Tipo Descrição

Numérico Numero de bytes transmitidos, caso o numero seja diferente do tamanho

de cBuffer, algum erro aconteceu.

Descrição

Transmite o buffer pela conexão TCP Genérica ativa.

Page 80: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da Classe tSocketClient

Revisão: 30/06/2003

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

O Exemplo abaixo exemplifica a utilização de um cliente socket, note que para o

programa funcionar corretamente, deve-se alterar os parametros da conexão.

user function MySocket

Local oObj := tSocketClient():New()

nResp := oObj:Connect( 999, "172.255.255.255", 1000 )

if(nResp == 0 )

Conout( "Conexão OK!" )

else

Conout( "Erro na Conexão OK! ", nResp )

return

endif

cSend = "Ola!!!! Estou transmitindo um dado!"

nResp := oObj:Send( cSend )

if( nResp != len( cSend ) )

conout( "Erro! Dado nao transmitido" )

else

conout( "Dado Enviado" )

endif

cBuffer := ""

nQtd = oObj:Receive( cBuffer, 10000 )

if( nQtd >= 0 )

conout( "Dados Recebidos " + Str( nQtd, 4, 0 ), cBuffer )

else

conout( "Nao recebi nada" )

endif

cSend = "Dados que será transmitido!!!"

nResp := oObj:Send( cSend )

if( nResp != len( cSend ) )

conout( "Erro! Dado nao transmitido" )

else

conout( "Dado Enviado" )

endif

if( oObj:IsConnected() )

conout( "OK! Estou conectado" )

else

conout( "Ops! Nao estou conectado" )

endif

oObj:CloseConnection()

if( !oObj:IsConnected() )

conout( "Desconectei" )

else

conout( "Ainda estou conectado, erro na desconexao" )

endif

return

Page 81: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo de Conexão SMTP

Revisão: 17/09/2003

Abrangência

Versão 6.09 Versão 7.10

No exemplo abaixo , estabelecemos a conexão com um servidor SMTP , utilizando o

comando CONNECT SMTP , obtendo o resultado da conexão , e em caso de falha ,

obtemos maiores detalhes utilizando o comando GET MAIL ERROR.

#INCLUDE "Ap5Mail.ch"

CONNECT SMTP SERVER "200.246.142.66" ;

ACCOUNT "test"

PASSWORD "test1234" ;

RESULT lOk

If lOk

MsgStop("Conexão OK")

Else

GET MAIL ERROR cSmtpError

MsgStop("Erro de conexão : " + cSmtpError)

Endif

Page 82: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo de Envio de e-mail SMTP

Completo

Revisão: 17/09/2003

Abrangência

Versão 6.09 Versão 7.10

No exemplo abaixo , estabelecemos a conexão com um servidor SMTP , utilizando o

comando CONNECT SMTP , obtendo o resultado da conexão , e em caso de falha ,

obtemos maiores detalhes utilizando o comando GET MAIL ERROR . Caso a conexão

seja realizada com sucesso , um e-mail de teste é enviado , tendo também seu starus de

execução recuperado e tratado convenientemente.

#INCLUDE "Ap5Mail.ch"

// Conecta com o Servidor SMTP

CONNECT SMTP SERVER "200.246.142.66" ;

ACCOUNT "test" PASSWORD "test1234" ;

RESULT lOk

If lOk

MsgStop( "Conexão OK" )

SEND MAIL FROM "[email protected]" ;

TO "[email protected];[email protected]" ;

SUBJECT "Teste de e-Mail" ;

BODY "E-MAIL HTML de TESTE" ;

RESUILT lOk

If lOk

MsgStop( "Envio OK" )

Else

GET MAIL ERROR cSmtpError

MsgSTop( "Erro de envio : " + cSmtpError)

Endif

// Desconecta do Servidor

DISCONNECT SMTP SERVER

Else

GET MAIL ERROR cSmtpError

MsgStop( "Erro de conexão : " + cSmtpError)

Endif

Page 83: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função XMLERROR

Revisão: 17/07/2002

Abrangência

Versão 6.09 Versão 7.10

No exemplo abaixo , tratamos a ocorrência de erro de abertuta do Objeto XML

#INCLUDE "XmlXFun.xh"

Local oXml , nXmlStatus

CREATE oXML XMLFILE "\exemplo.xml"

nXmlStatus := XMLError()

If ( nXmlStatus != XERROR_SUCCESS )

Alert("Falha ("+str(nXmlStatus,3)+") na criação do XMLl")

Else

//processamento dop XML ....

Endif

Manutencäo de XML em Advpl

Revisão: 23/05/2003

Abrangência

Versão 6.09 Versão 7.10

No exemplo abaixo , é ilustrada de maneira simples a utilização dos comandos e

funções Advpl para realizarmos manutenções em um arquivo no formato XML. Neste

exemplo , utilizamos a criação do objeto , a criação de novos nodes a partir do modelo

proposto , atribuição de suas propriedades , e geração da String XML final a partir do

Objeto XML .

#INCLUDE "PROTHEUS.CH"

#INCLUDE "XMLXFUN.CH"

Function u_TesteXml()

Local cModelo := ''

Local aLivros := {}

Local cXml := '' , oXml

Local nL , nTotL

// Defino dados dos livros a catalogar

aadd(aLivros , { "000001",;

"Livro Teste" ,;

"John Doe",;

"10/05/2001"})

Page 84: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

aadd(aLivros , { "000002",;

"Livro Ficticeo" ,;

"Mary Brahms",;

"15/05/2001"})

// Crio modelo ( apenas estrutura ) em String

cModelo += '<?xml version="1.0"?>'

cModelo += '<MeuDoc>'

cModelo += '<Livro>'

cModelo += '<Id></Id>'

cModelo += '<Titulo></Titulo>'

cModelo += '<Autor></Autor>'

cModelo += '<Data></Data>'

cModelo += '</Livro>'

cModelo += '</MeuDoc>'

// Crio o Objeto XML , definindo o Livro como Array

CREATE oXML XMLSTRING cModelo ;

SETASARRAY _MeuDoc:_Livro

nXmlStatus := XMLError()

If ( nXmlStatus == XERROR_SUCCESS )

// Caso nao houve nenhum tipo de erro de criação do Objeto

// Calcula o total de Livros e percorre os elementos do array

// para criar os nodes dos livros no XML.

nTotL := len(aLivros)

For nL := 1 to nTotL

If nL > 1

// Apenas acrescento nodes novos caso já tenha realizado a

// primeira volta do looping , que irá atribuir os valores

// do primeiro livro ao node já existente no objeto Xml

ADDNODE oXml:_MeuDoc:_Livro NODE '_Livro' ON oXML

Endif

// Atriblui os dados do livro no objeto Xml

oXml:_MeuDoc:_Livro[nL]:_Id:TEXT := aLivros[nL][1]

oXml:_MeuDoc:_Livro[nL]:_Titulo:TEXT := aLivros[nL][2]

oXml:_MeuDoc:_Livro[nL]:_Autor:TEXT := aLivros[nL][3]

oXml:_MeuDoc:_Livro[nL]:_Data:TEXT := aLivros[nL][4]

Next

// Ao fim do processo , gera a string XML correspondente ao Objeto

SAVE oXml XMLSTRING cXml

// Mostra o XML criado na Tela , usando a função MsgStop

MsgStop(cXml)

Else

MsgStop("Erro ("+str(nXmlStatus,3)+") na criação do XML.")

Endif

Return

Page 85: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função AEVAL

Revisão: 03/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Local aArray := { "Teste" , 123 }

Local bBlock := { |x,y| conout(valtype(x)) , conout(y) }

aEval(aArray,bBlock)

No exemplo acima , criamos um array com 2 elementos : O primeiro é um Caracter , e o

segundo é um número ; e criamos um code-block que receberá em x ( primeiro

parametro fornecido pela função aEval) cada elemento do array , e y ( segundo

parametro fornecido pela aEval ) o número do elemento do array que está sendo

processado nesta execução.

O resultado de tela no console do Protheus Server deverá ser :

Teste // Conteudo do primeiro elemento

C // Tipo do conteudo

1 // Numero do elemento processado

123 // Conteudo do segundo elemento

N // Tipo do Segundo Elemento

2 // Numero do elemento processado

Caso o array passado como parâmetro seja um array multi-Dimensional , serão passados

como parâmetros os arrays de primeiro nivel para o code-BLock.

Vejamos uma aplicação mais complexa : Um array multi-dimensional temos 2colunas ,

uma de código (string) e uma de valor ( numérica ) , e seja necessário realizar um

cálculo de totalização da coluna numérica :

aItens := {}

aadd(aItens,{"Branco",10})

aadd(aItens,{"Preto",15})

aadd(aItens,{"Cinza",12})

// Podemos realizar a totalização pelo metodo tradicional :

nTotal := 0

For nI := 1 to len(aItens)

Page 86: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

nTotal := nTotal + aItens[nI][2]

Next

conout(nTotal) // 37

// Ou utilizando a Funcão aEval :

nTotal := 0

aeval(aItens , {|x| nTotal += x[2] } )

conout(nTotal)

Exemplo da função EVAL

Revisão: 17/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

*** Este exemplo cria um bloco de código que incrementa um número e depois o

avalia:

bBloco := { |nArg| nArg + 1 }

? EVAL(bBloco, 1) // Resulta: 2

*** Este exemplo demonstra como um bloco de código pode ser compilado em tempo

de execuçao utilizando-se o operador macro (&):

bBloco := &("{ |nArg| nArg + 1 }")

? EVAL(bBlock, 1) // Avalia o bloco

Page 87: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função MSCRC32

Revisão: 02/07/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Através do exemplo abaixo , calculamos o CRC das strings informadas.

// Le o arquivo lista.txt no ambiente do servidor

// e calcula o CRC do mesmo.

cString := memoread('\lista.txt')

nCRC1 := MSCRC32(cString)

MsgStop('CRC = '+str(nCRC1,10))

Exemplo da função MSCRC32STR

Revisão: 02/07/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versão 8.11

Através do exemplo abaixo , calculamos o CRC das string informada.

// Le o arquivo lista.txt no ambiente do servidor

// e calcula o CRC32 do mesmo.

cString := memoread('\lista.txt')

cCRC32 := MSCRC32STR(cString)

MsgStop('CRC = ['+cCRC32+']')

Page 88: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função SPLITPATH

Revisão: 05/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , exemplificamos o funcionamento da função SplitPath , usando

combinações de nomes de arquivos com ou sem drive , caminho , nome de arquivo e/ou

extensão.

User Function TSTSplit()

Local aArq := {} , cDrive, cDir, cNome, cExt

aadd(aArq,'c:\path\arquivo.ext')

aadd(aArq,'c:\path\arquivo')

aadd(aArq,'c:\path\')

aadd(aArq,'c:\arquivo')

aadd(aArq,'\path\arquivo.ext')

aadd(aArq,'path\arquivo')

aadd(aArq,'\\servidor\pasta\')

aadd(aArq,'\\servidor\pasta\arquivo.ext')

aadd(aArq,'')

For nI := 1 to len(aArq)

SplitPath( aArq[nI], @cDrive, @cDir, @cNome, @cExt )

conout( aArq[nI] + ' ['+cDrive+'] ['+ cDir +'] ['+ cNome +'] ['+

cExt + ']')

Next

Após executado o programa acima, deve ser exibido no console do Protheus Server o

texto abaixo :

c:\path\arquivo.ext [c:] [\path\] [arquivo] [.ext]

c:\path\arquivo [c:] [\path\] [arquivo] []

c:\path\ [c:] [\path\] [] []

c:\arquivo [c:] [\] [arquivo] []

\path\arquivo.ext [] [\path\] [arquivo] [.ext]

path\arquivo [] [path\] [arquivo] []

\\servidor\pasta\ [] [\\servidor\pasta\] [] []

\\servidor\pasta\arquivo.ext [] [\\servidor\pasta\] [arquivo] [.ext]

[] [] [] []

Page 89: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função HTTPGET

Revisão: 27/01/2004

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

No exemplo abaixo, solicitamos a um servidor http o conteúdo de uma página, e a

chamada de uma página .asp passando parâmetros via GET

// Buscar página

cHtmlPage := Httpget('http://www.servidor.com.br/pageteste.htm')

// Chamar página passando parâmetros

cHtmlPage :=

Httpget('http://www.servidor.com.br/funteste.asp?Id=123&Nome=Teste')

// ou

cHtmlPage :=

Httpget('http://www.servidor.com.br/funteste.asp','Id=123&Nome=Teste')

Page 90: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função

HTTPLOGONUSER()

Revisão: 27/01/2004

Abrangência

Versão 6.09 Versão 7.10 Versão 8.11

Através da função httplogonuser() , quando utilizamos o Protheus Server como DLL

ISAPI, juntamente com o IIS, se e somente se desabilitado o acesso anônimo ào site , a

função retornará uma string contendo o login do usuário.

A função funciona tanto com links .apl como links .apw.

Observação : Caso esta função seja chamada via Job , Remote , ou com o Protheus

Server HTTP sendo executado como Console ou Serviço , sem usar a .dll ISAPI , a

função sempre retornará uma string em branco.

User function TstUsrLogin()

Local cLogin := HttpLogonUser()

IF empty(cLogin)

conout("USuario nao identificado")

Else

conout("USuario : "+cLogin)

Endif

Return "

"+cLogin+"

"

Page 91: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da Função Directory

Revisão: 09/07/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versão 8.11

Através do exemplo abaixo , obtemos no array aDirectory todos os diretórios no

ambiente do servidor a partir do path atual.

#INCLUDE "Directry.ch"

aDirectory := DIRECTORY("*.*","D")

AEVAL( aDirectory, {|aFile| CONOUT(aFile[F_NAME])} )

Exemplo da Função MSCOMPRES

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

// Exemplo 1 à Compacta apenas um arquivo

lRes := MSCOMPRESS( "AP6SRV.EXE", "AP6SRV.MZP" )

// Exemplo 2 à Compacta um diretório com senha

aNome := {}

ADIR( "*.DBF", aNome )

lRes := MSCOMPRESS( aNome, "ArqComp.MZP", "SENHA" )

Page 92: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ADIR

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo cria um vetor que conterá os nomes de todos os arquivos (.txt) no

diretório DEFAULT corrente, e os relaciona no console utilizando a funçao AEVAL() :

LOCAL aFiles[ADIR("*.TXT")]

ADIR("*.TXT", aFiles)

AEVAL(aFiles, { |element| conout(element) })

*** Vale lembrar que ADIR() é uma funçao de compatibilidade e portanto

desaconselhada. Ele está superado pela funçao DIRECTORY(), que retorna todas

as informaçoes de arquivo em um vetor multi-dimensional. ***

Exemplo da função CURDIR

Revisão: 28/04/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , conferimos o path atual e tentamos setar um novo path atual ,

verificando se a operação foi realizada com sucesso.

cOldDir := curdir()

cNewDir := '\webadv\xis'

curdir(cNewDir) // Troca o path

If cNewDir <> '\'+curdir() // E verifica se trocou mesmo

conout('Falha ao Trocar de Path de '+cOldDir + ' para '+cNewDir)

Else

conout('Path de '+cOldDir + ' trocado para '+cNewDir+' com

sucesso.')

Endif

Page 93: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DIRREMOVE

Revisão: 01/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , executado a partir do Protheus Remoite , tentamos excluir a pasta

c:\TmpFiles , verificando se houve sucesso nesta operação.

cDelPath := 'c:\TmpFiles'

lRemoveOk := DIRREMOVE(cDelPath)

IF !lRemoveOk

MsgStop('Falha ao remover a pasta '+cDelPath+' ( File Error

'+str(Fewrror(),4)+' ) ')

Else

MsgStop('Pasta '+cDelPath+' removida com sucesso.')

Endif

Page 94: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DISKSPACE

Revisão: 01/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , obtemos os espaços em disco da unidade de disco da estação local

e do drive A: da estação local, verificando se houve sucesso na operação.

nBytesLocal := DISKSPACE( ) // Retorna o espaço disponivel na unidade

de disco local ( remote ).

IF nBytesLocal < 1048576

MsgStop('Unidade de Disco local possui menos de 1 Mb livre.')

Else

MsgStop('Unidade de disco local possui '+str(nBytes_A,12)+' bytes

livres.')

Endif

nBytes_A := DISKSPACE( 1 ) // Retorna o espaço disponivel no drive A:

local ( remote ).

If nBytes_A == -1

MsgStop('Unidade A: não está disponível ou não há disco no Drive')

ElseIf nBytes_A < 8192

MsgStop('Não há espaço disponível no disco. Substitua o disco na

Unidade A:')

Else

MsgStop('Unidade A: Verificada . '+str(nBytes_A,12)+' bytes

livres.')

Endif

Page 95: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função FERASE

Revisão: 01/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

// Este exemplo apaga todos os arquivos .BAK do diretório corrente no Servidor

#include 'DIRECTRY.CH'

aEval(Directory("*.BAK"), { |aFile| FERASE(aFile[F_NAME]) })

// Este exemplo apaga um arquivo no cliente ( Remote ) , informando o status da

operação

IF FERASE("C:\ListaTXT.tmp") == -1

MsgStop('Falha na deleção do Arquivo ( FError'+str(ferror(),4)+

')')

Else

MsgStop('Arquivo deletado com sucesso.')

ENDIF

Page 96: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função FILE

Revisão: 04/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Nos exemplos abaixo , testamos a existência de um determinado arquivo na estação

local e no diretório definido como RootPath do ambiente (Environment) no Servidor.

FILE("teste.dbf") // Verifica no diretório corrente do servidor se

existe o arquivo teste.dbf

FILE("\SIGAADV\TESTE.dbf") // Verifica no diretório Sigaadv do

servidor se existe o arquivo teste.dbf

FILE("C:\TEMP\TESTE.dbf") // // Verifica no diretório Temp do cliente

(Remote) se existe o arquivo teste.dbf

Observação : Caso a função File() seja executada em Job ( programa sem interface

remota ) , sendo passado um caminho absoluto de arquivo ( exemplo c:\teste.txt) , a

função retornará .F. e FERROR() retornará -1 )

Page 97: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função FOPEN

Revisão: 05/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , tentamos abrir o arquivo error.log para escrita e gravação

compartilhada.

#include 'fileio.ch'

...

nH := fopen('\sigaadv\error.log' , FO_READWRITE + FO_SHARED )

If nH == -1

MsgStop('Erro de abertura : FERROR '+str(ferror(),4))

Else

MsgStop('Arquivo aberto com sucesso.')

...

fclose(nH)

Endif

...

Page 98: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função FRENAME

Revisão: 05/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Nos exemplos abaixo , citamos 3 usos da função frename : Renomear arquivos na

estação Cliente , no Server , e mover arquivos de uma pasta no Client para outra pasta.

// Renomeando um arquivo no Client de origem.txt para destino.txt , na

pasta c:\Temp

nStatus1 := frename('c:\Temp\Origem.txt' , 'c:\Temp\Destino.txt' )

IF nStatus1 == -1

MsgStop('Falha na operação 1 : FError '+str(ferror(),4))

Endif

// Renomeando um arquivo no Server, na pasta sigaadv , de error.log

para error.old

nStatus2 := frename('\sigaadv\error.log' , '\sigaadv\error.old' )

IF nStatus2 == -1

MsgStop('Falha na operação 2 : FError '+str(ferror(),4))

Endif

// Movendo um arquivo no client , da pasta Raiz para a pasta c:\Temp ,

alterando também o nome do arquivo.

nStatus3 := frename('c:\Lista.txt','c:\Temp\OldLista.txt')

IF nStatus3 == -1

MsgStop('Falha na operação 3 : FError '+str(ferror(),4))

Endif

Page 99: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função FWRITE

Revisão: 27/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo realiza uma cópia de um arquivo Texto chamado ORIGEM.TXT , para

um arquivo chamado DESTINO.TXT , no ambiente do Protheus Server.

#INCLUDE "FILEIO.CH"

#DEFINE F_BLOCK 1024 // Define o bloco de Bytes a serem lidos

/ gravados por vez

User Function TestCopy()

Local cBuffer := SPACE(F_BLOCK)

Local nHOrigem , nHDestino

Local nBytesLidos , nBytesFalta , nTamArquivo

Local nBytesLer , nBytesSalvo

Local lCopiaOk := .T.

// Abre o arquivo de Origem

nHOrigem := FOPEN("ORIGEM.TXT", FO_READ)

// Testa a abertura do Arquivo

If nHOrigem == -1

MsgStop('Erro ao abrir origem. Ferror =

'+str(ferror(),4),'Erro')

Return .F.

Endif

// Determina o tamanho do arquivo de origem

nTamArquivo := Fseek(nHOrigem,0,2)

// Move o ponteiro do arquivo de origem para o inicio do arquivo

Fseek(nHOrigem,0)

// Cria o arquivo de destino

nHDestino := FCREATE("DESTINO.TXT", FC_NORMAL)

// Testa a criação do arquivo de destino

If nHDestino == -1

MsgStop('Erro ao criar destino. Ferror =

'+str(ferror(),4),'Erro')

FCLOSE(nHOrigem) // Fecha o arquivo de Origem

Return .F.

Endif

// Define que a quantidade que falta copiar é o próprio tamanho do

Arquivo

nBytesFalta := nTamArquivo

// Enquanto houver dados a serem copiados

While nBytesFalta > 0

Page 100: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

// Determina quantidade de dados a serem lidos

nBytesLer := Min(nBytesFalta , F_BLOCK )

// lê os dados do Arquivo

nBytesLidos := FREAD(nHOrigem, @cBuffer, nBytesLer )

// Determina se não houve falha na leitura

If nBytesLidos < nBytesLer

MsgStop( "Erro de Leitura da Origem. "+;

Str(nBytesLer,8,2)+" bytes a

LER."+;

Str(nBytesLidos,8,2)+" bytes

Lidos."+;

"Ferror =

"+str(ferror(),4),'Erro')

lCopiaOk := .F.

Exit

Endif

// Salva os dados lidos no arquivo de destino

nBytesSalvo := FWRITE(nHDestino, cBuffer,nBytesLer)

// Determina se não houve falha na gravação

If nBytesSalvo < nBytesLer

MsgStop("Erro de gravação do Destino. "+;

Str(nBytesLer,8,2)+" bytes a

SALVAR."+;

Str(nBytesSalvo,8,2)+" bytes

gravados."+;

"Ferror =

"+str(ferror(),4),'Erro')

lCopiaOk := .F.

EXIT

Endif

// Elimina do Total do Arquivo a quantidade de bytes copiados

nBytesFalta -= nBytesLer

Enddo

// Fecha os arquivos de origem e destino

FCLOSE(nHOrigem)

FCLOSE(nHDestino)

If lCopiaOk

MsgStop('Cópia de Arquivos finalizada com sucesso. '+;

str(nTamArquivo,12,0)+' bytes

copiados.','Final')

Else

MsgStop( 'Falha na Cópia. Arquivo de Destino incompleto. '+;

'Do total de '+str(nTamArquivo,12,0)+'

bytes, faltaram '+str(nBytesFalta,12,0)+' bytes.','Final')

Endif

Return

Page 101: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função GetClientDir()

Revisão: 04/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , obtemos o drive e diretório onde estão instalados o Remote .

MsgStop('Protheus Remote instalado em '+ GetClientDir())

Exemplo das funções IsSrvUnix e

GetRemoteIniName

Revisão: 12/06/2003

Abrangência

Versão 6.09 Versão 7.10

Através do exemplo abaixo, podemos obter o path de execução do AP Remote.

#include "protheus.ch"

Function TstRmtPath()

Local cIniName:= GetRemoteIniName()

Local lUnix:= IsSrvUnix()

Local nPos:= Rat( IIf(lUnix,"/","\"),cIniName )

Local cPathRmt

if nPos!=0

cPathRmt:= Substr( cIniName,1,nPos-1 )

else

cPathRmt:=""

endif

QOut( cPathRmt )

Return

Page 102: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ALIAS

Revisão: 25/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

No exemplo abaixo , determinamos qual a area de trabalho está atualmente em uso.

cAlias := alias()

IF empty(cAlias)

alert('Não há Area em uso')

Else

alert(Area em uso atual : '+cAlias)

Endif

Exemplo da função DBAppend

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar o dbappend liberando e mantendo

bloqueios anteriores.

USE Clientes NEW

FOR i:=1 to 5

DBAPPEND(.F.)

NOME := "XXX"

END : ="YYY"

NEXT

// Os 5 registros incluídos permanecem bloqueados

DBAPPEND()

// Todos os bloqueios anteriores são liberados

Page 103: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DBClearAllFilter

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar DBCLEARALLFILTER para limpar a

expressão de filtro.

USE Clientes NEW

DBSETFILTER( {|| Idade < 40}, "Idade < 40") // Seta a expressão de

filtro

...

DBCLEARALLFILTER()

// Limpa a expressão de filtro de todas as ordens

Exemplo da função DBClearFilter

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar DBCLEARFILTER para limpar a

expressão de filtro.

USE Clientes NEW

DBSETFILTER( {|| Idade < 40}, "Idade < 40" ) // Seta a expressão de

filtro

...

DBCLEARFILTER()

// Limpa a expressão de filtro

Page 104: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DBClearIndex

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar a função DBCLEARINDEX para fechar

os índices.

USE Clientes NEW

DBSETINDEX("Nome") // Abre o arquivo de índice "Nome"

...

DBCLEARINDEX()

// Fecha todos os arquivos de índices

Exemplo da função DBCloseAll

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar o DBCLOSEALL para fechar todas as

áreas de trabalho abertas.

USE Clientes NEW

DBSETINDEX("Nome") // Abre o arquivo de índice "Nome"

USE Fornecedores NEW

DBSETINDEX("Idade") // Abre o arquivo de índice "Idade"

...

DBCLOSEALL() //Fecha todas as áreas de trabalho e todos os índices

associados a elas.

Page 105: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DBCloseArea

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar o DBCLOSEAREA para fechar a área

de trabalho atual.

USE Clientes NEW

DBSETINDEX("Nome") // Abre o arquivo de índice "Nome"

...

DBCLOSEAREA()

// Fecha a área de trabalho atual

Exemplo da função DBSTRUCT

Revisão: 08/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra como se pode utilizar o DBSTRUCT para recuperar a estrutura

da tabela corrente.

USE Cliente NEW

DBSTRUCT()

//Retorna:{{Cod,N,3,0},{Nome,C,10,0},{Idade,N,3,0},{Nasc,D,8,0},{Pagto

,N,7,2}}

Page 106: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DBSkip

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo mostra como o DBSKIP pode passar do final da tabela e do início da

tabela

DBUSEAREA( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )

DBGOBOTTOM()

EOF() // retorna .F.

DBSKIP()

EOF() // retorna .T.

DBGOTOP()

BOF() // retorna .F.

DBSKIP(-1)

BOF() // retorna .T.

Exemplo da função DBUnlock

Revisão: 08/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo mostra como liberar todos os registros bloqueados da tabela corrente.

// Driver "DBFCDXADS" utiliza ACE para abertura do arquivo

DBUSEAREA( .T.,"DBFCDXADS", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )

DBRLock()

....

DBUNLOCK()

Page 107: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função HEADER

Revisão: 03/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo define uma pseudo-funçao, DbfSize(), que utiliza HEADER() juntamente

com RECSIZE() e LASTREC() para calcular o tamanho do arquivo de banco de dados

corrente em bytes:

#define DbfSize() ((RECSIZE() * LASTREC()) + HEADER() + 1)

Depois, você pode utilizar DbfSize() como se fosse qualquer outra funçao:

USE Sales NEW

USE Customer NEW

? DbfSize()

? Sales->(DbfSize())

Exemplo da função USED

Revisão: 09/07/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versão 8.11

Versões Anteriores

O exemplo abaixo determina se um arquivo de banco de dados em use na área de

trabalho corrente:

USE Customer NEW

conout(USED()) // Resulta: .T.

CLOSE

conout(USED()) // Resulta: .F.

Page 108: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo de função DBUnlockAll

Revisão: 08/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo mostra como liberar todos os registros bloqueados da tabela corrente.

DBUSEAREA( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )

DBRLock()

...

DBUNLOCKALL()

Page 109: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DTOC

Revisão: 13/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Os exemplos a seguir demonstram utilizaçoes gerais de DTOC():

conout( DATE() ) // Resulta: 09/01/90

conout( DTOC(DATE()) ) // Resulta: 09/01/90

conout( "Hoje e " + DTOC(DATE()) ) // Resulta: Hoje e 09/01/90

Exemplo da função DTOS

Revisão: 13/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Os exemplos a seguir ilustram DTOS() em conjunto com várias outras funçoes:

conout( DATE() ) // Resulta: 09/01/90

conout( DTOS(DATE()) ) // Resulta: 19900901

conout( LEN(DTOS(CTOD(""))) ) // Resulta: 8

Este exemplo demonstra como criar um índice com uma data

composta e chave de caractere utilizando DTOS():

Page 110: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função GETIMPWINDOWS

Revisão: 05/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo , determinamos as impressoras disponíveis na estação Remote e no

Server , respectivamente. E , mostramos no Console do Server a(s) impressora(s)

encontrada(s).

aImpRemote := GetImpWindows(.F.)

conout('Impressoras na estação remota')

aeval(aImpRemote , { |x| conout(x) })

aImpServer := GetImpWindows(.T.)

conout('Impressoras no Servidor')

aeval(aImpServer , { |x| conout(x) })

Exemplo da função GETPORTACTIVE

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No exemplo abaixo, determinamos as portas de impressão disponíveis na estação

Remote e no Server, respectivamente. E mostramos no Console do Server a(s) porta(s)

encontrada(s).

aPortRemote := GetPortActive(.F.)

conout('Impressoras na estação remota')

aeval(aPortRemote , { |x| conout(x) })

aPortServer := GetPortActive(.T.)

conout('Impressoras no Servidor')

aeval(aPortServer , { |x| conout(x) })

Veja abaixo um exemplo do que foi mostrado no console do Protheus Server, apos a

execução da rotina.

Impressoras na estação remota

COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:\\prnserver\prx-lp1

Impressoras no Servidor

COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:

Page 111: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DESCEND

Revisão: 08/09/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo utiliza DESCEND() em uma expressao INDEX para criar um índice de

datas de ordem descendente:

USE Sales NEW

INDEX ON DESCEND(DTOS(OrdDate)) TO SalesDate

Depois, DESCEND() pode ser utilizado para fazer uma pesquisa (SEEK) no índice

descendente:

DbSEEK(DESCEND(DTOS(dFindDate)))

Observação : Faz-se necessária a conversão da Data para String m através da

função DTOS(), pois a função DESCEND apenas trabalha com Strings.

Page 112: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da Função DAY

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Os exemplos seguintes mostram a funçao DAY() sendo utilizada

de diversas maneiras:

conout( DATE() ) // Resulta: 09/01/90

conout( DAY(DATE()) ) // Resulta: 1

conout( DAY(DATE()) + 1) // Resulta: 2

conout( DAY(CTOD("")) ) // Resulta: 0

Este exemplo utiliza DAY() em conjunto com CMONTH() e YEAR()

para formatar um valor do tipo data:

conout( CMONTH(DATE()) + STR(DAY(DATE())) +;

"," + STR(YEAR(DATE())) ) // Resulta: June 15, 1990

Page 113: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da Função MONTH

Revisão: 22/09/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Estes exemplos ilustram o retorno do mês da data do sistema:

conout( DATE() ) // Resulta: 09/01/90

conout( MONTH(DATE()) ) // Resulta: 9

conout( MONTH(DATE()) + 1 ) // Resulta: 10

Este exemplo demonstra a funçao MONTH() atuando em uma data nula:

conout( MONTH(CTOD("")) ) // Resulta: 0

Page 114: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da funcão CDOW

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Os exemplos a seguir ilustram o funcionamento da funçao CDOW():

conout( DATE() ) // Resulta: 08/04/02

conout( CDOW(DATE()) ) // Resulta: Sunday

conout( CDOW(DATE() + 7) ) // Resulta: Sunday

conout( CDOW(CTOD("12/06/90")) ) // Resulta: Thursday

Page 115: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função CMONTH

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Os exemplos seguintes ilustram a utilizaçao da funçao CMONTH():

conout( CMONTH(DATE()) ) //

Resulta: August

conout( CMONTH(DATE() + 45) ) //

Resulta: September

conout( SUBSTR(CMONTH(DATE()), 1, 3) + STR(DAY(DATE()),3)) //

Resulta: Aug 4

Page 116: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DATE

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Os exemplos seguintes mostram a função DATE() utilizada de várias maneiras:

conout( DATE() ) // Resulta: 08/04/02

conout( DATE() + 30 ) // Resulta: 09/03/02

conout( DATE() - 30 ) // Resulta: 07/05/02

dDate = DATE()

conout( CMONTH(dDate) ) // Resulta: August

Page 117: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função DOW

Revisão: 07/05/2003

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Os exemplos a seguir ilustram CDOW() e seu relacionamento com DOW():

conout( DATE() ) // Resulta: 09/01/89

conout( DOW(DATE()) ) // Resulta: 3

conout( CDOW(DATE()) ) // Resulta: Terca-feira

conout( DOW(DATE() - 2) ) // Resulta: 1

conout( CDOW(DATE() - 2) ) // Resulta: Domingo

Page 118: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ElapTime()

Revisão: 08/09/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo utiliza a função ElapTime() para calcular o tempo necessário para um

determinado processamento.

cHoraInicio := TIME() // Armazena hora de inicio do processamento

.

. <instrucoes>

.

cElapsed := ELAPTIME(TIME(),cHoraInicio) // Calcula a diferença de

tempo

Considerando o exemplo acima, caso cHoraInicio seja 23:45:00 , e a hora final do

processamento seja 00:20:00 , a diferença entre eles , computada na variável cElapsed,

será 00:15:00 .

Page 119: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função TIME

Revisão: 19/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Estes exemplos mostram a função TIME() utilizada em conjunto com SUBSTR()

para extrair a hora, os minutos e os segundos:

cTime := TIME() // Resultado: 10:37:17

cHora := SUBSTR(cTime, 1, 2) // Resultado: 10

cMinutos := SUBSTR(cTime, 4, 2) // Resultado: 37

cSegundos := SUBSTR(cTime, 7, 2) // Resultado: 17

Page 120: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função YEAR

Revisão: 13/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Os exemplos a seguir ilustram YEAR() usando a data do

sistema:

conout( DATE() ) // Resulta: 09/01/90

conout( YEAR(DATE()) ) // Resulta: 1990

conout( YEAR(DATE()) + 11 ) // Resulta: 2001

Este exemplo cria uma funçao definida pelo usuário usando

YEAR() para formatar um valor data na forma : mês dia, ano:

conout( U_Mdy(DATE()) ) // Resulta: September 20,

1990

USER FUNCTION Mdy( dDate )

Return CMONTH(dDate) + " " + LTRIM(STR(DAY(dDate)));

+ "," + STR(YEAR(dDate))

Page 121: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exempo da função Seconds()

Revisão: 09/10/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo compara o valor de TIME() com o de SECONDS():

conout( TIME() ) // Resulta: 10:00:00

conout( SECONDS() ) // Resulta: 36000.00

Este exemplo demonstra como utilizar SECONDS() para informar o tempo decorrido

em segundos:

LOCAL nStart, nElapsed

nStart = SECONDS()

.

. <processamentos...etc....>

.

nElapsed = SECONDS() - nStart

conout( "Decorridos: " + LTRIM(STR(nElapsed)) + " segundos" )

Page 122: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função AADD

Revisão: 06/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Os exemplos a seguir demonstram os efeitos de chamadas múltiplas da função AADD()

para um vetor:

aArray := {} // Resulta: aArray e um vetor vazio

AADD(aArray, 5) // Resulta: aArray e { 5 }

AADD(aArray, 10) // Resulta: aArray e { 5, 10 }

AADD(aArray, { 12, 10 }) // Resulta: aArray e { 5, 10, { 12, 10 }

}

Exemplo da função ACOPY

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo cria dois vetores, cada um deles preenchido com um valor. Os dois

primeiros elementos do vetor fonte sao entao copiados para o vetor destino:

LOCAL nCount := 2, nStart := 1, aOne, aTwo

aOne := { 1, 1, 1 }

aTwo := { 2, 2, 2 }

ACOPY(aOne, aTwo, nStart, aCont) // Resulta: aTwo e agora { 1, 1, 2

}

Page 123: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ADEL

Revisão: 17/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Este exemplo cria um vetor constante de três elementos, e depois

elimina o segundo elemento. O terceiro elemento sobe uma posiçao, e ao

novo terceiro elemento é atribuido NIL:

LOCAL aArray

aArray := { 1, 2, 3 } // Resulta: aArray e agora { 1, 2, 3 }

ADEL(aArray, 2) // Resulta: aArray e agora { 1, 3, NIL

}

Exemplo da função AEVAL

Revisão: 17/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo utiliza AEVAL() para fazer uma lista que consiste em itens selecionados

de um vetor multi-dimensional.

LOCAL aFiles := DIRECTORY("*.dbf"), aNames := {}

AEVAL(aFiles, { | file | AADD(aNames, file[1]) } )

Page 124: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função AFILL

Revisão: 17/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Neste exemplo, é criado um vetor com três elementos. O vetor é depois preenchido com

falso (.F.). Ao final, aos elementos nas posiçoes dois e três é atribuido o novo valos de

verdadeiro (.T.):

LOCAL aLogic[3] // Resulta: aLogic e { NIL, NIL, NIL }

AFILL(aLogic, .F.) // Resulta: aLogic e { .F., .F., .F. }

AFILL(aLogic, .T., 2, 2) // Resulta: aLogic e { .F., .T., .T. }

Exemplo da função AINS

Revisão: 17/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo demonstra o efeito da utilização de AINS() em um vetor:

LOCAL aArray

aArray := { 1, 2, 3 } // Resulta: aArray e agora { 1, 2, 3 }

AINS(aArray, 2) // Resulta: aArray e agora { 1, NIL, 2

}

Page 125: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ARRAY

Revisão: 26/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

Este exemplo cria um vetor unidimensional de cinco elementos utilizando a funçao

ARRAY(), e depois exibe a açao equivalente atribuindo um vetor literal de valores NIL:

aArray := ARRAY(5)

aArray := { NIL, NIL, NIL, NIL, NIL }

Este exemplo ilustra três declaraçoes diferentes que criam o mesmo vetor multi-

dimensional:

aArray := ARRAY(3, 2)

aArray := { {NIL, NIL}, {NIL, NIL}, {NIL, NIL} }

aArray := { ARRAY(2), ARRAY(2), ARRAY(2) }

Page 126: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ASCAN

Revisão: 26/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10 Versões Anteriores

O exemplo a seguir demonstra a pesquisa em um vetor de três elementos utilizando

valores simples e um bloco de código como critérios de pesquisa. Os critérios do bloco

de código ilustram como executar uma pesquisa que nao faz diferenciaçao entre

maiúsculas e minúsculas:

aArray := { "Tom", "Mary", "Sue" }

? ASCAN(aArray, "Mary") // Resulta: 2

? ASCAN(aArray, "mary") // Resulta: 0

? ASCAN(aArray, { |x| UPPER(x) == "MARY" }) // Resulta: 2

O Exemplo abaixo demonstra como continuar a pesquisa dos múltiplos tipos de um

argumento de pesquisa após ter sido encontrada uma correspondência:

LOCAL aArray := { "Tom", "Mary", "Sue", "Mary" }, nStart := 1

// Pegar ultima posicao de elemento de vetor

nAtEnd := LEN(myVetor)

While (nPos := ASCAN(aArray, "Mary", nStart)) > 0

? nPos, aArray[nPos]

// Pegar nova posicao inicial e testar condicao de limite

If (nStart := ++nPos) > nAtEnd

EXIT

EndIf

EndDo

Page 127: A Linguagem AdvPl - helpfacil.comhelpfacil.com/FORUM/anexo/Advpl - A Linguagem.pdf · A Linguagem AdvPl Revisão: 09/06/2003 A Linguagem AdvPl teve seu início em 1994, sendo na verdade

Exemplo da função ASIZE

Revisão: 17/07/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

Estes exemplos demonstram a adição de novos elementos e a eliminação de elementos

existentes:

aArray := { 1 } // Resulta: aArray e { 1 }

ASIZE(aArray, 3) // Resulta: aArray e { 1, NIL, NIL }

ASIZE(aArray, 1) // Resulta: aArray e { 1 }

Exemplo da função ASORT

Revisão: 04/08/2002

Abrangência

Versão 5.07 Versão 5.08 Versão 6.09 Versão 7.10

No Exemplo abaixo , ordenamos um array em ordem crescenter , depois em ordem

decrescente através de um code-block .

Local aArray := { 3, 5, 1, 2, 4 }

ASORT(aArray) // Resultado: { 1, 2, 3, 4, 5 }

ASORT(aArray,,,{ |x, y| x > y }) // Resultado: { 5, 4, 3, 2, 1 }

No Exemplo abaixo , utilizamos na expressão de ordenação a função upper() , para

ordenar o array em ordem alfabérica independentemente da informação estar em letras

maiúsculas e/ou minusculas.

aArray := { "Fred", Kate", "ALVIN", "friend" }

ASORT(aArray,,, { |x, y| UPPER(x) < UPPER(y) })

No exemplo abaixo , montamos um code-block para ordenação de um array multi-

dimensional , para ordenar o array em ordem crescente do segundo elemento da

dimensão.

aKids := { {"Mary", 14}, {"Joe", 23},{"Art", 16} }

aSortKids := ASORT(aKids,,, { |x, y| x[2] < y[2] })

// Resultado : { {"Mary", 14}, {"Art", 16}, {"Joe",23} }