Você está na página 1de 126

A Linguagem ADVPL - TOTVS Reviso: 06/2012 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 linguagem chamada Advanced Protheus Language. xBase um padro de banco de dados e linguagem de programao. Possui como extenso do nome dos seus arquivos o .DBF e tambm .DBT e ndices .NDX, .NTX, .MDX, .CDX, etc. 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 bsica, com o nome de 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 ser executado 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. Podem-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 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, podem-se escrever rotinas ADVPL cuja interface final ser um terminal Telnet ou um coletor de dados mvel.

Classes da Interface Visual tSrvObject Reviso: 26/06/2012 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 Proprieda de nLeft nTop nWidth nHeight cCaption cTooltip lShowHint cMsg nClrText nClrPane bWhen bValid blClicked brClicked blDblClick oWnd lVisible Cargo Tipo Numrico. Numrico. Numrico. Numrico. Caractere. Caractere. Descrio

Coordenada horizontal em pixels. Coordenada vertical em pixels. Largura em pixels. Altura em pixels. Ttulo ou contedo do objeto. Mensagem exibida quando objeto exibe seu tooltip. Flag que ativa .T. ou desativa .F. a exibio do tooltip do Lgico. objeto. Mensagem exibida na barra de status da janela principal Caractere. quando o objeto ganha foco. Numrico. Cor do texto do objeto. Numrico. Cor do fundo do objeto. Executado quando h movimentao de foco na janela.Se Bloco de retornar .T. o objeto continua habilitado, se retornar .F. o cdigo. objeto ser desabilitado. Executado quando o contedo do objeto modificado e Bloco de dever ser validado. Deve retornar .T. se o contedo cdigo. vlido e .F. se contedo invlido. Bloco de Executado quando acionado click do boto esquerdo do cdigo. mouse sobre o objeto. Bloco de Executado quando acionado click do boto direito do cdigo. mouse sobre o objeto. Bloco de Executado quando acionado duplo click do boto esquerdo cdigo. do mouse sobre o objeto. Objeto. Janela onde o objeto foi criado. Booleano. Se .T. o objeto visvel, se .F. o objeto invisvel. Objeto ou Contedo associado ao objeto.

varivel. bLostFocu Bloco de Executado quando objeto perde foco. s cdigo. Bloco de bGotFocus Executado quando objeto ganha foco. cdigo. Mtodos SetFocus Sintaxe SetFocus( ) Descri Fora o foco de entrada de dados mudar para o o objeto. Retorno NIL Hide

Sintaxe Descri o Retorno

Hide( ) Torna invisvel. NIL

objeto

Show Sintaxe Show( ) Descri Torna objeto o visvel. Retorno NIL Enable Sintaxe Enable( ) Descri Habilita o o objeto. Retorno NIL Disable Sintaxe Disable( ) Descri Desabilita o o objeto. Retorno NIL Refresh

Sintaxe Refresh( ) Descri Fora atualizao (sincronia) de propriedades entre o programa e o 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 Descri Mtodo construtor da classe. o New([acName], [nPar2], [anHeight], [lPar4], [alBold], [nPar6], Sintaxe [lPar7], [nPar8], [alItalic], [alUnderline]) Parmet Parmetr Tipo / Descrio ros o Caractere, opcional. Nome da fonte, o padro acName Arial. nPar2 Reservado. Numrico, opcional. Tamanho da fonte. O anHeight padro -11. lPar4 Reservado. Lgico, opcional. Se .T. o estilo da fonte ser alBold negrito. nPar6 Reservado. lPar7 Reservado. nPar8 Reservado. Lgico, opcional. Se .T. o estilo da fonte ser alItalic itlico. alUnderli Lgico, opcional. Se .T. o estilo da fonte ser ne sublinhado.

Retorno O objeto criado.

Exemplo #INCLUDE "PROTHEUS.CH" User Function Teste09() 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: 06/2012 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 Numrico. Alinhamento do controle no espao disponibilizado pelo seu Align objeto parente. 0 = Nenhum (padro), 1= no topo, 2 = no rodap, 3= a esquerda, 4 = a direita e 5 = em todo o parente. lModifie Lgico. Se .T. indica que o contedo da varivel associada ao controle d foi modificado. lReadOn Lgico. Se .T. o contedo da varivel associada ao controle ly permanecer apenas para leitura. Numrico. Handle (identificador) do objeto sobre o qual o controle foi hParent criado. bChang Bloco de cdigo. Executado quando o estado ou contedo do controle e modificado pela ao sobre o controle. Mtodos

SetFocus Descri Fora mudana do foco de entrada de dados para o o controle. Sintaxe SetFocus( ) REtorn NIL o

tButton

Reviso: 26/06/2012 Abrangncia Verso 5.07 Classe de boto. Hierarquia tSrvObject -> tControl -> tButton Descrio Utilize a classe tButton para criar um controle visual do tipo boto. Propriedades Nome Tipo / Descrio lProcessi Lgico. Se .T. indica o boto est efetuando uma ng ao. Bloco de cdigo. Executado quando o boto bAction pressionado. Mtodos

Verso 5.08

Verso 6.09

Verso 7.10

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [acCaption], [aoWnd], [abAction], Sintaxe [anWidth], [anHeight], [nPar8], [aoFont], [lPar10], [alPixel], [lPar12],[cPar13], [lPar14], [abWhen], [bPar16], [lPar17]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical em pixels ou anRow carateres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. acCaptio Caractere, opcional. Titulo do boto. n Objeto, opcional. Janela ou controle onde o boto aoWnd dever ser criado. Bloco de cdigo, opcional. Bloco que dever ser abAction acionado quando o boto for pressionado. anWidth Numrico, opcional. Largura do boto em pixels. anHeight Numrico, opcional. Altura do boto em pixels. nPar8 Reservado.

Objeto, opcional. Objeto tipo tFont com propriedades da fonte utilizada para o ttulo do boto. lPar10 Reservado. Lgico, opcional. Se .T. considera as coordenadas alPixel passadas em pixels, se .F. (padro) considera em caracteres. lPar12 Reservado. cPar13 Reservado. lPar14 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na abWhen 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. aoFont 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 Descri Mtodo construtor da classe. o New([anRow], [anCol], [acCaption], [abSetGet], [aoWnd], [anWidth], [anHeight], [nPar8], [abClick], [aoFont], [abValid], Sintaxe [anClrFore], [anClrBack], [lPar14], [alPixel], [cPar16], [lPar17], [abWhen]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical em pixels ou anRow carateres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. acCaptio Caractere, opcional. Texto exibido pelo controle. n Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o abSetGe controle utiliza para atualizar a varivel <var>. <var> t deve ser tipo lgico, se <var> = .T. ento o controle aparecer checado. Objeto, opcional. Janela ou controle onde o controle aoWnd 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. Objeto, opcional. Objeto tipo tFont com propriedades aoFont da fonte utilizada para o texto do controle. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve abValid retornar .T. se o contedo for vlido e .F. quando o contedo for invlido. anClrFor Numrico, opcional. Cor de fundo do controle. e anClrBac Numrico, opcional. Cor do texto do controle. k lPar14 Reservado. Lgico, opcional. Se .T. as coordenadas informadas so alPixel em pixels, se .F. so em caracteres. cPar16 Reservado. lPar17 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na abWhen janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no. Retorno O objeto construdo. Exemplo #include protheus.ch User Function Teste11() 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 criar 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 aItem formatos: a) Seqencial, exemplo: {item1,item2,...,itemN} ou b) s Indexada, exemplo: {a=item1,b=item2, ..., n=itemN}. nAt Numrico. Posio do item selecionado. Mtodos

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [abSetGet], [anItems], [anWidth], [anHeight], [aoWnd], [nPar8], [abChange], [abValid], [anClrText], Sintaxe [anClrBack], [alPixel], [aoFont], [cPar15], [lPar16], [abWhen], [lPar18], [aPar19], [bPar20], [cPar21], [acReadVar]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. abSetGe Bloco de cdigo, opcional. Bloco de cdigo no formato t {|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. Array, opcional. Lista de items, caracteres, a serem exibidos. Pode ter os seguintes formatos: a) anItems 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. Objeto, opcional. Janela ou controle onde o controle aoWnd ser criado. nPar8 Reservado. abChang Bloco de cdigo, opcional. Executado quando o e controle modifica o item selecionado. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve abValid retornar .T. se o contedo for vlido e .F. quando o contedo for invlido. anClrBac Numrico, opcional. Cor de fundo do controle. k anClrTex Numrico, opcional. Cor do texto do controle. t Lgico, opcional. Se .T. as coordenadas informadas so alPixel em pixels, se .F. so em caracteres. Objeto, opcional. Objeto tipo tFont utilizado para aoFont definir as caractersticas da fonte utilizada para exibir o contedo do controle. cPar15 Reservado. lPar16 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na abWhen 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 acReadV dever manipular, dever ser a mesma varivel ar informada no parmetro abSetGet, e ser o retorno da funo ReadVar( ). Retorno O objeto criado.

Select Descri Muda o item selecionado no combobox.

o Sintaxe Select( [anItem] ) Parmet Tipo / Descrio Parmet ro ros Numrico, opcional. Posio do item a ser anItem selecionado. Retorno NIL Exemplo #include protheus.ch User Function TesteGet() Local oDlg, oButton, oCombo, cCombo, aItems:= {item1,item2,item3} cCombo:= aItems[2] DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE Meu Combo oCombo:= tComboBox():New(10,10,{|u|if(PCount()>0,cCombo:=u,cCombo)},; aItems,100,20,oDlg,,{||MsgStop(Mudou item)},; ,,,.T.,,,,,,,,,cCombo) // 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 lPasswor Lgico. Se .T. o controle se comporta como entrada de dados de senha, d exibindo asteriscos * para esconder o contedo digitado. Picture Caractere. Mscara de formatao do contedo a ser exibido. Mtodos

New Descri Mtodo construtor do controle. o New([anRow], [anCol], [abSetGet], [aoWnd], [anWidth], [anHeight], [acPict], [abValid], [anClrFore], [anClrBack], [aoFont], Sintaxe [lPar12], [oPar13], [alPixel], [cPar15], [lPar16], [abWhen], [lPar18], [lPar19], [abChange], [alReadOnly], [alPassword], [cPar23], [acReadVar], [cPar25], [lPar26], [nPar27], [lPar28]) Parmet Parmetr Tipo / Descrio ros o Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o abSetGet 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. Caractere, opcional. Mscara de formatao do acPict contedo a ser exibido. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar abValid .T. se o contedo for vlido e .F. quando o contedo for invlido. anClrFore Numrico, opcional. Cor de fundo do controle. anClrBac Numrico, opcional. Cor do texto do controle. k Objeto, opcional. Objeto tipo tFont utilizado para aoFont definir as caractersticas da fonte utilizada para exibir o contedo do controle. lPar12 Reservado. oPar13 Reservado. Lgico, opcional. Se .T. as coordenadas informadas alPixel so em pixels, se .F. so em caracteres. cPar15 Reservado. lPar16 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo abWhen 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. abChang Bloco de cdigo, opcional. Executado quando o e controle modifica o valor da varivel associada. alReadOn Lgico, opcional. Se .T. o controle no poder ser ly editado. Lgico, opcional. Se .T. o controle exibir asteriscos alPasswo * no lugar dos caracteres exibidos pelo controle rd para simular entrada de senha. cPar23 Reservado. Caractere, opcional. Nome da varivel que o controle acReadV dever manipular, dever ser a mesma varivel ar informada no parmetro abSetGet, e ser o retorno da funo ReadVar( ). cPar25 Reservado. lPar26 Reservado. nPar27 Reservado. lPar28 Reservado. Retorno 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 Descri Mtodo construtor da classe. o New([anTop], [anLeft], [anBottom], [anRight], [acCaption], Sintaxe [aoWnd], [anClrText], [anClrPane], [alPixel], [lPar10]) Parmet Tipo / Descrio ro Numrico, opcional. Coordenada vertical superior em anTop pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda anLeft em pixels ou caracteres. anBotto Numrico, opcional. Coordenada vertical inferior em m pixels ou caracteres. Numrico, opcional. Coordenada horizontal direita em anRight pixels ou caracteres. Parmet acCaptio ros Caractere, opcional. Ttulo do grupo. n Objeto, opcional. Janela ou controle onde o controle aoWnd ser criado. anClrTex Numrico, opcional. Cor do texto. t anClrPan Numrico, opcional. Cor do fundo. e Lgico, opcional. Se .T. as coordenadas informadas so alPixel em pixels, se .F. so em caracteres. lPar10 Reservado.

Retorno O objeto criado. Exemplo #include protheus.ch User function teste() Local oDlg, oGroup, oGet1, oGet2, cGet1:=Space(10),; cGet2:= Space(10) DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 TITLE My test PIXEL oGroup:= tGroup():New(10,10,200,200,grupo de gets,oDlg,,,.T.) @ 10,10 MSGET oGet1 VAR cGet1 SIZE 100,10 OF oGroup PIXEL @ 30,10 MSGET oGet2 VAR cGet2 SIZE 100,10 OF oGroup PIXEL ACTIVATE MSDIALOG oDlg CENTERED Return NIL

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. aItem Array de items caracteres. Lista do itens s selecionveis. Mtodos

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [abSetGet], [aaItems], [anWidth], [anHeigth], [abChange], [aoWnd], [abValid], [anClrFore], Sintaxe [anClrBack], [alPixel], [lPar13], [abLDBLClick], [aoFont], [cPar16], [lPar17], [abWhen], [aPar19], [bPar20], [lPar21], [lPar22], [abRightClick] ) Parmet Parmetro Tipo / Descrio ros Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> )} abSetGet que o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo caracter ou numrica. Array de items caracteres, opcional. Lista de items aaItems selecionveis. anWidth Numrico, opcional. Largura do controle em pixels.

anHeight Numrico, opcional. Altura do controle em pixels. Bloco de cdigo, opcional. Executado quando o item abChange selecionado alterado. Objeto, opcional. Janela ou controle onde o controle aoWnd ser criado. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve abValid 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. Lgico, opcional. Se .T. as coordenadas informadas alPixel so em pixels, se .F. so em caracteres. lPar13 Reservado. Bloco de cdigo, opcional. Executado quando abLDBLCli acionado duplo click do boto esquerdo do mouse ck sobre o controle. Objeto, opcional. Objeto tipo tFont utilizado para aoFont definir as caractersticas da fonte utilizada para exibir o contedo do controle. cPar16 Reservado. lPar17 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo abWhen 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 abRightCli acionado click do boto direito do mouse sobre o ck controle. Retorno O objeto criado.

Select Descri Fora a seleo de um item. o Sintaxe Select( [anItem] ) Parmet Tipo / Descrio Parmet ro ros Numrico, opcional. Posio do item a ser nItem selecionado. Retorno NIL Add Descri Insere ou adiciona novo item. o

Sintaxe Add( cText, nPos ) Parmet Tipo / Descrio ro cText Caractere, obrigatrio. Texto do item. Parmet Numrico, obrigatrio. Se 0 ou maior que o nmero de ros itens, insere o item no final da lista. Se valor entre 1 e nPos nmero de itens, insere o item na posio informada, empurrando o item anterior para baixo. Retorno NIL

Modify Descri Modifica o texto de um item. o Sintaxe Modify( cText, nPos ) Parmet Tipo / Descrio ro Parmet cText Caractere, obrigatrio. Novo texto do item. ros Numrico, obrigatrio. Posio a ser modificada deve nPos ser maior que 0 e menor ou igual que o nmero de itens. Retorno NIL Del Descri Apaga um item. o Sintaxe Del( nPos ) Parmet Tipo / Descrio Parmet ro ros Numrico, obrigatrio. Posio a ser excluida, deve ser nPos maior que 0 e menor ou igual que o nmero de itens. Retorno NIL Len Descri Retorna o nmero de o itens. Sintaxe Len( ) Retorn Numrico. Nmero de o itens. Reset Descri Apaga todos os o itens. Sintaxe Reset( ) Retorn NIL o

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 Numrico. Nmero total de passos at o preenchimento da nTotal rgua de processo. lPercenta Lgico. Se .T. considera o passo de movimentao em ge porcentagem. nClrBar Numrico. Cor da barra de andamento. Mtodos

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [abSetGet], [anTotal], [aoWnd], Sintaxe [anWidth], [anHeight], [lPar8], [alPixel], [oPar10], [cPar11], [alNoPerc], [anClrPane], [nPar14], [anClrBar], [nPar16], [lPar17]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato abSetGe {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o t controle utiliza para atualizar a varivel <var>. <var> deve ser tipo numrico. Numrico, opcional. Numero total de passos at o anTotal preenchimento da rgua de processo.

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. Lgico, opcional. Se .T. as coordenadas informadas so alPixel em pixels, se .F. so em caracteres. oPar10 Reservado. cPar11 Reservado. Lgico, opcional. Se .T. (padro) no considera os alNoPerc passos de atualizao em porcentagem. anClrPan Numrico, opcional. Cor de fundo do controle. e nPar14 Reservado. anClrBar Numrico, opcional. Cor da barra de andamento. nPar16 Reservado. lPar17 Reservado. Retorno O objeto criado. aoWnd

Set Descri Atualiza a posio da rgua de processamento. o Sintaxe Set( [nVal] ) Parmet Tipo / Descrio Parmet ro ros Numrico, opcional. Novo valor da posio da rgua de nVal processamento. Retorno NIL

Exemplo: #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 lWordWra Lgico. Se .T., faz quebra automtica p de linhas. Mtodos

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [abSetGet], [aoWnd], [anWidth], [anHeight], [aoFont], [alHScroll], [anClrFore], [anClrBack], Sintaxe [oPar11], [alPixel], [cPar13], [lPar14], [abWhen], [lPar16], [lPar17], [alReadOnly], [abValid], [bPar20], [lPar21], [alNoBorder], [alNoVScroll]) Parmet Parmetr Tipo / Descrio ros o Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o abSetGet controle utiliza para atualizar a varivel <var>. <var> deve ser tipo caracter. Objeto, opcional. Janela ou controle onde o controle aoWnd ser criado. anWidth Numrico, opcional. Largura do controle em pixels. anHeight Numrico, opcional. Altura do controle em pixels.

Objeto, opcional. Objeto tipo tFont utilizado para aoFont definir as caractersticas da fonte utilizada para exibir o contedo do controle. Lgico, opcional. Se .T., habilita barra de rolagem alHScroll horizontal. anClrFore Numrico, opcional. Cor de fundo do controle. anClrBac Numrico, opcional. Cor do texto do controle. k oPar11 Reservado. Lgico, opcional. Se .T. as coordenadas informadas alPixel so em pixels, se .F. so em caracteres. cPar13 Reservado. lPar14 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo abWhen 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. alReadOn Lgico, opcional. Se .T. o controle so permitira leitura. ly Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar abValid .T. se o contedo for vlido e .F. quando o contedo for invlido. bPar20 Reservado. lPar21 Reservado. alNoBord Lgico, opcional. Se .T. cria controle sem borda. er alNoVScr Lgico, opcional. Se .T., habilita barra de rolagem oll vertical. Retorno O objeto criado.

EnableVScroll Descri Habilita a barra de rolagem vertical. o Sintaxe EnableVScroll( lEnable ) Parmet Tipo / Descrio Parmet ro ros Lgico, obrigatrio. Se .T. habilita se .F. desabilita a lEnable barra de rolagem. Retorno NIL EnableHScroll Descri Habilita a barra de rolagem horizontal. o Sintaxe EnableHScroll( lEnable )

Parmet Tipo / Descrio Parmet ro ros Lgico, obrigatrio. Se .T. habilita se .F. desabilita a lEnable barra de rolagem. Retorno NIL Exemplo #include protheus.ch User Function Teste() Local oDlg, oMemo, cMemo:= space(50) DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE My test oMemo:= tMultiget():New(10,10,{|u|if(Pcount()>0,cMemo:=u,cMemo)}; ,oDlg,100,100,,,,,,.T.) @ 200,10 BUTTON oBtn PROMPT Fecha OF oDlg PIXEL ACTION oDlg:End() ACTIVATE MSDIALOG oDlg CENTERED MsgStop(cMemo) Return NIL

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 Descri Mtodo construtor da classe. o New([anRow], [anCol], [acText], [aoWnd], [aoFont], [alCentered], Sintaxe [lPar6], [anClrText], [anClrBack], [anWidth], [anHeight], [alLowered], [alRaised]) Parmetr Tipo / Descrio o anRow Numrico, opcional. Coordenada vertical em pixels. anCol Numrico, opcional. Coordenada horizontal em pixels. acText Caractere, opcional. Texto a ser exibido ao fundo. Objeto, opcional. Janela ou controle onde ser criado o aoWnd objeto. alCenter Lgico, opcional. Se .T. exibe o texto de ttulo ao ed centro do controle. Parmet lPar6 Reservado. ros anClrTex Numrico, opcional. Cor do texto do controle. t anClrBac Numrico, opcional. Cor do fundo do controle. k anWidth Numrico, opcional. Largura do controle em pixels. anHeight Numrico, opcional. Altura do controle em pixels. alLowere Lgico, opcional. Se .T. exibe o painel rebaixado em d relao ao controle de fundo. Lgico, opcional. Se .T. exibe a borda do controle alRaised rebaixada em relao ao controle de fundo.

Retorno O objeto criado. Exemplo #include protheus.ch User Function Teste() Local oDlg, oPanel, oBtn1, oBtn2 DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE My test oPanel:= tPanel():New(10,10,,oDlg,,,,,CLR_BLUE,100,100) // cria o painel @ 10,10 BUTTON oBtn1 PROMPT hide OF oPanel ACTION oPanel:Hide() // cria 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 nOptio Numrico. Item selecionado. n Array de caracteres. Lista de items aItems selecionveis. Mtodos

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [aacItems], [abSetGet], [aoWnd], [aPar6], [abChange], [anClrText], [anClrPan], [cPar10], [lPar11], Sintaxe [abWhen], [anWidth], [anHeight], [abValid], [lPar16], [lPar17], [alPixel]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. aacItems Array de caracteres, opcional. Lista de opes. Bloco de cdigo, opcional. Bloco de cdigo no formato abSetGe {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o t controle utiliza para atualizar a varivel <var>. <var> deve ser tipo numrico. Objeto, opcional. Janela ou controle onde o controle aoWnd ser criado.

aPar6 Reservado. abChang Bloco de cdigo, opcional. Executado quando o item e selecionado alterado. anClrTex Numrico, opcional. Cor do texto do controle t anClrPan Numrico, opcional. Cor de fundo do controle. cPar10 Reservado. lPar11 Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na abWhen 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. Bloco de cdigo, opcional. Executado quando o abValid contedo do controle deva ser validado, retornando .T. se o contedo for vlido, e .F. quando invlido. lPar16 Reservado. Lpar17 Reservado. Lgico, opcional. Se .T. as coordenadas informadas so alPixel em pixels, se .F. so em caracteres. Retorno O objeto criado.

EnableItem Descri Habilita ou desabilita item. o Sintaxe EnableItem( [nItem], [lEnable]) Parmet Tipo / Descrio ro Parmet nItem Numrico, opcional. Item selecionado. ros Lgico, opcional. Se .T. habilita o item se .F. lEnable 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 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 lWordWra Lgico. Se .T. quebra o texto em vrias linhas de maneira a enquadrar p o contedo na rea determinada para o controle, sendo o padro .F. lTranspare Lgico. Se .T. a cor de fundo do controle ignorada assumindo o nt contedo ou cor do controle ou janela ao fundo, sendo o padro .T. Mtodos

Verso 5.08

Verso 6.09

Verso 7.10

New Descri Mtodo construtor da classe. o New([anRow], [anCol], [abText], [aoWnd], [acPicture], [aoFont], [lPar7], [lPar8], [lPar9], [alPixels], [anClrText], [anClrBack], Sintaxe [anWidth], [anHeight], [lPar15], [lPar16], [lPar17], [lPar18], [lPar19]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical em pixels ou anRow caracteres. Numrico, opcional. Coordenada horizontal em pixels anCol ou caracteres. Codeblock, opcional. Quando executado deve retornar abText uma cadeia de caracteres a ser exibida. Objeto, opcional. Janela ou dilogo onde o controle aoWnd ser criado. acPictur Caractere, opcional. Picture de formatao do e contedo a ser exibido.

Objeto, opcional. Objeto tipo tFont para configurao aoFont do tipo de fonte que ser utilizado para exibir o contedo. lPar7 Reservado. lPar8 Reservado. lPar9 Reservado. Lgico, opcional. Se .T. considera coordenadas alPixels passadas em pixels se .F., padro, considera as coordenadas passadas em caracteres. anClrTex Numrico, opcional. Cor do contedo do controle. t anClrBac Numrico, opcional. Cor do fundo do controle. k anWidth Numrico, opcional. Largura do controle em pixels. anHeight Numrico, opcional. Altura do controle em pixels. lPar15 Reservado. lPar16 Reservado. lPar17 Reservado. lPar18 Reservado. lPar19 Reservado. Retorno O objeto criado.

SetText Descri Modifica o contedo a ser exibido pelo controle. o Sintaxe SetText( [xVal] ) Parmet Tipo / Descrio Parmet ro ros Caracter / Numrico / Data, Opcional. Valor a xVal ser exibido. Retorno NIL

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 Descri Mtodo construtor da classe. o New([aoWnd], [anTop], [anLeft], [anHeight], [anWidth], Sintaxe [alVertical], [alHorizontal], [alBorder]) Parmetr Tipo / Descrio o Objeto, opcional. Janela ou controle onde o controle aoWnd ser criado. anTop Numrico, opcional. Coordenada vertical em pixels. Numrico, opcional. Coordenada horizontal em anLeft pixels. Parmet ros anHeight Numrico, opcional. Altura do controle em pixels. anWidth Numrico, opcional. Largura do controle em pixels. Lgico, opcional. Se .T. exibe a barra de scroll alVertical vertical. alHorizont Lgico, opcional. Se .T. exibe a barra de scroll al 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 #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 Verso 7.10

TIBROWSER:GOHOME Reviso: 09/06/2003 Abrangncia Verso 6.09 Sintaxe TIBROWSER:GOHOME ( ) --> nil Retorno Tipo (NULO) Descrio Direciona navegao para pgina <HOME> cadastrada no Internet Explorer Descrio Este mtodo retorna nil Verso 7.10

TIBROWSER:NAVIGATE Reviso: 09/06/2003 Abrangncia Verso 6.09 Sintaxe TIBROWSER:NAVIGATE ( < ahRef > ) --> nil Parmetros Argumento ahRef Retorno Tipo (NULO) Descrio Troca a pgina a ser visualizada Descrio Este mtodo sempre retorna nil Tipo Descrio Caract Endereo da pgina a ser navegada er Verso 7.10

TIBROWSER:NEW Reviso: 09/06/2003 Abrangncia Verso 6.09 Sintaxe TIBROWSER:NEW ( < anRow > , < anCol > , < anWidth > , < anHeight > , [ ainitLink ] , [ anWindow ] ) --> Retorno Parmetros Argumento anRow anCol anWidth anHeight ainitLink anWindow Retorno Tipo Objeto 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. Descrio Retorna o objeto criado Tipo Numri co Numri co Numri co Numri co Descrio coordenada vertical Coordenada horizontal Largura do objeto Altura do objeto Verso 7.10

Endereo da pgina inicial a ser carregada, se no Caracte informada, carregar a pgina <HOME> cadastrada r no Internet Explorer. Objeto Janela ou componente visual onde o objeto ser criado

TIBROWSER:PRINT Reviso: 09/06/2003 Abrangncia Verso 6.09 Sintaxe TIBROWSER:PRINT ( ) --> nil Retorno Tipo (NULO) Descrio Imprime a pgina que esta sendo visualizada Descrio Este mtodo retorna nil Verso 7.10

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 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 nRow bScroll Param25 Param27 nCol nWidth nHeigth bLine Tipo Descrio Numric Coordenada vertical inicial do Objeto. o Caso .T., habilita barra de scroll horizontal e botes Lgico de navegao vertical. (NULO) ( parmetro reservado ) (NULO) ( parmetro reservado ) Numric Coordenada horizontal inicial do Objeto o Numric Tamanho horizontal do objeto o Numric Tamanho vertical do objeto o Code-Block, que deve retornar um array, com uma Codedimenso, onde devem ser retornados as strings Block referentes aos elementos referentes s colunas do Browse. Array, que deve retornar um array, com uma Array dimenso, contendo as strings referentes aos Ttulos das colunas do Browse. Array, com uma dimenso, onde devem ser retornados os nmeros referentes o tamanho Array horizontal das colunas do Browse. Caso especificado NIL, os tamanhos das colunas so calculados automaticamente. Objeto Objeto visual sobre o qual a tWBrowse ser criada. Utilizado para especificar a expresso de ndice para definio de limite superior e inferior do Browse. Este Caracter 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 Verso 5.08 Verso 6.09 Verso 7.10 Verso 8.11

aHeaders

aColSizes oWnd cField cTopLimit

cBottomLiit

Caracter

bChange bLDblClick Param14 oFont Param16 nClrFore nClrBack Param19 Param20 cAlias lPixel Param23 Param24 Retorno Tipo Objeto Descrio

CodeBlock CodeBlock (NULO) Objeto (NULO) Numric o Numric o (NULO) (NULO) Caracter Lgico (NULO) (NULO)

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. 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. Ao a ser executada quando alterado o foco entre as linhas do Browse. Recebe o objeto do Browse como parmetro. Ao a ser executada quando executado um dupliclique sobre uma clula do Browse. ( parmetro reservado ) Objeto referente uma fonte alternativa para exibio dos dados neste Browse. ( parmetro reservado ) Cor de escrita dos dados no TWBrowse. Verifique cores disponveis no include "colors.ch" Cor de fundo da rea da TWBrowse no preenchida com dados. Verifique cores disponveis no include "colors.ch" ( parmetro reservado ) ( parmetro reservado ) Caso o Browse seja realizado sobre uma tabela aberta, estecifique o alias da tabela a ser utilizada neste parmetro. Caso .T., indica que as coordenadas de tela so especificadas em PIXELS. Caso contrrio, so coordenadas especificadas em CARACTERES. ( parmetro reservado ) ( parmetro reservado )

Descrio Retorna uma nova instncia do Objeto da Classe TWBrowse.

Contrutor da Classe Retorna uma nova instncia do Objeto da Classe TWBrowse.

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 Descri Mtodo construtor da classe. o New([anTop], [anLeft], [anBottom], [anRight], [acCaption], Sintaxe [cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack], [oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [lPar17]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical superior em anTop pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda anLeft em pixels ou caracteres. Numrico, opcional. Coordenada vertical inferior em anBotom pixels ou caracteres. Numrico, opcional. Coordenada horizontal direita em anRight pixels ou caracteres. acCaptio Caractere, opcional. Ttulo da janela. n cPar6 Reservado.

nPar7 Reservado. lPar8 Reservado. nPar9 Reservado. anClrTex Numrico,opcional. Cor do texto. t anClrBac Numrico,opcional. Cor de fundo. k oPar12 Reservado. Objeto, opcional. Janela me da janela a ser criada, aoWnd padro a janela principal do programa. Lgico, opcional. Se .T. considera as coordenadas alPixel passadas em pixels, se .F. considera caracteres. oPar15 Reservado. oPar16 Reservado. nPar17 Reservado.

Retorno O Dilogo criado. Exemplo #INCLUDE User // Function cria protheus.ch Teste() 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(iniciando) 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 Descri Mtodo construtor da classe. o New([anTop], [anLeft], [anBottom], [anRight], [acCaption], [cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack], Sintaxe [oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [nPar17], [anWidth], [anHeight]) Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical superior em anTop pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda anLeft em pixels ou caracteres. Numrico, opcional. Coordenada vertical inferior em anBotom pixels ou caracteres. Numrico, opcional. Coordenada horizontal direita em anRight pixels ou caracteres. acCaptio Caractere, opcional. Ttulo da janela. n cPar6 Reservado. nPar7 Reservado. lPar8 Reservado. nPar9 Reservado.

anClrTex Numrico,opcional. Cor do texto. t anClrBac Numrico,opcional. Cor de fundo. k oPar12 Reservado. Objeto, opcional. Janela me da janela a ser criada, aoWnd padro a janela principal do programa. Lgico, opcional. Se .T. considera as coordenadas alPixel 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 Descri Ativa (exibe) o dilogo. Chamar somente uma vez este mtodo. o Activate([bPar1], [bPar2], [bPar3], [alCentered], [abValid], Sintaxe [lPar6], [abInit], [bPar8], [bPar9] ) Parmetr Tipo / Descrio o bPar1 Reservado. bPar2 Reservado. bPar3 Reservado. alCenter Lgico, opcional. Se .T. exibe a janela centralizada, .F. ed padro. Bloco de cdigo, opcional. Deve retornar .T. se Parmet abValid contedo do dilogo vlido, se retornar .F. o dilogo ros no fechar quando solicitada de encerrar. lPar6 Reservado. Bloco de cdigo, opcional. Executado quando o dilogo abInit inicia exibio. bPar8 Reservado. bPar9 Reservado.

Retorno NIL

End Descri Encerra (fecha) o dilogo. o Sintaxe End( ) Retorn Lgico .T. se o dilogo foi o 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("iniciando...")} ) /* 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 Descri Mtodo construtor da janela. o New( [anTop], [anLeft],[anBottom], [anRight], [acTitle], [nPar6], [oPar7] ,[oPar8],[oPar9], [aoParent], [lPar11], [lPar12], Sintaxe [anClrFore], [anClrBack], [oPar15], [cPar16], [lPar17], [lPar18], [lPar19], [lPar20], [alPixel] ); Parmet Parmet Tipo / Descrio ros ro Numrico, opcional. Coordenada vertical superior em nTop pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda nLeft em pixels ou caracteres. Numrico, opcional. Coordenada vertical inferior em nBottom pixels ou caracteres. Numrico, opcional. Coordenada horizontal inferior em nRight pixels ou caracteres. cTitle Caractere, opcional. Ttulo da janela. nPar6 Reservado. oPar7 Reservado.

Reservado. Reservado. Objeto, opcional. Janela me da janela corrente. Reservado. Reservado. Numrico, opcional. Cor de fundo da janela. Numrico, opcional. Cor do texto da janela. Reservado. Reservado. Reservado. Reservado. Reservado. Reservado. Lgico, opcional. Se .T. (padro) considera lPixel coordenadas passadas em pixels, se .F. considera caracteres. Retorno Objeto. A janela construda. Activate Descri Ativa (exibe) a janela. Chamar esse mtodo apenas uma vez. o Activate([acShow], [bPar2], [bPar3], [bPar4], [bPar5], [bPar6], Sintaxe [ abInit ], [bPar8], [bPar9], [bPar10], [bPar11], [bPar12] , [bPar13], [bPar14], [bPar15], [abValid], [bPar17], [bPar18] ). Parmet Tipo / Descrio ro Caracter, opcional. ICONIZED para janela iconizada acShow ou MAXIMIZED para janela maximizada. bPar2 Reservado. bPar3 Reservado. bPar4 Reservado. bPar5 Reservado. bPar6 Reservado. Bloco de cdigo. Executado quando janela est sendo abInit exibida. bPar8 Reservado. Parmet bPar9 Reservado. ros bPar10 Reservado. bPar11 Reservado. bPar12 Reservado. bPar13 Reservado. bPar14 Reservado. bPar15 Reservado. Bloco de cdigo. Executado quando a janela for solicitada de fechar. Dever retornar .T. se o contedo abValid da janela for vlido, ou .F. se no. Se o bloco retornar .F. a janela no fechar. bPar17 Reservado. bPar18 Reservado. Retorno NIL

oPar8 oPar9 oParent lPar11 lPar12 nClrFore nClrText oPar15 cPar16 lPar17 lPar18 lPar19 lPar20

End Descri Solicita encerramento da janela. o Sintaxe End( ) Retorn Lgico. .T. se encerrou a janela e o .F. se no. Center

Descri Centraliza o janela. Sintaxe Center( ) Retorn NIL o Exemplo #INCLUDE USER Local Local Local

"PROTHEUS.CH" FUNCTION abInit:= abValid:= Teste() oWindow {||conout("ativando!")} {||conout("encerrando!"),.T.} 200, "Meu )

oWindow:= tWindow():New( 10, 10, 200, 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 Parame Descrio tro Endereo do servidor POP, no caso de conexo SMTP passe esse cPop como ""(branco). Endereo do servidor SMTP, no caso de conexo POP passe esse cSmtp como ""(branco). cUser Login no servidor. cPass Senha no servidor. nTimeOu Time out para a conexo. t 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 Parame Descrio tro nTimeOu Tempo para que a conexo seja fechada por t 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 Parame Descrio tro nTimeOu Tempo para que a conexo seja fechada por t Time-Out. GetNumMsgs( @nNumMsg ) Retorna o numero de mensagens que existem no servidor Parame Descrio tro nNumMs Parametro passado por referencia, retorna nele g mensagens que esto no servidor. DeleteMsg( nMsg ) Deleta uma mensagem do servidor Parame Descrio

numero

de

tro nMsg Numero da mensagem a ser deletada.

POPDisconnect() Disconecta com o servidor POP

TMAILMANAGER:DELETEMSG Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:DELETEMSG ( < nMsg > ) --> Nil Parmetros Argumento nMsg Retorno Tipo (NULO) Descrio Deleta uma mensagem do servidor Descrio Nil Tipo Descrio Numri Numero da mensagem a ser deletada. co Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:GETNUMMSGS Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:GETNUMMSGS ( < @nNumMsg > ) --> nRet Parmetros Argumento nNumMsg Retorno Tipo Numrico Descrio Retorna o numero de mensagens que existem no servidor Descrio 0 = Lista recebida com sucesso Tipo Descrio Numri Parametro passado por referencia, retorna nele o co numero de mensagens que esto no servidor. Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:INIT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:INIT ( < cPop > , < cSmtp > , < cUser > , < cPass > , [ nTimeOut ] , [ nPort ] ) --> Nil Parmetros Argumento cPop cSmtp cUser cPass nTimeOut nPort Retorno Tipo (NULO) Descrio Inicia uma nova conexo no servidor Descrio Nil Tipo Caracte r Caracte r Caracte r Caracte r Numri co Numri co Descrio Endereo do servidor POP, no caso de conexo SMTP passe esse como ""(branco). Endereo do servidor SMTP, no caso de conexo POP passe esse como ""(branco) Login no servidor. Senha no servidor. Time out para a conexo. Porta para se conectar. Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:NEW Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:NEW ( ) --> oServer Retorno Tipo Objeto Descrio Construtor do objeto. Descrio Construtor do objeto. Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:POPCONNECT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:POPCONNECT ( ) --> Nil Retorno Tipo (NULO) Descrio Conecta com o servidor, atraves dos parametros de Init Descrio Nil Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:POPDISCONNECT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:POPDISCONNECT ( ) --> nRet Retorno Tipo Numrico Descrio Disconecta com o servidor POP Descrio 0 = Disconectado Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:SETPOPTIMEOUT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:SETPOPTIMEOUT ( < nTimeOut > ) --> nRet Parmetros Argumento nTimeOut Retorno Tipo Numrico Descrio Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por time-out Descrio 0 = Time out setado Tipo Descrio Numri Tempo para que a conexo seja fechada por Timeco Out. Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:SETSMTPTIMEOUT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:SETSMTPTIMEOUT ( < nTimeOut > ) --> nRet Parmetros Argumento nTimeOut Retorno Tipo (NULO) Descrio Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por time-out Descrio 0 - Time out configurado Tipo Descrio (NUL Tempo para que a conexo seja fechada por Time-Out. O) Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:SMTPCONNECT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:SMTPCONNECT ( ) --> nRet Retorno Tipo Numrico Descrio Conecta com o servidor, atraves dos parametros de Init Descrio 0 - Conectado Verso 5.08 Verso 6.09 Verso 7.10

TMAILMANAGER:SMTPDISCONNECT Reviso: 09/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMANAGER:SMTPDISCONNECT ( ) --> nRet Retorno Tipo Numrico Descrio Disconecta com o servidor SMTP Descrio 0 = Disconectado Verso 5.08 Verso 6.09 Verso 7.10

TMAILMESSAGE:SEND Reviso: 14/04/2003 Abrangncia Verso 5.07 Sintaxe TMAILMESSAGE:SEND ( < oServer > ) --> nRet Parmetros Argumento oServer Retorno Tipo Numrico Descrio Envia o e-mail recebendo como parametro a instancia do servidor criado (SMTP). Descrio 0 = E-mail enviado com sucesso Tipo Descrio Caract Instancia do servidor criado (SMTP). er Verso 5.08 Verso 6.09 Verso 7.10

tSocketClient Reviso: 30/06/2003 Abrangncia Verso 6.09 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 CloseConnection Connect IsConnected New Receive Reset Send Descrio Finaliza a conexo TCP genrica (socket ) do objeto corrente. Estabelece um conexo TCP genrica (socket ). Verifica se existe conexo valida no objeto corrente. Cria o objeto tSocketClient, sem conexo ativa. Recebe os dados pela conexo ativa do objeto, qualquer tipo de dado pode ser recebido. Finaliza anormalmente a conexo, no avisa o outro lado que a conexo ser finalizada. Deve ser utilizado apenas em casos extremos. Transmite o buffer pela conexo TCP Genrica ativa. Verso 7.10 Verso 8.11

CloseConnection Reviso: 30/06/2003 Abrangncia Verso 6.09 Sintaxe oObj:CloseConnection ( ) --> Nil Retorno Tipo (NULO) Descrio Finaliza a conexo TCP genrica (socket ) do objeto corrente. Descrio Nil Verso 7.10 Verso 8.11

Connect Reviso: 30/06/2003 Sintaxe oObj:Connect ( < nPorta > , < cIP > , < nTimeout > ) --> nSucesso Parmetros Argumento nPorta cIP nTimeout Retorno Tipo Numrico Descrio Estabelece um conexo TCP genrica (socket ). Descrio Retorna 0 (Zero) se conectou com sucesso, diferente de zero se a conexo falhou. Tipo Numri co Caracte r Numri co Descrio Numero da porta onde a conexo deve ser realizada Nmero IP ou nome do servidor onde a conexo deve ser realizada Nmero em milisegundos que o mtodo deve esperar para conectar

IsConnected Reviso: 30/06/2003 Abrangncia Verso 6.09 Sintaxe oObj:IsConnected ( ) --> lLogico Retorno Tipo Lgico Descrio Verifica se existe conexo valida no objeto corrente. Descrio Retorna True se a conexo esta ativa e false caso esteja invlida/desconectado. Verso 7.10 Verso 8.11

New Reviso: 30/06/2003 Abrangncia Verso 6.09 Sintaxe tSocketClient():New ( ) --> oSocket Retorno Tipo Objeto Descrio Cria o objeto tSocketClient, sem conexo ativa. Descrio Retorna um Objeto do tipo tSocketClient Verso 7.10 Verso 8.11

Receive Reviso: 30/06/2003 Abrangncia Verso 6.09 Sintaxe oObj:Receive ( < @cBuffer > , < nTimeout > ) --> nQtdRecebida Parmetros Argumento cBuffer nTimeout Retorno Tipo Numrico Descrio Recebe os dados pela conexo ativa do objeto, qualquer tipo de dado pode ser recebido. Descrio Qtde de bytes recebidos, se houver algum erro nQtdRecebida ser menor que zero. Tipo Caracte r Numri co Descrio Buffer que conter os dados a serem recebidos. tempo em milisegundos que a funo receive espera at receber algum dado pela conexo. Verso 7.10 Verso 8.11

Reset Reviso: 30/06/2003 Abrangncia Verso 6.09 Sintaxe oObj:Reset ( ) --> NIL Retorno Tipo (NULO) Descrio Finaliza anormalmente a conexo, no avisa o outro lado que a conexo ser finalizada. Deve ser utilizado apenas em casos extremos. Descrio Retorno nulo. Verso 7.10 Verso 8.11

Send Reviso: 30/06/2003 Abrangncia Verso 6.09 Sintaxe oObj:Send ( [ cBuffer ] ) --> nQtdTrasmitido Parmetros Argumento cBuffer Retorno Tipo Numrico Descrio Transmite o buffer pela conexo TCP Genrica ativa. Descrio Numero de bytes transmitidos, caso o numero seja diferente do tamanho de cBuffer, algum erro aconteceu. Tipo Descrio Caract Buffer com os dados a serem transmitidos pela er conexo. Verso 7.10 Verso 8.11

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 Local Local Verso 5.08 := { Verso 6.09 { |x,y| Verso 7.10 Verses Anteriores 123 } , conout(y)

aArray bBlock :=

"Teste" , conout(valtype(x))

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 // // // // // // Numero Conteudo Tipo Numero de tela no console Tipo do do do do do do Protheus Server dever ser :

Teste C 1 123 N 2

Conteudo

primeiro elemento do conteudo elemento processado segundo elemento Segundo Elemento 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 For nI nTotal := Next conout(nTotal) // 37

:= := nTotal

1 +

0 to

len(aItens) aItens[nI][2]

// Ou utilizando a Funco aEval : nTotal aeval(aItens conout(nTotal) := nTotal 0 )

{|x|

+=

x[2]

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 := ? EVAL(bBloco, 1) { |nArg| nArg // Resulta: 2 + 1 }

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

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

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

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 Local Function , cDrive, TSTSplit() cNome, cExt

aArq

:=

{}

cDir,

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:] c:\path\arquivo [c:] c:\path\ [c:] c:\arquivo [c:] \path\arquivo.ext [] path\arquivo [] \\servidor\pasta\ [] \\servidor\pasta\arquivo.ext [] [] [] [] [] [\path\] [arquivo] [\path\] [arquivo] [\path\] [] [\] [arquivo] [\path\] [arquivo] [path\] [arquivo] [\\servidor\pasta\] [] [\\servidor\pasta\] [arquivo] [.ext] [] [] [] [.ext] [] [] [.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 := Id=123&Nome=Teste') // ou cHtmlPage Httpget('http://www.servidor.com.br/funteste.asp','Id=123&Nome=Teste') := Httpget('http://www.servidor.com.br/funteste.asp?

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 // lRes Exemplo := Verso 5.08 1 MSCOMPRESS( Verso 6.09 Verso 7.10

Compacta apenas um arquivo "AP6SRV.EXE", "AP6SRV.MZP" ) com senha {} )

// Exemplo 2 Compacta um diretrio aNome := ADIR( "*.DBF", aNome lRes := MSCOMPRESS( aNome, "ArqComp.MZP", "SENHA" )

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 ADIR("*.TXT", AEVAL(aFiles, { |element| conout(element) }) aFiles[ADIR("*.TXT")] aFiles)

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

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 cNewDir curdir(cNewDir) // If cNewDir <> '\'+curdir() conout('Falha ao Trocar de Else conout('Path de '+cOldDir + ' Endif curdir() '\webadv\xis' Troca o path // E verifica se trocou mesmo Path de '+cOldDir + ' para '+cNewDir) trocado para '+cNewDir+' com sucesso.') := :=

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 aEval(Directory("*.BAK"), { |aFile| FERASE(aFile[F_NAME]) }) 'DIRECTRY.CH'

// Este exemplo apaga um arquivo no cliente ( Remote ) , informando o status da operao IF Else MsgStop('Arquivo ENDIF deletado com sucesso.') FERASE("C:\ListaTXT.tmp") == -1 MsgStop('Falha na deleo do Arquivo ( FError'+str(ferror(),4)+ ')')

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 ... nH := If Else MsgStop('Arquivo Endif ... aberto com sucesso.') ... fclose(nH) 'fileio.ch' fopen('\sigaadv\error.log' , FO_READWRITE + nH == MsgStop('Erro de abertura : FERROR ) -1 '+str(ferror(),4)) FO_SHARED

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 #DEFINE F_BLOCK 1024 gravados User Local Local Local Local Local // nHOrigem // If Endif // Determina nTamArquivo // Move o ponteiro Fseek(nHOrigem,0) // nHDestino // If Cria := a o do tamanho := arquivo o de do origem arquivo de origem Fseek(nHOrigem,0,2) para o inicio do arquivo cBuffer nHOrigem nBytesLidos , nBytesLer lCopiaOk Abre := Testa o "FILEIO.CH" // Define o bloco de Bytes a serem lidos / por vez Function := , nBytesFalta , := TestCopy() SPACE(F_BLOCK) nHDestino , nTamArquivo nBytesSalvo .T. Origem FO_READ)

arquivo de FOPEN("ORIGEM.TXT", abertura origem.

a nHOrigem MsgStop('Erro ao abrir Return

do Arquivo == -1 Ferror = '+str(ferror(),4),'Erro') .F.

arquivo de FCREATE("DESTINO.TXT",

destino FC_NORMAL)

criao do nHDestino MsgStop('Erro ao criar destino. FCLOSE(nHOrigem) // Fecha Return

Testa

arquivo de destino == -1 Ferror = '+str(ferror(),4),'Erro') o arquivo de Origem .F.

Endif // Define que a quantidade que falta copiar o prprio tamanho do Arquivo nBytesFalta := nTamArquivo // Enquanto houver dados a serem copiados

While // Determina nBytesLer := // l nBytesLidos // If

nBytesFalta quantidade de dados Min(nBytesFalta , os dados FREAD(nHOrigem,

> a serem F_BLOCK

0 lidos )

:=

do @cBuffer,

Arquivo nBytesLer )

Determina

se no houve falha na leitura 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 os := dados lidos no arquivo de destino FWRITE(nHDestino, cBuffer,nBytesLer)

Endif // Salva nBytesSalvo // If

Determina

se no houve falha na gravao nBytesSalvo < nBytesLer MsgStop("Erro de gravao do Destino. "+; Str(nBytesLer,8,2)+" bytes a SALVAR."+; Str(nBytesSalvo,8,2)+" bytes lCopiaOk EXIT "Ferror := = "+str(ferror(),4),'Erro') .F.

gravados."+;

Endif // Elimina do Total do Arquivo a quantidade de bytes copiados nBytesFalta -= nBytesLer Enddo // Fecha os FCLOSE(nHOrigem) FCLOSE(nHDestino) If MsgStop('Cpia Else MsgStop( faltaram Endif Return 'Falha Cpia. Arquivo de Destino incompleto. '+; 'Do total de '+str(nTamArquivo,12,0)+' bytes, '+str(nBytesFalta,12,0)+' bytes.','Final') na arquivos de origem e destino

lCopiaOk de Arquivos finalizada com sucesso. '+; str(nTamArquivo,12,0)+' bytes copiados.','Final')

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 Function Local Local Local Local if cPathRmt:= else cPathRmt:="" endif QOut( Return cPathRmt ) Substr( cIniName,1,nPos-1 cIniName:= nPos:= lUnix:= Rat( GetRemoteIniName() IsSrvUnix() IIf(lUnix,"/","\"),cIniName ) cPathRmt nPos!=0 ) "protheus.ch" TstRmtPath()

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 IF Else alert(Area Endif em uso atual : '+cAlias) := alert('No h alias() Area empty(cAlias) em uso')

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 FOR Clientes i:=1 NOME END NEXT // Os 5 registros includos DBAPPEND() // Todos os bloqueios anteriores so liberados to := : permanecem NEW 5 DBAPPEND(.F.) "XXX" ="YYY" bloqueados

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 DBSETINDEX("Nome") // Abre o arquivo ... DBCLEARINDEX() // Fecha todos os arquivos de ndices NEW "Nome"

de

ndice

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 DBSETINDEX("Nome") // Abre o arquivo ... DBCLOSEAREA() // Fecha a rea de trabalho atual NEW "Nome"

de

ndice

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 DBSTRUCT() //Retorna:{{Cod,N,3,0},{Nome,C,10,0},{Idade,N,3,0},{Nasc,D,8,0}, {Pagto,N,7,2}} NEW

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", DBGOBOTTOM() EOF() // DBSKIP() EOF() // DBGOTOP() BOF() // DBSKIP(-1) BOF() // retorna .T. "\dadosadv609\sa1990.dbf","SSS",.T., retorna retorna retorna .F. ) .F. .T. .F.

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 USE ? ? Sales->(DbfSize()) Sales Customer NEW NEW DbfSize()

Exemplo da funo USED Reviso: 09/07/2003 Abrangncia Verso 5.07 Verses Anteriores Verso 5.08 Verso 6.09 Verso 7.10 Verso 8.11

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", DBRLock() ... DBUNLOCKALL() "\dadosadv609\sa1990.dbf","SSS",.T., .F. )

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 composta e chave de caractere utilizando DTOS():

ndice

com

uma

data

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 := conout('Impressoras na aeval(aImpRemote , { aImpServer := conout('Impressoras aeval(aImpServer , { |x| conout(x) }) GetImpWindows(.F.) estao remota') |x| conout(x) }) GetImpWindows(.T.) no Servidor')

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 := conout('Impressoras na aeval(aPortRemote , { aPortServer := conout('Impressoras aeval(aPortServer , { |x| conout(x) }) GetPortActive(.F.) estao remota') |x| conout(x) }) GetPortActive(.T.) no Servidor')

Veja abaixo um exemplo do que foi mostrado no console do Protheus Server, apos a execuo da rotina. Impressoras na estao COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:\\prnserver\prx-lp1 Impressoras no COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3: remota Servidor

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 INDEX ON DESCEND(DTOS(OrdDate)) TO SalesDate NEW

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 mostram a Verso 7.10 funao Verses Anteriores sendo utilizada

Os exemplos seguintes de diversas maneiras: conout( DATE() ) conout( DAY(DATE()) ) conout( DAY(DATE()) + 1) conout( DAY(CTOD("")) )

DAY()

// Resulta: 09/01/90 // Resulta: 1 // Resulta: 2 // Resulta: 0

Este exemplo utiliza DAY() em para formatar um valor do tipo data: conout( CMONTH(DATE()) "," + STR(YEAR(DATE())) )

conjunto

com

CMONTH()

YEAR()

+ STR(DAY(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 ) CMONTH(dDate) ) = // Resulta: August // Resulta: 08/04/02 // Resulta: 09/03/02 // Resulta: 07/05/02 DATE()

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( DATE() ) conout( DOW(DATE()) ) conout( CDOW(DATE()) ) conout( DOW(DATE() - 2) conout( CDOW(DATE() - 2) ) // Resulta: 09/01/89 // Resulta: 3 // Resulta: Terca-feira // Resulta: 1

) // Resulta: 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 Os exemplos sistema: Verso 5.08 a seguir Verso 6.09 ilustram YEAR() Verso 7.10 usando a data do

conout( DATE() ) conout( YEAR(DATE()) ) conout( YEAR(DATE()) + 11 )

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

Este exemplo cria uma funao definida pelo YEAR() para formatar um valor data na forma : ms dia, ano: conout( U_Mdy(DATE()) ) USER Return FUNCTION CMONTH(dDate) + + "," + STR(YEAR(dDate)) " Mdy( "

usurio

usando

// Resulta: September 20, 1990 + dDate ) LTRIM(STR(DAY(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: aArray e um vetor vazio // Resulta: aArray e { 5 } // Resulta: aArray e { 5, 10 } // Resulta: aArray e { 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, aOne := { 1, 1, 1 aTwo := { 2, 2, 2 ACOPY(aOne, aTwo, nStart, aCont) // Resulta: aTwo e agora { 1, 1, 2 } aTwo } }

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 } // Resulta: aArray e agora { 1, 2, 3 } ADEL(aArray, 2) // 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"), AEVAL(aFiles, { | file | AADD(aNames, file[1]) } ) aNames := {}

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 } // Resulta: aArray e agora { 1, 2, 3 } AINS(aArray, 2) // 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 aArray := { NIL, NIL, NIL, NIL, NIL } := ARRAY(5)

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

{NIL,

NIL}

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", ? ASCAN(aArray, "Mary") ? ASCAN(aArray, "mary") ? ASCAN(aArray, { |x| UPPER(x) == "MARY" }) // Resulta: 2 "Sue" } // Resulta: 2 // Resulta: 0

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, ASORT(aArray) // Resultado: { 1, 2, 3, 4, ASORT(aArray,,,{ |x, y| x > y }) // Resultado: { 5, 4, 3, 2, 1 } 4 5 } }

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", ASORT(aArray,,, { |x, y| UPPER(x) < UPPER(y) }) "ALVIN", "friend" }

No exemplo abaixo , montamos um code-block para ordenao de um array multi-dimensional , 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} } }