Você está na página 1de 30

CURSO ADVPL II

RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
#. PRO$RA%ANDO PARA &ANCO DE DADOS
Podemos utilizar querys no Protheus quando acessamos bancos de dados via TopConnect.
A utilizao de querys melhoram consideravelmente a velocidade das consultas aos dados e reduzem a
sobrecarga no servidor de aplicao, TopConnect e Banco de ados.
!ormalmente uma query " utilizada em substituio a um #oop $ %hile & na base de dados de
programao convencional. 'uerys mais comple(as utilizando )oins poder ser constru*das com a mesma
+uno de v,rios loops.
#.#. DI'ERENAS E SI%ILARIDADES ENTRE D&' E S(L
A princ*pio no e(istem di+erenas na programao para a verso -'#, ), que pelo pr.prio +ato de ser
uma linguagem interpretada, o sistema " quem se encarrega de e(ecutar os comandos e +un/es
adequadamente no ambiente em que trabalha. 0as " importante manter algumas in+orma/es em
mente ao programar para o ambiente -'#.
eve1se lembrar que estamos trabalhando com um banco de dados relacional, que se utiliza de tabelas
ao inv"s de arquivos, e onde o sistema no tem acesso aos dados de +orma nativa e sim atrav"s do
TopConnect. 2ssa +orma de acesso adiciona ao sistema algumas das caracter*sticas e vantagens
o+erecidas pelo -3B em uso $por e(emplo, o 4racle, 0--'# -erver ou o B5& como por e(emplo
segurana e integridade re+erencial, e as imensas +acilidades da linguagem -'#, mas por outro lado
tem1se tamb"m as implica/es da converso dos comandos no padro (Base para a per+eita
compreenso no ambiente -'#.
6magine a montagem de uma e(presso de +iltro para um *ndice condicional. Tome a seguinte e(presso
como e(emplo7 8T4-$29:;2!CT4& <= T4-$mv:par>9&8. 2m um ambiente padro (Base, como o
!T? ou o A-, pode1se utilizar vari,veis sem qualquer problema em uma e(presso de +iltro pois a
mesma ser, avaliada registro a registro durante a montagem do *ndice. 0as no ambiente -'#, o +iltro
nada mais " do que uma tabela tempor,ria, onde esto selecionados apenas os registros con+orme a
condio indicada. A seleo de dados em tabelas pelo -'# " mais r,pida, mas em compensao o
-3B no tem como reconhecer a vari,vel in+ormada na e(presso. 2la e(iste apenas no sistema ou,
mais especi+icamente, no seu programa.
Por isso, deve1se substituir a e(presso anteriormente e(empli+icada pela seguinte $que tamb"m
+uncionaria per+eitamente em um ambiente (Base&7 8T4-$29:;2!CT4& <= @8AT4-$mv:par>9&A8B8.
2sta e(presso " melhor que anterior simplesmente porque no se utilizada vari,vel e sim do conteCdo
da mesma, o que pode ser compreendido em qualquer ambiente. Toda essas e(plica/es so v,lidas,
da mesma maneira, a +iltros criados atrav"s do comando -2T D6#T2E.
Ainda e(istem outros detalhes a se considerar quando se trabalha com *ndices em um ambiente -'#. F
que na verdade no e(istem *ndices condicionais nesse ambiente. 4 +iltro " criado independente do
*ndice. 2nto, vocG pode criar um 6!E23HA com um +iltro e mudar a ordem, mas o +iltro permanecer,
ativo, em qualquer ordem. o mesmo modo, no se pode manter, dois *ndices, com +iltros di+erentes,
pois um +iltro sobrescreveria o outro.
4utro ponto de ateno deve ser a +uno (Base chamada B-2T6!2?. Podem ocorrer alguns erros
ao tentar1se utilizar essa +uno para abrir um *ndice de trabalho criado. Por esses motivos e pelo +ato
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
4
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
de tornar o processamento mais lento deve1se evitar ao m,(imo o uso de *ndices de trabalho no
ambiente -'#.
a mesma maneira que a +unco B-2T6!2?, os comandos C4PT T4 e APP2! DE40 tamb"m
devem ter uma ateno especial. !o ambiente -'# esses comandos so e(ecutados entre uma tabela e
um arquivo BD $e vice1versa& ou entre dois arquivos BD. Por e(emplo, o comando C4PT T4 pode ser
usado para copiar os dados da tabela ativa para um BD local e o comando APP2! DE40 pode ser
usado para importar os dados de um arquivo local para a tabela ativa. 4s dois podem ser usados entre
dois arquivos, mas nunca pode1se usar, por e(emplo, o comando APP2! DE40 para importar os
dados de uma tabela para outra.
#.2. CO%ANDOS E 'UN)ES PARA TOPCONNECT
TCCONT*PE 1 e+ine o tipo de cone(o que ser, utilizada entre o Protheus e o TopConnect.
-inta(e
TCC4!TTP2 $ cTipo &
Ar+,-e.o O/ri+". Ti0o Des1ri2o
cTipo -im C
Tipo da cone(o. Pode ser7 8TCP6P8 ou 8!P6P28
2(emplo7
TCConType$8!P6P28&
TCConType$8TCP6P8&
TCDEL'ILE 1 Apaga um arquivo de um banco de dados.
-inta(e
TC2#D6#2 $ cTabela &
Ar+,-e.o O/ri+". Ti0o Des1ri2o
cTabela -im C
!ome da tabela que deve ser apagada.
2(emplo7
6+ TcelDile$8-A9>5>8&
0-36!D4$UTabela e(clu*da com sucessoV&
2lse
0-36!D4$U!o +oi poss*vel e(cluir a tabelaV&
2ndi+
TC$EN(R* 3 e+ine a e(ecuo de uma 'uery, a pr.(ima chamada W BHseArea ser, a abertura de
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
5
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
uma 'uery e no de tabela.
-inta(e
TC32!'ET $X (Par9, (Par5, Y, c'uery&
Ar+,-e.o O/ri+". Ti0o Des1ri2o
xPar1,
xPar2
!o 'ualquer
ParZmetros apenas para compatibilizao. !o
tem +uno.
c'uery -im C
Cont"m a e(presso da query que se dese)a
e(ecutar.
2(emplo7
c'uery 7= [-2#2CT ?5:C\A;2 C\A;2, E:2:C:!:4: E2C!4 +rom -?5PP>[
dbHseArea$.T., [T4PC4!![, TC3en'ry$,,c'uery&, [TEB[, .D., .T.&
TCSET'IELD 3 e+ine +ormato de campos numericos e data de acordo com o dicion,rio.
-inta(e
TC-2TD62# $cAlias cCampo, cTipo, nTam, nec&
Ar+,-e.o O/ri+". Ti0o Des1ri2o
cAlias -im C Alias para aplicao o +ormato
cCampo -im C !ome do campo a +ormatar
cTipo -im C Tipo do campo
nTam -im ! Tamanho
nec -im ! ecimal
2(emplo7
c'uery 7= [-2#2CT 25:!H0, 25:;A#4E, 25:206--A4 +rom -25PP>[
dbHseArea$.T., [T4PC4!![, TC3en'ry$,,c'uery&, [TEB[, .D., .T.&
TC-etDield$ 8TEB8, 825:;A#4EV, 8!8, 9], 5 &
TC-etDield$ UTEB8, 825:206--A4V, 88, K, > &
RETS(LNA%E 1 Eetorna o nome da tabela de acordo com a empresa posicionada.
-inta(e
E2T-'#!A02 $cAlias&

Ar+,-e.o O/ri+". Ti0o Des1ri2o
CAlias -im C Alias dese)ado
2(emplo7
c'ry9 7= 8-2#2CT ^ DE40 8 A Eet-ql!ame$8-_58& A 8 %\2E2 :2:#:2:T: = [[8&
S(LORDER 1 Eetorna a instruo do indice corrente.
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
6
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
-inta(e
-'#4E2E $cAlias&

Ar+,-e.o O/ri+". Ti0o Des1ri2o
cChave -im ! ou C
6nstruo com a chave, se num"rico, busca a e(presso da
ordem in+ormada, se caracter utiliza a pr.pria e(presso
in+ormada.
2(emplo7
c'ry9 7= 8-2#2CT ^ DE40 8 A Eet-ql!ame$8-_58& A 8 %\2E2 :2:#:2:T: = [[8&
c'ry9A= 84E2E BT 8 A -ql4rder$8_5:D6#6A#A_5:C46348&
ou
c'ry9 7= 8-2#2CT ^ DE40 8 A Eet-ql!ame$8-_58& A 8 %\2E2 :2:#:2:T: = [[8&
c'ry9A= 84E2E BT 8 A -ql4rder$-_51<$inde(`ey$&&&
ou
c'ry9 7= 8-2#2CT ^ DE40 8 A Eet-ql!ame$8-_58& A 8 %\2E2 :2:#:2:T: = [[8&
c'ry9A= 84E2E BT 8 A -ql4rder$-_51<$inde(order$&&&
TCRE'RES4 1 Daz re+resh em uma tabela, atrav"s de uma leitura +orada da tabela no banco de dados.
Htilizada ap.s o 2#2T2 e o 6!-2ET.
-inta(e
TCE2DE2-\ $ cTabela &
Ar+,-e.o O/ri+". Ti0o Des1ri2o
cTabela -im #.gico 6ndica nome da tabela que deve ser +eito re+resh.
2(emplo7
cTabela7= 8-A9PP>8
cComando 7= 8elete 8A cTabela A8 %here E:2:C:!:4: < N>>>> 8
TC-ql2(ec$cComando&
TCEe+resh$cTabela&

TCSPE5IST 1 ;eri+ica se uma -tored Procedure e(iste.
-inta(e
TC-P2?6-T $ c-toredProc &
Ar+,-e.o O/ri+". Ti0o Des1ri2o
C-toredProc -im C !ome da -tored Procedure.
2(emplo
i+ TC-P2(ist$8-P>>>>>98&
c-tr 7= 8E4P PE4C2HE2 8A 8-P>>>>>9 8
TC-ql2(ec$c-tr&
endi+
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
7
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
TCS(LE5EC 1 2(ecuta um comando em -'#
-inta(e
TC-'#2?2C $cComando&

Ar+,-e.o O/ri+". Ti0o Des1ri2o
cComando -im C 6nstruo em -'#.
2(emplo
TC-'#2?2C$82#2T2 8 A Eet-ql!ame$8-_58& A 8 %\2E2 :2:#:2:T: = [^[8&
TCSPE5EC 1 2(ecuta 2(ecuta uma -tored Procedure, no banco de dados, com nCmero vari,vel de
parZmetros. Eetorna um array contendo os valores de retorno da -P
-inta(e
TC-P2?2C $ c-Proc X, (Param9,...,(Param!Y&11< XarrayY
Ar+,-e.o O/ri+". Ti0o Des1ri2o
c-Proc -im C !ome da -tored Procedure.
(Param? !o 'ualquer ParZmetro$s& da -tored Procedure

Create Procedure teste9$ R6!:;A#H2 int, R4HT:-TE char$5NN&, R4HT:;A#H2 int&
%6T\ E2C40P6#2
As
Begin
-elect R4HT:-TE = 8Teste8, R4HT:;A#H2 = R6!:;A#H2 A a
2nd
34

aEesult 7= TC-P2?2C$(Procedures $[teste9[&, 9>> &
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
8
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
#.3. E5ERC6CIOS
9. Dazer um programa utilizando +un/es de bancos de ados que imprima os seguintes campos7
C"-0os7
!o. Pedido, !ome do Cliente, Codigo do Produto, escrio do Produto, ata de 2missao do
Pedido.
T"/e8"s de A0oio7 SC59 SC:9 SA#9 S&#
5. Dazer um programa utilizando +un/es de bancos de ados.
P"r"-eros7
Cliente 6nicial $-A9&
Cliente Dinal $-A9&
'uebra por7 ClienteQProduto
Analitico Q -int"tico
C"-0os7
!ome do Cliente, !umero da !ota, ata de 2missao, C.digo do Produto, escrio do Produto,
'uantidade, ;alor Hnit,rio, Total
T"/e8"s de A0oio7 SD29 S'29 SA#9 S&#
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
9
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
#.;. PROT4EUS E%&EDDED S(L
4 ob)etivo do Embedded SQL " +acilitar a escrita e a leitura de consultas ao banco de dados. Para isso,
+oi de+inida uma sinta(e para que se possa escrever a consulta diretamente no c.digo AdvPL, sem ter
que montar c.digos comple(os que di+icultam a leitura do comando, por"m sua utilizao est,
dispon*vel apenas para build ].>>.>N>]59p ou superior.
I.sr,2o Des1ri2o
Begin-'# Alias 6nicia o 2mbedded -'#
2nd-'# Dinaliza a instruo
b(((b 6nstruo literal a ser substitu*da
Column
2speci+ica tipo de converso para campos dos tipos data, num"rico ou
l.gico utilizado em substuio do TC-etDield
be(p.b Htilizado para especi+icar vari,veis, e(press/es e +un/es.
b!oParcerb indica que a consulta no deve passar pela +uno UC<".+e(,er=>
bTable.ccAlias<b 6ndica a tabela a ser utilizada, substitui a +uno UReS?8N"-e>
b!otelb -ubstitui a e(presso :2:#:2:T: = U V@
b4rder7calias<b
e+ine a ordem a utilizar no 4E2E BT, substitui a +uno
S?8Order@AA8i"sB3B@I.deCDe=@EEE
b4rder7ccAlias<, cn6ndice<b
e+ine a ordem a utilizar no 4E2E BT, substitui a +uno
S?8Order@AA8i"sB3B@I.deCorder@.I.di1eEEE
FOrder7A1A8i"sB9 A.Ni1GBF
e+ine a ordem a utilizar no 4E2E BT, substitui a +uno
S?8Order@AA8i"sB3B@D&Ni1GI.deCDe=@1Ni1GEEE
$eL"s(,er=@E Eetorna um vetor com cinco elementos, com as seguintes in+orma/es
da ultima query e(ecutada7
X9Y 1 Alias usado para abrir o cursor
X5Y L 'uery e(ecutada
XaY L;etor de campos com crit"rios de converso especi+icados
XOY LCaso .T. no +oi utilizada 'ueryChange na string original
XNY LTempo em segundos utilizado para a abertura do cursor
Li-i"2Hes7
A utilizao de +un/es dentro do C.digo 2mbedded no " permitida, caso necessite e(ecute a
+uno antes de iniciar o embedded pois a instruo s. recebe vari,veis resolvidas.
!o " poss*vel debugar.
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
10
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
ECe-08o ,i8iI".do " Jor-" ,s,"8
cADQry := SELECT C6_NUM, C6_!"DUT", C6_QTD#EN, C6_!C#EN , C6_ENT!E$ % C!L&
cADQry %= &!"M % !e'S(lNa)e*SC6+ % C6 %C!L&
cADQry %= ,-E!E C6_&.L.AL = / % 0&ilial*SC6+ % 1 AND D_E_L_E_T_ = / / %C!L&
cADQry %= "!DE! 23 %!e'S(l"rder*SC6+ %C!L&
d4UseArea* 5T5, T"C"NN, Tc$enQry*,,cQ6ery+,T!2, 5T5, 5T5 +
TcSe'&ield*T!2, C6_QTD#EN, N, 78, 9 +
TcSe'&ield*T!2, C6_!C#EN, N, 78, 9 +
TcSe'&ield*T!2, C6_ENT!E$, D, 78, 9 +
ECe-08o ,s".do Embedded SQL
2e:inSQL Alias T!2
Col6)n C6_QTD#EN as n6)eric*78,;+
Col6)n C6_!C#EN as n6)eric*78,;+
Col6)n C6_ENT!E$ as da'e
<Noarser<
SELECT C6_NUM, C6_!"DUT", C6_QTD#EN, C6_!C#EN, C6_ENT!E$
&!"M <Ta4le:SC6< C6
,-E!E C6_&.L.AL = <0&ilial:SC6< AND <No'Del<
"!DE! 23 <"rder:SC6<
EndSQL
#.5. E5ERC6CIOS
9. Dazer um programa utilizando 2mbedded -'# que imprima os seguintes campos7
C"-0os7
!o. Pedido, !ome do Cliente, Codigo do Produto, escrio do Produto, ata de 2missao do
Pedido.
T"/e8"s de A0oio7 SC59 SC:9 SA#9 S&#
5. Dazer um programa utilizando 2mbedded -'#.
P"r"-eros7
Cliente 6nicial e Dinal $-A9&
'uebra por7 ClienteQProduto
Analitico Q -int"tico
C"-0os7
!ome do Cliente, !umero da !ota, ata de 2missao, C.digo do Produto, escrio do Produto,
'uantidade, ;alor Hnit,rio, Total
T"/e8"s de A0oio7 SD29 S'29 SA#9 S&#
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
11
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
2. PRO$RA%AKO ORIENTADA A O&LETOS
A an,lise e pro)eto orientados a ob)etos tGm como meta identi+icar o melhor con)unto de ob)etos para
descrever um sistema de software. 4 +uncionamento deste sistema se d, atrav"s do relacionamento e
troca de mensagens entre estes ob)etos.
!a programao orientada a ob)etos, implementa1se um con)unto de classes que de+inem os ob)etos
presentes no sistema de software. Cada classe determina o comportamento $de+inidos nos m"todos& e
estados poss*veis $atributos& de seus ob)etos, assim como o relacionamento com outros ob)etos.
Programas que utilizam conceitos 44, ao inv"s de de+inir +un/es independentes que so utilizadas em
con)unto, dividem conceitualmente o UproblemaV em partes independentes $ob)etos&, que podem conter
atributos que os descrevem, e que implementam o comportamento do sistema atrav"s de +un/es
de+inidas nestes ob)etos $m"todos&. 4b)etos $e seus m"todos& +azem re+erGncia a outros ob)etos e
m"todosd o termo Uenvio de mensagensV " utilizado para descrever a comunicao que ocorre entre os
m"todos dos di+erentes ob)etos.
!a pr,tica, um programa orientado a ob)etos pode ser descrito como um con)unto de classes pr"1de+inidas
ou de+inidas pelo usu,rio que possuem atributos e m"todos, e que so instanciadas em ob)etos, durante a
e(ecuo do programa.
2.#. Co.1eios &Msi1os
C8"sse representa um con)unto de ob)etos com diversas caracter*sticas. Hma classe de+ine o
comportamento dos ob)etos, atrav"s de m"todos, e quais estados ele " capaz de manter, atrav"s de
atributos.
2(emplo de classe7 2mpresa.
O/Neo " uma instZncia de uma classe. Hm ob)eto " capaz de armazenar estados atrav"s de seus
atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros
ob)etos.
2(emplo de ob)etos da classe 2mpresa7 0icrosiga, A;P#, Biale.
Ari/,os so os dados ou in+orma/es do ob)eto, basicamente a estrutura de dados que vai representar
a classe.
2(emplos7
Duncion,rio7 nome, endereo,tele+one
Cursos7 nome, Tempo, preo
Alunos7 !ome, endereco, tele+one
%Oodos de+inem as habilidades de cada ob)eto.
Biale " uma instZncia da classe 2mpresa$ob)eto&, que tem habilidade para dar suporte, implementada
atrav"s do m"todo -uporteCliente$&. A ao s. ocorre quando o m"todo " invocado atrav"s do ob)eto, no
caso Biale. entro do programa, a utilizao de um m"todo deve a+etar apenas um ob)eto em particulard
Todas as empresas podem dar suporte ao cliente, mas vocG quer que apenas a Biale de o suporte.
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
12
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
!ormalmente, uma classe possui diversos m"todos, que no caso da classe empresa poderiam ser treina$&,
atendetele+one$& .
%e.s"+e- " uma chamada a um ob)eto para invocar um de seus m"todos, ativando um comportamento
descrito por sua classe. Tamb"m pode ser direcionada diretamente a uma classe.
So/re1"r+" " a utilizao do mesmo nome para s*mbolos ou m"todos com opera/es ou +uncionalidades
distintas. 3eralmente di+erencia1se os m"todos pela sua assinatura.
4er".2" " o mecanismo pelo qual uma classe $sub1classe& pode estender outra classe $super1classe&,
aproveitando seus comportamentos $m"todos& e estados poss*veis $atributos&. \, \erana mCltipla
quando uma sub1classe possui mais de uma super1classe. 2ssa relao " normalmente chamada de
relao 8" um8.
Hm e(emplo de herana7 Dilial " super1classe de 2mpresa. 4u se)a, uma Dilial " uma empresa.
Asso1i"2o " o mecanismo pelo qual um ob)eto utiliza os recursos de outro. Pode tratar1se de uma
associao simples 8usa um8 ou de um acoplamento 8parte de8.
Por e(emplo7 Hma empresa usa um tele+one. A tecla 898 " parte de um tele+one.
E.1"0s,8"-e.o consiste na separao de aspectos internos e e(ternos de um ob)eto. 2ste mecanismo
" utilizado para impedir o acesso direto aos atributos de um ob)eto, disponibilizando e(ternamente apenas
os m"todos que alteram estes estados. 2(emplo7 vocG no precisa conhecer os detalhes dos circuitos de
um tele+one para utiliz,1lo. A carcaa do tele+one encapsula esses detalhes, provendo a vocG uma
inter+ace mais amig,vel $os bot/es, o mono+one e os sinais de tom&.
Po8i-orJis-o " o princ*pio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem
invocar m"todos que tGm a mesma assinatura $lista de parZmetros e retorno& mas comportamentos
distintos, especializados para cada classe derivada, usando para tanto uma re+erGncia a um ob)eto do tipo
da superclasse. A deciso sobre qual o m"todo que deve ser selecionado, de acordo com o tipo da classe
derivada, " tomada em tempo de e(ecuo. !o caso de polimor+ismo, " necess,rio que os m"todos
tenham e(atamente a mesma identi+icao, sendo utilizado o mecanismo de rede+inio de m"todos.
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
13
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
ECe-08o I8,sr"i!o de C8"sse
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
14
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
3. CRIAKO DE LANELAS PADRKO OOP
3.#. TPINDOP
Classe de )anela principal de programa, dever, e(istir apenas uma instZncia deste ob)eto na e(ecuo do
programa.
Pro0ried"des
b6nit Bloco de c.digo. 2(ecutado quando a )anela est, sendo e(ibida.
l2scClose #.gico. -e .T. habilita o c2-C< cancelar a e(ecuo da )anela.
oCtlDocus 4b)eto. 4b)eto contido na )anela que est, com +oco de entrada de dados
.
%Oodos
NeQ 3 0"todo construtor da )anela.
Si."Ce
New( [anTop], [anLeft],[anBottom], [anRight], [acTitle], [nPar6], [oPar7] ,[oPar8],[oPar9], [aoParent], [lPar11],
[lPar1!], [an"lr#ore], [an"lrBac$], [oPar1%], [cPar16], [lPar17], [lPar18], [lPar19], [lPar!&],[alPi'el] (
Argumento Obrigat. Tipo Descrio
)nTop N*o N "oor+ena+a ,ertical -.perior em pi'el- o. caractere-/
)nLeft N*o N "oor+ena+a hori0ontal e-1.er+a em pi'el- o. caractere-/
)nBottom N*o N "oor+ena+a ,ertical inferior em pi'el- o. caractere-/
)nRight N*o N "oor+ena+a hori0ontal inferior em pi'el- o. caractere-/
acTitle N*o " T2t.lo +a 3anela/
nPar6 Re-er,a+o/
oPar7 Re-er,a+o/
oPar8 Re-er,a+o/
oPar9 Re-er,a+o/
)oParent N*o 453 6anela m*e +a 3anela corrente/
lPar11 Re-er,a+o/
lPar1! Re-er,a+o/
an"lr#ore N*o N "or +e f.n+o +a 3anela/
an"lrTe't N*o N "or +o te'to +a 3anela/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
15
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
oPar1% Re-er,a+o/
cPar16 Re-er,a+o/
lPar17 Re-er,a+o/
lPar18 Re-er,a+o/
lPar19 Re-er,a+o/
lPar!& Re-er,a+o/
)lPi'el N*o Log
7e /T/ (pa+r*o( con-i+era coor+ena+a- pa--a+a- em pi'el-, -e /#/ con-i+era
caractere-/

A1i!"e 1 Ativa $e(ibe& a )anela. Chamar esse m"todo apenas uma vez.
Si."Ce
Activate$Xac-hoSY, XbPar5Y, XbParaY, XbParOY, XbParNY, XbParJY, X ab6nit Y, XbParKY, XbParPY, XbPar9>Y,d
bPar99Y,XbPar95Y ,XbPar9aY, XbPar9OY, XbPar9NY, Xab;alidY, XbPar9]Y, XbPar9KY &
Argumento Obrigat. Tipo Descrio
)c7how
N*o " 89"4N9:;<= para 3anela iconi0a+a o. 8>)?9>9:;<= para 3anela
ma'imi0a+a/
5Par! Re-er,a+o/
5Par@ Re-er,a+o/
5ParA Re-er,a+o/
5Par% Re-er,a+o/
5Par6 Re-er,a+o/
)59nit 7im Bloco ;'ec.ta+o 1.an+o 3anela e-tB -en+o e'i5i+a/
5Par8 Re-er,a+o/
5Par9 Re-er,a+o/
5Par1& Re-er,a+o/
5Par11 Re-er,a+o/
5Par1! Re-er,a+o/
5Par1@ Re-er,a+o/
5Par1A Re-er,a+o/
5Par1% Re-er,a+o/
)5Cali+ 7im Bloco
Bloco +e cD+igo/ ;'ec.ta+o 1.an+o a 3anela for -olicita+a +e fechar/
<e,erB retornar /T/ -e o conteE+o +a 3anela for ,Bli+o, o. /#/ -e n*o/ 7e
o 5loco retornar /#/ a 3anela n*o fecharB/
5Par17 Re-er,a+o/
5Par18 Re-er,a+o/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
16
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
E.d L -olicita +echamento da )anela.
Si."Ce7 2nd$&
Reor.o
#.gico. .T. se encerrou a )anela e .D. se no.
Ce.er L Centraliza a )anela.
Si."Ce7 Center$&
Exemplo
=.NCLUDE >!"T-EUS5C->
USE! &UNCT."N Tes'e*+
Local o,indo?
Local a4.ni':= @AAcono6'*>a'ivandoB>+C
Local a4#alid:= @AAcono6'*>encerrandoB>+,5T5C
o,indo?:= ',indo?*+:Ne?* 7D, 7D, ;DD, ;DD, >Me6 Ero:ra)a>,,,,,,,, CL!_,-.TE,F
CL!_2LACG,,,,,,,5T5 +
o,indo?:Ac'iva'e*>MAH.M.IED>,,,,,,a4.ni',,,,,,,,,a4#alid,,+
JK os co)andos a4ai0o EroEorciona) o )es)o res6l'ado
DE&.NE ,.ND", o,indo? &!"M 7D, 7D T" ;DD,;DD .HEL T.TLE >Me6 Ero:ra)a> C"L"!
CL!_,-.TE,CL!_2LACG
ACT.#ATE ,.ND", o,indo? MAH.M.IED "N .N.T a4.ni' #AL.D a4#alid
KJ
!e'6rn N.L
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
17
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
3.2. %SDIALO$
0-ialog deve ser utilizada como padro de )anela para entrada de dados. 0-ialog " um tipo de )anela
di,logo modal, isto ", no permite que outra )anela ativa receba dados enquanto esta estiver ativa.
%Oodos
NeQ
Des1ri2o 0"todo construtor da classe.
Sintaxe New([anTop], [anLeft], [anBottom], [anRight], [ac"aption], [cPar6], [nPar7], [lPar8], [nPar9],
[an"lrTe't], [an"lrBac$], [oPar1!], [aoFn+], [alPi'el], [oPar1%], [oPar16], [lPar17](
Argumento Obrigat. Tipo Descrio
anTop N*o N "oor+ena+a ,ertical -.perior em pi'el- o. caractere-/
anLeft N*o N "oor+ena+a hori0ontal e-1.er+a em pi'el- o. caractere-/
anBotom N*o N "oor+ena+a ,ertical inferior em pi'el- o. caractere-/
anRight N*o N "oor+ena+a hori0ontal +ireita em pi'el- o. caractere-/
ac"aption N*o " T2t.lo +a 3anela/
cPar6 Re-er,a+o/
nPar7 Re-er,a+o/
lPar8 Re-er,a+o/
nPar9 Re-er,a+o/
an"lrTe't N*o N "or +o te'to/
an"lrBac$ N*o N "or +e f.n+o/
oPar1! Re-er,a+o/
aoFn+ N*o 453 6anela m*e +a 3anela a -er cria+a, pa+r*o G a 3anela principal +o programa/
alPi'el N*o LDg 7e /T/ con-i+era a- coor+ena+a- pa--a+a- em pi'el-, -e /#/ con-i+era caractere-/
oPar1% Re-er,a+o/
oPar16 Re-er,a+o/
nPar17 Re-er,a+o/
Exemplo
=.NCLUDE Ero'Le6s5cL
User &6nc'ion Tes'e*+
JJ cria diMlo:o
Local oDl::=MSDialo:*+:Ne?*7D,7D,NDD,NDD,Me6 dialo:o,,,,,CL!_2LACG,CL!_,-.TE,,,5T5+

JJ a'iva diMlo:o cen'raliOado
oDl::Ac'iva'e*,,,5T5,@AA)s:s'oE*valido6B+,5T5C,,@AA)s:s'oE*iniciandoP+ +
!e'6rn
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
18
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
E?,i!"8R.1i"s
A utilizao dos includes nos permitem a utilizao dos ob)etos a partir de equivalGncias, ve)a a seguir7
#xcommand DE&.NE MSD.AL"$ QoDl:R F
S Qreso6rce: NAME, !ESNAME, !ES"U!CER Qc!esNa)eR T F
S T.TLE QcTi'leR T F
S &!"M QnToER, QnLeU'R T" Qn2o''o)R, Qn!i:L'R T F
S Qli4: L.2!A!3, DLLR QL!eso6rcesR T F
S Qv40: #2HR T F
S ST3LE QnS'yleR T F
S Qcolor: C"L"!, C"L"!SR QnClrTe0'R S,QnClr2acVR T T F
S 2!US- Qo2r6sLR T F
S QoU: ,.ND",, D.AL"$, "&R Qo,ndR T F
S QEi0el: .HELR T F
S .C"N Qo.coR T F
S &"NT Qo&on'R T F
S Qs'a'6s: STATUSR T F
=> F JJE(6ivalencia
QoDl:R = MsDialo:*+:Ne?*QnToER, QnLeU'R, Qn2o''o)R, Qn!i:L'R, QcTi'leR, Qc!esNa)eR, QL!eso6rcesR,F
Q5v405R, QnS'yleR, QnClrTe0'R, QnClr2acVR, Qo2r6sLR, Qo,ndR, Q5Ei0el5R,F
Qo.coR, Qo&on'R , Q5s'a'6s5R +
ECe-08o ,iiI".do Jor-" e?,i!"8e.e " C8"sse %SDi"8o+
=.NCLUDE Ero'Le6s5cL
User &6nc'ion UTela7*+
Local n#ar := D
riva'e oDl:
Define MSDialog oDlg Title OemToAnsi("Titulo da janela") From ! To "#!$% &ixel
WD9,7D To 9D,7XD i0el
W79,;D Say >Colocar a(6i a )ensa:e) (6e (6iser> i0el "U oDl:
W;9,;D MS$e' o#ar #ar n#ar ic'6re >WE YYY,YYY5YY> SiOe 9D,7D i0el "U oDl:
W8D,;D 26''on o2'n"V ro)E' >Z"V> SiOe ND,79 i0el F
Ac'ion *)s:inUo*>Cli(6ei no "G>+, Close*oDl:++ "U oDl:
W8D,XD 26''on o2'nCancel ro)E' >ZCancelar> SiOe ND,79 i0el F
Ac'ion *)s:inUo*>Cli(6ei no Cancelar>+, oDl::End*++ Cancel "U oDl:
Acti'ate MSDialog oDlg (entered
S'a'ic &6nc'ion Close
oDl::End*+
!e'6rn
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
19
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
3.3. T'ONT
Classe que encapsula +onte de edio.
%Oodos
NeQ Construtor do ob)eto
Si."Ce !eS$Xac!ameY, XnPar5Y, Xan\eightY, XlParOY, XalBoldY, XnParJY, XlPar]Y,d
XnParKY, Xal6talicY, XalHnderlineY&
Argumento Obrigat. Tipo Descrio
acName N*o " "aractere, opcional/ Nome +a fonte, o pa+r*o G 8)rial=/
nPar! Re-er,a+o/
anHeight N*o N N.mGrico, opcional/ Tamanho +a fonte/ 4 pa+r*o G I11/
lParA Re-er,a+o/
)lBol+ N*o Log 7e /T/ o e-tilo +a fonte -erB negrito/
nPar6 Re-er,a+o/
lPar7 Re-er,a+o/
nPar8 Re-er,a+o/
al9talic N*o Log 7e /T/ o e-tilo +a fonte -erB itBlico/
alJn+erline N*o Log 7e /T/ o e-tilo +a fonte -erB -.5linha+o/
Exemplo
=incl6de Ero'Le6s5cL
User &6nc'ion Tes'e*+
Local oDl:, oSay
)ocal oFont*= TFont()*+e,(-(ourier +e,.!!/"0!1T1)
DE&.NE MSD.AL"$ oDl: &!"M D,D T" ;DD,;DD T.TLE MinLa 'ela co) &on'e Co6rier Ne? .HEL
JJ aEresen'a o 'Say co) a Uon'e Co6rier Ne? JJ
oSay:= 'Say*+:Ne?*7D,7D,@AAEara e0i4irC,oDl:,,o&on',,,,5T5,CL!_,-.TE,CL!_!ED,7DD,;D+
oSay:lTransEaren':= 5T5
ACT.#ATE MSD.AL"$ oDl: CENTE!ED
!e'6rn
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
20
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
ECe-08o ,iiI".do Jor-" e?,i!"8e.e " C8"sse T'o.
=incl6de >Ero'Le6s5cL>
User &6nc'ion TelaUon'*+
Local oDl:, oSay, o&on'
D2F3+2 FO+T oFont +ame "(ourier +e," S342 !/"0 5O)D
DE&.NE MSD.AL"$ oDl: &!"M D,D T" ;DD,;DD F
T.TLE >MinLa 'ela Co6rier Ne?> .HEL
W D7D,D7D SA3 >Eara e0i4ir> S.IE 7DD,;D &"NT o&on'F
C"L"! CL!_!ED .HEL oU "Dl:
ACT.#ATE MSD.AL"$ oDl: CENTE!ED
!e'6rn
3.;. TCONTROL
Classe abstrata me de todos os controles edit,veis. tControl " a classe comum entre todos os
componentes visuais edit,veis.
Pro0ried"des7
l0odi+ied
#.gico. -e .T. indica que o conteCdo da vari,vel associada ao controle +oi
modi+icado.
lEead4nly
#.gico. -e .T. o conteCdo da vari,vel associada ao controle permanecer, apenas
para leitura.
hParent !um"rico. \andle $identi+icador& do ob)eto sobre o qual o controle +oi criado.
bChange
Bloco de c.digo. 2(ecutado quando o estado ou conteCdo do controle "
modi+icado pela ao sobre o controle.
%Oodos
Se'o1,s Dora mudana do +oco de entrada de dados para o controle.
Si."Ce7 -et+ocus$&
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
21
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
3.5. T&UTTON
Htilize a classe tButton para criar um controle visual do tipo boto.
Pro0ried"des7
lProcessing #.gico. -e .T. indica o boto est, e+etuando uma ao.
bAction Bloco de c.digo. 2(ecutado quando o boto " pressionado.
%Oodos
NeQ Construtor do ob)eto
Si."Ce New([anRow], [an"ol], [ac"aption], [aoFn+], [a5)ction], [anFi+th], [anHeight], [nPar8],
[ao#ont], [lPar1&], [alPi'el],[lPar1!],[cPar1@], [lPar1A], [a5Fhen], [5Par16], [lPar17](
Argumento Obrigat. Tipo Descrio
anRow N*o N N.mGrico, opcional/ "oor+ena+a ,ertical em pi'el- o. caratere-/
an"ol N*o N N.mGrico, opcional/ "oor+ena+a hori0ontal em pi'el- o. caractere-/
ac"aption N*o " Tit.lo +o 5ot*o/
aoFn+ N*o 453 6anela o. controle on+e o 5ot*o +e,erB -er cria+o/
a5)ction N*o Bloco Bloco 1.e +e,erB -er aciona+o 1.an+o o 5ot*o for pre--iona+o/
anFi+th N*o N Larg.ra +o 5ot*o em pi'el-/
anHeight N*o N )lt.ra +o 5ot*o em pi'el-/
nPar8 Re-er,a+o/
ao#ont N*o 453 453eto tipo t#ont com proprie+a+e- +a fonte .tili0a+a para o t2t.lo +o 5ot*o/
lPar1& Re-er,a+o/
alPi'el
N*o Log 7e /T/ con-i+era a- coor+ena+a- pa--a+a- em pi'el-, -e /#/ (pa+r*o( con-i+era em
caractere-/
lPar1! Re-er,a+o/
cPar1@ Re-er,a+o/
lPar1A Re-er,a+o/
a5Fhen
N*o Bloco ;'ec.ta+o 1.an+o m.+anKa +e foco +e entra+a +e +a+o- e-tB -en+o efet.a+a na
3anela on+e o controle foi cria+o/ 4 5loco +e,e retornar /T/ -e o controle +e,e
permanecer ha5ilita+o o. /#/ -e n*o/
5Par16 Re-er,a+o/
lPar17 Re-er,a+o/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
22
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
Exemplo
=incl6de Ero'Le6s5cL
User &6nc'ion Tes'e$e'*+
Local oDl:, o26''on, oCo)4o, cCo)4o, a.'e)s:= @i'e)7,i'e);,i'e)NC
cCo)4o:= a.'e)sS;T
DE&.NE MSD.AL"$ oDl: &!"M D,D T" NDD,NDD .HEL T.TLE Me6 Co)4o
oCo)4o:= 'Co)4o2o0*+:Ne?*7D,7D,@A6AiU*Co6n'*+RD,cCo)4o:=6,cCo)4o+C,F
a.'e)s,7DD,;D,oDl:,,@AAMs:S'oE*M6do6 i'e)+C,,,,5T5,,,,,,,,,cCo)4o+
JJ 2o'[o Eara UecLar a \anela
o5utton*=t5utton()*+e,($!"!.fec6ar.!oDlg!788oDlg*2nd()9!:
7DD,;D,,,,5T5+
ACT.#ATE MSD.AL"$ oDl: CENTE!ED
Ms:S'oE* " valor ] %cCo)4o +
!e'6rn nil
ECe-08o ,iiI".do Jor-" e?,i!"8e.e " C8"sse T&,o.
=incl6de Ero'Le6s5cL
User &6nc'ion Tes'e$e'*+
Local oDl:, o26''on, oCo)4o, cCo)4o, a.'e)s:= @i'e)7,i'e);,i'e)NC
cCo)4o:= a.'e)sS;T
DE&.NE MSD.AL"$ oDl: &!"M D,D T" NDD,NDD .HEL T.TLE Me6 Co)4o
oCo)4o:= 'Co)4o2o0*+:Ne?*7D,7D,@A6AiU*Co6n'*+RD,cCo)4o:=6,cCo)4o+C,F
a.'e)s,7DD,;D,oDl:,,@AAMs:S'oE*M6do6 i'e)+C,,,,5T5,,,,,,,,,cCo)4o+
JJ 2o'[o Eara UecLar a \anela
; $!"! 5<TTO+ &=OM&T -fec6ar. A(T3O+ oDlg*2nd() S342 "!> &3?2) of oDlg
ACT.#ATE MSD.AL"$ oDl: CENTE!ED
Ms:S'oE* " valor ] %cCo)4o +
!e'6rn nil
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
23
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
3.: $AIA
#aKa .ma tela conforme a -eg.ir .tili0an+o o Laia/
Premissas:
J-.Brio +e,e tra0er o nome +o .-.Brio loga+o/
"riar a ta5ela +e moti,o- no 7?% M Ta5ela :9/
"riar .ma ar1.i,o com o- -eg.inte- campo-N 7:&
#ilial " ! O >oti,o " ! O 45-er,aK*o > 1& O J-.ario " 1%
Na com5o +o moti,o +e,e tra0er o- iten- +a ta5ela :9/
4 5ot*o 8-im= +e,e -er ha5ilita+o -omente -e a o5-er,aK*o e-ti,er preenchi+a e o moti,o for +iferente +e
nenh.m,
P.an+o o 5ot*o 8-im= for clica+o a- informaKQe- +a tela +e,er*o -er gra,a+a- na ta5ela 7:&/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
24
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
3.S %ONTANDO LANELAS
LIST&O5
A sinta(e cl,ssica da linguagem A;P# permite que o componente visual #istBo( implemente dois
tipos distintos de ob)etos7
Lis" si-08es7 lista de apenas uma coluna no +ormato de um vetor, a qual no necessita da
especi+icao de um cabealho.
Lis" 1o- 1o8,."s7 lista com diversas colunas que necessita de um cabealho no +ormato de
um a\eader $array de cabealho&.
LIST&O5 SI%PLES
Si."Ce7
R nLin,n"ol L97TB4? oLi-t5o' C)R nLi-ta 9T;>7 aLi-ta
79:; nLarg,n)lt 4# o<lg P9?;L 4N "H)NL; "H)NL;
P"rT-eros7
nLin,nCol
Po-iK*o +o o53eto Li-tBo' em f.nK*o +a 3anela em 1.e ele -erB +efini+o/
oListox
453eto Li-tBo' 1.e -erB cria+o/
nLista
CariB,el n.mGrica 1.e g.ar+a o item -eleciona+o no Li-tBo'/
aLista
)rraS -imple- com o- iten- +a li-ta/
nLarg,nAlt
<imen-Qe- +o o53eto Li-tBo'/
oOb!eto"e#
453eto +ialog no 1.al o componente -erB +efini+o/
P$%EL
7e informa+o, a- +imen-Qe- -er*o em pi'el/
C&A'(E
Li-ta +e e'pre--Qe- 1.e -erB e'ec.ta+a na -eleK*o +e .m item +o
Li-tBo'/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
25
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
Exemplo:
=.NCLUDE >!"T-EUS5C->
User &6nc'ion lis'4o07*+
Local "L.ST2"H
riva'e nLis'a := ;
riva'e aLis'a := @>LinLa 7>, >LinLa ;>C
DE&.NE MSD.AL"$ _oDl: T.TLE >Lis'2o0> &!"M *;7D+,*;7D+ T" *^6X+,*9;D+ .HEL
W D9,D9 L.ST2"H oLis' #A! nLis'a .TEMS aLis'a .HEL S.IE 7DD,7DD "& _oDl: F
"N C-AN$E MS$.N&"*nLis'a+
ACT.#ATE MSD.AL"$ _oDl: CENTE!ED
!e'6rn
!es6l'ado:

)o "licar no 9tem +a li-ta aparece a men-agem -eg.inte/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
26
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
LIST&O5 %ULTIPLOS
Si."Ce7
R nLin,n"ol L97TB4? oLi-t5o' C)R nLi-ta #9;L<7 H;)<;R 8Hea+er1= T 8Hea+er?=
79:; nLarg,n)lt 4# o<lg P9?;L 4N "H)NL; "H)NL;
P"rT-eros7
nLin,nCol
Po-iK*o +o o53eto Li-tBo' em f.nK*o +a 3anela em 1.e ele
-erB +efini+o/
oListox
453eto Li-tBo' 1.e -erB cria+o/
nLista
CariB,el n.mGrica 1.e g.ar+a o item -eleciona+o no Li-tBo'/
)&ea*er+,,...,)&ea*er%,
7tring- i+entifican+o o- t2t.lo- +a- col.na- +o Lri+/
nLarg,nAlt
<imen-Qe- +o o53eto Li-tBo'/
oOb!eto"e#
453eto +ialog no 1.al o componente -erB +efini+o/
P$%EL
7e informa+o, a- +imen-Qe- -er*o em pi'el/
C&A'(E
Li-ta +e e'pre--Qe- 1.e -erB e'ec.ta+a na -eleK*o +e .m
item +o Li-tBo'/
%Oodos7
SetArra-./ >Gto+o o o53eto Li-tBo' 1.e +efine 1.al o arraS contGm o- +a+o- 1.e
-er*o e'i5i+o- no gri+/
Ari/,os7
bLine )tri5.to +o o53eto Li-tBo' 1.e ,inc.la ca+a linha,col.na +o arraS, com
ca+a ca5eKalho +o gri+/
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
27
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
Exemplo:
User &6nc'ion lis'4o0;*+ @@ Figura "
Local "L.ST
riva'e nLis'a := D
riva'e aLis'a := @@>LinLa 7 a>, >LinLa 7 4>C,@>LinLa; a>, >LinLa ; 4>CC
DE&.NE MSD.AL"$ _oDl: T.TLE >Lis'2o0> &!"M *;7D+,*;7D+ T" *NND+,*^;D+ .HEL
JJ Cria Co)Eonen'es adroes do Sis'e)a
W D9,D9 L.ST2"H oLis' &.ELDS -EADE! >Col6na 7> ,>Col6na ;> .HEL S.IE 7DD,9D "& _oDl:
oLis':Se'Array* aLis'a +
oLis':4Line := @AA @ aLis'aSoLis':nA',7T,F
aLis'aSoLis':nA',;TCC
ACT.#ATE MSD.AL"$ _oDl: CENTE!ED
!e'6rn
______________________________________________________________
User &6nc'ion lis'4o0N*+@@ Figura >
Local "L.ST
Local o"V := Load2i')aE* $e'!eso6rces*+, >L2"G> +
Local oNo := Load2i')aE* $e'!eso6rces*+, >L2N"> +
riva'e nLis'a := D
riva'e aLis'a := @@5U5,>LinLa 7 a>, >LinLa 7 4>C,@5U5, >LinLa; a>, >LinLa ; 4>CC
DE&.NE MSD.AL"$ _oDl: T.TLE >Lis'2o0> &!"M *;7D+,*;7D+ T" *NYD+,*^XD+ .HEL
JJ Cria Co)Eonen'es adroes do Sis'e)a
W D9,D9 L.ST2"H oLis' &.ELDS -EADE! >>, >Col6na 7> ,>Col6na ;> .HEL S.IE 7DD,XD "& _oDl:F
"N d4lClicV*aLis'aSoLis':nA',7T := BaLis'aSoLis':nA',7T,oLis':!eUresL*++
oLis':Se'Array* aLis'a +
oLis':4Line := @AA @.iU*aLis'aSoLis':nA',7T,o"V,oNo+,F
aLis'aSoLis':nA',;T,F
aLis'aSoLis':nA',NTCC
ACT.#ATE MSD.AL"$ _oDl: CENTE!ED
!e'6rn
Ui:6ra 7 &i:6ra ;
;. TELAS DE PADRKO %ICROSI$A
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
28
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
Comando/Funo/Objeto 0o*elo1./
Descrio Tela +e >an.tenK*o Jtili0an+o .ma Ta5ela ("a5eKalhoO9ten-(/
Argumento Obrigat. Tipo Descrio
cTit.lo 7im " T2t.lo +a 6anela
a"a5 7im ) )rraS com +a+o- +o ca5eKalho
;'NUcCaria,el,UnLin,n"olV,cTit.loW"ampo,cPict.re,#.ncaoW,ali+,#@,l;+ita,elV
aRo+ 7im ) )rraS com +a+o- +o ro+apG
;'UcCaria,el,UnLin,n"olV,cTit.loW"ampo,cPict.re,#.ncaoW,ali+,#@,l;+ita,elV
aLet+a+o- 7im ) )rraS com po-iKQe- +a get+a+o-
;'NUnLin9ni,n"ol9ni,nLin#im,n"ol#imV
n4pc Nao N >o+o +e operaK*o (@OA 9ncl.i o. altera, 6 altera, o.tro- ,i-.ali0a(
;'N n4pc NX @
cLin4$ N*o " #.nK*o para ,ali+ar linha
;'N 8allwaS-tr.e((=
cT.+4$ Nao " #.nK*o 1.e ,ali+a t.+o
;'N 8allwaS-tr.e((=
a"ol- 7im ) )rraS com o- campo- 1.e po+em -er altera+o-
;'NU8)1W"4<=,=)1WNR;<J:=V
5#A N*o B Bloco +e "D+igo "hama+o pelo #A
;'N UYY>-g)lert(8Te-te=(V
c9nitPo- N*o " 7tring com nome +o- campo- 1.e +e,em -er iniciali0a+o- ao teclar -eta para
5ai'o/
n>a' N*o N NEmero mB'imo +e linha-
a"oor+ N*o ) )rraS com a- coor+ena+a- +a- 3anela-
l<elLet N*o L <etermina -e a linha +a get+a+o- po+e -er apaga+a o. n*o
l>a'imi0e+ N*o L >a'imi0a a tela
aB.tton- N*o ) )rraS com 5otQe- a -erem acre-centa+o- no tool5ar
Retorno Tipo
.T. / .F. (Verdadeiro ou Falso Conirma Operao! "#gico
Comando/Funo/Objeto 0o*elo2./
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
29
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
Descrio Tela +e >an.tenK*o Jtili0an+o +.a- Ta5ela- ("a5ecalhoO9ten-(/
Argumento Obrigat. Tipo Descrio
cTit.lo 7im " T2t.lo +a 6anela
c)lia-1 7im " )lia- +a ta5ela +o "a5eKalho
c)lia-! 7im " )lia- +a Ta5ela +o- 9ten-
a;nchoice 7im ) )rraS com o- campo- +a enchoice("a5ecalho(
cLin4$ N*o " #.nK*o +e Cali+aK*o +e 9ten-
cT.+4Z N*o " #.nK*o +e Cali+aK*o t.+o
n4pc1 N*o N 4pK*o +e e+iK*o +a ;nchoice
n4pc! N*o N 4pK*o +e e+iK*o +a Let+a+o-
c#iel+4$ N*o " #.nK*o +e ,ali+aK*o +o- campo- +a Let+a+o-
lCirt.al N*o L Permite ,i-.ali0ar campo- ,irt.ai- na ;nchoice
nLinha- N*o N N.mero >a'imo +e Linha- +a Let+a+o-
a)lt;nchoice N*o ) )rraS com o- campo- alterB,ei- +a enchoice
n#ree0e N*o N Pt+e +e col.na- 1.e ficar*o congela+a- (+a e-1.er+a pra +ireita(
aB.tton- N*o ) )rraS com 5otQe- a -erem acre-centa+o- ao tool5ar
a"oor+ N*o ) )rraS com a- coor+ena+a- +a tela
a7i0e N*o ) <e-conheci+o
Retorno Tipo
.T. / .F. (Verdadeiro ou Falso Conirma Operao! "#gico
5. %SE5ECAUTO
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
30
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
O/Nei!o
Dazer manuteno autom,tica $incluso, alterao e e(cluso& das rotinas de manipulao de dados do
sistema, automatizando o processo de entrada de dados sem a necessidade de desenvolver rotinas
especi+icas.
V"."+e.s
9& 6nter+ace 7 4s dados de entrada so enviados a rotina em +orma de campos e conteCdos $array& e desta
+orma no " necess,rio a apresentao de nenhuma inter+ace ao usu,rio.
5& -egurana 7 A utilizao de rotinas autom,ticas aumenta consideravelmente a segurana do sistema,
uma vez que utiliza as valida/es padr/es e diminui os problemas causados por atualizao de verso ou
incluso de customiza/es nas rotinas padr/es do sistema.
a& Agilidade no processo 7 Aumenta consideravelmente o tempo de desenvolvimento das customiza/es
que necessitam de entrada de dados. 2(emplo7 6mportao de pedido de venda.
Pro1edi-e.os
2(istem duas maneiras de utilizar a rotina autom,tica, sendo elas7
9. -em 6nter+ace
5. Com 6nter+ace
Para a utilizao da rotina autom,tica sem inter+ace deve1se, con+igurar o ambiente utilizando1se o
comando PE2PAE2 2!;6E4!02!T e chamar diretamente o nome da +uno.
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
31
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
2(emplo7
User &6nc'ion .ncrod*+
Local a!o'A6'o := @C
Local n"Ec := N JJ incl6sao
riva'e lMs-elEA6'o := 5'5 JJ se 5'5 direciona as )ensa:ens de LelE Eara o ar(5 de lo:
riva'e lMsErroA6'o := 5U5 JJnecessario a criacao, Eois sera JJa'6aliOado (6ando Lo6ver
JJal:6)a incosis'encia nos Eara)e'ros
!EA!E EN#.!"NMENT EM!ESA `YY` &.L.AL `D7` M"DUL" `&AT`
2e:in Transac'ion
a!o'A6'o:= @@`27_C"D` ,`7D7D` ,NilC,F
@`27_DESC` ,`rod6'o 'es'e`,NilC,F
@`27_T."` ,`A` ,NilC,F
@`27_UM` ,`UN` ,NilC,F
@`27_L"CAD` ,`D7` ,NilC,F
@`27_.CM` ,D ,NilC,F
@`27_..` ,D ,NilC,F
@`27_!#7` ,7DD ,NilC,F
@`27_L"CAL.I` ,`N` ,NilC,F
@`27_C"D2A!` ,`8XYXXXXDDDD7` ,NilCC
MSE0ecA6'o*@A0,yA )a'aD7D*0,y+C,arod6'o,n"Ec+
.U lMsErroA6'o
Disar)Transac'ion*+
4reaV
End.U
End Transac'ion
.U lMsErroA6'o
JK
Se es'iver e) 6)a aElicar nor)al e ocorrer al:6)a inconsis'ancia nos Earb)e'ros Eassados,)os'rar
na 'ela o lo: inUor)ando (6al col6na 'eve a inconsis'ancia5
KJ
Mos'raerro*+
!e'6rn 5U5
End.U
!e'6rn 5'5
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
32
CURSO ADVPL II
RECURSOS AVANADOS
Verso 3.0 05/2008 Todos direios reser!"dos
Escola conveniada
cM Eara ro'inas (6e Eoss6e) in'erUace, deve)os 6sar a MSE0ecA6'o, Eois a )es)a 'e) a U6nd[o de
:6ardar o a)4ien'e , e0ec6'ar a U6nd[o a6'o)M'ica e re'ornar de onde Earo65
E0e)Elo:
User &6nc'ion .ncrod*+
Local a!o'A6'o := @C
Local n"Ec := N JJ incl6sao
riva'e lMs-elEA6'o := 5'5 JJ se 5'5 direciona as )ensa:ens de LelE Eara o ar(5 de lo:
riva'e lMsErroA6'o := 5U5 JJnecessario a criacao, Eois sera JJa'6aliOado (6ando Lo6ver
JJal:6)a incosis'encia nos Eara)e'ros
2e:in Transac'ion
a!o'A6'o:= @@`27_C"D` ,`7D7D` ,NilC,F
@`27_DESC` ,`rod6'o 'es'e`,NilC,F
@`27_T."` ,`A` ,NilC,F
@`27_UM` ,`UN` ,NilC,F
@`27_L"CAD` ,`D7` ,NilC,F
@`27_.CM` ,D ,NilC,F
@`27_..` ,D ,NilC,F
@`27_!#7` ,7DD ,NilC,F
@`27_L"CAL.I` ,`N` ,NilC,F
@`27_C"D2A!` ,`8XYXXXXDDDD7` ,NilCC
MSE0ecA6'o*@A0,yA )a'aD7D*0,y+C,arod6'o,n"Ec+
.U lMsErroA6'o
Disar)Transac'ion*+
4reaV
End.U
End Transac'ion
.U lMsErroA6'o
JK
Se es'iver e) 6)a aElid[o nor)al e ocorrer al:6)a inconsis'ancia nos Earb)e'ros
Eassados,)os'rar na 'ela o lo: inUor)ando (6al col6na 'eve a inconsis'ancia5
KJ
Mos'raerro*+
!e'6rn 5U5
End.U
!e'6rn 5'5
A v . # e o n a r d o d a ; i n c i , n I J > K L 0 e t r M C o n c e i o 1 - o P a u l o 1 - P
T e l 7 9 9 N > 9 9 L O K P N Q N > 9 9 L J > K 5 Q P K > K L 9 P K K
2 m a i l Q 0 - ! 7 s u p o r t e R a d v p l . c o m . b r 1 S.S.S.advpl.com.br
33

Você também pode gostar