Escolar Documentos
Profissional Documentos
Cultura Documentos
Advpl - A Linguagem
Advpl - A Linguagem
Reviso: 09/06/2003
A Linguagem AdvPl teve seu incio em 1994, sendo na verdade uma evoluo na
utilizao de linguagens no padro xBase pela Microsiga Software S.A. (Clipper, Visual
Objects e depois FiveWin). Com a criao da tecnologia Protheus, era necessrio criar
uma linguagem que suportasse o padro xBase para a manuteno de todo o cdigo
existente do sistema de ERP Siga Advanced. Foi ento criada a linguagem chamada
Advanced Protheus Language.
O AdvPl uma extenso do padro xBase de comandos e funes, operadores,
estruturas de controle de fluxo e palavras reservadas, contando tambm com funes e
comandos disponibilizados pela Microsiga que a torna uma linguagem completa para a
criao de aplicaes ERP prontas para a Internet. Tambm uma linguagem orientada
a objetos e eventos, permitindo ao programador desenvolver aplicaes visuais e criar
suas prprias classes de objetos.
Quando compilados, todos os arquivos de cdigo tornam-se unidades de inteligncia
bsicas, chamados APOs (de Advanced Protheus Objects). Tais APOs so mantidos
em um repositrio e carregados dinamicamente pelo Protheus Server para a execuo.
Como no existe a linkedio, ou unio fsica do cdigo compilado a um determinado
mdulo ou aplicao, funes criadas em AdvPl podem ser executadas em qualquer
ponto do ambiente Advanced Protheus.
O compilador e o interpretador da linguagem AdvPl o prprio servidor Protheus
(Protheus Server), e existe um ambiente visual para desenvolvimento integrado
(Protheus IDE) onde o cdigo pode ser criado, compilado e depurado.
Os programas em AdvPl podem conter comandos ou funes de interface com o
usurio. De acordo com tal caracterstica, tais programas so subdivididos nas seguintes
categorias:
Programao 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.
Verso 5.08
Verso 6.09
Verso 7.10
Caractersticas
Classe abstrata inicial de todas as classes de interface do Advpl. No deve ser
instanciada diretamente.
Propriedades
Propriedade
nLeft
nTop
nWidth
nHeight
cCaption
cTooltip
Tipo
Numrico.
Numrico.
Numrico.
Numrico.
Caractere.
Caractere.
lShowHint Lgico.
cMsg
Caractere.
nClrText
nClrPane
Numrico.
Numrico.
bWhen
Bloco de
cdigo.
bValid
Bloco de
cdigo.
blClicked
brClicked
Bloco de
cdigo.
Bloco de
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.
Executado quando acionado click do boto esquerdo do
mouse sobre o objeto.
Executado quando acionado click do boto direito do mouse
cdigo.
Bloco de
blDblClick
cdigo.
oWnd
Objeto.
lVisible
Booleano.
Objeto ou
Cargo
varivel.
Bloco de
bLostFocus
cdigo.
Bloco de
bGotFocus
cdigo.
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 SetFocus( )
Descrio Fora o foco de entrada de dados mudar para o objeto.
Retorno NIL
Hide
Sintaxe Hide( )
Descrio Torna objeto invisvel.
Retorno NIL
Show
Sintaxe Show( )
Descrio Torna objeto visvel.
Retorno NIL
Enable
Sintaxe Enable( )
Descrio Habilita o objeto.
Retorno NIL
Disable
Sintaxe Disable( )
Descrio Desabilita o objeto.
Retorno NIL
Refresh
Sintaxe
Refresh( )
Fora atualizao (sincronia) de propriedades entre o programa e o
Descrio
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
nPar8
alItalic
Reservado.
Lgico, opcional. Se .T. o estilo da fonte ser itlico.
Lgico, opcional. Se .T. o estilo da fonte ser
alUnderline
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
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.
Lgico. Se .T. indica que o contedo da varivel associada ao controle foi
lModified
modificado.
Lgico. Se .T. o contedo da varivel associada ao controle permanecer
lReadOnly
apenas para leitura.
Numrico. Handle (identificador) do objeto sobre o qual o controle foi
hParent
criado.
Bloco de cdigo. Executado quando o estado ou contedo do controle
bChange
modificado pela ao sobre o controle.
Mtodos
SetFocus
Descrio Fora mudana do foco de entrada de dados para o controle.
Sintaxe SetFocus( )
REtorno NIL
tButton
Reviso: 23/02/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Classe de boto.
Hierarquia
tSrvObject -> tControl -> tButton
Descrio
Utilize a classe tButton para criar um controle visual do tipo boto.
Propriedades
Nome
Tipo / Descrio
lProcessing Lgico. Se .T. indica o boto est efetuando uma ao.
bAction
Bloco de cdigo. Executado quando o boto pressionado.
Mtodos
New
Descrio
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
Hierarquia
tSrvObject -> tControl -> tCheckBox
Descrio
Utilize a classe tCheckbox quando desejar criar um controle que possua dois estados .T.
ou .F..
Mtodos
New
Descrio
Retorno
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
Retorno
Select
Descrio
Sintaxe
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
Tipo / Descrio
Lgico. Se .T. o controle se comporta como entrada de dados de senha,
lPassword
exibindo asteriscos * para esconder o contedo digitado.
Picture
Caractere. Mscara de formatao do contedo a ser exibido.
Mtodos
New
Descrio
abSetGet
aoWnd
anWidth
anHeight
acPict
abValid
anClrFore
anClrBack
aoFont
lPar12
oPar13
alPixel
cPar15
lPar16
abWhen
lPar18
lPar19
abChange
alReadOnly
alPassword
cPar23
acReadVar
cPar25
lPar26
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.
Numrico, opcional. Cor do texto 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
* no lugar dos caracteres exibidos pelo controle para
simular entrada de senha.
Reservado.
Caractere, opcional. Nome da varivel que o controle
dever manipular, dever ser a mesma varivel
informada no parmetro abSetGet, e ser o retorno da
funo ReadVar( ).
Reservado.
Reservado.
Retorno
nPar27
Reservado.
lPar28
Reservado.
O controle construdo.
Exemplo
#include protheus.ch
User Function TesteGet()
Local oDlg, oGet1, oButton, nGet1:=0
DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE Meu Get
oGet1:= TGet():New(10,10,{|u| if(PCount()>0,nGet1:=u,nGet1}}, oDlg,;
100,20,@E 999,999.99,;
{|o|nGet1>1000.00},,,,,,.T.,,,,,,,,,,nGet1)
/* Tem o mesmo efeito
@ 10,10 MSGET oGet1 VAR nGet1 SIZE 100,20 OF oDlg PIXEL PICTURE @E
999,999.99 VALID nGet1>1000.00
*/
// Boto para fechar a janela
@ 40,10 BUTTON oButton PROMPT Fechar OF oDlg PIXEL ACTION oDlg:End()
ACTIVATE MSDIALOG oDlg CENTERED
MsgStop( O valor +Transform(nGet1,@E 999,999.00) )
Return NIL
tGroup
Reviso: 23/02/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
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
Retorno
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
Retorno
Select
Descrio Fora a seleo de um item.
Sintaxe
Select( [anItem] )
Parmetros Parmetro Tipo / Descrio
Retorno
nItem
NIL
Add
Descrio
Sintaxe
Modify
Descrio
Sintaxe
Del
Descrio
Sintaxe
Apaga um item.
Del( nPos )
Parmetro Tipo / Descrio
Parmetros
Numrico, obrigatrio. Posio a ser excluida, deve ser
nPos
maior que 0 e menor ou igual que o nmero de itens.
Retorno
NIL
Len
Descrio Retorna o nmero de itens.
Sintaxe Len( )
Retorno Numrico. Nmero de itens.
Reset
Descrio Apaga todos os itens.
Sintaxe Reset( )
Retorno NIL
Exemplo
#include protheus.ch
User Funcion Teste()
Local oDlg, oList, nList:= 1, aItems:={}
Aadd(aItems,Item
Aadd(aItems,Item
Aadd(aItems,Item
Aadd(aItems,Item
1)
2)
3)
4)
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
Tipo / Descrio
Numrico. Nmero total de passos at o preenchimento da rgua de
nTotal
processo.
lPercentage Lgico. Se .T. considera o passo de movimentao em porcentagem.
nClrBar
Numrico. Cor da barra de andamento.
Mtodos
New
Descrio
Retorno
Set
Descrio
Sintaxe
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
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
Retorno
EnableVScroll
Descrio
Sintaxe
EnableHScroll
Descrio
Sintaxe
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
Retorno
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
Retorno
EnableItem
Descrio
Sintaxe
Exemplo
#include protheus.ch
User Function Teste()
Local oDlg, oButton, oRadio, nRadio:=1
Local aOptions:={escolha1,escolha2}
DEFINE MSDIALOG oDlg FROM 0,0 TO 300,300 PIXEL TITLE Meu Get
oRadio:= tRadMenu():New(10,10,aOptions,;
{|u|if(PCount()>0,nRadio:=u,nRadio)},;
oDlg,,,,,,,,100,20,,,,.T.)
@ 40,10 BUTTON oButton PROMPT Fechar OF oDlg PIXEL ACTION oDlg:End()
ACTIVATE MSDIALOG oDlg CENTERED
MsgStop(Escolheu +aOptions[nRadio] )
Return NIL
tSay
Reviso: 23/02/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Classe de label.
Hierarquia
tSrvObject -> tControl -> tSay
Descrio
O objeto tipo tSay exibe o contedo de texto esttico sobre uma janela ou controle.
Propriedades
Nome
Tipo / Descrio
Lgico. Se .T. quebra o texto em vrias linhas de maneira a enquadrar o
lWordWrap
contedo na rea determinada para o controle, sendo o padro .F.
Lgico. Se .T. a cor de fundo do controle ignorada assumindo o contedo
lTransparent
ou cor do controle ou janela ao fundo, sendo o padro .T.
Mtodos
New
Descrio
Retorno
SetText
Descrio
Sintaxe
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
Exemplo
#include protheus.ch
User Function Teste()
Local oDlg, oScr, oGet1, oGet2, oGet3
Local cGet1, cGet2, cGet3
cGet1:= Space(10)
cGet2:= Space(10)
cGet3:= Space(10)
DEFINE MSDIALOG oDlg FROM 0,0 TO 400,400 PIXEL My test
oScr:= TScrollBox():New(oDlg,10,10,200,200,.T.,.T.,.T.) // cria
controles dentro do scrollbox
@ 10,10 MSGET oGet1 VAR cGet1 SIZE 100,10 OF oScr PIXEL
@ 50,10 MSGET oGet2 VAR cGet2 SIZE 100,10 OF oScr PIXEL
@ 150,100 MSGET oGet3 VAR cGet3 SIZE 100,10 OF oScr PIXEL
ACTIVATE MSDIALOG oDlg CENTERED
Return NIL
Classe TIBrowser
Exemplo de uso da classe TIBrowser
Reviso: 09/06/2003
Abrangncia
Verso 6.09
Verso 7.10
#include "protheus.ch"
function teste()
local oDlg, oTIBrowser, oBtnNav, oBtnPrint, oBtnHome
DEFINE MSDIALOG oDlg FROM 0,0 TO 320,460 PIXEL TITLE "Teste TIBrowser"
oTIBrowser:= TIBrowser():New( 10,10, 150, 150,
"http://www.google.com", oDlg )
@ 10, 160 BUTTON oBtnNav PROMPT "Ir para Microsiga" SIZE 50,10 ACTION
oTIBrowser:Navigate("http://www.microsiga.com.br") OF oDlg PIXEL
@ 20, 160 BUTTON oBtnPrint PROMPT "Imprimir" SIZE 50,10 ACTION
oTIBrowser:Print() OF oDlg PIXEL
@ 30, 160 BUTTON oBtnHome PROMPT "Home" SIZE 50,10 ACTION
oTIBrowser:GoHome() OF oDlg PIXEL
ACTIVATE MSDIALOG oDlg CENTERED
return
TIBROWSER:GOHOME
Reviso: 09/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Sintaxe
TIBROWSER:GOHOME ( ) --> nil
Retorno
Tipo
(NULO)
Descrio
Este mtodo retorna nil
Descrio
Direciona navegao para pgina <HOME> cadastrada no Internet Explorer
TIBROWSER:NAVIGATE
Reviso: 09/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Sintaxe
TIBROWSER:NAVIGATE ( < ahRef > ) --> nil
Parmetros
Argumento
ahRef
Tipo
Descrio
Caracter Endereo da pgina a ser navegada
Retorno
Tipo
(NULO)
Descrio
Este mtodo sempre retorna nil
Descrio
Troca a pgina a ser visualizada
TIBROWSER:NEW
Reviso: 09/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Sintaxe
TIBROWSER:NEW ( < anRow > , < anCol > , < anWidth > , < anHeight > , [ ainitLink
] , [ anWindow ] ) --> Retorno
Parmetros
Argumento
anRow
anCol
anWidth
anHeight
ainitLink
anWindow
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
Retorno
Tipo
Objeto
Descrio
Retorna o objeto criado
Descrio
Cria uma instncia do Microsoft Internet Explorer(tm) dentro de um componente visual.
Para que o objeto esteja disponvel para o usurio, necesrio configurar no arquivo de
configurao do AP Remote (Ex: ap6rmt.ini ) como abaixo:
[config]
BrowserEnabled=1
ATENAO: A classe somente funcionar se o MS Internet Explorer estiver instalado na
mquina que est executando o AP Remote.
TIBROWSER:PRINT
Reviso: 09/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Sintaxe
TIBROWSER:PRINT ( ) --> nil
Retorno
Tipo
(NULO)
Descrio
Este mtodo retorna nil
Descrio
Imprime a pgina que esta sendo visualizada
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
A funo abaixo cria uma janela de dialogo, com uma twBrowse ocupando toda a
extenso do dilogo, realizando uma consulta na Tabela SX5, filtrada atravs do ndice
1, para mostrar apenas os elementos pertencentes tabela 01 do SX5.
Vale lembrar que, para testar o fonte abaixo, deve-se compil-lo no projeto, e inserir
uma chamada esta funo no Menu do ERP.
#INCLUDE 'PROTHEUS.CH'
User Function TstTWBrw()
dbselectarea('SX5')
DbSetORder(1)
DEFINE MSDIALOG oDlg TITLE 'Exemplo TWBrowse' FROM 000, 000 TO 500,
600 PIXEL
oBrw := TWBrowse():New( NIL,NIL,NIL,NIL,;
{|| { SX5->X5_TABELA, SX5->X5_CHAVE, SX5->X5_DESCRI ,
str(SX5->(recno()),8,0) } },;
{ 'Tabela','Chave','Descrio', 'RECNO'},;
NIL, oDlg, "X5_FILIAL+X5_TABELA" ," 01" , "
01" ,,,,,,,,,, "SX5", .T. )
// Ajusta alinhamento do TWBrowse para pegar o dialogo inteiro
oBrw:Align
:= CONTROL_ALIGN_ALLCLIENT
ACTIVATE MSDIALOG oDlg CENTERED
Return
New
Reviso: 16/09/2004
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Sintaxe
TWBrowse():New ( [ nRow ] , [ bScroll ] , [ Param25 ] , [ Param27 ] , [ nCol ] ,
[ nWidth ] , [ nHeigth ] , < bLine > , < aHeaders > , [ aColSizes ] , [ oWnd ] , [ cField ] ,
[ cTopLimit ] , [ cBottomLiit ] , [ bChange ] , [ bLDblClick ] , [ Param14 ] , [ oFont ] ,
[ Param16 ] , [ nClrFore ] , [ nClrBack ] , [ Param19 ] , [ Param20 ] , [ cAlias ] ,
[ lPixel ] , [ Param23 ] , [ Param24 ] ) --> oObjTWBrowse
Parmetros
Argumento
nRow
bScroll
Param25
Param27
nCol
nWidth
nHeigth
bLine
aHeaders
aColSizes
oWnd
cField
cTopLimit
Tipo
Numrico
Descrio
Coordenada vertical inicial do Objeto.
Caso .T., habilita barra de scroll horizontal e botes de
Lgico
navegao vertical.
(NULO)
( parmetro reservado )
(NULO)
( parmetro reservado )
Numrico Coordenada horizontal inicial do Objeto
Numrico Tamanho horizontal do objeto
Numrico 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, que deve retornar um array, com uma dimenso,
Array
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
Array
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 a
cBottomLiit
bChange
bLDblClick
Param14
oFont
Param16
nClrFore
nClrBack
Param19
Param20
cAlias
lPixel
Param23
Param24
Retorno
Tipo
Objeto
Descrio
Retorna uma nova instncia do Objeto da Classe TWBrowse.
Descrio
Contrutor da Classe TWBrowse.
Retorna uma nova instncia do Objeto da Classe TWBrowse.
Classes de Janelas
MSDialog
Reviso: 23/02/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
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
pixels ou caracteres.
Numrico, opcional. Coordenada horizontal direita em
anRight
pixels ou caracteres.
acCaption Caractere, opcional. Ttulo da janela.
cPar6
Reservado.
nPar7
Reservado.
lPar8
Reservado.
nPar9
Reservado.
anClrText Numrico,opcional. Cor do texto.
anClrBack Numrico,opcional. Cor de fundo.
oPar12
Reservado.
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 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(iniciando) )
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
acCaption
cPar6
nPar7
lPar8
nPar9
anClrText
anClrBack
oPar12
Retorno
O Dilogo criado.
Activate
Descrio
Retorno
NIL
End
Descrio Encerra (fecha) o dilogo.
Sintaxe End( )
Retorno Lgico .T. se o dilogo foi encerrado.
Exemplo
#INCLUDE "PROTHEUS.CH"
User Function Teste()
Local oDlg
// cria dilogo
oDlg := MSDialog():New(10,10,300,300,"Meu
dialogo",,,,,CLR_BLACK,CLR_WHITE,,,.T.)
// ativa dilogo centralizado
oDlg:Activate(,,,.T.,{||msgstop("validou!"),.T.},,{||
msgstop("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
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
Retorno
Activate
Descrio
Retorno
bPar17
bPar18
NIL
End
Descrio Solicita encerramento da janela.
Sintaxe End( )
Retorno Lgico. .T. se encerrou a janela e .F. se no.
Center
Descrio Centraliza a janela.
Sintaxe Center( )
Retorno NIL
Exemplo
#INCLUDE "PROTHEUS.CH"
USER FUNCTION Teste()
Local oWindow
Local abInit:= {||conout("ativando!")}
Local abValid:= {||conout("encerrando!"),.T.}
oWindow:= tWindow():New( 10, 10, 200, 200, "Meu
programa",,,,,,,,CLR_WHITE,CLR_BLACK,,,,,,,.T. )
oWindow:Activate("MAXIMIZED",,,,,,abInit,,,,,,,,,abValid,,)
/* os comandos abaixo proporcionam o mesmo resultado
DEFINE WINDOW oWindow FROM 10, 10 TO 200,200 PIXEL TITLE "Meu
programa" COLOR CLR_WHITE,CLR_BLACK
ACTIVATE WINDOW oWindow MAXIMIZED ON INIT abInit VALID abValid
*/
Return NIL
Classes no visuais
Classe TMailManager
Reviso: 09/06/2003
Descrio
A TMailManager uma classe que tem por finalidade criar conexes em servidores
SMTP ou POP
Metodos
New()
Construtor do objeto.
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
Parametro passado por referencia, retorna nele o numero de mensagens que
nNumMsg
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
Tipo
Descrio
Numrico Numero da mensagem a ser deletada.
Retorno
Tipo
(NULO)
Descrio
Nil
Descrio
Deleta uma mensagem do servidor
TMAILMANAGER:GETNUMMSGS
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Sintaxe
TMAILMANAGER:GETNUMMSGS ( < @nNumMsg > ) --> nRet
Parmetros
Argumento
nNumMsg
Tipo
Descrio
Parametro passado por referencia, retorna nele o numero
Numrico
de mensagens que esto no servidor.
Retorno
Tipo
Numrico
Descrio
0 = Lista recebida com sucesso
Descrio
Retorna o numero de mensagens que existem no servidor
TMAILMANAGER:INIT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Sintaxe
TMAILMANAGER:INIT ( < cPop > , < cSmtp > , < cUser > , < cPass > ,
[ nTimeOut ] , [ nPort ] ) --> Nil
Parmetros
Argumento
cPop
cSmtp
cUser
cPass
nTimeOut
nPort
Tipo
Descrio
Endereo do servidor POP, no caso de conexo SMTP
Caracter
passe esse como ""(branco).
Endereo do servidor SMTP, no caso de conexo POP
Caracter
passe esse como ""(branco)
Caracter Login no servidor.
Caracter Senha no servidor.
Numrico Time out para a conexo.
Numrico Porta para se conectar.
Retorno
Tipo
(NULO)
Descrio
Nil
Descrio
Inicia uma nova conexo no servidor
TMAILMANAGER:NEW
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Sintaxe
TMAILMANAGER:NEW ( ) --> oServer
Retorno
Tipo
Objeto
Descrio
Construtor do objeto.
Descrio
Construtor do objeto.
Verso 6.09
Verso 7.10
TMAILMANAGER:POPCONNECT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Sintaxe
TMAILMANAGER:POPCONNECT ( ) --> Nil
Retorno
Tipo
(NULO)
Descrio
Nil
Descrio
Conecta com o servidor, atraves dos parametros de Init
Verso 7.10
TMAILMANAGER:POPDISCONNECT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Sintaxe
TMAILMANAGER:POPDISCONNECT ( ) --> nRet
Retorno
Tipo
Numrico
Descrio
0 = Disconectado
Descrio
Disconecta com o servidor POP
Verso 7.10
TMAILMANAGER:SETPOPTIMEOUT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Sintaxe
TMAILMANAGER:SETPOPTIMEOUT ( < nTimeOut > ) --> nRet
Parmetros
Argumento
nTimeOut
Tipo
Descrio
Numrico Tempo para que a conexo seja fechada por Time-Out.
Retorno
Tipo
Numrico
Descrio
0 = Time out setado
Descrio
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por
time-out
TMAILMANAGER:SETSMTPTIMEO
UT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Sintaxe
TMAILMANAGER:SETSMTPTIMEOUT ( < nTimeOut > ) --> nRet
Parmetros
Argumento
nTimeOut
Tipo
Descrio
(NULO) Tempo para que a conexo seja fechada por Time-Out.
Retorno
Tipo
(NULO)
Descrio
0 - Time out configurado
Descrio
Configura o tempo para que uma conexo estabelecida ao servidor seja finalizada por
time-out
TMAILMANAGER:SMTPCONNECT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Sintaxe
TMAILMANAGER:SMTPCONNECT ( ) --> nRet
Retorno
Tipo
Numrico
Descrio
0 - Conectado
Descrio
Conecta com o servidor, atraves dos parametros de Init
Verso 7.10
TMAILMANAGER:SMTPDISCONNE
CT
Reviso: 09/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Sintaxe
TMAILMANAGER:SMTPDISCONNECT ( ) --> nRet
Retorno
Tipo
Numrico
Descrio
0 = Disconectado
Descrio
Disconecta com o servidor SMTP
Verso 7.10
TMAILMESSAGE:SEND
Reviso: 14/04/2003
Abrangncia
Verso 5.07
Verso 5.08
Verso 6.09
Verso 7.10
Sintaxe
TMAILMESSAGE:SEND ( < oServer > ) --> nRet
Parmetros
Argumento
oServer
Tipo
Descrio
Caracter Instancia do servidor criado (SMTP).
Retorno
Tipo
Numrico
Descrio
0 = E-mail enviado com sucesso
Descrio
Envia o e-mail recebendo como parametro a instancia do servidor criado (SMTP).
tSocketClient
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Descrio
Esta classe permite estabelecer uma conexo cliente de socket do tipo TCP genrica.
Enviar e receber dados atravs de uma socket genrico e tambm pode ser usada como
base para implementao de protocolos no suportados pelo protheus.
Mtodos
Mtodo
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.
CloseConnection
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Sintaxe
oObj:CloseConnection ( ) --> Nil
Retorno
Tipo
(NULO)
Descrio
Nil
Descrio
Finaliza a conexo TCP genrica (socket ) do objeto corrente.
Connect
Reviso: 30/06/2003
Sintaxe
oObj:Connect ( < nPorta > , < cIP > , < nTimeout > ) --> nSucesso
Parmetros
Argumento
nPorta
cIP
nTimeout
Tipo
Descrio
Numrico Numero da porta onde a conexo deve ser realizada
Nmero IP ou nome do servidor onde a conexo deve ser
Caracter
realizada
Nmero em milisegundos que o mtodo deve esperar para
Numrico
conectar
Retorno
Tipo
Numrico
Descrio
Retorna 0 (Zero) se conectou com sucesso, diferente de zero se a conexo
falhou.
Descrio
Estabelece um conexo TCP genrica (socket ).
IsConnected
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Sintaxe
oObj:IsConnected ( ) --> lLogico
Retorno
Tipo
Lgico
Descrio
Retorna True se a conexo esta ativa e false caso esteja
invlida/desconectado.
Descrio
Verifica se existe conexo valida no objeto corrente.
New
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Sintaxe
tSocketClient():New ( ) --> oSocket
Retorno
Tipo
Objeto
Descrio
Retorna um Objeto do tipo tSocketClient
Descrio
Cria o objeto tSocketClient, sem conexo ativa.
Verso 8.11
Receive
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Sintaxe
oObj:Receive ( < @cBuffer > , < nTimeout > ) --> nQtdRecebida
Parmetros
Argumento
cBuffer
nTimeout
Tipo
Descrio
Caracter Buffer que conter os dados a serem recebidos.
tempo em milisegundos que a funo receive espera at
Numrico
receber algum dado pela conexo.
Retorno
Tipo
Numrico
Descrio
Qtde de bytes recebidos, se houver algum erro nQtdRecebida ser menor
que zero.
Descrio
Recebe os dados pela conexo ativa do objeto, qualquer tipo de dado pode ser recebido.
Reset
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Sintaxe
oObj:Reset ( ) --> NIL
Retorno
Tipo
(NULO)
Descrio
Retorno nulo.
Descrio
Finaliza anormalmente a conexo, no avisa o outro lado que a conexo ser finalizada.
Deve ser utilizado apenas em casos extremos.
Send
Reviso: 30/06/2003
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Sintaxe
oObj:Send ( [ cBuffer ] ) --> nQtdTrasmitido
Parmetros
Argumento
cBuffer
Tipo
Descrio
Caracter Buffer com os dados a serem transmitidos pela conexo.
Retorno
Tipo
Numrico
Descrio
Numero de bytes transmitidos, caso o numero seja diferente do tamanho de
cBuffer, algum erro aconteceu.
Descrio
Transmite o buffer pela conexo TCP Genrica ativa.
Verso 7.10
Verso 8.11
Verso 7.10
Verso 7.10
Verso 7.10
Verso 7.10
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>'
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Next
conout(nTotal) // 37
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
*** Este exemplo cria um bloco de cdigo que incrementa um nmero e depois o
avalia:
bBloco := { |nArg| nArg + 1 }
? EVAL(bBloco, 1)
// Resulta: 2
*** Este exemplo demonstra como um bloco de cdigo pode ser compilado em tempo
de execuao utilizando-se o operador macro (&):
bBloco := &("{ |nArg| nArg + 1 }")
? EVAL(bBlock, 1)
// Avalia o bloco
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Verso 5.08
Verso 6.09
Verso 7.10
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]
[] [] [] []
Verso 7.10
Verso 8.11
Exemplo da funo
HTTPLOGONUSER()
Reviso: 27/01/2004
Abrangncia
Verso 6.09
Verso 7.10
Verso 8.11
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Este exemplo cria um vetor que conter os nomes de todos os arquivos (.txt) no
diretrio DEFAULT corrente, e os relaciona no console utilizando a funao AEVAL() :
LOCAL aFiles[ADIR("*.TXT")]
ADIR("*.TXT", aFiles)
AEVAL(aFiles, { |element| conout(element) })
Verso 5.08
Verso 6.09
Verso 7.10
No exemplo abaixo , conferimos o path atual e tentamos setar um novo path atual ,
verificando se a operao foi realizada com sucesso.
cOldDir := curdir()
cNewDir := '\webadv\xis'
curdir(cNewDir) // Troca o path
If cNewDir <> '\'+curdir() // E verifica se trocou mesmo
conout('Falha ao Trocar de Path de '+cOldDir + ' para '+cNewDir)
Else
conout('Path de '+cOldDir + ' trocado para '+cNewDir+' com
sucesso.')
Endif
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
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 )
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Este exemplo realiza uma cpia de um arquivo Texto chamado ORIGEM.TXT , para
um arquivo chamado DESTINO.TXT , no ambiente do Protheus Server.
#INCLUDE "FILEIO.CH"
#DEFINE F_BLOCK 1024
/ gravados por vez
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
Verso 5.08
Verso 6.09
Verso 7.10
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Este exemplo demonstra como se pode utilizar a funo DBCLEARINDEX para fechar
os ndices.
USE Clientes NEW
DBSETINDEX("Nome") // Abre o arquivo de ndice "Nome"
...
DBCLEARINDEX()
// Fecha todos os arquivos de ndices
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.
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Este exemplo demonstra como se pode utilizar o DBCLOSEAREA para fechar a rea de
trabalho atual.
USE Clientes NEW
DBSETINDEX("Nome") // Abre o arquivo de ndice "Nome"
...
DBCLOSEAREA()
// Fecha a rea de trabalho atual
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Este exemplo demonstra como se pode utilizar o DBSTRUCT para recuperar a estrutura
da tabela corrente.
USE Cliente NEW
DBSTRUCT()
//Retorna:{{Cod,N,3,0},{Nome,C,10,0},{Idade,N,3,0},{Nasc,D,8,0},
{Pagto,N,7,2}}
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Este exemplo mostra como o DBSKIP pode passar do final da tabela e do incio da
tabela
DBUSEAREA( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )
DBGOBOTTOM()
EOF() // retorna .F.
DBSKIP()
EOF() // retorna .T.
DBGOTOP()
BOF() // retorna .F.
DBSKIP(-1)
BOF() // retorna .T.
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()
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Este exemplo define uma pseudo-funao, DbfSize(), que utiliza HEADER() juntamente
com RECSIZE() e LASTREC() para calcular o tamanho do arquivo de banco de dados
corrente em bytes:
#define DbfSize() ((RECSIZE() * LASTREC()) + HEADER() + 1)
Depois, voc pode utilizar DbfSize() como se fosse qualquer outra funao:
USE Sales NEW
USE Customer NEW
? DbfSize()
? Sales->(DbfSize())
Verso 5.08
Verso 6.09
Verso 7.10
Verso 8.11
// Resulta: .T.
// Resulta: .F.
Verso 5.08
Verso 6.09
Verso 7.10
Este exemplo mostra como liberar todos os registros bloqueados da tabela corrente.
DBUSEAREA( .T.,"dbfcdxads", "\dadosadv609\sa1990.dbf","SSS",.T., .F. )
DBRLock()
...
DBUNLOCKALL()
Verso 5.08
Verso 6.09
Verso 7.10
// Resulta: 09/01/90
// Resulta: 09/01/90
// Resulta: Hoje e 09/01/90
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
// Resulta: 09/01/90
// Resulta: 19900901
// Resulta: 8
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
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:
Verso 5.08
Verso 6.09
Verso 7.10
Este exemplo utiliza DESCEND() em uma expressao INDEX para criar um ndice de
datas de ordem descendente:
USE Sales NEW
INDEX ON DESCEND(DTOS(OrdDate)) TO SalesDate
Depois, DESCEND() pode ser utilizado para fazer uma pesquisa (SEEK) no ndice
descendente:
DbSEEK(DESCEND(DTOS(dFindDate)))
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
DATE() )
DAY(DATE()) )
DAY(DATE()) + 1)
DAY(CTOD("")) )
// Resulta: 09/01/90
// Resulta: 1
// Resulta: 2
// Resulta: 0
Verso 5.08
Verso 6.09
Verso 7.10
// Resulta: 09/01/90
// Resulta: 9
// Resulta: 10
// Resulta: 0
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
// Resulta: 08/04/02
// Resulta: Sunday
// Resulta: Sunday
// Resulta: Thursday
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
//
//
//
Verso 5.08
Verso 6.09
Verso 7.10
DATE() )
DATE() + 30 )
DATE() - 30 )
DATE()
CMONTH(dDate) )
// Resulta: 08/04/02
// Resulta: 09/03/02
// Resulta: 07/05/02
// Resulta: August
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
DATE() )
DOW(DATE()) )
CDOW(DATE()) )
DOW(DATE() - 2) )
CDOW(DATE() - 2) )
//
//
//
//
//
Resulta:
Resulta:
Resulta:
Resulta:
Resulta:
09/01/89
3
Terca-feira
1
Domingo
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
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
// Resulta: 09/01/90
// Resulta: 1990
// Resulta: 2001
Verso 5.08
Verso 6.09
Verso 7.10
// 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" )
Verso 5.08
Verso 6.09
Verso 7.10
//
//
//
//
Resulta:
Resulta:
Resulta:
Resulta:
aArray
aArray
aArray
aArray
e
e
e
e
um vetor vazio
{ 5 }
{ 5, 10 }
{ 5, 10, { 12,
Verso 5.08
Verso 6.09
Verso 7.10
Este exemplo cria dois vetores, cada um deles preenchido com um valor. Os dois
primeiros elementos do vetor fonte sao entao copiados para o vetor destino:
LOCAL nCount := 2, nStart := 1, aOne, aTwo
aOne := { 1, 1, 1 }
aTwo := { 2, 2, 2 }
ACOPY(aOne, aTwo, nStart, aCont)
// Resulta: aTwo e agora { 1, 1,
2 }
Verso 5.08
Verso 6.09
Verso 7.10
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Este exemplo utiliza AEVAL() para fazer uma lista que consiste em itens selecionados
de um vetor multi-dimensional.
LOCAL aFiles := DIRECTORY("*.dbf"), aNames := {}
AEVAL(aFiles, { | file | AADD(aNames, file[1]) } )
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)
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
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) }
Verso 5.08
Verso 6.09
Verso 7.10
Verses Anteriores
// Resulta: 2
// Resulta: 0
// Resulta: 2
Verso 5.08
Verso 6.09
Verso 7.10
// Resulta: aArray e { 1 }
// Resulta: aArray e { 1, NIL, NIL }
// Resulta: aArray e { 1 }
Verso 5.08
Verso 6.09
Verso 7.10
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} }