Você está na página 1de 133

A Linguagem AdvPl

Reviso: 09/06/2003

A Linguagem AdvPl teve seu incio em 1994, sendo na verdade uma evoluo na
utilizao de linguagens no padro xBase pela Microsiga Software S.A. (Clipper, Visual
Objects e depois FiveWin). Com a criao da tecnologia Protheus, era necessrio criar
uma linguagem que suportasse o padro xBase para a manuteno de todo o cdigo
existente do sistema de ERP Siga Advanced. Foi ento criada a linguagem chamada
Advanced Protheus Language.
O AdvPl uma extenso do padro xBase de comandos e funes, operadores,
estruturas de controle de fluxo e palavras reservadas, contando tambm com funes e
comandos disponibilizados pela Microsiga que a torna uma linguagem completa para a
criao de aplicaes ERP prontas para a Internet. Tambm uma linguagem orientada
a objetos e eventos, permitindo ao programador desenvolver aplicaes visuais e criar
suas prprias classes de objetos.
Quando compilados, todos os arquivos de cdigo tornam-se unidades de inteligncia
bsicas, chamados APOs (de Advanced Protheus Objects). Tais APOs so mantidos
em um repositrio e carregados dinamicamente pelo Protheus Server para a execuo.
Como no existe a linkedio, ou unio fsica do cdigo compilado a um determinado
mdulo ou aplicao, funes criadas em AdvPl podem ser executadas em qualquer
ponto do ambiente Advanced Protheus.
O compilador e o interpretador da linguagem AdvPl o prprio servidor Protheus
(Protheus Server), e existe um ambiente visual para desenvolvimento integrado
(Protheus IDE) onde o cdigo pode ser criado, compilado e depurado.
Os programas em AdvPl podem conter comandos ou funes de interface com o
usurio. De acordo com tal caracterstica, tais programas so subdivididos nas seguintes
categorias:

Programao Com Interface Prpria com o Usurio


Nesta categoria entram os programas desenvolvidos para serem executados atravs do
terminal remoto do Protheus, o Protheus Remote. O Protheus Remote a aplicao
encarregada da interface e da interao com o usurio, sendo que todo o processamento
do cdigo em AdvPl, o acesso ao banco de dados e o gerenciamento de conexes
efetuado no Protheus Server. O Protheus Remote o principal meio de acesso a
execuo de rotinas escritas em AdvPl no Protheus Server, e por isso permite executar
qualquer tipo de cdigo, tenha ele interface com o usurio ou no. Porm nesta
categoria so considerados apenas os programas que realizem algum tipo de interface
remota utilizando o protocolo de comunicao do Protheus.
Pode-se criar rotinas para a customizao do sistema ERP Advanced Protheus, desde

processos adicionais at mesmo relatrios. A grande vantagem aproveitar todo o


ambiente montado pelos mdulos do ERP Advanced Protheus. Porm, com o AdvPl
possvel at mesmo criar toda uma aplicao, ou mdulo, do comeo.
Todo o cdigo do sistema ERP Advanced Protheus escrito em AdvPl.

Programao Sem Interface Prpria com o Usurio


As rotinas criadas sem interface so consideradas nesta categoria porque geralmente
tm uma utilizao mais especfica do que um processo adicional ou um relatrio novo.
Tais rotinas no tm interface com o usurio atravs do Protheus Remote, e qualquer
tentativa nesse sentido (como a criao de uma janela padro) ocasionar uma exceo
em tempo de execuo. Estas rotinas so apenas processos, ou Jobs, executados no
Protheus Server. Algumas vezes, a interface destas rotinas fica a cargo de aplicaes
externas, desenvolvidas em outras linguagens, que so responsveis por iniciar os
processos no servidor Protheus atravs dos meios disponveis de integrao e
conectividade no Protheus.
De acordo com a utilizao e com o meio de conectividade utilizado, estas rotinas so
subcategorizadas assim:
Programao por Processos
Programao de RPC
Programao Web
Programao TelNet

Programao por Processos


Rotinas escritas em AdvPl podem ser iniciadas como processos individuais (sem
interface) no Protheus Server atravs de duas maneiras: Iniciadas por outra rotina AdvPl
atravs da chamada de funes como StartJob ou CallProc ou iniciadas
automaticamente na inicializao do Protheus Server (quando propriamente
configurado).

Programao de RPC
Atravs de uma biblioteca de funes disponvel no Protheus (uma API de
comunicao), pode-se executar rotinas escritas em AdvPl diretamente no Protheus
Server, atravs de aplicaes externas escritas em outras linguagens. Isto o que se
chama de RPC (de Remote Procedure Call, ou Chamada de Procedimentos Remota).
O servidor Protheus tambm pode executar rotinas em AdvPl em outros servidores
Protheus atravs de conexo TCP/IP direta utilizando o conceito de RPC. Do mesmo

modo, aplicaes externas podem requisitar a execuo de rotinas escritas em AdvPl


atravs de conexo TCP/IP direta.

Programao Web
O Protheus Server pode tambm ser executado como um servidor Web, respondendo a
requisies HTTP. No momento destas requisies, pode executar rotinas escritas em
AdvPl como processos individuais, enviando o resultado das funes como retorno das
requisies para o cliente HTTP (como por exemplo um Browser de Internet). Qualquer
rotina escrita em AdvPl que no contenha comandos de interface pode ser executada
atravs de requisies HTTP. O Protheus permite a compilao de arquivos HTML
contendo cdigo AdvPl embutido. So os chamados arquivos AdvPl ASP, para a
criao de pginas dinmicas.

Programao TelNet
TelNet parte da gama de protocolos TCP/IP que permite a conexo a um computador
remoto atravs de uma aplicao cliente deste protocolo. O Protheus Server pode
emular um terminal TelNet, atravs da execuo de rotinas escritas em AdvPl. Ou seja,
pode-se escrever rotinas AdvPl cuja interface final ser um terminal TelNet ou um
coletor de dados mvel.

Classes da Interface Visual


tSrvObject
Reviso: 22/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe me de todas as classes de interface.

Caractersticas
Classe abstrata inicial de todas as classes de interface do Advpl. No deve ser
instanciada diretamente.

Propriedades
Propriedade Tipo

Descrio

nLeft

Numrico.

Coordenada horizontal em pixels.

nTop

Numrico.

Coordenada vertical em pixels.

nWidth

Numrico.

Largura em pixels.

nHeight

Numrico.

Altura em pixels.

cCaption

Caractere.

Ttulo ou contedo do objeto.

cTooltip

Caractere.

Mensagem exibida quando objeto exibe seu tooltip.

lShowHint Lgico.

Flag que ativa .T. ou desativa .F. a exibio do tooltip do


objeto.

cMsg

Caractere.

Mensagem exibida na barra de status da janela principal


quando o objeto ganha foco.

nClrText

Numrico.

Cor do texto do objeto.

nClrPane

Numrico.

Cor do fundo do objeto.

bWhen

Bloco de
cdigo.

Executado quando h movimentao de foco na janela.Se


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

bValid

Bloco de
cdigo.

Executado quando o contedo do objeto modificado e


dever ser validado. Deve retornar .T. se o contedo vlido
e .F. se contedo invlido.

blClicked

Bloco de
cdigo.

Executado quando acionado click do boto esquerdo do


mouse sobre o objeto.

brClicked

Bloco de
cdigo.

Executado quando acionado click do boto direito do mouse


sobre o objeto.

blDblClick

Bloco de
cdigo.

Executado quando acionado duplo click do boto esquerdo


do mouse sobre o objeto.

oWnd

Objeto.

Janela onde o objeto foi criado.

lVisible

Booleano.

Se .T. o objeto visvel, se .F. o objeto invisvel.

Cargo

Objeto ou
varivel.

Contedo associado ao objeto.

bLostFocus

Bloco de
cdigo.

Executado quando objeto perde foco.

bGotFocus

Bloco de
cdigo.

Executado quando objeto ganha foco.

Mtodos
SetFocus
Sintaxe

SetFocus( )

Descrio Fora o foco de entrada de dados mudar para o objeto.


Retorno

NIL

Hide
Sintaxe

Hide( )

Descrio Torna objeto invisvel.


Retorno

NIL

Show
Sintaxe

Show( )

Descrio Torna objeto visvel.


Retorno

NIL

Enable
Sintaxe

Enable( )

Descrio Habilita o objeto.


Retorno

NIL

Disable
Sintaxe

Disable( )

Descrio Desabilita o objeto.


Retorno

NIL

Refresh
Sintaxe

Refresh( )

Descrio

Fora atualizao (sincronia) de propriedades entre o programa e o


Protheus Remote.

tFont
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe que encapsula fonte de edio.

Hierarquia
tFontAbs -> tFont

Descrio
Utilize objeto tFont para modificar a fonte padro de controles visuais.

Propriedades
Vide classes ancestrais.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[lPar7], [nPar8], [alItalic], [alUnderline])
Parmetro Tipo / Descrio

Parmetros

acName

Caractere, opcional. Nome da fonte, o padro


Arial.

nPar2

Reservado.

anHeight

Numrico, opcional. Tamanho da fonte. O padro 11.

lPar4

Reservado.

alBold

Lgico, opcional. Se .T. o estilo da fonte ser


negrito.

Retorno

nPar6

Reservado.

lPar7

Reservado.

nPar8

Reservado.

alItalic

Lgico, opcional. Se .T. o estilo da fonte ser itlico.

alUnderline

Lgico, opcional. Se .T. o estilo da fonte ser


sublinhado.

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

tControl
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe abstrata me de todos os controles editveis.

Hierarquia
tSrvObject -> tControl

Caractersticas
tControl a classe comum entre todos os componentes visuais editveis.

Propriedades
Nome

Tipo / Descrio

Align

Numrico. Alinhamento do controle no espao disponibilizado pelo seu


objeto parente. 0 = Nenhum (padro), 1= no topo, 2 = no rodap, 3= a
esquerda, 4 = a direita e 5 = em todo o parente.

lModified

Lgico. Se .T. indica que o contedo da varivel associada ao controle foi


modificado.

lReadOnly

Lgico. Se .T. o contedo da varivel associada ao controle permanecer


apenas para leitura.

hParent

Numrico. Handle (identificador) do objeto sobre o qual o controle foi


criado.

bChange

Bloco de cdigo. Executado quando o estado ou contedo do controle


modificado pela ao sobre o controle.

Mtodos
SetFocus
Descrio Fora mudana do foco de entrada de dados para o controle.
Sintaxe

SetFocus( )

REtorno NIL

tButton
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de boto.

Hierarquia
tSrvObject -> tControl -> tButton

Descrio
Utilize a classe tButton para criar um controle visual do tipo boto.

Propriedades
Nome

Tipo / Descrio

lProcessing Lgico. Se .T. indica o boto est efetuando uma ao.


bAction

Bloco de cdigo. Executado quando o boto pressionado.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[anWidth], [anHeight], [nPar8], [aoFont], [lPar10],
[alPixel],[lPar12],[cPar13], [lPar14], [abWhen], [bPar16], [lPar17])
Parmetro Tipo / Descrio

Parmetros

anRow

Numrico, opcional. Coordenada vertical em pixels ou


carateres.

anCol

Numrico, opcional. Coordenada horizontal em pixels


ou caracteres.

acCaption Caractere, opcional. Titulo do boto.


aoWnd

Objeto, opcional. Janela ou controle onde o boto


dever ser criado.

abAction

Bloco de cdigo, opcional. Bloco que dever ser


acionado quando o boto for pressionado.

anWidth

Numrico, opcional. Largura do boto em pixels.

anHeight Numrico, opcional. Altura do boto em pixels.


nPar8

Reservado.

aoFont

Objeto, opcional. Objeto tipo tFont com propriedades


da fonte utilizada para o ttulo do boto.

lPar10

Reservado.

alPixel

Lgico, opcional. Se .T. considera as coordenadas


passadas em pixels, se .F. (padro) considera em
caracteres.

lPar12

Reservado.

cPar13

Reservado.

lPar14

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 no.

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)
// Boto 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

tCheckBox
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de caixa checkbox.

Hierarquia
tSrvObject -> tControl -> tCheckBox

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

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[anWidth], [anHeight], [nPar8], [abClick], [aoFont], [abValid],
[anClrFore], [anClrBack], [lPar14], [alPixel], [cPar16], [lPar17],
[abWhen])
Parmetro Tipo / Descrio
anRow

Numrico, opcional. Coordenada vertical em pixels


ou carateres.

anCol

Numrico, opcional. Coordenada horizontal em pixels


ou caracteres.

Parmetros

acCaption Caractere, opcional. Texto exibido pelo controle.

Bloco de cdigo, opcional. Bloco de cdigo no


formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que
abSetGet o controle utiliza para atualizar a varivel <var>.
<var> deve ser tipo lgico, se <var> = .T. ento o
controle aparecer checado.
aoWnd

Objeto, opcional. Janela ou controle onde o controle


dever ser criado.

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight Numrico, opcional. Altura do controle em pixels.


nPar8

Reservado.

abClick

Bloco de cdigo, opcional. Executado quando o


controle click do boto 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 cdigo, opcional. Executado quando o


contedo do controle deve ser validado, deve retornar
.T. se o contedo for vlido e .F. quando o contedo
for invlido.

anClrFore Numrico, opcional. Cor de fundo do controle.


anClrBack Numrico, opcional. Cor do texto do controle.

Retorno

lPar14

Reservado.

alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

cPar16

Reservado.

lPar17

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 no.

O objeto construdo.

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

tComboBox
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de combobox.

Hierarquia
tSrvObject -> tControl -> tComboBox

Descrio
Utilize a classe tComboBox para cria uma entrada de dados com mltipla escolha com
item definido em uma lista vertical, acionada por F4 ou pelo boto esquerdo localizado
na parte direita do controle. A varivel 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 / Descrio
Array. Lista de itens, caracteres, a serem exibidos. Pode ter os seguintes
aItems formatos: a) Seqencial, exemplo: {item1,item2,...,itemN} ou b)
Indexada, exemplo: {a=item1,b=item2, ..., n=itemN}.
nAt

Numrico. Posio do item selecionado.

Mtodos
New
Descrio

Mtodo 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])

Parmetro Tipo / Descrio


anRow

Numrico, opcional. Coordenada vertical em pixels


ou caracteres.

anCol

Numrico, opcional. Coordenada horizontal em


pixels ou caracteres.

abSetGet

Bloco de cdigo, opcional. Bloco de cdigo no


formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que
o controle utiliza para atualizar a varivel <var>.
<var> deve ser tipo caracter. Se a lista for seqencial,
o controle atualizar <var> com o contedo 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)
Seqencial, exemplo: {item1,item2,...,itemN}
ou b) Indexada, exemplo: {a=item1,b=item2, ...,
n=itemN}.

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight

Numrico, opcional. Altura do controle em pixels.

aoWnd

Objeto, opcional. Janela ou controle onde o controle


ser criado.

Parmetros nPar8

Reservado.

abChange

Bloco de cdigo, opcional. Executado quando o


controle modifica o item selecionado.

abValid

Bloco de cdigo, opcional. Executado quando o


contedo do controle deve ser validado, deve retornar
.T. se o contedo for vlido e .F. quando o contedo
for invlido.

anClrBack Numrico, opcional. Cor de fundo do controle.


anClrText Numrico, opcional. Cor do texto do controle.
alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

aoFont

Objeto, opcional. Objeto tipo tFont utilizado para


definir as caractersticas da fonte utilizada para exibir
o contedo do controle.

cPar15

Reservado.

lPar16

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 no.

lPar18

Reservado.

aPar19

Reservado.

bPar20

Reservado.

cPar21

Reservado.

Caractere, opcional. Nome da varivel que o controle


dever manipular, dever ser a mesma varivel
acReadVar
informada no parmetro abSetGet, e ser o retorno da
funo ReadVar( ).
Retorno

O objeto criado.

Select
Descrio

Muda o item selecionado no combobox.

Sintaxe

Select( [anItem] )
Parmetro Tipo / Descrio

Parmetros
Retorno

anItem

Numrico, opcional. Posio do item a ser


selecionado.

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)
// Boto 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

tGet
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de controle para entrada de dados editveis.

Hierarquia
tSrvObject -> tControl -> tGet

Descrio
Use tGet para criar um controle que armazene ou altere o contedo de uma varivel
atravs de digitao. O contedo da varivel s modicado quando o controle perde o
foco de edio para outro controle.

Propriedades
Nome

Tipo / Descrio

lPassword

Lgico. Se .T. o controle se comporta como entrada de dados de senha,


exibindo asteriscos * para esconder o contedo digitado.

Picture

Caractere. Mscara de formatao do contedo a ser exibido.

Mtodos
New
Descrio

Mtodo 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])

Parmetro

Tipo / Descrio

anRow

Numrico, opcional. Coordenada vertical em pixels


ou caracteres.

anCol

Numrico, opcional. Coordenada horizontal em


pixels ou caracteres.

abSetGet

Bloco de cdigo, opcional. Bloco de cdigo no


formato {|u| if( Pcount( )>0, <var>:= u, <var> ) }
que o controle utiliza para atualizar a varivel <var>.
<var> deve ser tipo caracter, numrico ou data.

aoWnd

Objeto, opcional. Janela ou controle onde o controle


ser criado.

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight

Numrico, opcional. Altura do controle em pixels.

acPict

Caractere, opcional. Mscara de formatao do


contedo a ser exibido.

abValid

Bloco de cdigo, opcional. Executado quando o


contedo do controle deve ser validado, deve
retornar .T. se o contedo for vlido e .F. quando o
contedo for invlido.

anClrFore

Numrico, opcional. Cor de fundo do controle.

anClrBack Numrico, opcional. Cor do texto do controle.


Parmetros
aoFont

Objeto, opcional. Objeto tipo tFont utilizado para


definir as caractersticas da fonte utilizada para
exibir o contedo do controle.

lPar12

Reservado.

oPar13

Reservado.

alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

cPar15

Reservado.

lPar16

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 no.

lPar18

Reservado.

lPar19

Reservado.

abChange

Bloco de cdigo, opcional. Executado quando o


controle modifica o valor da varivel associada.

alReadOnly

Lgico, opcional. Se .T. o controle no poder ser


editado.
Lgico, opcional. Se .T. o controle exibir asteriscos

* no lugar dos caracteres exibidos pelo controle


para simular entrada de senha.
cPar23

Reservado.

Caractere, opcional. Nome da varivel que o


controle dever manipular, dever ser a mesma
acReadVar
varivel informada no parmetro abSetGet, e ser o
retorno da funo ReadVar( ).

Retorno

cPar25

Reservado.

lPar26

Reservado.

nPar27

Reservado.

lPar28

Reservado.

O controle construdo.

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
*/
// Boto 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

tGroup
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de painel de grupo de controles.

Hierarquia
tSrvObject -> tControl -> tGroup

Descrio
Utilize a classe tGroup para criar um painel onde controles visuais podem ser agrupados
ou classificados. criada uma borda com ttulo em volta dos controles agrupados.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[aoWnd], [anClrText], [anClrPane], [alPixel], [lPar10])
Parmetro Tipo / Descrio
anTop

Numrico, opcional. Coordenada vertical superior em


pixels ou caracteres.

anLeft

Numrico, opcional. Coordenada horizontal esquerda


em pixels ou caracteres.

Parmetros anBottom
anRight

Numrico, opcional. Coordenada vertical inferior em


pixels ou caracteres.
Numrico, opcional. Coordenada horizontal direita em
pixels ou caracteres.

acCaption Caractere, opcional. Ttulo do grupo.


aoWnd

Objeto, opcional. Janela ou controle onde o controle


ser criado.

anClrText Numrico, opcional. Cor do texto.


anClrPane Numrico, opcional. Cor do fundo.

Retorno

alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

lPar10

Reservado.

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

tListBox
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de lista de items.

Hierarquia
tSrvObject -> tControl -> tListbox

Descrio
Utilize a classe tListbox para criar uma janela com itens selecionveis e barra de
rolagem. Ao selecionar um item, uma varivel atualizada com o contedo do item
selecionado.

Propriedades
Nome Tipo / Descrio
nAt

Numrico. Posio do item selecionado.

aItems Array de items caracteres. Lista do itens selecionveis.

Mtodos
New
Descrio

Mtodo 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] )

Parmetros

Parmetro
anRow

Tipo / Descrio
Numrico, opcional. Coordenada vertical em

pixels ou caracteres.
anCol

Numrico, opcional. Coordenada horizontal em


pixels ou caracteres.

abSetGet

Bloco de cdigo, opcional. Bloco de cdigo no


formato {|u| if( Pcount( )>0, <var>:= u, <var> )}
que o controle utiliza para atualizar a varivel
<var>. <var> deve ser tipo caracter ou numrica.

aaItems

Array de items caracteres, opcional. Lista de items


selecionveis.

anWidth

Numrico, opcional. Largura do controle em


pixels.

anHeight

Numrico, opcional. Altura do controle em pixels.

abChange

Bloco de cdigo, opcional. Executado quando o


item selecionado alterado.

aoWnd

Objeto, opcional. Janela ou controle onde o


controle ser criado.

abValid

Bloco de cdigo, opcional. Executado quando o


contedo do controle deve ser validado, deve
retornar .T. se o contedo for vlido e .F. quando o
contedo for invlido.

anClrFore

Numrico, opcional. Cor de fundo do controle.

anClrBack

Numrico, opcional. Cor do texto do controle.

alPixel

Lgico, opcional. Se .T. as coordenadas


informadas so em pixels, se .F. so em caracteres.

lPar13

Reservado.

Bloco de cdigo, opcional. Executado quando


abLDBLClick acionado duplo click do boto esquerdo do mouse
sobre o controle.
aoFont

Objeto, opcional. Objeto tipo tFont utilizado para


definir as caractersticas da fonte utilizada para
exibir o contedo do controle.

cPar16

Reservado.

lPar17

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 no.

aPar19

Reservado.

bPar20

Reservado.

lPar21

Reservado.

lPar22

Reservado.

Bloco de cdigo, opcional. Executado quando


abRightClick acionado click do boto direito do mouse sobre o
controle.
Retorno

O objeto criado.

Select
Descrio

Fora a seleo de um item.

Sintaxe

Select( [anItem] )
Parmetro Tipo / Descrio

Parmetros
Retorno

nItem

Numrico, opcional. Posio do item a ser


selecionado.

NIL

Add
Descrio

Insere ou adiciona novo item.

Sintaxe

Add( cText, nPos )


Parmetro Tipo / Descrio
cText

Caractere, obrigatrio. Texto do item.

nPos

Numrico, obrigatrio. Se 0 ou maior que o nmero de


itens, insere o item no final da lista. Se valor entre 1 e
nmero de itens, insere o item na posio informada,
empurrando o item anterior para baixo.

Parmetros

Retorno

NIL

Modify
Descrio

Modifica o texto de um item.

Sintaxe

Modify( cText, nPos )


Parmetro Tipo / Descrio
cText

Caractere, obrigatrio. Novo texto do item.

nPos

Numrico, obrigatrio. Posio a ser modificada deve


ser maior que 0 e menor ou igual que o nmero de
itens.

Parmetros

NIL

Retorno

Del
Descrio

Apaga um item.

Sintaxe

Del( nPos )
Parmetro Tipo / Descrio

Parmetros

nPos

Numrico, obrigatrio. Posio a ser excluida, deve


ser maior que 0 e menor ou igual que o nmero de
itens.

NIL

Retorno

Len
Descrio Retorna o nmero de itens.
Sintaxe

Len( )

Retorno

Numrico. Nmero de itens.

Reset
Descrio Apaga todos os itens.
Sintaxe

Reset( )

Retorno

NIL

Exemplo
#include protheus.ch
User Funcion Teste()
Local oDlg, oList, nList:= 1, aItems:={}
Aadd(aItems,Item
Aadd(aItems,Item
Aadd(aItems,Item
Aadd(aItems,Item

1)
2)
3)
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

tMeter
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de rgua de processamento.

Hierarquia
tSrvObject -> tControl -> tMeter

Descrio
Utilize a classe tMeter para criar um controle que exibe uma rgua (gauge) de
processamento, descrevendo o andamento de um processo atraves da exibio de uma
barra horizontal.

Propriedades
Nome

Tipo / Descrio

nTotal

Numrico. Nmero total de passos at o preenchimento da rgua de


processo.

lPercentage Lgico. Se .T. considera o passo de movimentao em porcentagem.


nClrBar

Numrico. Cor da barra de andamento.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[anWidth], [anHeight], [lPar8], [alPixel], [oPar10], [cPar11],
[alNoPerc], [anClrPane], [nPar14], [anClrBar], [nPar16], [lPar17])

Parmetros

Parmetro Tipo / Descrio


anRow

Numrico, opcional. Coordenada vertical em pixels ou

caracteres.
anCol

Numrico, opcional. Coordenada horizontal em pixels


ou caracteres.

Bloco de cdigo, opcional. Bloco de cdigo no


formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que
abSetGet
o controle utiliza para atualizar a varivel <var>.
<var> deve ser tipo numrico.
anTotal

Numrico, opcional. Numero total de passos at o


preenchimento da rgua de processo.

aoWnd

Objeto, opcional. Janela ou controle onde o controle


sera criado.

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight Numrico, opcional. Altura do controle em pixels.


lPar8

Reservado.

alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

oPar10

Reservado.

cPar11

Reservado.

alNoPerc

Lgico, opcional. Se .T. (padro) no considera os


passos de atualizao em porcentagem.

anClrPane Numrico, opcional. Cor de fundo do controle.


nPar14

Reservado.

anClrBar Numrico, opcional. Cor da barra de andamento.

Retorno

nPar16

Reservado.

lPar17

Reservado.

O objeto criado.

Set
Descrio

Atualiza a posio da rgua de processamento.

Sintaxe

Set( [nVal] )
Parmetro Tipo / Descrio

Parmetros
Retorno

Exemplo

nVal
NIL

Numrico, opcional. Novo valor da posio da rgua


de processamento.

#include protheus.ch
STATIC lRunning:=.F., lStop:=.F.
User Function Teste()
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 rgua
// boto para ativar andamento da rgua
@ 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 rgua
While .T. .and. !lStop
Sleep(1000) // pra 1 segundo
ProcessMessages() // atualiza a pintura da janela, processa
mensagens do windows
nCurrent:= Eval(oMeter:bSetGet) // pega valor corrente da rgua
nCurrent+=10 // atualiza rgua
oMeter:Set(nCurrent)
if nCurrent==oMeter:nTotal
Return
endif
Enddo
lRunning:= .F.
lStop:= .F.
Return

tMultiGet
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de campo Memo de edio.

Hierarquia
tSrvObject -> tControl -> tMultiGet

Descrio
Utilize a classe tMultiget para criar controle de edio de texto de mltiplas linhas.

Propriedades
Nome

Tipo / Descrio

lWordWrap Lgico. Se .T., faz quebra automtica de linhas.

Mtodos
New
Descrio

Mtodo 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])

Parmetros

Parmetro

Tipo / Descrio

anRow

Numrico, opcional. Coordenada vertical em pixels


ou caracteres.

anCol

Numrico, opcional. Coordenada horizontal em


pixels ou caracteres.

abSetGet

Bloco de cdigo, opcional. Bloco de cdigo no


formato {|u| if( Pcount( )>0, <var>:= u, <var> ) }
que o controle utiliza para atualizar a varivel
<var>. <var> deve ser tipo caracter.

aoWnd

Objeto, opcional. Janela ou controle onde o controle


ser criado.

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight

Numrico, opcional. Altura do controle em pixels.

aoFont

Objeto, opcional. Objeto tipo tFont utilizado para


definir as caractersticas da fonte utilizada para
exibir o contedo do controle.

alHScroll

Lgico, opcional. Se .T., habilita barra de rolagem


horizontal.

anClrFore

Numrico, opcional. Cor de fundo do controle.

anClrBack

Numrico, opcional. Cor do texto do controle.

oPar11

Reservado.

alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

cPar13

Reservado.

lPar14

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 no.

lPar16

Reservado.

lPar17

Reservado.

alReadOnly

Lgico, opcional. Se .T. o controle so permitira


leitura.

abValid

Bloco de cdigo, opcional. Executado quando o


contedo do controle deve ser validado, deve
retornar .T. se o contedo for vlido e .F. quando o
contedo for invlido.

bPar20

Reservado.

lPar21

Reservado.

alNoBorder Lgico, opcional. Se .T. cria controle sem borda.


alNoVScroll
Retorno

Lgico, opcional. Se .T., habilita barra de rolagem


vertical.

O objeto criado.

EnableVScroll
Descrio

Habilita a barra de rolagem vertical.

Sintaxe

EnableVScroll( lEnable )
Parmetro Tipo / Descrio

Parmetros
Retorno

lEnable

Lgico, obrigatrio. Se .T. habilita se .F. desabilita a


barra de rolagem.

NIL

EnableHScroll
Descrio

Habilita a barra de rolagem horizontal.

Sintaxe

EnableHScroll( lEnable )
Parmetro Tipo / Descrio

Parmetros
Retorno

lEnable

Lgico, obrigatrio. Se .T. habilita se .F. desabilita a


barra de rolagem.

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

tPanel
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de painel esttico.

Hierarquia
tSrvObject -> tControl -> tPanel

Descrio
Utilize a classe tPanel quando desejar criar um painel esttico, onde podem ser criados
outros controles com o objetivo de organizar ou agrupar componentes visuais.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[lPar6], [anClrText], [anClrBack], [anWidth], [anHeight],
[alLowered], [alRaised])
Parmetro Tipo / Descrio

Parmetros

anRow

Numrico, opcional. Coordenada vertical em pixels.

anCol

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

Lgico, opcional. Se .T. exibe o texto de ttulo ao


centro do controle.

lPar6

Reservado.

anClrText Numrico, opcional. Cor do texto do controle.

anClrBack Numrico, opcional. Cor do fundo do controle.

Retorno

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight

Numrico, opcional. Altura do controle em pixels.

alLowered

Lgico, opcional. Se .T. exibe o painel rebaixado em


relao ao controle de fundo.

alRaised

Lgico, opcional. Se .T. exibe a borda do controle


rebaixada em relao ao controle de fundo.

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 boto sobre o painel
@ 200,10 BUTTON oBtn2 PROMPT show OF oDlg ACTION oPanel:Show() //
cria boto fora o painel
ACTIVATE MSDIALOG oDlg CENTERED
Return

tRadMenu
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de radio group.

Hierarquia
tSrvObject -> tControl -> tRadMenu

Descrio
Utilize a classe tRadMenu para criar um controle que possibilita escolha de item atravs
de uma lista.

Propriedades
Nome

Tipo / Descrio

nOption Numrico. Item selecionado.


aItems Array de caracteres. Lista de items selecionveis.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[abChange], [anClrText], [anClrPan], [cPar10], [lPar11],
[abWhen], [anWidth], [anHeight], [abValid], [lPar16], [lPar17],
[alPixel])
Parmetro Tipo / Descrio

Parmetros anRow
anCol

Numrico, opcional. Coordenada vertical em pixels ou


caracteres.
Numrico, opcional. Coordenada horizontal em pixels

ou caracteres.
aacItems Array de caracteres, opcional. Lista de opes.
Bloco de cdigo, opcional. Bloco de cdigo no
formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que
abSetGet
o controle utiliza para atualizar a varivel <var>.
<var> deve ser tipo numrico.
aoWnd

Objeto, opcional. Janela ou controle onde o controle


ser criado.

aPar6

Reservado.

abChange

Bloco de cdigo, opcional. Executado quando o item


selecionado alterado.

anClrText Numrico, opcional. Cor do texto do controle


anClrPan Numrico, opcional. Cor de fundo do controle.
cPar10

Reservado.

lPar11

Reservado.

abWhen

Bloco de cdigo, opcional. Executado quando


mudana 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 permanea
habilitado, ou .F. se no.

anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight Numrico, opcional. Altura do controle em pixels.

Retorno

abValid

Bloco de cdigo, opcional. Executado quando o


contedo do controle deva ser validado, retornando .T.
se o contedo for vlido, e .F. quando invlido.

lPar16

Reservado.

Lpar17

Reservado.

alPixel

Lgico, opcional. Se .T. as coordenadas informadas


so em pixels, se .F. so em caracteres.

O objeto criado.

EnableItem
Descrio

Habilita ou desabilita item.

Sintaxe

EnableItem( [nItem], [lEnable])


Parmetro Tipo / Descrio

Parmetros

nItem

Numrico, opcional. Item selecionado.

lEnable

Lgico, opcional. Se .T. habilita o item se .F.


desabilita o item.

Retorno

NIL

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

tSay
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de label.

Hierarquia
tSrvObject -> tControl -> tSay

Descrio
O objeto tipo tSay exibe o contedo de texto esttico sobre uma janela ou controle.

Propriedades
Nome

Tipo / Descrio

lWordWrap

Lgico. Se .T. quebra o texto em vrias linhas de maneira a enquadrar o


contedo na rea determinada para o controle, sendo o padro .F.

lTransparent

Lgico. Se .T. a cor de fundo do controle ignorada assumindo o


contedo ou cor do controle ou janela ao fundo, sendo o padro .T.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[lPar7], [lPar8], [lPar9], [alPixels], [anClrText], [anClrBack],
[anWidth], [anHeight], [lPar15], [lPar16], [lPar17], [lPar18],
[lPar19])
Parmetro Tipo / Descrio

Parmetros

anRow

Numrico, opcional. Coordenada vertical em pixels


ou caracteres.

anCol

Numrico, opcional. Coordenada horizontal em pixels


ou caracteres.

abText

Codeblock, opcional. Quando executado deve retornar


uma cadeia de caracteres a ser exibida.

aoWnd

Objeto, opcional. Janela ou dilogo onde o controle


ser criado.

acPicture

Caractere, opcional. Picture de formatao do


contedo a ser exibido.

aoFont

Objeto, opcional. Objeto tipo tFont para configurao


do tipo de fonte que ser utilizado para exibir o
contedo.

lPar7

Reservado.

lPar8

Reservado.

lPar9

Reservado.

alPixels

Lgico, opcional. Se .T. considera coordenadas


passadas em pixels se .F., padro, considera as
coordenadas passadas em caracteres.

anClrText Numrico, opcional. Cor do contedo do controle.


anClrBack Numrico, opcional. Cor do fundo do controle.
anWidth

Numrico, opcional. Largura do controle em pixels.

anHeight Numrico, opcional. Altura do controle em pixels.

Retorno

lPar15

Reservado.

lPar16

Reservado.

lPar17

Reservado.

lPar18

Reservado.

lPar19

Reservado.

O objeto criado.

SetText
Descrio

Modifica o contedo a ser exibido pelo controle.

Sintaxe

SetText( [xVal] )
Parmetro Tipo / Descrio

Parmetros
Retorno

xVal
NIL

Caracter / Numrico / Data, Opcional. Valor a ser


exibido.

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

tScrollBox
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de rea de scroll.

Hierarquia
tSrvObject -> tControl -> tScrollbox

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

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


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

Tipo / Descrio

aoWnd

Objeto, opcional. Janela ou controle onde o controle


ser criado.

anTop

Numrico, opcional. Coordenada vertical em pixels.

anLeft

Numrico, opcional. Coordenada horizontal em


pixels.

Parmetros anHeight

Numrico, opcional. Altura do controle em pixels.

anWidth

Numrico, opcional. Largura do controle em pixels.

alVertical

Lgico, opcional. Se .T. exibe a barra de scroll


vertical.

alHorizontal

Lgico, opcional. Se .T. exibe a barra de scroll


horizontal.

alBorder

Lgico, opcional. Se .T. exibe a borda do controle.

Retorno

O objeto criado.

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

Classe TIBrowser
Exemplo de uso da classe TIBrowser
Reviso: 09/06/2003
Abrangncia
Verso 6.09

Verso 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

TIBROWSER:GOHOME
Reviso: 09/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Sintaxe
TIBROWSER:GOHOME ( ) --> nil
Retorno
Tipo

Descrio

(NULO)

Este mtodo retorna nil

Descrio
Direciona navegao para pgina <HOME> cadastrada no Internet Explorer

TIBROWSER:NAVIGATE
Reviso: 09/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Sintaxe
TIBROWSER:NAVIGATE ( < ahRef > ) --> nil
Parmetros
Argumento

Tipo

Descrio

ahRef

Caracter Endereo da pgina a ser navegada

Retorno
Tipo

Descrio

(NULO)

Este mtodo sempre retorna nil

Descrio
Troca a pgina a ser visualizada

TIBROWSER:NEW
Reviso: 09/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Sintaxe
TIBROWSER:NEW ( < anRow > , < anCol > , < anWidth > , < anHeight > , [ ainitLink
] , [ anWindow ] ) --> Retorno
Parmetros
Argumento

Tipo

Descrio

anRow

Numrico coordenada vertical

anCol

Numrico Coordenada horizontal

anWidth

Numrico Largura do objeto

anHeight

Numrico Altura do objeto

ainitLink

Endereo da pgina inicial a ser carregada, se no


Caracter informada, carregar a pgina <HOME> cadastrada no
Internet Explorer.

anWindow

Objeto

Janela ou componente visual onde o objeto ser criado

Retorno
Tipo

Descrio

Objeto

Retorna o objeto criado

Descrio
Cria uma instncia do Microsoft Internet Explorer(tm) dentro de um componente visual.
Para que o objeto esteja disponvel para o usurio, necesrio configurar no arquivo de
configurao do AP Remote (Ex: ap6rmt.ini ) como abaixo:
[config]
BrowserEnabled=1
ATENAO: A classe somente funcionar se o MS Internet Explorer estiver instalado na
mquina que est executando o AP Remote.

TIBROWSER:PRINT
Reviso: 09/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Sintaxe
TIBROWSER:PRINT ( ) --> nil
Retorno
Tipo

Descrio

(NULO)

Este mtodo retorna nil

Descrio
Imprime a pgina que esta sendo visualizada

Exemplo de uso da Classe TWBrowse


Reviso: 16/09/2004
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verso 8.11

A funo abaixo cria uma janela de dialogo, com uma twBrowse ocupando toda a
extenso do dilogo, realizando uma consulta na Tabela SX5, filtrada atravs 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 funo 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','Descrio', '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

New
Reviso: 16/09/2004
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verso 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
Parmetros
Argumento

Tipo

Descrio

nRow

Numrico

Coordenada vertical inicial do Objeto.

bScroll

Lgico

Caso .T., habilita barra de scroll horizontal e botes de


navegao vertical.

Param25

(NULO)

( parmetro reservado )

Param27

(NULO)

( parmetro reservado )

nCol

Numrico

Coordenada horizontal inicial do Objeto

nWidth

Numrico

Tamanho horizontal do objeto

nHeigth

Numrico

Tamanho vertical do objeto

bLine

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


dimenso, onde devem ser retornados as strings
Code-Block
referentes aos elementos referentes s colunas do
Browse.

aHeaders

Array

Array, que deve retornar um array, com uma dimenso,


contendo as strings referentes aos Ttulos das colunas do
Browse.

aColSizes

Array

Array, com uma dimenso, onde devem ser retornados


os nmeros referentes o tamanho horizontal das colunas
do Browse. Caso especificado NIL, os tamanhos das
colunas so calculados automaticamente.

oWnd

Objeto

Objeto visual sobre o qual a tWBrowse ser criada.

cField

Caracter

Utilizado para especificar a expresso de ndice para


definio de limite superior e inferior do Browse. Este
parmetro utilizado quando realizado um browse de

uma tabela, aberta sob um alias, com uma expresso de


ndice.

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 contedo neste, caso o parmetro 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 contedo neste, caso o parmetro cField seja
especificado.

bChange

Ao a ser executada quando alterado o foco entre as


Code-Block linhas do Browse. Recebe o objeto do Browse como
parmetro.

bLDblClick

Code-Block

Ao a ser executada quando executado um dupli -clique


sobre uma clula do Browse.

Param14

(NULO)

( parmetro reservado )

oFont

Objeto

Objeto referente uma fonte alternativa para exibio


dos dados neste Browse.

Param16

(NULO)

( parmetro reservado )

nClrFore

Numrico

Cor de escrita dos dados no TWBrowse. Verifique cores


disponveis no include "colors.ch"

nClrBack

Numrico

Cor de fundo da rea da TWBrowse no preenchida com


dados. Verifique cores disponveis no include
"colors.ch"

Param19

(NULO)

( parmetro reservado )

Param20

(NULO)

( parmetro reservado )

cAlias

Caracter

Caso o Browse seja realizado sobre uma tabela aberta,


estecifique o alias da tabela a ser utilizada neste
parmetro.

lPixel

Lgico

Caso .T., indica que as coordenadas de tela so


especificadas em PIXELS. Caso contrrio, so
coordenadas especificadas em CARACTERES.

Param23

(NULO)

( parmetro reservado )

Param24

(NULO)

( parmetro reservado )

cTopLimit

Retorno
Tipo

Descrio

Objeto

Retorna uma nova instncia do Objeto da Classe TWBrowse.

Descrio

Contrutor da Classe TWBrowse.


Retorna uma nova instncia do Objeto da Classe TWBrowse.

Classes de Janelas

MSDialog
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de dilogo de entrada de dados.

Hierarquia
tSrvObject -> tWindow -> tDialog -> MSDialog

Caractersticas
MSDialog deve ser utilizada como padro de janela para entrada de dados. MSDialog
um tipo de janela dilogo modal, isto , no permite que outra janela ativa receba dados
enquanto esta estiver ativa.

Propriedades
Vide classes ancestrais.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack],
[oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [lPar17])
Parmetro Tipo / Descrio

Parmetros

anTop

Numrico, opcional. Coordenada vertical superior em


pixels ou caracteres.

anLeft

Numrico, opcional. Coordenada horizontal esquerda


em pixels ou caracteres.

anBotom

Numrico, opcional. Coordenada vertical inferior em


pixels ou caracteres.

anRight

Numrico, opcional. Coordenada horizontal direita


em pixels ou caracteres.

acCaption Caractere, opcional. Ttulo da janela.


cPar6

Reservado.

nPar7

Reservado.

lPar8

Reservado.

nPar9

Reservado.

anClrText Numrico,opcional. Cor do texto.


anClrBack Numrico,opcional. Cor de fundo.

Retorno

oPar12

Reservado.

aoWnd

Objeto, opcional. Janela me da janela a ser criada,


padro a janela principal do programa.

alPixel

Lgico, opcional. Se .T. considera as coordenadas


passadas em pixels, se .F. considera caracteres.

oPar15

Reservado.

oPar16

Reservado.

nPar17

Reservado.

O Dilogo criado.

Exemplo
#INCLUDE protheus.ch
User Function Teste()
// cria dilogo
Local oDlg:=MSDialog():New(10,10,300,300,Meu
dialogo,,,,,CLR_BLACK,CLR_WHITE,,,.T.)
// ativa dilogo centralizado
oDlg:Activate(,,,.T.,{||msgstop(validou!),.T.},,{||msgstop(iniciand
o) )
Return

tDialog
Reviso: 24/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de janela de dilogo.

Hierarquia
tSrvObject -> tWindow -> tDialog

Caractersticas
Classe de janela de dilogo de entrada de dados, uso reservado, recomenda-se utilizar a
classe MSDialog que herdada desta classe.

Propriedades
Vide classes ancestrais.

Mtodos
New
Descrio

Mtodo construtor da classe.

Sintaxe

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


[cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack],
[oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [nPar17],
[anWidth], [anHeight])
Parmetro Tipo / Descrio

Parmetros

anTop

Numrico, opcional. Coordenada vertical superior em


pixels ou caracteres.

anLeft

Numrico, opcional. Coordenada horizontal esquerda


em pixels ou caracteres.

anBotom

Numrico, opcional. Coordenada vertical inferior em


pixels ou caracteres.

anRight

Numrico, opcional. Coordenada horizontal direita


em pixels ou caracteres.

acCaption Caractere, opcional. Ttulo da janela.


cPar6

Reservado.

nPar7

Reservado.

lPar8

Reservado.

nPar9

Reservado.

anClrText Numrico,opcional. Cor do texto.


anClrBack Numrico,opcional. Cor de fundo.
oPar12

Reservado.

aoWnd

Objeto, opcional. Janela me da janela a ser criada,


padro a janela principal do programa.

alPixel

Lgico, opcional. Se .T. considera as coordenadas


passadas em pixels, se .F. considera caracteres.

oPar15

Reservado.

oPar16

Reservado.

nPar17

Reservado.

anWidth

Numrico, opcional. Largura da janela em pixels.

anHeight Numrico, opcional. Altura da janela em pixels.

Retorno

O Dilogo criado.

Activate
Descrio

Ativa (exibe) o dilogo. Chamar somente uma vez este mtodo.

Sintaxe

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


[lPar6], [abInit], [bPar8], [bPar9] )
Parmetro Tipo / Descrio

Parmetros
bPar1

Reservado.

bPar2

Reservado.

bPar3

Reservado.

alCentered Lgico, opcional. Se .T. exibe a janela centralizada,

Retorno

abValid

Bloco de cdigo, opcional. Deve retornar .T. se


contedo do dilogo vlido, se retornar .F. o dilogo
no fechar quando solicitada de encerrar.

lPar6

Reservado.

abInit

Bloco de cdigo, opcional. Executado quando o


dilogo inicia exibio.

bPar8

Reservado.

bPar9

Reservado.

NIL

End
Descrio Encerra (fecha) o dilogo.
Sintaxe

End( )

Retorno

Lgico .T. se o dilogo foi encerrado.

Exemplo
#INCLUDE "PROTHEUS.CH"
User Function Teste()
Local oDlg
// cria dilogo
oDlg := MSDialog():New(10,10,300,300,"Meu
dialogo",,,,,CLR_BLACK,CLR_WHITE,,,.T.)
// ativa dilogo centralizado
oDlg:Activate(,,,.T.,{||msgstop("validou!"),.T.},,{||msgstop("iniciand
o...")} )
/* os comandos abaixo proporcionam o mesmo resultado
// cria dilogo
DEFINE DIALOG oDlg TITLE "Meu dialogo" FROM 10,10 TO 300,300 COLOR
CLR_BLACK,CLR_WHITE PIXEL
// ativa dilogo centralizado
ACTIVATE DIALOG oDlg CENTER ON INIT (msgstop("iniciando...")) VALID
(msgstop("validou!"),.T.)
*/
Return NIL

tWindow
Reviso: 23/02/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Classe de janela principal de programa.

Hierarquia
tSrvObject -> tWindow

Caractersticas
Classe de janela principal de programa, dever existir apenas uma instncia deste objeto
na execuo do programa.

Propriedades
bInit Bloco de cdigo. Executado quando a janela est sendo exibida.
lEscClose Lgico. Se .T. habilita o <ESC> cancelar a execuo da janela.
oCtlFocus Objeto. Objeto contido na janela que est com foco de entrada de dados.

Mtodos
New
Descrio

Mtodo 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] );
Parmetro Tipo / Descrio

Parmetros nTop
nLeft

Numrico, opcional. Coordenada vertical superior em


pixels ou caracteres.
Numrico, opcional. Coordenada horizontal esquerda

em pixels ou caracteres.
nBottom

Numrico, opcional. Coordenada vertical inferior em


pixels ou caracteres.

nRight

Numrico, opcional. Coordenada horizontal inferior


em pixels ou caracteres.

cTitle

Caractere, opcional. Ttulo da janela.

nPar6

Reservado.

oPar7

Reservado.

oPar8

Reservado.

oPar9

Reservado.

oParent

Objeto, opcional. Janela me da janela corrente.

lPar11

Reservado.

lPar12

Reservado.

nClrFore Numrico, opcional. Cor de fundo da janela.


nClrText Numrico, opcional. Cor do texto da janela.

Retorno

oPar15

Reservado.

cPar16

Reservado.

lPar17

Reservado.

lPar18

Reservado.

lPar19

Reservado.

lPar20

Reservado.

lPixel

Lgico, opcional. Se .T. (padro) considera


coordenadas passadas em pixels, se .F. considera
caracteres.

Objeto. A janela construda.

Activate
Descrio

Ativa (exibe) a janela. Chamar esse mtodo apenas uma vez.

Sintaxe

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


abInit ], [bPar8], [bPar9], [bPar10], [bPar11], [bPar12] ,[bPar13],
[bPar14], [bPar15], [abValid], [bPar17], [bPar18] ).
Parmetro Tipo / Descrio
acShow Caracter, opcional. ICONIZED para janela
bPar2

Reservado.

Parmetros bPar3

Reservado.

bPar4

Reservado.

bPar5

Reservado.

Retorno

bPar5

Reservado.

bPar6

Reservado.

abInit

Bloco de cdigo. Executado quando janela est sendo


exibida.

bPar8

Reservado.

bPar9

Reservado.

bPar10

Reservado.

bPar11

Reservado.

bPar12

Reservado.

bPar13

Reservado.

bPar14

Reservado.

bPar15

Reservado.

abValid

Bloco de cdigo. Executado quando a janela for


solicitada de fechar. Dever retornar .T. se o contedo
da janela for vlido, ou .F. se no. Se o bloco retornar
.F. a janela no fechar.

bPar17

Reservado.

bPar18

Reservado.

NIL

End
Descrio Solicita encerramento da janela.
Sintaxe

End( )

Retorno

Lgico. .T. se encerrou a janela e .F. se no.

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

Classes no visuais
Classe TMailManager
Reviso: 09/06/2003

Descrio
A TMailManager uma classe que tem por finalidade criar conexes em servidores
SMTP ou POP

Metodos
New()
Construtor do objeto.

Init( cPop, cSmtp, cUser, cPass,


nTimeOut, nPor )
Inicia uma nova conexo no servidor
Parametro

Descrio

cPop

Endereo do servidor POP, no caso de conexo SMTP passe esse como


""(branco).

cSmtp

Endereo do servidor SMTP, no caso de conexo POP passe esse como


""(branco).

cUser

Login no servidor.

cPass

Senha no servidor.

nTimeOut Time out para a conexo.


nPort

Porta para se conectar.

SmtpConnect()
Conecta com o servidor, atraves dos parametros de Init

SetSmtpTimeOut( nTimeOut )
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por
time-out
Parametro
Descrio
nTimeOut Tempo para que a conexo 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 conexo estabelecida ao servidor seja finalizada por
time-out
Parametro
Descrio
nTimeOut Tempo para que a conexo seja fechada por Time-Out.

GetNumMsgs( @nNumMsg )
Retorna o numero de mensagens que existem no servidor
Parametro
Descrio
nNumMsg

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


esto no servidor.

DeleteMsg( nMsg )
Deleta uma mensagem do servidor
Parametro
Descrio
nMsg

Numero da mensagem a ser deletada.

POPDisconnect()
Disconecta com o servidor POP

TMAILMANAGER:DELETEMSG
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Sintaxe
TMAILMANAGER:DELETEMSG ( < nMsg > ) --> Nil
Parmetros
Argumento

Tipo

Descrio

nMsg

Numrico Numero da mensagem a ser deletada.

Retorno
Tipo

Descrio

(NULO)

Nil

Descrio
Deleta uma mensagem do servidor

TMAILMANAGER:GETNUMMSGS
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Sintaxe
TMAILMANAGER:GETNUMMSGS ( < @nNumMsg > ) --> nRet
Parmetros
Argumento

Tipo

Descrio

nNumMsg

Numrico

Parametro passado por referencia, retorna nele o numero


de mensagens que esto no servidor.

Retorno
Tipo

Descrio

Numrico

0 = Lista recebida com sucesso

Descrio
Retorna o numero de mensagens que existem no servidor

TMAILMANAGER:INIT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Sintaxe
TMAILMANAGER:INIT ( < cPop > , < cSmtp > , < cUser > , < cPass > , [ nTimeOut ]
, [ nPort ] ) --> Nil
Parmetros
Argumento

Tipo

Descrio

cPop

Caracter

Endereo do servidor POP, no caso de conexo SMTP


passe esse como ""(branco).

cSmtp

Caracter

Endereo do servidor SMTP, no caso de conexo POP


passe esse como ""(branco)

cUser

Caracter Login no servidor.

cPass

Caracter Senha no servidor.

nTimeOut

Numrico Time out para a conexo.

nPort

Numrico Porta para se conectar.

Retorno
Tipo

Descrio

(NULO)

Nil

Descrio
Inicia uma nova conexo no servidor

TMAILMANAGER:NEW
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Sintaxe
TMAILMANAGER:NEW ( ) --> oServer
Retorno
Tipo

Descrio

Objeto

Construtor do objeto.

Descrio
Construtor do objeto.

Verso 6.09

Verso 7.10

TMAILMANAGER:POPCONNECT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Sintaxe
TMAILMANAGER:POPCONNECT ( ) --> Nil
Retorno
Tipo

Descrio

(NULO)

Nil

Descrio
Conecta com o servidor, atraves dos parametros de Init

Verso 7.10

TMAILMANAGER:POPDISCONNECT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Sintaxe
TMAILMANAGER:POPDISCONNECT ( ) --> nRet
Retorno
Tipo

Descrio

Numrico

0 = Disconectado

Descrio
Disconecta com o servidor POP

Verso 7.10

TMAILMANAGER:SETPOPTIMEOUT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Sintaxe
TMAILMANAGER:SETPOPTIMEOUT ( < nTimeOut > ) --> nRet
Parmetros
Argumento

Tipo

Descrio

nTimeOut

Numrico Tempo para que a conexo seja fechada por Time-Out.

Retorno
Tipo

Descrio

Numrico

0 = Time out setado

Descrio
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por
time-out

TMAILMANAGER:SETSMTPTIMEO
UT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Sintaxe
TMAILMANAGER:SETSMTPTIMEOUT ( < nTimeOut > ) --> nRet
Parmetros
Argumento

Tipo

Descrio

nTimeOut

(NULO) Tempo para que a conexo seja fechada por Time-Out.

Retorno
Tipo

Descrio

(NULO)

0 - Time out configurado

Descrio
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por
time-out

TMAILMANAGER:SMTPCONNECT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Sintaxe
TMAILMANAGER:SMTPCONNECT ( ) --> nRet
Retorno
Tipo

Descrio

Numrico

0 - Conectado

Descrio
Conecta com o servidor, atraves dos parametros de Init

Verso 7.10

TMAILMANAGER:SMTPDISCONNE
CT
Reviso: 09/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Sintaxe
TMAILMANAGER:SMTPDISCONNECT ( ) --> nRet
Retorno
Tipo

Descrio

Numrico

0 = Disconectado

Descrio
Disconecta com o servidor SMTP

Verso 7.10

TMAILMESSAGE:SEND
Reviso: 14/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Sintaxe
TMAILMESSAGE:SEND ( < oServer > ) --> nRet
Parmetros
Argumento

Tipo

Descrio

oServer

Caracter Instancia do servidor criado (SMTP).

Retorno
Tipo

Descrio

Numrico

0 = E-mail enviado com sucesso

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

tSocketClient
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

Descrio
Esta classe permite estabelecer uma conexo cliente de socket do tipo TCP genrica.
Enviar e receber dados atravs de uma socket genrico e tambm pode ser usada como
base para implementao de protocolos no suportados pelo protheus.
Mtodos
Mtodo

Descrio

CloseConnection

Finaliza a conexo TCP genrica (socket ) do objeto corrente.

Connect

Estabelece um conexo TCP genrica (socket ).

IsConnected

Verifica se existe conexo valida no objeto corrente.

New

Cria o objeto tSocketClient, sem conexo ativa.

Receive

Recebe os dados pela conexo ativa do objeto, qualquer tipo de


dado pode ser recebido.

Reset

Finaliza anormalmente a conexo, no avisa o outro lado que a


conexo ser finalizada.
Deve ser utilizado apenas em casos extremos.

Send

Transmite o buffer pela conexo TCP Genrica ativa.

CloseConnection
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

Sintaxe
oObj:CloseConnection ( ) --> Nil
Retorno
Tipo

Descrio

(NULO)

Nil

Descrio
Finaliza a conexo TCP genrica (socket ) do objeto corrente.

Connect
Reviso: 30/06/2003

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

Tipo

Descrio

nPorta

Numrico Numero da porta onde a conexo deve ser realizada

cIP

Caracter

Nmero IP ou nome do servidor onde a conexo deve ser


realizada

nTimeout

Numrico

Nmero em milisegundos que o mtodo deve esperar para


conectar

Retorno
Tipo

Descrio

Numrico

Retorna 0 (Zero) se conectou com sucesso, diferente de zero se a conexo


falhou.

Descrio
Estabelece um conexo TCP genrica (socket ).

IsConnected
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

Sintaxe
oObj:IsConnected ( ) --> lLogico
Retorno
Tipo

Descrio

Lgico

Retorna True se a conexo esta ativa e false caso esteja


invlida/desconectado.

Descrio
Verifica se existe conexo valida no objeto corrente.

New
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Sintaxe
tSocketClient():New ( ) --> oSocket
Retorno
Tipo

Descrio

Objeto

Retorna um Objeto do tipo tSocketClient

Descrio
Cria o objeto tSocketClient, sem conexo ativa.

Verso 8.11

Receive
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

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

Tipo

Descrio

cBuffer

Caracter Buffer que conter os dados a serem recebidos.

nTimeout

Numrico

tempo em milisegundos que a funo receive espera at


receber algum dado pela conexo.

Retorno
Tipo

Descrio

Numrico

Qtde de bytes recebidos, se houver algum erro nQtdRecebida ser menor


que zero.

Descrio
Recebe os dados pela conexo ativa do objeto, qualquer tipo de dado pode ser recebido.

Reset
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

Sintaxe
oObj:Reset ( ) --> NIL
Retorno
Tipo

Descrio

(NULO)

Retorno nulo.

Descrio
Finaliza anormalmente a conexo, no avisa o outro lado que a conexo ser finalizada.
Deve ser utilizado apenas em casos extremos.

Send
Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

Sintaxe
oObj:Send ( [ cBuffer ] ) --> nQtdTrasmitido
Parmetros
Argumento

Tipo

Descrio

cBuffer

Caracter Buffer com os dados a serem transmitidos pela conexo.

Retorno
Tipo

Descrio

Numrico

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


de cBuffer, algum erro aconteceu.

Descrio
Transmite o buffer pela conexo TCP Genrica ativa.

Exemplo da Classe tSocketClient


Reviso: 30/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

O Exemplo abaixo exemplifica a utilizao de um cliente socket, note que para o


programa funcionar corretamente, deve-se alterar os parametros da conexo.
user function MySocket
Local oObj := tSocketClient():New()
nResp := oObj:Connect( 999, "172.255.255.255", 1000 )
if(nResp == 0 )
Conout( "Conexo OK!" )
else
Conout( "Erro na Conexo 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

Exemplo de Conexo SMTP


Reviso: 17/09/2003
Abrangncia
Verso 6.09

Verso 7.10

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


comando CONNECT SMTP , obtendo o resultado da conexo , 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("Conexo OK")
Else
GET MAIL ERROR cSmtpError
MsgStop("Erro de conexo : " + cSmtpError)
Endif

Exemplo de Envio de e-mail SMTP


Completo
Reviso: 17/09/2003
Abrangncia
Verso 6.09

Verso 7.10

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


comando CONNECT SMTP , obtendo o resultado da conexo , e em caso de falha ,
obtemos maiores detalhes utilizando o comando GET MAIL ERROR . Caso a conexo
seja realizada com sucesso , um e-mail de teste enviado , tendo tambm seu starus de
execuo 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( "Conexo OK" )
SEND MAIL FROM "eo@aqui.com.br" ;
TO "jose@bemlonge.com.br;joao@exemplo.com.br" ;
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 conexo : " + cSmtpError)
Endif

Exemplo da funo XMLERROR


Reviso: 17/07/2002
Abrangncia
Verso 6.09

Verso 7.10

No exemplo abaixo , tratamos a ocorrncia 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 criao do XMLl")
Else
//processamento dop XML ....
Endif

Manutenco de XML em Advpl


Reviso: 23/05/2003
Abrangncia
Verso 6.09

Verso 7.10

No exemplo abaixo , ilustrada de maneira simples a utilizao dos comandos e


funes Advpl para realizarmos manutenes em um arquivo no formato XML. Neste
exemplo , utilizamos a criao do objeto , a criao de novos nodes a partir do modelo
proposto , atribuio de suas propriedades , e gerao 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"})

aadd(aLivros , { "000002",;
"Livro Ficticeo" ,;
"Mary Brahms",;
"15/05/2001"})
// Crio modelo ( apenas estrutura ) em String
cModelo
cModelo
cModelo
cModelo
cModelo
cModelo
cModelo
cModelo
cModelo

+=
+=
+=
+=
+=
+=
+=
+=
+=

'<?xml version="1.0"?>'
'<MeuDoc>'
'<Livro>'
'<Id></Id>'
'<Titulo></Titulo>'
'<Autor></Autor>'
'<Data></Data>'
'</Livro>'
'</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 criao 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 funo MsgStop
MsgStop(cXml)
Else
MsgStop("Erro ("+str(nXmlStatus,3)+") na criao do XML.")
Endif
Return

Exemplo da funo AEVAL


Reviso: 03/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses 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 nmero ; e criamos um code-block que receber em x ( primeiro
parametro fornecido pela funo aEval) cada elemento do array , e y ( segundo
parametro fornecido pela aEval ) o nmero do elemento do array que est sendo
processado nesta execuo.
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 parmetro seja um array multi-Dimensional , sero passados
como parmetros os arrays de primeiro nivel para o code-BLock.
Vejamos uma aplicao mais complexa : Um array multi-dimensional temos 2colunas ,
uma de cdigo (string) e uma de valor ( numrica ) , e seja necessrio realizar um
clculo de totalizao da coluna numrica :
aItens := {}
aadd(aItens,{"Branco",10})
aadd(aItens,{"Preto",15})
aadd(aItens,{"Cinza",12})

// Podemos realizar a totalizao pelo metodo tradicional :


nTotal := 0
For nI := 1 to len(aItens)

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


Next
conout(nTotal) // 37

// Ou utilizando a Funco aEval :


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

Exemplo da funo EVAL


Reviso: 17/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

*** Este exemplo cria um bloco de cdigo que incrementa um nmero e depois o
avalia:
bBloco := { |nArg| nArg + 1 }
? EVAL(bBloco, 1)

// Resulta: 2

*** Este exemplo demonstra como um bloco de cdigo pode ser compilado em tempo
de execuao utilizando-se o operador macro (&):
bBloco := &("{ |nArg| nArg + 1 }")
? EVAL(bBlock, 1)

// Avalia o bloco

Exemplo da funo MSCRC32


Reviso: 02/07/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Atravs 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 funo MSCRC32STR


Reviso: 02/07/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Atravs 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+']')

Verso 8.11

Exemplo da funo SPLITPATH


Reviso: 05/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , exemplificamos o funcionamento da funo SplitPath , usando


combinaes de nomes de arquivos com ou sem drive , caminho , nome de arquivo e/ou
extenso.
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

Aps 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]
[] [] [] []

Exemplo da funo HTTPGET


Reviso: 27/01/2004
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

No exemplo abaixo, solicitamos a um servidor http o contedo de uma pgina, e a


chamada de uma pgina .asp passando parmetros via GET
// Buscar pgina
cHtmlPage := Httpget('http://www.servidor.com.br/pageteste.htm')
// Chamar pgina passando parmetros
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')

Exemplo da funo
HTTPLOGONUSER()
Reviso: 27/01/2004
Abrangncia
Verso 6.09

Verso 7.10

Verso 8.11

Atravs da funo httplogonuser() , quando utilizamos o Protheus Server como DLL


ISAPI, juntamente com o IIS, se e somente se desabilitado o acesso annimo o site , a
funo retornar uma string contendo o login do usurio.
A funo funciona tanto com links .apl como links .apw.
Observao : Caso esta funo seja chamada via Job , Remote , ou com o Protheus
Server HTTP sendo executado como Console ou Servio , sem usar a .dll ISAPI , a
funo 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+"
"

Exemplo da Funo Directory


Reviso: 09/07/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verso 8.11

Atravs do exemplo abaixo , obtemos no array aDirectory todos os diretrios no


ambiente do servidor a partir do path atual.
#INCLUDE "Directry.ch"
aDirectory := DIRECTORY("*.*","D")
AEVAL( aDirectory, {|aFile| CONOUT(aFile[F_NAME])} )

Exemplo da Funo MSCOMPRES


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

// Exemplo 1 Compacta apenas um arquivo


lRes := MSCOMPRESS( "AP6SRV.EXE", "AP6SRV.MZP" )

// Exemplo 2 Compacta um diretrio com senha


aNome := {}
ADIR( "*.DBF", aNome )
lRes := MSCOMPRESS( aNome, "ArqComp.MZP", "SENHA" )

Verso 7.10

Exemplo da funo ADIR


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Este exemplo cria um vetor que conter os nomes de todos os arquivos (.txt) no
diretrio DEFAULT corrente, e os relaciona no console utilizando a funao AEVAL() :
LOCAL aFiles[ADIR("*.TXT")]
ADIR("*.TXT", aFiles)
AEVAL(aFiles, { |element| conout(element) })

*** Vale lembrar que ADIR() uma funao de compatibilidade e portanto


desaconselhada. Ele est superado pela funao DIRECTORY(), que retorna todas
as informaoes de arquivo em um vetor multi-dimensional. ***

Exemplo da funo CURDIR


Reviso: 28/04/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , conferimos o path atual e tentamos setar um novo path atual ,
verificando se a operao 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

Exemplo da funo DIRREMOVE


Reviso: 01/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , executado a partir do Protheus Remoite , tentamos excluir a pasta


c:\TmpFiles , verificando se houve sucesso nesta operao.
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

Exemplo da funo DISKSPACE


Reviso: 01/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , obtemos os espaos em disco da unidade de disco da estao local


e do drive A: da estao local, verificando se houve sucesso na operao.
nBytesLocal := DISKSPACE( ) // Retorna o espao 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 espao disponivel no drive A:
local ( remote ).
If nBytes_A == -1
MsgStop('Unidade A: no est disponvel ou no h disco no Drive')
ElseIf nBytes_A < 8192
MsgStop('No h espao disponvel no disco. Substitua o disco na
Unidade A:')
Else
MsgStop('Unidade A: Verificada . '+str(nBytes_A,12)+' bytes
livres.')
Endif

Exemplo da funo FERASE


Reviso: 01/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

// Este exemplo apaga todos os arquivos .BAK do diretrio 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


operao
IF FERASE("C:\ListaTXT.tmp") == -1
MsgStop('Falha na deleo do Arquivo ( FError'+str(ferror(),4)+
')')
Else
MsgStop('Arquivo deletado com sucesso.')
ENDIF

Exemplo da funo FILE


Reviso: 04/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Nos exemplos abaixo , testamos a existncia de um determinado arquivo na estao


local e no diretrio definido como RootPath do ambiente (Environment) no Servidor.
FILE("teste.dbf") // Verifica no diretrio corrente do servidor se
existe o arquivo teste.dbf
FILE("\SIGAADV\TESTE.dbf") // Verifica no diretrio Sigaadv do
servidor se existe o arquivo teste.dbf
FILE("C:\TEMP\TESTE.dbf") // // Verifica no diretrio Temp do cliente
(Remote) se existe o arquivo teste.dbf

Observao : Caso a funo File() seja executada em Job ( programa sem interface
remota ) , sendo passado um caminho absoluto de arquivo ( exemplo c:\teste.txt) , a
funo retornar .F. e FERROR() retornar -1 )

Exemplo da funo FOPEN


Reviso: 05/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , tentamos abrir o arquivo error.log para escrita e gravao


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

Exemplo da funo FRENAME


Reviso: 05/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Nos exemplos abaixo , citamos 3 usos da funo frename : Renomear arquivos na


estao 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 operao 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 operao 2 : FError '+str(ferror(),4))
Endif
// Movendo um arquivo no client , da pasta Raiz para a pasta c:\Temp ,
alterando tambm o nome do arquivo.
nStatus3 := frename('c:\Lista.txt','c:\Temp\OldLista.txt')
IF nStatus3 == -1
MsgStop('Falha na operao 3 : FError '+str(ferror(),4))
Endif

Exemplo da funo FWRITE


Reviso: 27/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Este exemplo realiza uma cpia 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
/ gravados por vez

// Define o bloco de Bytes a serem lidos

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 criao 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 prprio tamanho do
Arquivo
nBytesFalta := nTamArquivo
// Enquanto houver dados a serem copiados

While nBytesFalta > 0


// Determina quantidade de dados a serem lidos
nBytesLer
:= Min(nBytesFalta , F_BLOCK )
// l os dados do Arquivo
nBytesLidos := FREAD(nHOrigem, @cBuffer, nBytesLer )
// Determina se no 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 no houve falha na gravao
If nBytesSalvo < nBytesLer
MsgStop("Erro de gravao 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('Cpia de Arquivos finalizada com sucesso. '+;
str(nTamArquivo,12,0)+' bytes
copiados.','Final')
Else
MsgStop( 'Falha na Cpia. Arquivo de Destino incompleto. '+;
'Do total de '+str(nTamArquivo,12,0)+'
bytes, faltaram '+str(nBytesFalta,12,0)+' bytes.','Final')
Endif
Return

Exemplo da funo GetClientDir()


Reviso: 04/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , obtemos o drive e diretrio onde esto instalados o Remote .


MsgStop('Protheus Remote instalado em '+ GetClientDir())

Exemplo das funes IsSrvUnix e


GetRemoteIniName
Reviso: 12/06/2003
Abrangncia
Verso 6.09

Verso 7.10

Atravs do exemplo abaixo, podemos obter o path de execuo 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

Exemplo da funo ALIAS


Reviso: 25/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

No exemplo abaixo , determinamos qual a area de trabalho est atualmente em uso.


cAlias := alias()
IF empty(cAlias)
alert('No h Area em uso')
Else
alert(Area em uso atual : '+cAlias)
Endif

Exemplo da funo DBAppend


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses 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 includos permanecem bloqueados
DBAPPEND()
// Todos os bloqueios anteriores so liberados

Exemplo da funo DBClearAllFilter


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo demonstra como se pode utilizar DBCLEARALLFILTER para limpar a


expresso de filtro.
USE Clientes NEW
DBSETFILTER( {|| Idade < 40}, "Idade < 40") // Seta a expresso de
filtro
...
DBCLEARALLFILTER()
// Limpa a expresso de filtro de todas as ordens

Exemplo da funo DBClearFilter


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo demonstra como se pode utilizar DBCLEARFILTER para limpar a


expresso de filtro.
USE Clientes NEW
DBSETFILTER( {|| Idade < 40}, "Idade < 40" ) // Seta a expresso de
filtro
...
DBCLEARFILTER()
// Limpa a expresso de filtro

Exemplo da funo DBClearIndex


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo demonstra como se pode utilizar a funo 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 funo DBCloseAll


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

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

Exemplo da funo DBCloseArea


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses 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 funo DBSTRUCT


Reviso: 08/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

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

Exemplo da funo DBSkip


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo mostra como o DBSKIP pode passar do final da tabela e do incio 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 funo DBUnlock


Reviso: 08/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

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

Exemplo da funo HEADER


Reviso: 03/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo define uma pseudo-funao, 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 funao:
USE Sales NEW
USE Customer NEW
? DbfSize()
? Sales->(DbfSize())

Exemplo da funo USED


Reviso: 09/07/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verso 8.11

Verses Anteriores

O exemplo abaixo determina se um arquivo de banco de dados em use na rea de


trabalho corrente:
USE Customer NEW
conout(USED())
CLOSE
conout(USED())

// Resulta: .T.
// Resulta: .F.

Exemplo de funo DBUnlockAll


Reviso: 08/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

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

Exemplo da funo DTOC


Reviso: 13/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Os exemplos a seguir demonstram utilizaoes gerais de DTOC():


conout( DATE() )
conout( DTOC(DATE()) )
conout( "Hoje e " + DTOC(DATE()) )

// Resulta: 09/01/90
// Resulta: 09/01/90
// Resulta: Hoje e 09/01/90

Exemplo da funo DTOS


Reviso: 13/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Os exemplos a seguir ilustram DTOS() em conjunto com vrias outras funoes:


conout( DATE() )
conout( DTOS(DATE()) )
conout( LEN(DTOS(CTOD(""))) )

// Resulta: 09/01/90
// Resulta: 19900901
// Resulta: 8

Este exemplo demonstra como criar um ndice com uma data


composta e chave de caractere utilizando DTOS():

Exemplo da funo GETIMPWINDOWS


Reviso: 05/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo , determinamos as impressoras disponveis na estao Remote e no


Server , respectivamente. E , mostramos no Console do Server a(s) impressora(s)
encontrada(s).
aImpRemote := GetImpWindows(.F.)
conout('Impressoras na estao remota')
aeval(aImpRemote , { |x| conout(x) })
aImpServer := GetImpWindows(.T.)
conout('Impressoras no Servidor')
aeval(aImpServer , { |x| conout(x) })

Exemplo da funo GETPORTACTIVE


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No exemplo abaixo, determinamos as portas de impresso disponveis na estao


Remote e no Server, respectivamente. E mostramos no Console do Server a(s) porta(s)
encontrada(s).
aPortRemote := GetPortActive(.F.)
conout('Impressoras na estao 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
execuo da rotina.
Impressoras na estao remota
COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:\\prnserver\prx-lp1
Impressoras no Servidor
COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:

Exemplo da funo DESCEND


Reviso: 08/09/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

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

Observao : Faz-se necessria a converso da Data para String m atravs da


funo DTOS(), pois a funo DESCEND apenas trabalha com Strings.

Exemplo da Funo DAY


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Os exemplos seguintes mostram a funao DAY() sendo utilizada


de diversas maneiras:
conout(
conout(
conout(
conout(

DATE() )
DAY(DATE()) )
DAY(DATE()) + 1)
DAY(CTOD("")) )

// Resulta: 09/01/90
// Resulta: 1
// Resulta: 2
// 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

Exemplo da Funo MONTH


Reviso: 22/09/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Estes exemplos ilustram o retorno do ms da data do sistema:


conout( DATE() )
conout( MONTH(DATE()) )
conout( MONTH(DATE()) + 1 )

// Resulta: 09/01/90
// Resulta: 9
// Resulta: 10

Este exemplo demonstra a funao MONTH() atuando em uma data nula:


conout( MONTH(CTOD("")) )

// Resulta: 0

Exemplo da funco CDOW


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Os exemplos a seguir ilustram o funcionamento da funao CDOW():


conout( DATE() )
conout( CDOW(DATE()) )
conout( CDOW(DATE() + 7) )
conout( CDOW(CTOD("12/06/90")) )

// Resulta: 08/04/02
// Resulta: Sunday
// Resulta: Sunday
// Resulta: Thursday

Exemplo da funo CMONTH


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Os exemplos seguintes ilustram a utilizaao da funao 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

//
//
//

Exemplo da funo DATE


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Os exemplos seguintes mostram a funo DATE() utilizada de vrias maneiras:


conout(
conout(
conout(
dDate =
conout(

DATE() )
DATE() + 30 )
DATE() - 30 )
DATE()
CMONTH(dDate) )

// Resulta: 08/04/02
// Resulta: 09/03/02
// Resulta: 07/05/02
// Resulta: August

Exemplo da funo DOW


Reviso: 07/05/2003
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Os exemplos a seguir ilustram CDOW() e seu relacionamento com DOW():


conout(
conout(
conout(
conout(
conout(

DATE() )
DOW(DATE()) )
CDOW(DATE()) )
DOW(DATE() - 2) )
CDOW(DATE() - 2) )

//
//
//
//
//

Resulta:
Resulta:
Resulta:
Resulta:
Resulta:

09/01/89
3
Terca-feira
1
Domingo

Exemplo da funo ElapTime()


Reviso: 08/09/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Este exemplo utiliza a funo ElapTime() para calcular o tempo necessrio para um
determinado processamento.
cHoraInicio := TIME() // Armazena hora de inicio do processamento
.
. <instrucoes>
.
cElapsed := ELAPTIME(TIME(),cHoraInicio) // Calcula a diferena de
tempo

Considerando o exemplo acima, caso cHoraInicio seja 23:45:00 , e a hora final do


processamento seja 00:20:00 , a diferena entre eles , computada na varivel cElapsed,
ser 00:15:00 .

Exemplo da funo TIME


Reviso: 19/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Estes exemplos mostram a funo 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

Exemplo da funo YEAR


Reviso: 13/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Os exemplos a seguir ilustram YEAR() usando a data do


sistema:
conout( DATE() )
conout( YEAR(DATE()) )
conout( YEAR(DATE()) + 11 )

// Resulta: 09/01/90
// Resulta: 1990
// Resulta: 2001

Este exemplo cria uma funao definida pelo usurio usando


YEAR() para formatar um valor data na forma : ms dia, ano:
conout( U_Mdy(DATE()) )
1990

// Resulta: September 20,

USER FUNCTION Mdy( dDate )


Return CMONTH(dDate) + " " + LTRIM(STR(DAY(dDate)));
+ "," + STR(YEAR(dDate))

Exempo da funo Seconds()


Reviso: 09/10/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Este exemplo compara o valor de TIME() com o de SECONDS():


conout( TIME() )
conout( SECONDS() )

// Resulta: 10:00:00
// 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" )

Exemplo da funo AADD


Reviso: 06/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Os exemplos a seguir demonstram os efeitos de chamadas mltiplas da funo AADD()


para um vetor:
aArray := {}
AADD(aArray, 5)
AADD(aArray, 10)
AADD(aArray, { 12, 10 })
}

//
//
//
//

Resulta:
Resulta:
Resulta:
Resulta:

aArray
aArray
aArray
aArray

e
e
e
e

um vetor vazio
{ 5 }
{ 5, 10 }
{ 5, 10, { 12, 10 }

Exemplo da funo ACOPY


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

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

Exemplo da funo ADEL


Reviso: 17/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Este exemplo cria um vetor constante de trs elementos, e depois


elimina o segundo elemento. O terceiro elemento sobe uma posiao, e ao
novo terceiro elemento atribuido NIL:
LOCAL aArray
aArray := { 1, 2, 3 }
ADEL(aArray, 2)
}

// Resulta: aArray e agora { 1, 2, 3 }


// Resulta: aArray e agora { 1, 3, NIL

Exemplo da funo AEVAL


Reviso: 17/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses 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]) } )

Exemplo da funo AFILL


Reviso: 17/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Neste exemplo, criado um vetor com trs elementos. O vetor depois preenchido com
falso (.F.). Ao final, aos elementos nas posioes dois e trs atribuido o novo valos de
verdadeiro (.T.):
LOCAL aLogic[3]
AFILL(aLogic, .F.)
AFILL(aLogic, .T., 2, 2)

// Resulta: aLogic e { NIL, NIL, NIL }


// Resulta: aLogic e { .F., .F., .F. }
// Resulta: aLogic e { .F., .T., .T. }

Exemplo da funo AINS


Reviso: 17/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo demonstra o efeito da utilizao de AINS() em um vetor:


LOCAL aArray
aArray := { 1, 2, 3 }
AINS(aArray, 2)
}

// Resulta: aArray e agora { 1, 2, 3 }


// Resulta: aArray e agora { 1, NIL, 2

Exemplo da funo ARRAY


Reviso: 26/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

Este exemplo cria um vetor unidimensional de cinco elementos utilizando a funao


ARRAY(), e depois exibe a aao equivalente atribuindo um vetor literal de valores NIL:
aArray := ARRAY(5)
aArray := { NIL, NIL, NIL, NIL, NIL }

Este exemplo ilustra trs declaraoes diferentes que criam o mesmo vetor multidimensional:
aArray := ARRAY(3, 2)
aArray := { {NIL, NIL}, {NIL, NIL}, {NIL, NIL} }
aArray := { ARRAY(2), ARRAY(2), ARRAY(2) }

Exemplo da funo ASCAN


Reviso: 26/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Verses Anteriores

O exemplo a seguir demonstra a pesquisa em um vetor de trs elementos utilizando


valores simples e um bloco de cdigo como critrios de pesquisa. Os critrios do bloco
de cdigo ilustram como executar uma pesquisa que nao faz diferenciaao entre
maisculas e minsculas:
aArray := { "Tom", "Mary", "Sue" }
? ASCAN(aArray, "Mary")
? ASCAN(aArray, "mary")
? ASCAN(aArray, { |x| UPPER(x) == "MARY" })

// Resulta: 2
// Resulta: 0
// Resulta: 2

O Exemplo abaixo demonstra como continuar a pesquisa dos mltiplos tipos de um


argumento de pesquisa aps ter sido encontrada uma correspondncia:
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

Exemplo da funo ASIZE


Reviso: 17/07/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

Estes exemplos demonstram a adio de novos elementos e a eliminao de elementos


existentes:
aArray := { 1 }
ASIZE(aArray, 3)
ASIZE(aArray, 1)

// Resulta: aArray e { 1 }
// Resulta: aArray e { 1, NIL, NIL }
// Resulta: aArray e { 1 }

Exemplo da funo ASORT


Reviso: 04/08/2002
Abrangncia
Verso 5.07

Verso 5.08

Verso 6.09

Verso 7.10

No Exemplo abaixo , ordenamos um array em ordem crescenter , depois em ordem


decrescente atravs 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 expresso de ordenao a funo upper() , para


ordenar o array em ordem alfabrica independentemente da informao estar em letras
maisculas e/ou minusculas.
aArray := { "Fred", Kate", "ALVIN", "friend" }
ASORT(aArray,,, { |x, y| UPPER(x) < UPPER(y) })

No exemplo abaixo , montamos um code-block para ordenao de um array multidimensional , para ordenar o array em ordem crescente do segundo elemento da
dimenso.
aKids := { {"Mary", 14}, {"Joe", 23},{"Art", 16} }
aSortKids := ASORT(aKids,,, { |x, y| x[2] < y[2] })
// Resultado : { {"Mary", 14}, {"Art", 16}, {"Joe",23} }

Você também pode gostar