Escolar Documentos
Profissional Documentos
Cultura Documentos
Reviso: 09/06/2003
A Linguagem AdvPl teve seu incio em 1994, sendo na verdade uma evoluo na utilizao de linguagens no padro xBase pela Microsiga Software S.A. (Clipper, Visual Objects e depois FiveWin). Com a criao da tecnologia Protheus, era necessrio criar uma linguagem que suportasse o padro xBase para a manuteno de todo o cdigo existente do sistema de ERP Siga Advanced. Foi ento criada a linguagem chamada Advanced Protheus Language. O AdvPl uma extenso do padro xBase de comandos e funes, operadores, estruturas de controle de fluxo e palavras reservadas, contando tambm com funes e comandos disponibilizados pela Microsiga que a torna uma linguagem completa para a criao de aplicaes ERP prontas para a Internet. Tambm uma linguagem orientada a objetos e eventos, permitindo ao programador desenvolver aplicaes visuais e criar suas prprias classes de objetos. Quando compilados, todos os arquivos de cdigo tornam-se unidades de inteligncia bsicas, chamados APOs (de Advanced Protheus Objects). Tais APOs so mantidos em um repositrio e carregados dinamicamente pelo Protheus Server para a execuo. Como no existe a linkedio, ou unio fsica do cdigo compilado a um determinado mdulo ou aplicao, funes criadas em AdvPl podem ser executadas em qualquer ponto do ambiente Advanced Protheus. O compilador e o interpretador da linguagem AdvPl o prprio servidor Protheus (Protheus Server), e existe um ambiente visual para desenvolvimento integrado (Protheus IDE) onde o cdigo pode ser criado, compilado e depurado. Os programas em AdvPl podem conter comandos ou funes de interface com o usurio. De acordo com tal caracterstica, tais programas so subdivididos nas seguintes categorias:
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 de RPC
Atravs de uma biblioteca de funes disponvel no Protheus (uma API de comunicao), pode-se executar rotinas escritas em AdvPl diretamente no Protheus Server, atravs de aplicaes externas escritas em outras linguagens. Isto o que se chama de RPC (de Remote Procedure Call, ou Chamada de Procedimentos Remota). O servidor Protheus tambm pode executar rotinas em AdvPl em outros servidores Protheus atravs de conexo TCP/IP direta utilizando o conceito de RPC. Do mesmo
modo, aplicaes externas podem requisitar a execuo de rotinas escritas em AdvPl atravs de conexo TCP/IP direta.
Programao Web
O Protheus Server pode tambm ser executado como um servidor Web, respondendo a requisies HTTP. No momento destas requisies, pode executar rotinas escritas em AdvPl como processos individuais, enviando o resultado das funes como retorno das requisies para o cliente HTTP (como por exemplo um Browser de Internet). Qualquer rotina escrita em AdvPl que no contenha comandos de interface pode ser executada atravs de requisies HTTP. O Protheus permite a compilao de arquivos HTML contendo cdigo AdvPl embutido. So os chamados arquivos AdvPl ASP, para a criao de pginas dinmicas.
Programao TelNet
TelNet parte da gama de protocolos TCP/IP que permite a conexo a um computador remoto atravs de uma aplicao cliente deste protocolo. O Protheus Server pode emular um terminal TelNet, atravs da execuo de rotinas escritas em AdvPl. Ou seja, pode-se escrever rotinas AdvPl cuja interface final ser um terminal TelNet ou um coletor de dados mvel.
Caractersticas
Classe abstrata inicial de todas as classes de interface do Advpl. No deve ser instanciada diretamente.
Propriedades
Propriedade Tipo nLeft nTop nWidth nHeight cCaption cTooltip 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 objeto. Mensagem exibida na barra de status da janela principal quando o objeto ganha foco. Cor do texto do objeto. Cor do fundo do objeto. Executado quando h movimentao de foco na janela.Se retornar .T. o objeto continua habilitado, se retornar .F. o objeto ser desabilitado. Executado quando o contedo do objeto modificado e dever ser validado. Deve retornar .T. se o contedo vlido e .F. se contedo invlido.
lShowHint Lgico. cMsg nClrText nClrPane bWhen Caractere. Numrico. Numrico. Bloco de cdigo. Bloco de cdigo.
bValid
Bloco de cdigo. Bloco de cdigo. Bloco de cdigo. Objeto. Booleano. Objeto ou varivel. Bloco de cdigo. Bloco de cdigo.
Executado quando acionado click do boto esquerdo do mouse sobre o objeto. Executado quando acionado click do boto direito do mouse sobre o objeto. Executado quando acionado duplo click do boto esquerdo do mouse sobre o objeto. Janela onde o objeto foi criado. Se .T. o objeto visvel, se .F. o objeto invisvel. Contedo associado ao objeto. Executado quando objeto perde foco. Executado quando objeto ganha foco.
Mtodos
SetFocus
Sintaxe Retorno SetFocus( ) NIL Descrio Fora o foco de entrada de dados mudar para o objeto.
Hide
Sintaxe Retorno Hide( ) NIL Descrio Torna objeto invisvel.
Show
Sintaxe Retorno Show( ) NIL Descrio Torna objeto visvel.
Enable
Sintaxe Enable( )
Disable
Sintaxe Retorno Disable( ) NIL Descrio Desabilita o objeto.
Refresh
Sintaxe Descrio Refresh( ) Fora atualizao (sincronia) de propriedades entre o programa e o Protheus Remote.
tFont
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tFontAbs -> tFont
Descrio
Utilize objeto tFont para modificar a fonte padro de controles visuais.
Propriedades
Vide classes ancestrais.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([acName], [nPar2], [anHeight], [lPar4], [alBold], [nPar6], [lPar7], [nPar8], [alItalic], [alUnderline]) Parmetro Tipo / Descrio acName nPar2 Parmetros anHeight lPar4 alBold Caractere, opcional. Nome da fonte, o padro Arial. Reservado. Numrico, opcional. Tamanho da fonte. O padro 11. Reservado. Lgico, opcional. Se .T. o estilo da fonte ser negrito.
Reservado. Reservado. Reservado. Lgico, opcional. Se .T. o estilo da fonte ser itlico. Lgico, opcional. Se .T. o estilo da fonte ser sublinhado.
Retorno
O objeto criado.
Exemplo
#INCLUDE "PROTHEUS.CH" User Function Teste() Local oDlg, oSay Local oFont:= TFont():New("Courier New",,-14,.T.) DEFINE MSDIALOG oDlg FROM 0,0 TO 200,200 TITLE "My dialog" PIXEL // Apresenta o tSay com a fonte Courier New oSay := TSay():New( 10, 10, {|| "Mensagem"},oDlg,, oFont,,,, .T., CLR_WHITE,CLR_RED ) /* o comando abaixo proporciona o mesmo resultado @ 10,10 SAY oSay PROMPT "Mensagem" FONT oFont COLOR CLR_WHITE,CLR_RED OF oDlg PIXEL */ oSay:lTransparent:= .F. ACTIVATE MSDIALOG oDlg CENTERED Return
tControl
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tControl
Caractersticas
tControl a classe comum entre todos os componentes visuais editveis.
Propriedades
Nome Align lModified lReadOnly hParent bChange Tipo / Descrio Numrico. Alinhamento do controle no espao disponibilizado pelo seu objeto parente. 0 = Nenhum (padro), 1= no topo, 2 = no rodap, 3= a esquerda, 4 = a direita e 5 = em todo o parente. Lgico. Se .T. indica que o contedo da varivel associada ao controle foi modificado. Lgico. Se .T. o contedo da varivel associada ao controle permanecer apenas para leitura. Numrico. Handle (identificador) do objeto sobre o qual o controle foi criado. Bloco de cdigo. Executado quando o estado ou contedo do controle modificado pela ao sobre o controle.
Mtodos
SetFocus
Descrio Fora mudana do foco de entrada de dados para o controle. Sintaxe SetFocus( )
REtorno NIL
tButton
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Classe de boto.
Hierarquia
tSrvObject -> tControl -> tButton
Descrio
Utilize a classe tButton para criar um controle visual do tipo boto.
Propriedades
Nome bAction Tipo / Descrio Bloco de cdigo. Executado quando o boto pressionado. lProcessing Lgico. Se .T. indica o boto est efetuando uma ao.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [acCaption], [aoWnd], [abAction], [anWidth], [anHeight], [nPar8], [aoFont], [lPar10], [alPixel],[lPar12],[cPar13], [lPar14], [abWhen], [bPar16], [lPar17]) Parmetro Tipo / Descrio Parmetros anRow Numrico, opcional. Coordenada vertical em pixels ou carateres.
anCol
Numrico, opcional. Coordenada horizontal em pixels ou caracteres. Objeto, opcional. Janela ou controle onde o boto dever ser criado. Bloco de cdigo, opcional. Bloco que dever ser acionado quando o boto for pressionado. Numrico, opcional. Largura do boto em pixels. Reservado. Objeto, opcional. Objeto tipo tFont com propriedades da fonte utilizada para o ttulo do boto. Reservado. Lgico, opcional. Se .T. considera as coordenadas passadas em pixels, se .F. (padro) considera em caracteres. Reservado. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no. Reservado. Reservado.
acCaption Caractere, opcional. Titulo do boto. aoWnd abAction anWidth nPar8 aoFont lPar10 alPixel lPar12 cPar13 lPar14
abWhen
bPar16 lPar17
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
tCheckBox
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tControl -> tCheckBox
Descrio
Utilize a classe tCheckbox quando desejar criar um controle que possua dois estados .T. ou .F..
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [acCaption], [abSetGet], [aoWnd], [anWidth], [anHeight], [nPar8], [abClick], [aoFont], [abValid], [anClrFore], [anClrBack], [lPar14], [alPixel], [cPar16], [lPar17], [abWhen]) Parmetro Tipo / Descrio anRow Parmetros anCol Numrico, opcional. Coordenada vertical em pixels ou carateres. Numrico, opcional. Coordenada horizontal em pixels ou caracteres.
Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que abSetGet o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo lgico, se <var> = .T. ento o controle aparecer checado. aoWnd anWidth nPar8 abClick aoFont Objeto, opcional. Janela ou controle onde o controle dever ser criado. Numrico, opcional. Largura do controle em pixels. Reservado. 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 da fonte utilizada para o texto do controle. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar .T. se o contedo for vlido e .F. quando o contedo for invlido.
abValid
anClrFore Numrico, opcional. Cor de fundo do controle. anClrBack Numrico, opcional. Cor do texto do controle. lPar14 alPixel cPar16 lPar17 Reservado. Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no.
abWhen
Retorno
O objeto construdo.
Exemplo
#include protheus.ch User Function Teste() Local oDlg, oButton, oCheck, lCheck:=.F. DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE Meu programa oCheck:= tCheckBox():New(10,10,funcionou?,; {|u|if( pcount()>0,lCheck:=u,lCheck)}; ,oDlg,100,20,,,,,,,,.T.)
oButton:=tButton():New(30,10,fechar,oDlg,{||oDlg:End()},; 100,20,,,,.T.) ACTIVATE MSDIALOG oDlg CENTERED If lCheck MsgStop( Funcionou! ) Endif Return NIL
tComboBox
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Classe de combobox.
Hierarquia
tSrvObject -> tControl -> tComboBox
Descrio
Utilize a classe tComboBox para cria uma entrada de dados com mltipla escolha com item definido em uma lista vertical, acionada por F4 ou pelo boto esquerdo localizado na parte direita do controle. A varivel associada ao controle ter o valor de um dos itens selecionados ou no caso de uma lista indexada, o valor de seu ndice.
Propriedades
Nome Tipo / Descrio Array. Lista de itens, caracteres, a serem exibidos. Pode ter os seguintes aItems formatos: a) Seqencial, exemplo: {item1,item2,...,itemN} ou b) Indexada, exemplo: {a=item1,b=item2, ..., n=itemN}. nAt Numrico. Posio do item selecionado.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [abSetGet], [anItems], [anWidth], [anHeight], [aoWnd], [nPar8], [abChange], [abValid], [anClrText], [anClrBack], [alPixel], [aoFont], [cPar15], [lPar16], [abWhen], [lPar18], [aPar19], [bPar20], [cPar21], [acReadVar])
Parmetro Tipo / Descrio anRow anCol Numrico, opcional. Coordenada vertical em pixels ou caracteres. Numrico, opcional. Coordenada horizontal em pixels ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que 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) Seqencial, exemplo: {item1,item2,...,itemN} ou b) Indexada, exemplo: {a=item1,b=item2, ..., n=itemN}. Numrico, opcional. Largura do controle em pixels. Numrico, opcional. Altura do controle em pixels. Objeto, opcional. Janela ou controle onde o controle ser criado. Reservado. Bloco de cdigo, opcional. Executado quando o controle modifica o item selecionado. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar .T. se o contedo for vlido e .F. quando o contedo for invlido.
abSetGet
anItems
abValid
anClrBack Numrico, opcional. Cor de fundo do controle. anClrText Numrico, opcional. Cor do texto do controle. alPixel aoFont cPar15 lPar16 Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Objeto, opcional. Objeto tipo tFont utilizado para definir as caractersticas da fonte utilizada para exibir o contedo do controle. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no. Reservado.
abWhen
lPar18
Caractere, opcional. Nome da varivel que o controle dever manipular, dever ser a mesma varivel acReadVar informada no parmetro abSetGet, e ser o retorno da funo ReadVar( ). Retorno O objeto criado.
Select
Descrio Sintaxe Parmetros Retorno Muda o item selecionado no combobox. Select( [anItem] ) Parmetro Tipo / Descrio anItem NIL Numrico, opcional. Posio do item a ser selecionado.
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
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 lPassword Picture Tipo / Descrio Lgico. Se .T. o controle se comporta como entrada de dados de senha, exibindo asteriscos * para esconder o contedo digitado. Caractere. Mscara de formatao do contedo a ser exibido.
Mtodos
New
Descrio Mtodo construtor do controle. New([anRow], [anCol], [abSetGet], [aoWnd], [anWidth], [anHeight], [acPict], [abValid], [anClrFore], [anClrBack], [aoFont], [lPar12], [oPar13], [alPixel], [cPar15], [lPar16], [abWhen], [lPar18], [lPar19], [abChange], [alReadOnly], [alPassword], [cPar23], [acReadVar], [cPar25], [lPar26], [nPar27], [lPar28])
Sintaxe
Tipo / Descrio Numrico, opcional. Coordenada vertical em pixels ou caracteres. Numrico, opcional. Coordenada horizontal em pixels ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo caracter, numrico ou data. Objeto, opcional. Janela ou controle onde o controle ser criado. Numrico, opcional. Largura do controle em pixels. Numrico, opcional. Altura do controle em pixels. Caractere, opcional. Mscara de formatao do contedo a ser exibido. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar .T. se o contedo for vlido e .F. quando o contedo for invlido. Numrico, opcional. Cor de fundo do controle. Objeto, opcional. Objeto tipo tFont utilizado para definir as caractersticas da fonte utilizada para exibir o contedo do controle. Reservado. Reservado. Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando o controle modifica o valor da varivel associada. Lgico, opcional. Se .T. o controle no poder ser editado. Lgico, opcional. Se .T. o controle exibir asteriscos
abSetGet
abWhen
* no lugar dos caracteres exibidos pelo controle para simular entrada de senha. cPar23 Reservado. Caractere, opcional. Nome da varivel que o controle dever manipular, dever ser a mesma acReadVar varivel informada no parmetro abSetGet, e ser o retorno da funo ReadVar( ). cPar25 lPar26 nPar27 lPar28 Retorno Reservado. Reservado. Reservado. Reservado.
O controle construdo.
Exemplo
#include protheus.ch User Function TesteGet() Local oDlg, oGet1, oButton, nGet1:=0 DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE Meu Get oGet1:= TGet():New(10,10,{|u| if(PCount()>0,nGet1:=u,nGet1}}, oDlg,; 100,20,@E 999,999.99,; {|o|nGet1>1000.00},,,,,,.T.,,,,,,,,,,nGet1) /* Tem o mesmo efeito @ 10,10 MSGET oGet1 VAR nGet1 SIZE 100,20 OF oDlg PIXEL PICTURE @E 999,999.99 VALID nGet1>1000.00 */ // Boto para fechar a janela @ 40,10 BUTTON oButton PROMPT Fechar OF oDlg PIXEL ACTION oDlg:End() ACTIVATE MSDIALOG oDlg CENTERED MsgStop( O valor +Transform(nGet1,@E 999,999.00) ) Return NIL
tGroup
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tControl -> tGroup
Descrio
Utilize a classe tGroup para criar um painel onde controles visuais podem ser agrupados ou classificados. criada uma borda com ttulo em volta dos controles agrupados.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anTop], [anLeft], [anBottom], [anRight], [acCaption], [aoWnd], [anClrText], [anClrPane], [alPixel], [lPar10]) Parmetro Tipo / Descrio anTop anLeft Parmetros anBottom anRight Numrico, opcional. Coordenada vertical superior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda em pixels ou caracteres. Numrico, opcional. Coordenada vertical inferior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal direita em pixels ou caracteres. Objeto, opcional. Janela ou controle onde o controle ser criado.
anClrText Numrico, opcional. Cor do texto. anClrPane Numrico, opcional. Cor do fundo. alPixel lPar10 Retorno Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Reservado.
O objeto criado.
Exemplo
#include protheus.ch User function teste() Local oDlg, oGroup, oGet1, oGet2, cGet1:=Space(10),; cGet2:= Space(10) DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 TITLE My test PIXEL oGroup:= tGroup():New(10,10,200,200,grupo de gets,oDlg,,,.T.) @ 10,10 MSGET oGet1 VAR cGet1 SIZE 100,10 OF oGroup PIXEL @ 30,10 MSGET oGet2 VAR cGet2 SIZE 100,10 OF oGroup PIXEL ACTIVATE MSDIALOG oDlg CENTERED Return NIL
tListBox
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tControl -> tListbox
Descrio
Utilize a classe tListbox para criar uma janela com itens selecionveis e barra de rolagem. Ao selecionar um item, uma varivel atualizada com o contedo do item selecionado.
Propriedades
Nome Tipo / Descrio nAt Numrico. Posio do item selecionado. aItems Array de items caracteres. Lista do itens selecionveis.
Mtodos
New
Descrio Mtodo construtor da classe. New([anRow], [anCol], [abSetGet], [aaItems], [anWidth], [anHeigth], [abChange], [aoWnd], [abValid], [anClrFore], [anClrBack], [alPixel], [lPar13], [abLDBLClick], [aoFont], [cPar16], [lPar17], [abWhen], [aPar19], [bPar20], [lPar21], [lPar22], [abRightClick] ) Parmetro anRow Tipo / Descrio Numrico, opcional. Coordenada vertical em
Sintaxe
Parmetros
pixels ou caracteres. anCol Numrico, opcional. Coordenada horizontal em pixels ou caracteres. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> )} que o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo caracter ou numrica. Array de items caracteres, opcional. Lista de items selecionveis. Numrico, opcional. Largura do controle em pixels. Numrico, opcional. Altura do controle em pixels. Bloco de cdigo, opcional. Executado quando o item selecionado alterado. Objeto, opcional. Janela ou controle onde o controle ser criado. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar .T. se o contedo for vlido e .F. quando o contedo for invlido. Numrico, opcional. Cor de fundo do controle. Numrico, opcional. Cor do texto do controle. Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Reservado.
abSetGet
Bloco de cdigo, opcional. Executado quando abLDBLClick acionado duplo click do boto esquerdo do mouse sobre o controle. aoFont cPar16 lPar17 Objeto, opcional. Objeto tipo tFont utilizado para definir as caractersticas da fonte utilizada para exibir o contedo do controle. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no. Reservado. Reservado. Reservado. Reservado.
abWhen
Bloco de cdigo, opcional. Executado quando abRightClick acionado click do boto direito do mouse sobre o controle. Retorno O objeto criado.
Select
Descrio Sintaxe Parmetros Retorno Fora a seleo de um item. Select( [anItem] ) Parmetro Tipo / Descrio nItem NIL Numrico, opcional. Posio do item a ser selecionado.
Add
Descrio Sintaxe Insere ou adiciona novo item. Add( cText, nPos ) Parmetro Tipo / Descrio cText Parmetros nPos Caractere, obrigatrio. Texto do item. Numrico, obrigatrio. Se 0 ou maior que o nmero de itens, insere o item no final da lista. Se valor entre 1 e nmero de itens, insere o item na posio informada, empurrando o item anterior para baixo.
Retorno
NIL
Modify
Descrio Sintaxe Modifica o texto de um item. Modify( cText, nPos ) Parmetro Tipo / Descrio cText Parmetros nPos Caractere, obrigatrio. Novo texto do item. Numrico, obrigatrio. Posio a ser modificada deve ser maior que 0 e menor ou igual que o nmero de itens.
Retorno
NIL
Del
Descrio Sintaxe Apaga um item. Del( nPos ) Parmetro Tipo / Descrio Parmetros nPos NIL Numrico, obrigatrio. Posio a ser excluida, deve ser maior que 0 e menor ou igual que o nmero de itens.
Retorno
Len
Descrio Retorna o nmero de itens. Sintaxe Retorno Len( ) Numrico. Nmero de itens.
Reset
Descrio Apaga todos os itens. Sintaxe Retorno Reset( ) NIL
Exemplo
#include protheus.ch User Funcion Teste() Local oDlg, oList, nList:= 1, aItems:={} Aadd(aItems,Item Aadd(aItems,Item Aadd(aItems,Item Aadd(aItems,Item 1) 2) 3) 4)
DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE Teste oList:= tListBox():New(10,10,{|u|if(Pcount()>0,nList:=u,nList)};
tMeter
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
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 nTotal Tipo / Descrio Numrico. Nmero total de passos at o preenchimento da rgua de processo. Numrico. Cor da barra de andamento.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [abSetGet], [anTotal], [aoWnd], [anWidth], [anHeight], [lPar8], [alPixel], [oPar10], [cPar11], [alNoPerc], [anClrPane], [nPar14], [anClrBar], [nPar16], [lPar17]) Parmetro Tipo / Descrio anRow Numrico, opcional. Coordenada vertical em pixels ou
Parmetros
Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que abSetGet o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo numrico. anTotal aoWnd anWidth lPar8 alPixel oPar10 cPar11 alNoPerc Numrico, opcional. Numero total de passos at o preenchimento da rgua de processo. Objeto, opcional. Janela ou controle onde o controle sera criado. Numrico, opcional. Largura do controle em pixels. Reservado. Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Reservado. Reservado. Lgico, opcional. Se .T. (padro) no considera os passos de atualizao em porcentagem. Reservado. Reservado. Reservado.
anClrPane Numrico, opcional. Cor de fundo do controle. nPar14 nPar16 lPar17 Retorno anClrBar Numrico, opcional. Cor da barra de andamento.
O objeto criado.
Set
Descrio Sintaxe Parmetros Retorno Atualiza a posio da rgua de processamento. Set( [nVal] ) Parmetro Tipo / Descrio nVal NIL Numrico, opcional. Novo valor da posio da rgua de processamento.
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
Hierarquia
tSrvObject -> tControl -> tMultiGet
Descrio
Utilize a classe tMultiget para criar controle de edio de texto de mltiplas linhas.
Propriedades
Nome Tipo / Descrio lWordWrap Lgico. Se .T., faz quebra automtica de linhas.
Mtodos
New
Descrio Mtodo construtor da classe. New([anRow], [anCol], [abSetGet], [aoWnd], [anWidth], [anHeight], [aoFont], [alHScroll], [anClrFore], [anClrBack], [oPar11], [alPixel], [cPar13], [lPar14], [abWhen], [lPar16], [lPar17], [alReadOnly], [abValid], [bPar20], [lPar21], [alNoBorder], [alNoVScroll]) Parmetro Parmetros anRow anCol Tipo / Descrio Numrico, opcional. Coordenada vertical em pixels ou caracteres. Numrico, opcional. Coordenada horizontal em pixels ou caracteres.
Sintaxe
abSetGet
Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo caracter. Objeto, opcional. Janela ou controle onde o controle ser criado. Numrico, opcional. Largura do controle em pixels. Numrico, opcional. Altura do controle em pixels. Objeto, opcional. Objeto tipo tFont utilizado para definir as caractersticas da fonte utilizada para exibir o contedo do controle. Lgico, opcional. Se .T., habilita barra de rolagem horizontal. Numrico, opcional. Cor de fundo do controle. Numrico, opcional. Cor do texto do controle. Reservado. Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres. Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. se o controle deve permanecer habilitado ou .F. se no. Reservado. Reservado. Lgico, opcional. Se .T. o controle so permitira leitura. Bloco de cdigo, opcional. Executado quando o contedo do controle deve ser validado, deve retornar .T. se o contedo for vlido e .F. quando o contedo for invlido. Reservado. Reservado. Lgico, opcional. Se .T., habilita barra de rolagem vertical.
aoWnd anWidth anHeight aoFont alHScroll anClrFore anClrBack oPar11 alPixel cPar13 lPar14
abWhen
alNoBorder Lgico, opcional. Se .T. cria controle sem borda. alNoVScroll Retorno
O objeto criado.
EnableVScroll
Descrio Sintaxe Parmetros Retorno Habilita a barra de rolagem vertical. EnableVScroll( lEnable ) Parmetro Tipo / Descrio lEnable NIL Lgico, obrigatrio. Se .T. habilita se .F. desabilita a barra de rolagem.
EnableHScroll
Descrio Sintaxe Parmetros Retorno Habilita a barra de rolagem horizontal. EnableHScroll( lEnable ) Parmetro Tipo / Descrio lEnable NIL Lgico, obrigatrio. Se .T. habilita se .F. desabilita a barra de rolagem.
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
Hierarquia
tSrvObject -> tControl -> tPanel
Descrio
Utilize a classe tPanel quando desejar criar um painel esttico, onde podem ser criados outros controles com o objetivo de organizar ou agrupar componentes visuais.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [acText], [aoWnd], [aoFont], [alCentered], [lPar6], [anClrText], [anClrBack], [anWidth], [anHeight], [alLowered], [alRaised]) Parmetro Tipo / Descrio anRow anCol acText Parmetros aoWnd alCentered lPar6 Numrico, opcional. Coordenada vertical em pixels. Numrico, opcional. Coordenada horizontal em pixels. Caractere, opcional. Texto a ser exibido ao fundo. Objeto, opcional. Janela ou controle onde ser criado o objeto. Lgico, opcional. Se .T. exibe o texto de ttulo ao centro do controle. Reservado.
anClrBack Numrico, opcional. Cor do fundo do controle. anWidth anHeight alLowered alRaised Retorno Numrico, opcional. Largura do controle em pixels. Numrico, opcional. Altura do controle em pixels. Lgico, opcional. Se .T. exibe o painel rebaixado em relao ao controle de fundo. Lgico, opcional. Se .T. exibe a borda do controle rebaixada em relao ao controle de fundo.
O objeto criado.
Exemplo
#include protheus.ch User Function Teste() Local oDlg, oPanel, oBtn1, oBtn2 DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL TITLE My test oPanel:= tPanel():New(10,10,,oDlg,,,,,CLR_BLUE,100,100) // cria o painel @ 10,10 BUTTON oBtn1 PROMPT hide OF oPanel ACTION oPanel:Hide() // cria boto sobre o painel @ 200,10 BUTTON oBtn2 PROMPT show OF oDlg ACTION oPanel:Show() // cria boto fora o painel ACTIVATE MSDIALOG oDlg CENTERED Return
tRadMenu
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tControl -> tRadMenu
Descrio
Utilize a classe tRadMenu para criar um controle que possibilita escolha de item atravs de uma lista.
Propriedades
Nome Tipo / Descrio nOption Numrico. Item selecionado. aItems Array de caracteres. Lista de items selecionveis.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [aacItems], [abSetGet], [aoWnd], [aPar6], [abChange], [anClrText], [anClrPan], [cPar10], [lPar11], [abWhen], [anWidth], [anHeight], [abValid], [lPar16], [lPar17], [alPixel]) Parmetro Tipo / Descrio Parmetros anRow anCol Numrico, opcional. Coordenada vertical em pixels ou caracteres. Numrico, opcional. Coordenada horizontal em pixels
ou caracteres. aacItems Array de caracteres, opcional. Lista de opes. Bloco de cdigo, opcional. Bloco de cdigo no formato {|u| if( Pcount( )>0, <var>:= u, <var> ) } que abSetGet o controle utiliza para atualizar a varivel <var>. <var> deve ser tipo numrico. aoWnd aPar6 abChange Objeto, opcional. Janela ou controle onde o controle ser criado. Reservado. Bloco de cdigo, opcional. Executado quando o item selecionado alterado.
anClrText Numrico, opcional. Cor do texto do controle anClrPan Numrico, opcional. Cor de fundo do controle. cPar10 lPar11 Reservado. Reservado. Bloco de cdigo, opcional. Executado quando mudana de foco de entrada de dados est sendo efetuada na janela onde o controle foi criado. O bloco deve retornar .T. para que o controle permanea habilitado, ou .F. se no. Numrico, opcional. Largura do controle em pixels. Bloco de cdigo, opcional. Executado quando o contedo do controle deva ser validado, retornando .T. se o contedo for vlido, e .F. quando invlido. Reservado. Reservado. Lgico, opcional. Se .T. as coordenadas informadas so em pixels, se .F. so em caracteres.
abWhen
anWidth
anHeight Numrico, opcional. Altura do controle em pixels. abValid lPar16 Lpar17 alPixel Retorno
O objeto criado.
EnableItem
Descrio Sintaxe Habilita ou desabilita item. EnableItem( [nItem], [lEnable]) Parmetro Tipo / Descrio Parmetros nItem lEnable Numrico, opcional. Item selecionado. Lgico, opcional. Se .T. habilita o item se .F. desabilita o item.
Retorno
NIL
Exemplo
#include protheus.ch User Function Teste() Local oDlg, oButton, oRadio, nRadio:=1 Local aOptions:={escolha1,escolha2} DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE Meu Get oRadio:= tRadMenu():New(10,10,aOptions,; {|u|if(PCount()>0,nRadio:=u,nRadio)},; oDlg,,,,,,,,100,20,,,,.T.) @ 40,10 BUTTON oButton PROMPT Fechar OF oDlg PIXEL ACTION oDlg:End() ACTIVATE MSDIALOG oDlg CENTERED MsgStop(Escolheu +aOptions[nRadio] ) Return NIL
tSay
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Classe de label.
Hierarquia
tSrvObject -> tControl -> tSay
Descrio
O objeto tipo tSay exibe o contedo de texto esttico sobre uma janela ou controle.
Propriedades
Nome lWordWrap lTransparent Tipo / Descrio Lgico. Se .T. quebra o texto em vrias linhas de maneira a enquadrar o contedo na rea determinada para o controle, sendo o padro .F. Lgico. Se .T. a cor de fundo do controle ignorada assumindo o contedo ou cor do controle ou janela ao fundo, sendo o padro .T.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anRow], [anCol], [abText], [aoWnd], [acPicture], [aoFont], [lPar7], [lPar8], [lPar9], [alPixels], [anClrText], [anClrBack], [anWidth], [anHeight], [lPar15], [lPar16], [lPar17], [lPar18], [lPar19]) Parmetro Tipo / Descrio Parmetros anRow Numrico, opcional. Coordenada vertical em pixels ou caracteres.
Numrico, opcional. Coordenada horizontal em pixels ou caracteres. Codeblock, opcional. Quando executado deve retornar uma cadeia de caracteres a ser exibida. Objeto, opcional. Janela ou dilogo onde o controle ser criado. Caractere, opcional. Picture de formatao do contedo a ser exibido. Objeto, opcional. Objeto tipo tFont para configurao do tipo de fonte que ser utilizado para exibir o contedo. Reservado. Reservado. Reservado. Lgico, opcional. Se .T. considera coordenadas passadas em pixels se .F., padro, considera as coordenadas passadas em caracteres.
anClrText Numrico, opcional. Cor do contedo do controle. anClrBack Numrico, opcional. Cor do fundo do controle. anWidth lPar15 lPar16 lPar17 lPar18 lPar19 Retorno Numrico, opcional. Largura do controle em pixels. Reservado. Reservado. Reservado. Reservado. Reservado. anHeight Numrico, opcional. Altura do controle em pixels.
O objeto criado.
SetText
Descrio Sintaxe Parmetros Retorno Modifica o contedo a ser exibido pelo controle. SetText( [xVal] ) Parmetro Tipo / Descrio xVal NIL Caracter / Numrico / Data, Opcional. Valor a ser exibido.
Exemplo
#include protheus.ch User Function Teste() Local oDlg, oSay DEFINE MSDIALOG oDlg FROM 0,0 TO 200,200 TITLE My dialog PIXEL oSay:= tSay():New(10,10,{||para exibir},oDlg,,,,; ,,.T.,CLR_WHITE,CLR_RED,100,20) ACTIVATE MSDIALOG oDlg CENTERED Return NIL
tScrollBox
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tControl -> tScrollbox
Descrio
Utilize a classe tScrollbox para criar um painel com scroll deslizantes nas laterais do controle.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([aoWnd], [anTop], [anLeft], [anHeight], [anWidth], [alVertical], [alHorizontal], [alBorder]) Parmetro aoWnd anTop anLeft Parmetros anHeight anWidth alVertical alHorizontal alBorder Tipo / Descrio Objeto, opcional. Janela ou controle onde o controle ser criado. Numrico, opcional. Coordenada vertical em pixels. Numrico, opcional. Coordenada horizontal em pixels. Numrico, opcional. Altura do controle em pixels. Numrico, opcional. Largura do controle em pixels. Lgico, opcional. Se .T. exibe a barra de scroll vertical. Lgico, opcional. Se .T. exibe a barra de scroll horizontal. 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
Verso 7.10
TIBROWSER:GOHOME
Reviso: 09/06/2003 Abrangncia Verso 6.09 Verso 7.10
Sintaxe TIBROWSER:GOHOME ( ) --> nil Retorno Tipo (NULO) Descrio Direciona navegao para pgina <HOME> cadastrada no Internet Explorer Descrio Este mtodo retorna nil
TIBROWSER:NAVIGATE
Reviso: 09/06/2003 Abrangncia Verso 6.09 Verso 7.10
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
TIBROWSER:NEW
Reviso: 09/06/2003 Abrangncia Verso 6.09 Verso 7.10
Sintaxe TIBROWSER:NEW ( < anRow > , < anCol > , < anWidth > , < anHeight > , [ ainitLink ] , [ anWindow ] ) --> Retorno Parmetros Argumento 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 Descrio
Numrico coordenada vertical Numrico Coordenada horizontal Numrico Largura do objeto Numrico Altura do objeto Endereo da pgina inicial a ser carregada, se no Caracter informada, carregar a pgina <HOME> cadastrada no Internet Explorer. Objeto Janela ou componente visual onde o objeto ser criado
TIBROWSER:PRINT
Reviso: 09/06/2003 Abrangncia Verso 6.09 Verso 7.10
Sintaxe TIBROWSER:PRINT ( ) --> nil Retorno Tipo (NULO) Descrio Imprime a pgina que esta sendo visualizada Descrio Este mtodo retorna nil
A funo abaixo cria uma janela de dialogo, com uma twBrowse ocupando toda a extenso do dilogo, realizando uma consulta na Tabela SX5, filtrada atravs do ndice 1, para mostrar apenas os elementos pertencentes tabela 01 do SX5. Vale lembrar que, para testar o fonte abaixo, deve-se compil-lo no projeto, e inserir uma chamada esta funo no Menu do ERP.
#INCLUDE 'PROTHEUS.CH' User Function TstTWBrw() dbselectarea('SX5') DbSetORder(1) DEFINE MSDIALOG oDlg TITLE 'Exemplo TWBrowse' FROM 000, 000 TO 500, 600 PIXEL oBrw := TWBrowse():New( NIL,NIL,NIL,NIL,; {|| { SX5->X5_TABELA, SX5->X5_CHAVE, SX5->X5_DESCRI , str(SX5->(recno()),8,0) } },; { 'Tabela','Chave','Descrio', 'RECNO'},; NIL, oDlg, "X5_FILIAL+X5_TABELA" ," 01" , " 01" ,,,,,,,,,, "SX5", .T. )
// Ajusta alinhamento do TWBrowse para pegar o dialogo inteiro oBrw:Align := CONTROL_ALIGN_ALLCLIENT ACTIVATE MSDIALOG oDlg CENTERED Return
New
Reviso: 16/09/2004 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10 Verso 8.11
Sintaxe TWBrowse():New ( [ nRow ] , [ bScroll ] , [ Param25 ] , [ Param27 ] , [ nCol ] , [ nWidth ] , [ nHeigth ] , < bLine > , < aHeaders > , [ aColSizes ] , [ oWnd ] , [ cField ] , [ cTopLimit ] , [ cBottomLiit ] , [ bChange ] , [ bLDblClick ] , [ Param14 ] , [ oFont ] , [ Param16 ] , [ nClrFore ] , [ nClrBack ] , [ Param19 ] , [ Param20 ] , [ cAlias ] , [ lPixel ] , [ Param23 ] , [ Param24 ] ) --> oObjTWBrowse Parmetros Argumento nRow bScroll Param25 Param27 nCol nWidth nHeigth bLine Tipo Numrico Lgico (NULO) (NULO) Numrico Numrico Numrico Descrio Coordenada vertical inicial do Objeto. Caso .T., habilita barra de scroll horizontal e botes de navegao vertical. ( parmetro reservado ) ( parmetro reservado ) Coordenada horizontal inicial do Objeto Tamanho horizontal do objeto Tamanho vertical do objeto
Code-Block, que deve retornar um array, com uma dimenso, onde devem ser retornados as strings Code-Block referentes aos elementos referentes s colunas do Browse. Array Array, que deve retornar um array, com uma dimenso, contendo as strings referentes aos Ttulos das colunas do Browse. Array, com uma dimenso, onde devem ser retornados os nmeros referentes o tamanho horizontal das colunas do Browse. Caso especificado NIL, os tamanhos das colunas so calculados automaticamente. 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 parmetro utilizado quando realizado um browse de
aHeaders
uma tabela, aberta sob um alias, com uma expresso de ndice. Utilizado para especificar uma string, de acordo com a chave de ndice passada em cField, a ser utilizada para identificar o limite superior do Browse. Apenas devemos informar contedo neste, caso o parmetro cField seja especificado. 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.
cTopLimit
Caracter
cBottomLiit
Caracter
bChange bLDblClick Param14 oFont Param16 nClrFore nClrBack Param19 Param20 cAlias
Ao a ser executada quando alterado o foco entre as Code-Block linhas do Browse. Recebe o objeto do Browse como parmetro. Code-Block (NULO) Objeto (NULO) Numrico Numrico (NULO) (NULO) Caracter Ao a ser executada quando executado um dupli -clique 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 )
Contrutor da Classe TWBrowse. Retorna uma nova instncia do Objeto da Classe TWBrowse.
Classes de Janelas
MSDialog
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tWindow -> tDialog -> MSDialog
Caractersticas
MSDialog deve ser utilizada como padro de janela para entrada de dados. MSDialog um tipo de janela dilogo modal, isto , no permite que outra janela ativa receba dados enquanto esta estiver ativa.
Propriedades
Vide classes ancestrais.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anTop], [anLeft], [anBottom], [anRight], [acCaption], [cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack], [oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [lPar17]) Parmetro Tipo / Descrio Parmetros anTop anLeft Numrico, opcional. Coordenada vertical superior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda em pixels ou caracteres.
anBotom anRight
Numrico, opcional. Coordenada vertical inferior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal direita em pixels ou caracteres. Reservado. Reservado. Reservado. Reservado.
anClrText Numrico,opcional. Cor do texto. anClrBack Numrico,opcional. Cor de fundo. oPar12 aoWnd alPixel oPar15 oPar16 nPar17 Reservado. Objeto, opcional. Janela me da janela a ser criada, padro a janela principal do programa. Lgico, opcional. Se .T. considera as coordenadas passadas em pixels, se .F. considera caracteres. Reservado. Reservado. Reservado.
Retorno
O Dilogo criado.
Exemplo
#INCLUDE protheus.ch User Function Teste() // cria dilogo Local oDlg:=MSDialog():New(10,10,300,300,Meu dialogo,,,,,CLR_BLACK,CLR_WHITE,,,.T.) // ativa dilogo centralizado oDlg:Activate(,,,.T.,{||msgstop(validou!),.T.},,{||msgstop(iniciand o) ) Return
tDialog
Reviso: 24/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tWindow -> tDialog
Caractersticas
Classe de janela de dilogo de entrada de dados, uso reservado, recomenda-se utilizar a classe MSDialog que herdada desta classe.
Propriedades
Vide classes ancestrais.
Mtodos
New
Descrio Sintaxe Mtodo construtor da classe. New([anTop], [anLeft], [anBottom], [anRight], [acCaption], [cPar6], [nPar7], [lPar8], [nPar9], [anClrText], [anClrBack], [oPar12], [aoWnd], [alPixel], [oPar15], [oPar16], [nPar17], [anWidth], [anHeight]) Parmetro Tipo / Descrio Parmetros anTop anLeft Numrico, opcional. Coordenada vertical superior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda em pixels ou caracteres.
anBotom anRight
Numrico, opcional. Coordenada vertical inferior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal direita em pixels ou caracteres. Reservado. Reservado. Reservado. Reservado.
anClrText Numrico,opcional. Cor do texto. anClrBack Numrico,opcional. Cor de fundo. oPar12 aoWnd alPixel oPar15 oPar16 nPar17 anWidth Reservado. Objeto, opcional. Janela me da janela a ser criada, padro a janela principal do programa. Lgico, opcional. Se .T. considera as coordenadas passadas em pixels, se .F. considera caracteres. Reservado. Reservado. Reservado. Numrico, opcional. Largura da janela em pixels.
Retorno
O Dilogo criado.
Activate
Descrio Sintaxe Ativa (exibe) o dilogo. Chamar somente uma vez este mtodo. Activate([bPar1], [bPar2], [bPar3], [alCentered], [abValid], [lPar6], [abInit], [bPar8], [bPar9] ) Parmetro Tipo / Descrio Parmetros bPar1 Reservado.
bPar2
Reservado.
bPar3
Reservado.
Bloco de cdigo, opcional. Deve retornar .T. se contedo do dilogo vlido, se retornar .F. o dilogo no fechar quando solicitada de encerrar. Reservado. Bloco de cdigo, opcional. Executado quando o dilogo inicia exibio. Reservado. Reservado.
Retorno
NIL
End
Descrio Encerra (fecha) o dilogo. Sintaxe Retorno End( ) Lgico .T. se o dilogo foi encerrado.
Exemplo
#INCLUDE "PROTHEUS.CH" User Function Teste() Local oDlg // cria dilogo oDlg := MSDialog():New(10,10,300,300,"Meu dialogo",,,,,CLR_BLACK,CLR_WHITE,,,.T.) // ativa dilogo centralizado oDlg:Activate(,,,.T.,{||msgstop("validou!"),.T.},,{||msgstop("iniciand o...")} ) /* os comandos abaixo proporcionam o mesmo resultado // cria dilogo DEFINE DIALOG oDlg TITLE "Meu dialogo" FROM 10,10 TO 300,300 COLOR CLR_BLACK,CLR_WHITE PIXEL // ativa dilogo centralizado ACTIVATE DIALOG oDlg CENTER ON INIT (msgstop("iniciando...")) VALID (msgstop("validou!"),.T.) */ Return NIL
tWindow
Reviso: 23/02/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Hierarquia
tSrvObject -> tWindow
Caractersticas
Classe de janela principal de programa, dever existir apenas uma instncia deste objeto na execuo do programa.
Propriedades
bInit Bloco de cdigo. Executado quando a janela est sendo exibida. lEscClose Lgico. Se .T. habilita o <ESC> cancelar a execuo da janela. oCtlFocus Objeto. Objeto contido na janela que est com foco de entrada de dados.
Mtodos
New
Descrio Sintaxe Mtodo construtor da janela. New( [anTop], [anLeft],[anBottom], [anRight], [acTitle], [nPar6], [oPar7] ,[oPar8],[oPar9], [aoParent], [lPar11], [lPar12], [anClrFore], [anClrBack], [oPar15], [cPar16], [lPar17], [lPar18], [lPar19], [lPar20], [alPixel] ); Parmetro Tipo / Descrio Parmetros nTop nLeft Numrico, opcional. Coordenada vertical superior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal esquerda
em pixels ou caracteres. nBottom nRight cTitle nPar6 oPar7 oPar8 oPar9 oParent lPar11 lPar12 Numrico, opcional. Coordenada vertical inferior em pixels ou caracteres. Numrico, opcional. Coordenada horizontal inferior em pixels ou caracteres. Caractere, opcional. Ttulo da janela. Reservado. Reservado. Reservado. Reservado. Objeto, opcional. Janela me da janela corrente. Reservado. Reservado.
nClrFore Numrico, opcional. Cor de fundo da janela. nClrText Numrico, opcional. Cor do texto da janela. oPar15 cPar16 lPar17 lPar18 lPar19 lPar20 lPixel Retorno Reservado. Reservado. Reservado. Reservado. Reservado. Reservado. Lgico, opcional. Se .T. (padro) considera coordenadas passadas em pixels, se .F. considera caracteres.
Activate
Descrio Sintaxe Ativa (exibe) a janela. Chamar esse mtodo apenas uma vez. Activate([acShow], [bPar2], [bPar3], [bPar4], [bPar5], [bPar6], [ abInit ], [bPar8], [bPar9], [bPar10], [bPar11], [bPar12] ,[bPar13], [bPar14], [bPar15], [abValid], [bPar17], [bPar18] ). Parmetro Tipo / Descrio acShow Caracter, opcional. ICONIZED para janela bPar2 Parmetros bPar3 bPar4 bPar5 Reservado. Reservado. Reservado. Reservado.
bPar5 bPar6 abInit bPar8 bPar9 bPar10 bPar11 bPar12 bPar13 bPar14 bPar15 abValid bPar17 bPar18 Retorno NIL
Reservado. Reservado. Bloco de cdigo. Executado quando janela est sendo exibida. Reservado. Reservado. Reservado. Reservado. Reservado. Reservado. Reservado. Reservado. Bloco de cdigo. Executado quando a janela for solicitada de fechar. Dever retornar .T. se o contedo da janela for vlido, ou .F. se no. Se o bloco retornar .F. a janela no fechar. Reservado. Reservado.
End
Descrio Solicita encerramento da janela. Sintaxe Retorno End( ) Lgico. .T. se encerrou a janela e .F. se no.
Center
Descrio Centraliza a janela. Sintaxe Retorno Center( ) NIL
Exemplo
#INCLUDE "PROTHEUS.CH" USER FUNCTION Teste() Local oWindow Local abInit:= {||conout("ativando!")} Local abValid:= {||conout("encerrando!"),.T.} oWindow:= tWindow():New( 10, 10, 200, 200, "Meu
programa",,,,,,,,CLR_WHITE,CLR_BLACK,,,,,,,.T. ) oWindow:Activate("MAXIMIZED",,,,,,abInit,,,,,,,,,abValid,,) /* os comandos abaixo proporcionam o mesmo resultado DEFINE WINDOW oWindow FROM 10, 10 TO 200,200 PIXEL TITLE "Meu programa" COLOR CLR_WHITE,CLR_BLACK ACTIVATE WINDOW oWindow MAXIMIZED ON INIT abInit VALID abValid */ Return NIL
Descrio
A TMailManager uma classe que tem por finalidade criar conexes em servidores SMTP ou POP
Metodos New()
Construtor do objeto.
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).
SmtpConnect()
Conecta com o servidor, atraves dos parametros de Init
SetSmtpTimeOut( nTimeOut )
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por time-out Parametro Descrio nTimeOut Tempo para que a conexo seja fechada por Time-Out.
SmtpDisconnect()
Disconecta com o servidor SMTP
POPConnect()
Conecta com o servidor, atraves dos parametros de Init
SetPopTimeOut( nTimeOut )
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por time-out Parametro Descrio nTimeOut Tempo para que a conexo seja fechada por Time-Out.
GetNumMsgs( @nNumMsg )
Retorna o numero de mensagens que existem no servidor Parametro Descrio nNumMsg Parametro passado por referencia, retorna nele o numero de mensagens que esto no servidor.
DeleteMsg( nMsg )
Deleta uma mensagem do servidor Parametro Descrio nMsg Numero da mensagem a ser deletada.
POPDisconnect()
Disconecta com o servidor POP
TMAILMANAGER:DELETEMSG
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:DELETEMSG ( < nMsg > ) --> Nil Parmetros Argumento nMsg Retorno Tipo (NULO) Descrio Deleta uma mensagem do servidor Descrio Nil Tipo Descrio
TMAILMANAGER:GETNUMMSGS
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:GETNUMMSGS ( < @nNumMsg > ) --> nRet Parmetros Argumento nNumMsg Retorno Tipo Numrico Descrio Retorna o numero de mensagens que existem no servidor Descrio 0 = Lista recebida com sucesso Tipo Numrico Descrio Parametro passado por referencia, retorna nele o numero de mensagens que esto no servidor.
TMAILMANAGER:INIT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:INIT ( < cPop > , < cSmtp > , < cUser > , < cPass > , [ nTimeOut ] , [ nPort ] ) --> Nil Parmetros Argumento cPop cSmtp cUser cPass nTimeOut nPort Retorno Tipo (NULO) Descrio Inicia uma nova conexo no servidor Descrio Nil Tipo Caracter Caracter 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)
Caracter Login no servidor. Caracter Senha no servidor. Numrico Time out para a conexo. Numrico Porta para se conectar.
TMAILMANAGER:NEW
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:NEW ( ) --> oServer Retorno Tipo Objeto Descrio Construtor do objeto. Descrio Construtor do objeto.
TMAILMANAGER:POPCONNECT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:POPCONNECT ( ) --> Nil Retorno Tipo (NULO) Descrio Conecta com o servidor, atraves dos parametros de Init Descrio Nil
TMAILMANAGER:POPDISCONNECT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:POPDISCONNECT ( ) --> nRet Retorno Tipo Numrico Descrio Disconecta com o servidor POP Descrio 0 = Disconectado
TMAILMANAGER:SETPOPTIMEOUT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:SETPOPTIMEOUT ( < nTimeOut > ) --> nRet Parmetros Argumento 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
TMAILMANAGER:SETSMTPTIMEO UT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:SETSMTPTIMEOUT ( < nTimeOut > ) --> nRet Parmetros Argumento 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
TMAILMANAGER:SMTPCONNECT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:SMTPCONNECT ( ) --> nRet Retorno Tipo Numrico Descrio Conecta com o servidor, atraves dos parametros de Init Descrio 0 - Conectado
TMAILMANAGER:SMTPDISCONNE CT
Reviso: 09/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMANAGER:SMTPDISCONNECT ( ) --> nRet Retorno Tipo Numrico Descrio Disconecta com o servidor SMTP Descrio 0 = Disconectado
TMAILMESSAGE:SEND
Reviso: 14/04/2003 Abrangncia Verso 5.07 Verso 5.08 Verso 6.09 Verso 7.10
Sintaxe TMAILMESSAGE:SEND ( < oServer > ) --> nRet Parmetros Argumento 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
tSocketClient
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
Descrio Esta classe permite estabelecer uma conexo cliente de socket do tipo TCP genrica. Enviar e receber dados atravs de uma socket genrico e tambm pode ser usada como base para implementao de protocolos no suportados pelo protheus. Mtodos Mtodo
CloseConnection Connect IsConnected New Receive
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.
Reset Send
CloseConnection
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
Sintaxe oObj:CloseConnection ( ) --> Nil Retorno Tipo (NULO) Descrio Finaliza a conexo TCP genrica (socket ) do objeto corrente. Descrio Nil
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 Descrio Nmero IP ou nome do servidor onde a conexo deve ser realizada Nmero em milisegundos que o mtodo deve esperar para conectar
Numrico Numero da porta onde a conexo deve ser realizada Caracter Numrico
IsConnected
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
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.
New
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
Sintaxe tSocketClient():New ( ) --> oSocket Retorno Tipo Objeto Descrio Cria o objeto tSocketClient, sem conexo ativa. Descrio Retorna um Objeto do tipo tSocketClient
Receive
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
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 Descrio tempo em milisegundos que a funo receive espera at receber algum dado pela conexo.
Reset
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
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.
Send
Reviso: 30/06/2003 Abrangncia Verso 6.09 Verso 7.10 Verso 8.11
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
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
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
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
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
Local aArray := { "Teste" , 123 } Local bBlock := { |x,y| conout(valtype(x)) , conout(y) } aEval(aArray,bBlock)
No exemplo acima , criamos um array com 2 elementos : O primeiro um Caracter , e o segundo um nmero ; e criamos um code-block que receber em x ( primeiro parametro fornecido pela funo aEval) cada elemento do array , e y ( segundo parametro fornecido pela aEval ) o nmero do elemento do array que est sendo processado nesta execuo. O resultado de tela no console do Protheus Server dever ser : Teste // Conteudo do primeiro elemento C // Tipo do conteudo 1 // Numero do elemento processado 123 // Conteudo do segundo elemento N // Tipo do Segundo Elemento 2 // Numero do elemento processado Caso o array passado como parmetro seja um array multi-Dimensional , sero passados como parmetros os arrays de primeiro nivel para o code-BLock. Vejamos uma aplicao mais complexa : Um array multi-dimensional temos 2colunas , uma de cdigo (string) e uma de valor ( numrica ) , e seja necessrio realizar um clculo de totalizao da coluna numrica :
aItens := {} aadd(aItens,{"Branco",10}) aadd(aItens,{"Preto",15}) aadd(aItens,{"Cinza",12})
*** Este exemplo cria um bloco de cdigo que incrementa um nmero e depois o avalia:
bBloco := { |nArg| nArg + 1 } ? EVAL(bBloco, 1)
// Resulta: 2
*** Este exemplo demonstra como um bloco de cdigo pode ser compilado em tempo de execuao utilizando-se o operador macro (&):
bBloco := &("{ |nArg| nArg + 1 }") ? EVAL(bBlock, 1)
// Avalia o bloco
No exemplo abaixo , exemplificamos o funcionamento da funo SplitPath , usando combinaes de nomes de arquivos com ou sem drive , caminho , nome de arquivo e/ou extenso.
User Function TSTSplit() Local aArq := {} , cDrive, cDir, cNome, cExt aadd(aArq,'c:\path\arquivo.ext') aadd(aArq,'c:\path\arquivo') aadd(aArq,'c:\path\') aadd(aArq,'c:\arquivo') aadd(aArq,'\path\arquivo.ext') aadd(aArq,'path\arquivo') aadd(aArq,'\\servidor\pasta\') aadd(aArq,'\\servidor\pasta\arquivo.ext') aadd(aArq,'') For nI := 1 to len(aArq) SplitPath( aArq[nI], @cDrive, @cDir, @cNome, @cExt ) conout( aArq[nI] + ' ['+cDrive+'] ['+ cDir +'] ['+ cNome +'] ['+ cExt + ']') Next
Aps executado o programa acima, deve ser exibido no console do Protheus Server o texto abaixo :
c:\path\arquivo.ext [c:] [\path\] [arquivo] [.ext] c:\path\arquivo [c:] [\path\] [arquivo] [] c:\path\ [c:] [\path\] [] [] c:\arquivo [c:] [\] [arquivo] [] \path\arquivo.ext [] [\path\] [arquivo] [.ext] path\arquivo [] [path\] [arquivo] [] \\servidor\pasta\ [] [\\servidor\pasta\] [] [] \\servidor\pasta\arquivo.ext [] [\\servidor\pasta\] [arquivo] [.ext] [] [] [] []
No exemplo abaixo, solicitamos a um servidor http o contedo de uma pgina, e a chamada de uma pgina .asp passando parmetros via GET
// Buscar pgina cHtmlPage := Httpget('http://www.servidor.com.br/pageteste.htm') // Chamar pgina passando parmetros cHtmlPage := Httpget('http://www.servidor.com.br/funteste.asp?Id=123&Nome=Teste') // ou cHtmlPage := Httpget('http://www.servidor.com.br/funteste.asp','Id=123&Nome=Teste')
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+" "
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 2 Compacta um diretrio com senha aNome := {} ADIR( "*.DBF", aNome ) lRes := MSCOMPRESS( aNome, "ArqComp.MZP", "SENHA" )
Este exemplo cria um vetor que conter os nomes de todos os arquivos (.txt) no diretrio DEFAULT corrente, e os relaciona no console utilizando a funao AEVAL() :
LOCAL aFiles[ADIR("*.TXT")] ADIR("*.TXT", aFiles) AEVAL(aFiles, { |element| conout(element) })
*** Vale lembrar que ADIR() uma funao de compatibilidade e portanto desaconselhada. Ele est superado pela funao DIRECTORY(), que retorna todas as informaoes de arquivo em um vetor multi-dimensional. ***
No exemplo abaixo , conferimos o path atual e tentamos setar um novo path atual , verificando se a operao foi realizada com sucesso.
cOldDir := curdir() cNewDir := '\webadv\xis' curdir(cNewDir) // Troca o path If cNewDir <> '\'+curdir() // E verifica se trocou mesmo conout('Falha ao Trocar de Path de '+cOldDir + ' para '+cNewDir) Else conout('Path de '+cOldDir + ' trocado para '+cNewDir+' com sucesso.') Endif
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
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
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 )
No exemplo abaixo , tentamos abrir o arquivo error.log para escrita e gravao compartilhada.
#include 'fileio.ch' ... nH := fopen('\sigaadv\error.log' , FO_READWRITE + FO_SHARED ) If nH == -1 MsgStop('Erro de abertura : FERROR '+str(ferror(),4)) Else MsgStop('Arquivo aberto com sucesso.') ... fclose(nH) Endif ...
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
Este exemplo realiza uma cpia de um arquivo Texto chamado ORIGEM.TXT , para um arquivo chamado DESTINO.TXT , no ambiente do Protheus Server.
#INCLUDE "FILEIO.CH" #DEFINE F_BLOCK 1024 / gravados por vez // Define o bloco de Bytes a serem lidos
User Function TestCopy() Local cBuffer := SPACE(F_BLOCK) Local nHOrigem , nHDestino Local nBytesLidos , nBytesFalta , nTamArquivo Local nBytesLer , nBytesSalvo Local lCopiaOk := .T. // Abre o arquivo de Origem nHOrigem := FOPEN("ORIGEM.TXT", FO_READ) // Testa a abertura do Arquivo If nHOrigem == -1 MsgStop('Erro ao abrir origem. Ferror = '+str(ferror(),4),'Erro') Return .F. Endif // Determina o tamanho do arquivo de origem nTamArquivo := Fseek(nHOrigem,0,2) // Move o ponteiro do arquivo de origem para o inicio do arquivo Fseek(nHOrigem,0) // Cria o arquivo de destino nHDestino := FCREATE("DESTINO.TXT", FC_NORMAL) // Testa a criao do arquivo de destino If nHDestino == -1 MsgStop('Erro ao criar destino. Ferror = '+str(ferror(),4),'Erro') FCLOSE(nHOrigem) // Fecha o arquivo de Origem Return .F. Endif // Define que a quantidade que falta copiar o prprio tamanho do Arquivo nBytesFalta := nTamArquivo // Enquanto houver dados a serem copiados
While nBytesFalta > 0 // Determina quantidade de dados a serem lidos nBytesLer := Min(nBytesFalta , F_BLOCK ) // l os dados do Arquivo nBytesLidos := FREAD(nHOrigem, @cBuffer, nBytesLer ) // Determina se no houve falha na leitura If nBytesLidos < nBytesLer MsgStop( "Erro de Leitura da Origem. "+; Str(nBytesLer,8,2)+" bytes a LER."+; Str(nBytesLidos,8,2)+" bytes Lidos."+; "Ferror = "+str(ferror(),4),'Erro') lCopiaOk := .F. Exit Endif // Salva os dados lidos no arquivo de destino nBytesSalvo := FWRITE(nHDestino, cBuffer,nBytesLer) // Determina se no houve falha na gravao If nBytesSalvo < nBytesLer MsgStop("Erro de gravao do Destino. "+; Str(nBytesLer,8,2)+" bytes a SALVAR."+; Str(nBytesSalvo,8,2)+" bytes gravados."+; "Ferror = "+str(ferror(),4),'Erro') lCopiaOk := .F. EXIT Endif // Elimina do Total do Arquivo a quantidade de bytes copiados nBytesFalta -= nBytesLer Enddo // Fecha os arquivos de origem e destino FCLOSE(nHOrigem) FCLOSE(nHDestino) If lCopiaOk MsgStop('Cpia de Arquivos finalizada com sucesso. '+; str(nTamArquivo,12,0)+' bytes copiados.','Final') Else MsgStop( 'Falha na Cpia. Arquivo de Destino incompleto. '+; 'Do total de '+str(nTamArquivo,12,0)+' bytes, faltaram '+str(nBytesFalta,12,0)+' bytes.','Final') Endif Return
Este exemplo demonstra como se pode utilizar o dbappend liberando e mantendo bloqueios anteriores.
USE Clientes NEW FOR i:=1 to 5 DBAPPEND(.F.) NOME := "XXX" END : ="YYY" NEXT // Os 5 registros includos permanecem bloqueados DBAPPEND() // Todos os bloqueios anteriores so liberados
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
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
Este exemplo demonstra como se pode utilizar a funo DBCLEARINDEX para fechar os ndices.
USE Clientes NEW DBSETINDEX("Nome") // Abre o arquivo de ndice "Nome" ... DBCLEARINDEX() // Fecha todos os arquivos de ndices
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.
Este exemplo demonstra como se pode utilizar o DBCLOSEAREA para fechar a rea de trabalho atual.
USE Clientes NEW DBSETINDEX("Nome") // Abre o arquivo de ndice "Nome" ... DBCLOSEAREA() // Fecha a rea de trabalho atual
Este exemplo demonstra como se pode utilizar o DBSTRUCT para recuperar a estrutura da tabela corrente.
USE Cliente NEW DBSTRUCT() //Retorna:{{Cod,N,3,0},{Nome,C,10,0},{Idade,N,3,0},{Nasc,D,8,0},{Pagto ,N,7,2}}
Este exemplo mostra como o DBSKIP pode passar do final da tabela e do incio da tabela
DBUSEAREA( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. ) DBGOBOTTOM() EOF() // retorna .F. DBSKIP() EOF() // retorna .T. DBGOTOP() BOF() // retorna .F. DBSKIP(-1) BOF() // retorna .T.
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()
Este exemplo define uma pseudo-funao, DbfSize(), que utiliza HEADER() juntamente com RECSIZE() e LASTREC() para calcular o tamanho do arquivo de banco de dados corrente em bytes:
#define DbfSize() ((RECSIZE() * LASTREC()) + HEADER() + 1)
Depois, voc pode utilizar DbfSize() como se fosse qualquer outra funao:
USE Sales NEW USE Customer NEW ? DbfSize() ? Sales->(DbfSize())
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.
Este exemplo mostra como liberar todos os registros bloqueados da tabela corrente.
DBUSEAREA( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. ) DBRLock() ... DBUNLOCKALL()
Este exemplo demonstra como criar um ndice com uma data composta e chave de caractere utilizando DTOS():
No exemplo abaixo , determinamos as impressoras disponveis na estao Remote e no Server , respectivamente. E , mostramos no Console do Server a(s) impressora(s) encontrada(s).
aImpRemote := GetImpWindows(.F.) conout('Impressoras na estao remota') aeval(aImpRemote , { |x| conout(x) }) aImpServer := GetImpWindows(.T.) conout('Impressoras no Servidor') aeval(aImpServer , { |x| conout(x) })
No exemplo abaixo, determinamos as portas de impresso disponveis na estao Remote e no Server, respectivamente. E mostramos no Console do Server a(s) porta(s) encontrada(s).
aPortRemote := GetPortActive(.F.) conout('Impressoras na estao remota') aeval(aPortRemote , { |x| conout(x) }) aPortServer := GetPortActive(.T.) conout('Impressoras no Servidor') aeval(aPortServer , { |x| conout(x) })
Veja abaixo um exemplo do que foi mostrado no console do Protheus Server, apos a execuo da rotina.
Impressoras na estao remota COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:\\prnserver\prx-lp1 Impressoras no Servidor COM1:COM2:COM3:COM4:FILE:LPT1:LPT2:LPT3:
Este exemplo utiliza DESCEND() em uma expressao INDEX para criar um ndice de datas de ordem descendente:
USE Sales NEW INDEX ON DESCEND(DTOS(OrdDate)) TO SalesDate
Depois, DESCEND() pode ser utilizado para fazer uma pesquisa (SEEK) no ndice descendente:
DbSEEK(DESCEND(DTOS(dFindDate)))
Observao : Faz-se necessria a converso da Data para String m atravs da funo DTOS(), pois a funo DESCEND apenas trabalha com Strings.
Este exemplo utiliza DAY() em conjunto com CMONTH() e YEAR() para formatar um valor do tipo data:
conout( CMONTH(DATE()) + STR(DAY(DATE())) +; "," + STR(YEAR(DATE())) ) // Resulta: June 15, 1990
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 .
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
Este exemplo cria uma funao definida pelo usurio usando YEAR() para formatar um valor data na forma : ms dia, ano:
conout( U_Mdy(DATE()) ) 1990 // Resulta: September 20,
USER FUNCTION Mdy( dDate ) Return CMONTH(dDate) + " " + LTRIM(STR(DAY(dDate))); + "," + STR(YEAR(dDate))
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" )
Os exemplos a seguir demonstram os efeitos de chamadas mltiplas da funo AADD() para um vetor:
aArray := {} AADD(aArray, 5) AADD(aArray, 10) AADD(aArray, { 12, 10 }) } // // // // Resulta: Resulta: Resulta: Resulta: aArray aArray aArray aArray e e e e um vetor vazio { 5 } { 5, 10 } { 5, 10, { 12, 10 }
Este exemplo cria dois vetores, cada um deles preenchido com um valor. Os dois primeiros elementos do vetor fonte sao entao copiados para o vetor destino:
LOCAL nCount := 2, nStart := 1, aOne, aTwo aOne := { 1, 1, 1 } aTwo := { 2, 2, 2 } ACOPY(aOne, aTwo, nStart, aCont) // Resulta: aTwo e agora { 1, 1, 2 }
Este exemplo cria um vetor constante de trs elementos, e depois elimina o segundo elemento. O terceiro elemento sobe uma posiao, e ao novo terceiro elemento atribuido NIL:
LOCAL aArray aArray := { 1, 2, 3 } ADEL(aArray, 2) }
Este exemplo utiliza AEVAL() para fazer uma lista que consiste em itens selecionados de um vetor multi-dimensional.
LOCAL aFiles := DIRECTORY("*.dbf"), aNames := {} AEVAL(aFiles, { | file | AADD(aNames, file[1]) } )
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. }
Este exemplo cria um vetor unidimensional de cinco elementos utilizando a funao ARRAY(), e depois exibe a aao equivalente atribuindo um vetor literal de valores NIL:
aArray := ARRAY(5) aArray := { NIL, NIL, NIL, NIL, NIL }
Este exemplo ilustra trs declaraoes diferentes que criam o mesmo vetor multidimensional:
aArray := ARRAY(3, 2) aArray := { {NIL, NIL}, {NIL, NIL}, {NIL, NIL} } aArray := { ARRAY(2), ARRAY(2), ARRAY(2) }
O exemplo a seguir demonstra a pesquisa em um vetor de trs elementos utilizando valores simples e um bloco de cdigo como critrios de pesquisa. Os critrios do bloco de cdigo ilustram como executar uma pesquisa que nao faz diferenciaao entre maisculas e minsculas:
aArray := { "Tom", "Mary", "Sue" } ? ASCAN(aArray, "Mary") ? ASCAN(aArray, "mary") ? ASCAN(aArray, { |x| UPPER(x) == "MARY" })
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
No Exemplo abaixo , ordenamos um array em ordem crescenter , depois em ordem decrescente atravs de um code-block .
Local aArray := { 3, 5, 1, 2, 4 } ASORT(aArray) // Resultado: { 1, 2, 3, 4, 5 } ASORT(aArray,,,{ |x, y| x > y }) // Resultado: { 5, 4, 3, 2, 1 }
No Exemplo abaixo , utilizamos na expresso de ordenao a funo upper() , para ordenar o array em ordem alfabrica independentemente da informao estar em letras maisculas e/ou minusculas.
aArray := { "Fred", Kate", "ALVIN", "friend" } ASORT(aArray,,, { |x, y| UPPER(x) < UPPER(y) })
No exemplo abaixo , montamos um code-block para ordenao de um array multidimensional , para ordenar o array em ordem crescente do segundo elemento da dimenso.
aKids := { {"Mary", 14}, {"Joe", 23},{"Art", 16} } aSortKids := ASORT(aKids,,, { |x, y| x[2] < y[2] }) // Resultado : { {"Mary", 14}, {"Art", 16}, {"Joe",23} }