You are on page 1of 44

Educao Corporativa

ADVPL Avanado
(Capacitao Interna)

Matriz Av. Braz Leme, 1.717 02511-000 So Paulo SP Brasil.


Tel.: 55 (11) 3981-7001 www.totvs.com.br

ESTRUTURA DO TREINAMENTO
OBJETIVOS DO CURSO ............................................................................................................................... 11
MDULO 05: Introduo orientao objetos ........................................................................................ 12
1.

Conceitos de orientao objetos ..................................................................................................... 12


1.1.

Definies ................................................................................................................................. 12

1.2.

Conceitos Bsicos ..................................................................................................................... 15

1.3.
O
1.3.1.
1.3.2.
1.3.3.
1.3.4.
2.

3.

Modelo de Objetos (OMT) ...................................................................................................... 16


Objetos e Classes ..................................................................................................................... 16
Atributos ................................................................................................................................. 17
Operaes e Mtodos ................................................................................................................ 18
Sugestes de desenvolvimento ................................................................................................... 19

Orientao a objetos em ADVPL ........................................................................................................ 20


2.1.

Sintaxe e operadores para orientao a objetos ....................................................................... 20

2.2.

Estrutura de uma classe de objetos em ADVPL ......................................................................... 23

2.3.

Implementao dos mtodos de uma classe em ADVPL ............................................................ 24

Regras adicionais da linguagem ADVPL ............................................................................................. 28


3.1.

Palavras reservadas .................................................................................................................. 28

3.2.

Pictures de formatao disponveis .......................................................................................... 29

MDULO 07: ADVPL Orientado objetos II ............................................................................................... 30


4.

Componentes da interface visual do ADVPL ...................................................................................... 30


TSRVOBJECT().............................................................................................................................. 32
TFONT() ...................................................................................................................................... 35
MSDIALOG() ................................................................................................................................ 36
TDIALOG() ................................................................................................................................... 37
TWINDOW() ................................................................................................................................. 40
TCONTROL() ................................................................................................................................ 43
BRGETDDB() ................................................................................................................................ 44
MSCALEND() ................................................................................................................................ 47
MSCALENDGRID() ......................................................................................................................... 49
MSSELBR() .................................................................................................................................. 51
MSWORKTIME() ............................................................................................................................ 54
SBUTTON() .................................................................................................................................. 57
TBAR() ........................................................................................................................................ 59
TBITMAP() ................................................................................................................................... 61
TBROWSEBUTTON() ...................................................................................................................... 63
TBTNBMP() .................................................................................................................................. 65
TBTNBMP2()................................................................................................................................. 67
TBUTTON() .................................................................................................................................. 69
TCBROWSE()................................................................................................................................ 71
TCHECKBOX() .............................................................................................................................. 75
TCOLORTRIANGLE() ...................................................................................................................... 77
TCOMBOBOX() ............................................................................................................................. 79
TFOLDER() ................................................................................................................................... 82
TGET() ........................................................................................................................................ 84
TGROUP() .................................................................................................................................... 86
THBUTTON() ................................................................................................................................ 88
TIBROWSER() .............................................................................................................................. 89
TLISTBOX() .................................................................................................................................. 91
TMENU() ...................................................................................................................................... 95
TMENUBAR() ................................................................................................................................ 96
TMETER() .................................................................................................................................... 97
TMSGRAPHIC() ........................................................................................................................... 100
TMSGBAR() ................................................................................................................................ 106
TMSGITEM()............................................................................................................................... 108
TMULTIBTN() ............................................................................................................................. 109
TMULTIGET().............................................................................................................................. 112
TOLECONTAINER() ...................................................................................................................... 114

-2ADVPL Avanado

TPAGEVIEW() ............................................................................................................................. 116


TPANEL() ................................................................................................................................... 118
TRADMENU() .............................................................................................................................. 119
TSBROWSE() .............................................................................................................................. 123
TSAY() ...................................................................................................................................... 127
TSCROLLBOX() ........................................................................................................................... 129
TSIMPLEEDITOR() ....................................................................................................................... 130
TSLIDER().................................................................................................................................. 135
TSPLITTER()............................................................................................................................... 138
TTABS()..................................................................................................................................... 142
TTOOLBOX() .............................................................................................................................. 144
TWBROWSE() ............................................................................................................................. 147
VCBROWSE() ............................................................................................................................. 151
4.1.
Particularidades dos componentes visuais .............................................................................. 157
4.1.1. Configurando as cores para os componentes .............................................................................. 157
5.

Aplicaes com a interface visual do ADVPL .................................................................................... 159


5.1.
Captura de informaes simples (Multi-Gets) ......................................................................... 159
5.1.1. Enchoice() ............................................................................................................................. 160
5.1.2. MsMGet()............................................................................................................................... 162
5.2.
Captura de mltiplas informaes (Multi-Lines) ..................................................................... 164
5.2.1. MsGetDB() ............................................................................................................................. 165
5.2.2. MsGetDados() ........................................................................................................................ 169
5.2.3. MsNewGetDados() .................................................................................................................. 173
5.2.3.1.
Definindo cores personalizadas para o objeto MsNewGetDados() .......................................... 178
5.3.
Barras de botes ..................................................................................................................... 183
5.3.1. EnchoiceBar()......................................................................................................................... 183
5.3.2. TBar() ................................................................................................................................... 185
5.3.3. ButtonBar .............................................................................................................................. 186
5.3.4. Imagens pr-definidas para as barras de botes ......................................................................... 189

6.

Outras aplicaes da interface visual do ADVPL .............................................................................. 190


6.1.
MaWndBrowse() ..................................................................................................................... 190
6.1.1. Enchoice para Arquivos Temporrios ......................................................................................... 193

7.

6.2.

DbTree() ................................................................................................................................. 203

6.3.

MsSelect() .............................................................................................................................. 208

Introduo relatrios grficos ...................................................................................................... 211


7.1.
TReport() ................................................................................................................................ 211
7.1.1. Introduo ............................................................................................................................. 211
Finalidade .................................................................................................................................. 211
Descrio ................................................................................................................................... 212
Pr-Requisitos ............................................................................................................................ 212
7.1.2. Impresso do relatrio personalizvel........................................................................................ 213
7.1.2.1.
Parmetros de impresso ................................................................................................ 213
Impresso.................................................................................................................................. 213
Arquivo...................................................................................................................................... 213
Spool ........................................................................................................................................ 214
E-mail ....................................................................................................................................... 214
Papel ......................................................................................................................................... 215
Tamanho do papel ...................................................................................................................... 215
Formato da impresso ................................................................................................................. 215
Configuraes............................................................................................................................. 215
Ttulo ........................................................................................................................................ 215
Ordem ....................................................................................................................................... 215
Layout ....................................................................................................................................... 215
Preview ..................................................................................................................................... 215
Executar em segundo plano ......................................................................................................... 216
7.1.3. Personalizao........................................................................................................................ 216
7.1.3.1.
Editando o layout do relatrio .......................................................................................... 216
Nova estrutura do relatrio TReport: ............................................................................................. 217
7.1.4. Definindo a Funo ReportDef() ................................................................................................ 217
DEFINE REPORT.......................................................................................................................... 218
DEFINE SECTION ........................................................................................................................ 218
DEFINE CELL .............................................................................................................................. 218

-3ADVPL Avanado

MDULO 08: Aplicaes ADVPL para o ERP ............................................................................................. 219


8.

Protheus e o TOPCONNECT / TOTVS DbAccess ................................................................................ 219


8.1.

Caractersticas tcnicas com o uso do TOTVS DbAccess ......................................................... 220


Comportamento de Queries Colunas Calculadas ........................................................................... 220
Comportamento diferenciado com Bandos de Dados PostGres .......................................................... 222
Conceito de ndices Permanentes e Diferenas das RDDs ................................................................. 223
Funcionamento Interno................................................................................................................ 223
Quebra de Compatibilidade com CodeBase/DBF .............................................................................. 224
Lista dos cdigos de erro do TOPConnect / DbAccess....................................................................... 225

8.2.

Funes ADVPL para TOPCONNECT / TOTVS DbAccess ........................................................... 226


Lista das funes de interao com a aplicao TopConnect / DbAccess:............................................ 226
Lista das funes acessrias utilizadas nos fontes como facilitadoras:................................................ 226
Funes de interao com o TopConnect / DbAccess ....................................................................... 227
TCCANOPEN () ........................................................................................................................... 227
TCCONTYPE() ............................................................................................................................. 227
TCDELFILE()............................................................................................................................... 228
TCGENQRY() .............................................................................................................................. 229
TCGETDB() ................................................................................................................................ 229
TCLINK() ................................................................................................................................... 230
TCQUERY() ................................................................................................................................ 232
TCQUIT() ................................................................................................................................... 233
TCSETCONN() ............................................................................................................................ 233
TCSETFIELD() ............................................................................................................................ 234
TCSPEXEC() ............................................................................................................................... 236
TCSPEXIST() .............................................................................................................................. 238
TCSQLERROR() ........................................................................................................................... 238
TCSQLEXEC() ............................................................................................................................. 239
TCSRVTYPE() ............................................................................................................................. 239
TCUNLINK() ............................................................................................................................... 240
TCCHKOBJ() ............................................................................................................................... 241
TCEXEERROR() ........................................................................................................................... 241
TCPGMEXE() .............................................................................................................................. 242
TCSYSEXE() ............................................................................................................................... 242
Funes acessrias para uso em fontes com interao com o TOTVS DbAccess ................................... 243
CHANGEQUERY() ........................................................................................................................ 243
RETFULLNAME().......................................................................................................................... 244
RETSQLCOND() .......................................................................................................................... 245
RETSQLNAME()........................................................................................................................... 245
RETSQLTABLE() .......................................................................................................................... 246
SQLCOPY()................................................................................................................................. 246
SQLORDER() .............................................................................................................................. 247
SQLTOTRB()............................................................................................................................... 248

8.3.
Aplicaes com controle de comunio com o Banco de Dados ............................................... 249
8.3.1. MaWndBrowse com Alias Temporrio gerado por Query ............................................................... 249
Exemplo: MaWndBrowse com Alias Temporrio gerado por Query ..................................................... 250
8.3.2. Banco de dados de interface .................................................................................................... 261
Consideraes relevantes sobre as funes TCLink() e TCSetConn() .................................................. 261
Consideraes complementares sobre o conceito de Banco de Dados de Interface .............................. 263
8.4.

9.

Embedded SQL Facilitador de Querys .................................................................................. 264


Disponibilidade do Recurso ........................................................................................................... 264
Caractersticas operacionais - Sintaxe ............................................................................................ 265
Limitao: .................................................................................................................................. 265
Erros de Compilao.................................................................................................................... 266
Erros de Execuo....................................................................................................................... 266
Caractersticas operacionais - depurao........................................................................................ 267
Funo auxiliar - GETLastQuery().................................................................................................. 267

Funcionalidade MsExecAuto ............................................................................................................ 269


Sobre a MsExecAuto e Rotinas Automticas.................................................................................... 269
Quando utilizar a funcionalidade MsExecAuto ? ............................................................................... 270
Processos da aplicao ERP com tratamentos para execuo por MsExecAuto ..................................... 270
Quando no utilizar a funcionalidade MsExecAuto ........................................................................... 271
9.1.

Desenvolvendo aplicaes com MsExecAuto ........................................................................... 272


Estrutura de uma rotina com execuo de MsExecAuto .................................................................... 272
Variveis de controle ................................................................................................................... 272
Montagem dos arrays de parmetros ............................................................................................. 272
Definio dos parmetros especficos da rotina que ser executada ................................................... 276
-4ADVPL Avanado

Controle de transao ................................................................................................................. 277


Tratamento de mensagens de erro ................................................................................................ 279
Aplicao completa de importao utilizando MsExecAuto: Carga de imobilizado ................................. 282
10.

Recursos de envio de e-mail ....................................................................................................... 295


Funes para manipulao de e-mails ........................................................................................... 295
Detalhamento das funes de manipulao de e-mails..................................................................... 295
CALLPROC() ............................................................................................................................... 295
MAILSMTPON() ........................................................................................................................... 296
MAILPOPON() ............................................................................................................................. 296
MAILSMTPOFF() .......................................................................................................................... 297
MAILPOPOFF() ............................................................................................................................ 297
MAILRECEIVE()........................................................................................................................... 298
MAILAUTH() ............................................................................................................................... 299
POPMSGCOUNT() ........................................................................................................................ 300
MAILSEND() ............................................................................................................................... 300
MAILGETERR()............................................................................................................................ 301
Exemplos de utilizao das funcionalidades de envio e recebimento de e-mail .................................... 301
Envio de mensagens utilizando sintaxe clssica .............................................................................. 301
Envio de mensagens utilizando funes ......................................................................................... 304
Recebimento de mensagens utilizando funes ............................................................................... 307

11.

Integrao bsica com MsOffice.................................................................................................. 309

11.1.

Exportao para EXCEL ........................................................................................................... 309


DLGTOEXCEL() ........................................................................................................................... 309
Exemplo de exportao para o Microsoft Excel utilizando a funo DlgToExcel().................................. 310

APNDICES .............................................................................................................................................. 312


Relao de imagens para aplicaes visuais ........................................................................................ 312
LISTAS DE EXERCCIOS ........................................................................................................................... 320
Projeto: Avaliao prtica do treinamento de ADVPL Avanado .......................................................... 325
REFERNCIAS BIBLIOGRFICAS .............................................................................................................. 326
GUIA DE REFERNCIA RPIDA: Funes e Comandos ADVPL .................................................................. 328
Converso entre tipos de dados........................................................................................................... 328
CTOD() ...................................................................................................................................... 328
CVALTOCHAR() ........................................................................................................................... 328
DTOC() ...................................................................................................................................... 329
DTOS() ...................................................................................................................................... 329
STOD() ...................................................................................................................................... 329
STR() ........................................................................................................................................ 330
STRZERO() ................................................................................................................................ 330
VAL() ........................................................................................................................................ 331
Matemticas ........................................................................................................................................ 332
ACOS() ...................................................................................................................................... 332
CEILING() .................................................................................................................................. 332
COS() ........................................................................................................................................ 332
LOG10() .................................................................................................................................... 333
SIN()......................................................................................................................................... 333
SQRT() ...................................................................................................................................... 334
TAN() ........................................................................................................................................ 334
Anlise de variveis............................................................................................................................. 335
TYPE() ....................................................................................................................................... 335
VALTYPE().................................................................................................................................. 335
Manipulao de arrays......................................................................................................................... 336
AADD()...................................................................................................................................... 336
ACLONE() .................................................................................................................................. 337
ACOPY() .................................................................................................................................... 337
ADEL() ...................................................................................................................................... 338
ADIR()....................................................................................................................................... 339
AFILL() ...................................................................................................................................... 340
AINS() ....................................................................................................................................... 340
ARRAY() .................................................................................................................................... 341
ASCAN() .................................................................................................................................... 341
ASCANX() .................................................................................................................................. 342
ASIZE() ..................................................................................................................................... 343
-5ADVPL Avanado

ASORT() .................................................................................................................................... 344


ATAIL() ..................................................................................................................................... 345
Manipulao de blocos de cdigo......................................................................................................... 346
EVAL()....................................................................................................................................... 346
DBEVAL()................................................................................................................................... 346
AEVAL() ..................................................................................................................................... 348
Manipulao de strings ........................................................................................................................ 349
ALLTRIM().................................................................................................................................. 349
ASC() ........................................................................................................................................ 349
AT() .......................................................................................................................................... 350
BITON() ..................................................................................................................................... 351
CAPITAL() .................................................................................................................................. 351
CHR() ........................................................................................................................................ 351
DESCEND() ................................................................................................................................ 352
GETDTOVAL() ............................................................................................................................. 352
ISALPHA().................................................................................................................................. 353
ISDIGIT() .................................................................................................................................. 353
ISLOWER() ................................................................................................................................ 354
ISUPPER().................................................................................................................................. 354
LEN() ........................................................................................................................................ 354
LOWER().................................................................................................................................... 355
LTRIM() ..................................................................................................................................... 355
MATHC() .................................................................................................................................... 356
OEMTOANSI() ............................................................................................................................ 356
PADL() / PADR() / PADC() ............................................................................................................ 357
RAT() ........................................................................................................................................ 357
REPLICATE() .............................................................................................................................. 358
RETASC()................................................................................................................................... 358
RTRIM()..................................................................................................................................... 359
SPACE()..................................................................................................................................... 359
STRTOKARR()............................................................................................................................. 360
STRTRAN()................................................................................................................................. 360
STUFF() ..................................................................................................................................... 361
SUBSTR() .................................................................................................................................. 361
TRANSFORM() ............................................................................................................................ 362
UPPER() ..................................................................................................................................... 362
Manipulao de data / hora ................................................................................................................. 363
CDOW() ..................................................................................................................................... 363
CMONTH() ................................................................................................................................. 363
DATE() ...................................................................................................................................... 364
DAY() ........................................................................................................................................ 364
DOW()....................................................................................................................................... 365
DTOC() ...................................................................................................................................... 365
DTOS() ...................................................................................................................................... 366
ELAPTIME() ................................................................................................................................ 366
MONTH() ................................................................................................................................... 367
SECONDS() ................................................................................................................................ 367
TIME() ....................................................................................................................................... 368
YEAR() ...................................................................................................................................... 368
Manipulao de variveis numricas ................................................................................................... 369
ABS() ........................................................................................................................................ 369
ALEATORIO() ............................................................................................................................. 369
INT() ......................................................................................................................................... 370
NOROUND() ............................................................................................................................... 370
RANDOMIZE() ............................................................................................................................ 371
ROUND() ................................................................................................................................... 371
Manipulao de arquivos ..................................................................................................................... 372
ADIR()....................................................................................................................................... 372
CGETFILE() ................................................................................................................................ 373
CPYS2T() ................................................................................................................................... 379
CPYT2S() ................................................................................................................................... 379
CURDIR()................................................................................................................................... 380
DIRECTORY() ............................................................................................................................. 381
DIRREMOVE()............................................................................................................................. 382
DISKSPACE() ............................................................................................................................. 383
EXISTDIR() ................................................................................................................................ 384
FCLOSE() ................................................................................................................................... 384
-6ADVPL Avanado

FCREATE() ................................................................................................................................. 385


FERASE() ................................................................................................................................... 386
FILE() ........................................................................................................................................ 386
FILENOEXT() .............................................................................................................................. 387
FOPEN() .................................................................................................................................... 388
FREAD() .................................................................................................................................... 390
FREADSTR () .............................................................................................................................. 390
FRENAME() ................................................................................................................................ 391
FSEEK() ..................................................................................................................................... 392
FT_FEOF() ................................................................................................................................. 392
FT_FGOTO() ............................................................................................................................... 393
FT_FGOTOP() ............................................................................................................................. 393
FT_FLASTREC() .......................................................................................................................... 393
FT_FREADLN() ............................................................................................................................ 394
FT_FRECNO() ............................................................................................................................. 395
FT_FSKIP() ................................................................................................................................ 395
FT_FUSE() ................................................................................................................................. 395
FWRITE() ................................................................................................................................... 396
MSCOPYFILE() ............................................................................................................................ 398
MSCOPYTO() .............................................................................................................................. 399
MSCREATE() .............................................................................................................................. 399
MSERASE() ................................................................................................................................ 400
MSRENAME() .............................................................................................................................. 401
RETFILENAME() .......................................................................................................................... 401
Manipulao de arquivos e ndices temporrios .................................................................................. 402
CRIATRAB() ............................................................................................................................... 402
Manipulao de bases de dados........................................................................................................... 403
ALIAS() ..................................................................................................................................... 403
BOF() / EOF() ............................................................................................................................. 403
COPY() ...................................................................................................................................... 404
COPY STRUCTURE() .................................................................................................................... 407
DBAPPEND() .............................................................................................................................. 407
DBCLEARALLFILTER() .................................................................................................................. 408
DBCLEARFILTER() ....................................................................................................................... 409
DBCLEARINDEX()........................................................................................................................ 409
DBCLOSEALL() ........................................................................................................................... 410
DBCLOSEAREA() ......................................................................................................................... 410
DBCOMMIT() .............................................................................................................................. 411
DBCOMMITALL() ......................................................................................................................... 411
DBCREATE() ............................................................................................................................... 412
DBCREATEINDEX()...................................................................................................................... 413
DBDELETE() ............................................................................................................................... 414
DBF() ........................................................................................................................................ 415
DBFIELDINFO() .......................................................................................................................... 415
DBFILTER() ................................................................................................................................ 416
DBGOTO() ................................................................................................................................. 417
DBGOTOP() ................................................................................................................................ 417
DBGOBOTTON().......................................................................................................................... 418
DBINFO()................................................................................................................................... 418
DBNICKINDEXKEY() .................................................................................................................... 419
DBORDERINFO() ......................................................................................................................... 420
DBORDERNICKNAME()................................................................................................................. 421
DBPACK() .................................................................................................................................. 421
DBRECALL() ............................................................................................................................... 422
DBRECORDINFO() ....................................................................................................................... 422
DBREINDEX() ............................................................................................................................. 423
DBRLOCK() ................................................................................................................................ 424
DBRLOCKLIST() .......................................................................................................................... 424
DBRUNLOCK() ............................................................................................................................ 425
DBSETDRIVER() ......................................................................................................................... 425
DBSETINDEX() ........................................................................................................................... 426
DBSETNICKNAME() ..................................................................................................................... 427
DBSELECTAREA()........................................................................................................................ 427
DBSETORDER() .......................................................................................................................... 428
DBSEEK() E MSSEEK()................................................................................................................. 429
DBSKIP() ................................................................................................................................... 430
DBSETFILTER()........................................................................................................................... 431
DBSTRUCT() .............................................................................................................................. 432
DBUNLOCK() .............................................................................................................................. 432
-7ADVPL Avanado

DBUNLOCKALL() ......................................................................................................................... 433


DBUSEAREA() ............................................................................................................................ 433
DELETED() ................................................................................................................................. 434
FCOUNT() .................................................................................................................................. 434
FOUND() .................................................................................................................................... 435
INDEXKEY() ............................................................................................................................... 435
INDEXORD() .............................................................................................................................. 436
LUPDATE() ................................................................................................................................. 436
MSAPPEND() .............................................................................................................................. 437
MSUNLOCK() .............................................................................................................................. 437
ORDBAGEXT() ............................................................................................................................ 438
ORDKEY() .................................................................................................................................. 438
RECLOCK() ................................................................................................................................ 439
RECNO() .................................................................................................................................... 440
SELECT() ................................................................................................................................... 440
SET FILTER TO ........................................................................................................................... 441
SOFTLOCK() ............................................................................................................................... 442
USED() ...................................................................................................................................... 443
ZAP ........................................................................................................................................... 443
Controle de numerao seqencial ...................................................................................................... 444
GETSXENUM() ............................................................................................................................ 444
CONFIRMSXE() ........................................................................................................................... 444
ROLLBACKSXE() ......................................................................................................................... 444
Validao ............................................................................................................................................. 445
ALLWAYSFALSE() ........................................................................................................................ 445
ALLWAYSTRUE() ......................................................................................................................... 445
EXISTCHAV() ............................................................................................................................. 445
EXISTCPO() ............................................................................................................................... 446
LETTERORNUM() ......................................................................................................................... 446
NAOVAZIO() .............................................................................................................................. 446
NEGATIVO() ............................................................................................................................... 446
PERTENCE() ............................................................................................................................... 447
POSITIVO() ................................................................................................................................ 447
TEXTO() .................................................................................................................................... 447
VAZIO() ..................................................................................................................................... 447
Manipulao de parmetros do sistema............................................................................................... 448
GETMV() .................................................................................................................................... 448
GETNEWPAR() ............................................................................................................................ 448
PUTMV() .................................................................................................................................... 449
SUPERGETMV()........................................................................................................................... 449
Controle de impresso ......................................................................................................................... 450
AVALIMP() ................................................................................................................................. 450
CABEC() .................................................................................................................................... 451
IMPCADAST() ............................................................................................................................. 454
MS_FLUSH()............................................................................................................................... 454
OURSPOOL() .............................................................................................................................. 456
RODA()...................................................................................................................................... 457
SETDEFAULT() ............................................................................................................................ 459
SETPRC() ................................................................................................................................... 460
SETPRINT() ................................................................................................................................ 460
Controle de processamentos ............................................................................................................... 462
ABREEXCL() ............................................................................................................................... 462
CLOSEOPEN() ............................................................................................................................. 462
CLOSESFILE() ............................................................................................................................ 462
CHKFILE() .................................................................................................................................. 463
CONOUT().................................................................................................................................. 464
CRIAVAR() ................................................................................................................................. 464
DISARMTRANSACTION() .............................................................................................................. 465
EXECBLOCK() ............................................................................................................................. 466
EXISTBLOCK() ............................................................................................................................ 466
ERRORBLOCK() .......................................................................................................................... 467
FINAL() ..................................................................................................................................... 469
FINDFUNCTION() ........................................................................................................................ 469
FUNDESC() ................................................................................................................................ 470
FUNNAME() ................................................................................................................................ 470
GETAREA()................................................................................................................................. 470
GETCOUNTRYLIST() .................................................................................................................... 471
-8ADVPL Avanado

ISINCALLSTACK() ....................................................................................................................... 471


REGTOMEMORY() ........................................................................................................................ 472
RESTAREA() ............................................................................................................................... 473
USEREXCEPTION() ...................................................................................................................... 473
Utilizao de recursos do ambiente ERP .............................................................................................. 475
AJUSTASX1() ............................................................................................................................. 475
ALLUSERS() ............................................................................................................................... 477
ALLGROUPS() ............................................................................................................................. 479
CGC() ........................................................................................................................................ 480
CONPAD1() ................................................................................................................................ 480
DATAVALIDA()............................................................................................................................ 481
EXISTINI() ................................................................................................................................. 481
EXTENSO() ................................................................................................................................ 482
FORMULA() ................................................................................................................................ 482
GETADVFVAL() ........................................................................................................................... 482
HELP() ....................................................................................................................................... 483
MESEXTENSO() .......................................................................................................................... 484
OBRIGATORIO() ......................................................................................................................... 484
OPENFILE() ................................................................................................................................ 487
PERGUNTE()............................................................................................................................... 488
PESQPICT() ................................................................................................................................ 488
PESQPICTQT() ............................................................................................................................ 489
POSICIONE() .............................................................................................................................. 489
PUTSX1() ................................................................................................................................... 490
RETINDEX() ............................................................................................................................... 491
SIXDESCRICAO() ........................................................................................................................ 491
TABELA() ................................................................................................................................... 492
TAMSX3() .................................................................................................................................. 492
TM() .......................................................................................................................................... 493
X1DEF01() ................................................................................................................................. 494
X1PERGUNT() ............................................................................................................................. 495
X2NOME() .................................................................................................................................. 495
X3CBOX() .................................................................................................................................. 496
X3DESCRIC() ............................................................................................................................. 496
X3PICTURE() .............................................................................................................................. 497
X3TITULO() ................................................................................................................................ 498
X3USO() .................................................................................................................................... 498
X5DESCRI() ............................................................................................................................... 499
X6CONTEUD() ............................................................................................................................ 500
X6DESCRIC() ............................................................................................................................. 501
XADESCRIC() ............................................................................................................................. 502
XBDESCRI() ............................................................................................................................... 502
XFILIAL() ................................................................................................................................... 503
Interfaces de cadastro ........................................................................................................................ 504
AXCADASTRO() .......................................................................................................................... 504
AXPESQUI() ............................................................................................................................... 506
AXVISUAL() ............................................................................................................................... 506
AXINCLUI() ................................................................................................................................ 507
AXALTERA() ............................................................................................................................... 508
AXDELETA() ............................................................................................................................... 508
BRWLEGENDA() .......................................................................................................................... 509
ENDFILBRW() ............................................................................................................................. 509
FILBROWSE() ............................................................................................................................. 510
PESQBRW()................................................................................................................................ 510
MARKBROW() ............................................................................................................................. 511
MBROWSE() ............................................................................................................................... 515
MODELO2() ................................................................................................................................ 523
MODELO3() ................................................................................................................................ 526
Interfaces visuais para aplicaes ....................................................................................................... 529
ALERT() ..................................................................................................................................... 529
AVISO() ..................................................................................................................................... 530
FORMBACTH() ............................................................................................................................ 530
MSGFUNCTIONS()....................................................................................................................... 531
Recursos das interfaces visuais ........................................................................................................... 532
GDFIELDGET()............................................................................................................................ 532
GDFIELDPOS() ........................................................................................................................... 532
GDFIELDPUT() ............................................................................................................................ 532

-9ADVPL Avanado

GETMARK() ................................................................................................................................ 533


ISMARK()................................................................................................................................... 534
MARKBREFRESH() ....................................................................................................................... 534
READVAR() ................................................................................................................................ 535
THISINV() .................................................................................................................................. 535
THISMARK() ............................................................................................................................... 535

- 10 ADVPL Avanado

OBJETIVOS DO CURSO
Objetivos especficos do curso:
Ao final do curso o treinando dever ter desenvolvido os seguintes conceitos, habilidades e
atitudes:
a) Conceitos a serem aprendidos




estruturas para implementao aplicaes orientadas a objetos


introduo as tcnicas de programao de desenvolvimento de relatrios
grficos
introduo aos conceitos de ADVPL ASP e WebServices

b) Habilidades e tcnicas a serem aprendidas






desenvolvimento de aplicaes voltadas ao ERP Protheus


anlise de fontes de mdia complexidade
desenvolvimento de com orientao a objetos

c) Atitudes a serem desenvolvidas






adquirir conhecimentos atravs da anlise dos funcionalidades disponveis no


ERP Protheus;
estudar a implementao de fontes com estruturas orientadas a objetos em
ADVPL;
embasar a realizao de outros cursos relativos a linguagem ADVPL

- 11 ADVPL Avanado

MDULO 05: Introduo orientao objetos


1. Conceitos de orientao objetos
O termo orientao a objetos pressupe uma organizao de software em termos de coleo
de objetos discretos incorporando estrutura e comportamento prprios. Esta abordagem de
organizao essencialmente diferente do desenvolvimento tradicional de software, onde
estruturas de dados e rotinas so desenvolvidas de forma apenas fracamente acopladas.
Neste tpico sero os conceitos de programao orientada a objetos listados abaixo. Esta
breve viso geral do paradigma permitir entender melhor os conceitos associados
programao orientada a objetos e, em particular, s construes implementadas atravs da
linguagem ADVPL.
 Objetos
 Herana
 Atributos
 Mtodos
 Classes
 Abstrao
 Generalizao
 Encapsulamento
 Polimorfismo

1.1. Definies
Objeto
Um objeto uma entidade do mundo real que tem uma identidade. Objetos podem
representar entidades concretas (um arquivo no meu computador, uma bicicleta) ou entidades
conceituais (uma estratgia de jogo, uma poltica de escalonamento em um sistema
operacional). Cada objeto ter sua identidade significa que dois objetos so distintos mesmo
que eles apresentem exatamente as mesmas caractersticas.
Embora objetos tenham existncia prpria no mundo real, em termos de linguagem de
programao um objeto necessita um mecanismo de identificao. Esta identificao de objeto
deve ser nica, uniforme e independente do contedo do objeto. Este um dos mecanismos
que permite a criao de colees de objetos, as quais so tambm objetos em si.
A estrutura de um objeto representada em termos de atributos. O comportamento de um
objeto representado pelo conjunto de operaes que podem ser executadas sobre o objeto.

- 12 ADVPL Avanado

Classe
Objetos com a mesma estrutura e o mesmo comportamento so agrupados em classes. Uma
classe uma abstrao que descreve propriedades importantes para uma aplicao e
simplesmente ignora o resto.
Cada classe descreve um conjunto (possivelmente infinito) de objetos individuais. Cada objeto
dito ser uma instncia de uma classe. Assim, cada instncia de uma classe tem seus prprios
valores para cada atributo, mas dividem os nomes dos atributos e mtodos com as outras
instncias da classe. Implicitamente, cada objeto contm uma referncia para sua prpria
classe, em outras palavras, ele sabe o que ele .

Figura: Representao de uma classe de objetos

Figura: Representao de um objeto instanciado de uma classe

- 13 ADVPL Avanado

Polimorfismo
Polimorfismo significa que a mesma operao pode se comportar de forma diferente em
classes diferentes. Por exemplo, a operao move quando aplicada a uma janela de um
sistema de interfaces tem um comportamento distinto do que quando aplicada a uma pea de
um jogo de xadrez. Um mtodo uma implementao especfica de uma operao para uma
certa classe.
Polimorfismo tambm implica que uma operao de uma mesma classe pode ser
implementada por mais de um mtodo. O usurio no precisa saber quantas implementaes
existem para uma operao, ou explicitar qual mtodo deve ser utilizado: a linguagem de
programao deve ser capaz de selecionar o mtodo correto a partir do nome da operao,
classe do objeto e argumentos para a operao. Desta forma, novas classes podem ser
adicionadas sem necessidade de modificao de cdigo j existente, pois cada classe apenas
define os seus mtodos e atributos.
No mundo real, alguns objetos e classes podem ser descritos como casos especiais, ou
especializaes, de outros objetos e classes. Por exemplo, a classe de computadores pessoais
com processador da linha 80x86 uma especializao de computadores pessoais, que por sua
vez uma especializao de computadores. No desejvel que tudo que j foi descrito para
computadores tenha de ser repetido para computadores pessoais ou para computadores
pessoais com processador da linha 80x86.
Herana
Herana o mecanismo do paradigma de orientao a objetos que permite compartilhar
atributos e operaes entre classes baseada em um relacionamento hierrquico. Uma classe
pode ser definida de forma genrica e depois refinada sucessivamente em termos de
subclasses ou classes derivadas. Cada subclasse incorpora, or herda, todas as propriedades de
sua superclasse (ou classe base) e adiciona suas propriedades nicas e particulares. As
propriedades da classe base no precisam ser repetidas em cada classe derivada. Esta
capacidade de fatorar as propriedades comuns de diversas classes em uma superclasse pode
reduzir dramaticamente a repetio de cdigo em um projeto ou programa, sendo uma das
principais vantagens da abordagem de orientao a objetos.

- 14 ADVPL Avanado

1.2. Conceitos Bsicos


A abordagem de orientao a objetos favorece a aplicao de diversos conceitos considerados
fundamentais para o desenvolvimento de bons programas, tais como abstrao e
encapsulamento.
Tais conceitos no so exclusivos desta abordagem, mas so suportados de forma melhor no
desenvolvimento orientado a objetos do que em outras metodologias.
Abstrao
Abstrao consiste de focalizar nos aspectos essenciais inerentes a uma entidade e ignorar
propriedades acidentais. Em termos de desenvolvimento de sistemas, isto significa
concentrar-se no que um objeto e faz antes de se decidir como ele ser implementado. O
uso de abstrao preserva a liberdade para tomar decises de desenvolvimento ou de
implementao apenas quando h um melhor entendimento do problema a ser resolvido.
Muitas linguagens de programao modernas suportam o conceito de abstrao de dados;
porm, o uso de abstrao juntamente com polimorfismo e herana, como suportado em
orientao a objetos, um mecanismo muito mais poderoso.
O uso apropriado de abstrao permite que um mesmo modelo conceitual (orientao a
objetos) seja utilizado para todas as fases de desenvolvimento de um sistema, desde sua
anlise at sua documentao.
Encapsulamento
Encapsulamento, tambm referido como esconder informao, consiste em separar os
aspectos externos de um objeto, os quais so acessveis a outros objetos, dos detalhes
internos de implementao do objeto, os quais permanecem escondidos dos outros objetos. O
uso de encapsulamento evita que um programa torne-se to interdependente que uma
pequena mudana tenha grandes efeitos colaterais.
O uso de encapsulamento permite que a implementao de um objeto possa ser modificada
sem afetar as aplicaes que usam este objeto. Motivos para modificar a implementao de
um objeto podem ser, por exemplo, melhoria de desempenho, correo de erros e mudana de
plataforma de execuo.
Assim como abstrao, o conceito de Encapsulamento no exclusivo da abordagem de
orientao a objetos. Entretanto, a habilidade de se combinar estrutura de dados e
comportamento em uma nica entidade torna a Encapsulamento mais elegante e mais
poderosa do que em linguagens convencionais que separam estruturas de dados e
comportamento.
Compartilhamento
Tcnicas de orientao a objetos promovem compartilhamento em diversos nveis distintos.
Herana de estrutura de dados e comportamento permite que estruturas comuns sejam
compartilhadas entre diversas classes derivadas similares sem redundncia. O
compartilhamento de cdigo usando herana uma das grandes vantagens da orientao a
objetos. Ainda mais importante que a economia de cdigo a clareza conceitual de reconhecer
que operaes diferentes so na verdade a mesma coisa, o que reduz o nmero de casos
distintos que devem ser entendidos e analisados.

- 15 ADVPL Avanado

O desenvolvimento orientado a objetos no apenas permite que a informao dentro de um


projeto seja compartilhada como tambm oferece a possibilidade de reaproveitar projetos e
cdigo em projetos futuros. As ferramentas para alcanar este compartilhamento, tais como
abstrao, Encapsulamento e herana, esto presentes na metodologia; uma estratgia de
reuso entre projetos a definio de bibliotecas de elementos reusveis. Entretanto,
orientao a objetos no uma frmula mgica para alcanar reusabilidade; para tanto,
preciso planejamento e disciplina para pensar em termos genricos, no voltados
simplesmente para a aplicao corrente.

1.3. O Modelo de Objetos (OMT)


Um modelo de objetos busca capturar a estrutura esttica de um sistema mostrando os
objetos existentes, seus relacionamentos, e atributos e operaes que caracterizam cada
classe de objetos. atravs do uso deste modelo que se enfatiza o desenvolvimento em
termos de objetos ao invs de mecanismos tradicionais de desenvolvimento baseado em
funcionalidades, permitindo uma representao mais prxima do mundo real.
Uma vez que as principais definies e conceitos da abordagem de orientao a objetos esto
definidos, possvel introduzir o modelo de objetos que ser adotado ao longo deste texto. O
modelo apresentado um subconjunto do modelo OMT (Object Modeling Technique), proposto
por Rumbaugh entre outros. Este modelo tambm introduz uma representao diagramtica
para este modelo, a qual ser tambm apresentada aqui.

1.3.1. Objetos e Classes


Objeto definido neste modelo como um conceito, abstrao ou coisa com limites e
significados bem definidos para a aplicao em questo. Objetos tm dois propsitos:
promover o entendimento do mundo real e suportar uma base prtica para uma
implementao computacional. No existe uma maneira correta de decompor um problema
em objetos; esta decomposio depende do julgamento do projetista e da natureza do
problema. Todos os objetos tm identidade prpria e so distinguveis.
Uma classe de objetos descreve um grupo de objetos com propriedades (atributos) similares,
comportamentos (operaes) similares, relacionamentos comuns com outros objetos e uma
semntica comum. Por exemplo, Pessoa e Companhia so classes de objetos. Cada pessoa
tem um nome e uma idade; estes seriam os atributos comuns da classe. Companhias tambm
podem ter os mesmos atributos nome e idade definidos. Entretanto, devido distino
semntica elas provavelmente estariam agrupados em outra classe que no Pessoa. Como se
pode observar, o agrupamento em classes no leva em conta apenas o compartilhamento de
propriedades.
Todo objeto sabe a que classe ele pertence, ou seja, a classe de um objeto um atributo
implcito do objeto. Este conceito suportado na maior parte das linguagens de programao
orientada a objetos, inclusive em ADVPL.
OMT define dois tipos de diagramas de objetos, diagramas de classes e diagramas de
instncias. Um diagrama de classe um esquema, ou seja, um padro ou gabarito que
descreve as muitas possveis instncias de dados. Um diagrama de instncias descreve como
um conjunto particular de objetos est relacionado. Diagramas de instncias so teis para
apresentar exemplos e documentar casos de testes; diagramas de classes tm uso mais
amplos. A Figura abaixo apresenta a notao adotada para estes diagramas.

- 16 ADVPL Avanado

Figura: Representao diagramtica de OMT para classes e objetos

O agrupamento de objetos em classes um poderoso mecanismo de abstrao. Desta forma,


possvel generalizar definies comuns para uma classe de objetos, ao invs de repet-las
para cada objeto em particular. Esta uma das formas de reutilizao e economia que a
abordagem de orientao a objetos suporta.

1.3.2. Atributos
Um atributo um valor de dado assumido pelos objetos de uma classe. Nome, idade e peso
so exemplos de atributos de objetos Pessoa. Cor, peso e modelo so possveis atributos de
objetos Carro. Cada atributo tem um valor para cada instncia de objeto. Por exemplo, o
atributo idade tem valor ``29'' no objeto Pedro Y. Em outras palavras, Pedro Y tem 29 anos de
idade. Diferentes instncias de objetos podem ter o mesmo valor para um dado atributo.
Cada nome de atributo nico para uma dada classe, mas no necessariamente nico entre
todas as classes. Por exemplo, ambos Pessoa e Companhia podem ter um atributo chamado
endereo.
No diagrama de classes, atributos so listados no segundo segmento da caixa que representa
a classe. O nome do atributo pode ser seguido por detalhes opcionais, tais como o tipo de
dado assumido e valor default. A Figura abaixo mostra esta representao.

Figura: Representao diagramtica de OMT para classes e objetos com atributos


No se deve confundir identificadores internos de objetos com atributos do mundo real.
Identificadores de objetos so uma convenincia de implementao, e no tm nenhum
significado para o domnio da aplicao. Por exemplo, CIC e RG no so identificadores de
objetos, mas sim verdadeiros atributos do mundo real.

- 17 ADVPL Avanado

1.3.3. Operaes e Mtodos


Uma operao uma funo ou transformao que pode ser aplicada a ou por objetos em uma
classe. Por exemplo, abrir, salvar e imprimir so operaes que podem ser aplicadas a objetos
da classe Arquivo. Todos os objetos em uma classe compartilham as mesmas operaes.
Toda operao tem um objeto-alvo como um argumento implcito. O comportamento de uma
operao depende da classe de seu alvo. Como um objeto sabe qual sua classe, possvel
escolher a implementao correta da operao. Alm disto, outros argumentos (parmetros)
podem ser necessrios para uma operao.
Uma mesma operao pode se aplicar a diversas classes diferentes. Uma operao como esta
dita ser polimrfica, ou seja, ela pode assumir distintas formas em classes diferentes.
Um mtodo a implementao de uma operao para uma classe. Por exemplo, a operao
imprimir pode ser implementada de forma distinta, dependendo se o arquivo a ser impresso
contm apenas texto ASCII, um arquivo de um processador de texto ou binrio. Todos estes
mtodos executam a mesma operao: imprimir o arquivo; porm, cada mtodo ser
implementado por um diferente cdigo.
A assinatura de um mtodo dada pelo nmero e tipos de argumentos do mtodo, assim
como por seu valor de retorno. Uma estratgia de desenvolvimento recomendvel manter
assinaturas coerentes para mtodos implementando uma dada operao, assim como um
comportamento consistente entre as implementaes.
Em termos de diagramas OMT, operaes so listadas na terceira parte da caixa de uma
classe. Cada nome de operao pode ser seguida por detalhes opcionais, tais como lista de
argumentos e tipo de retorno. A lista de argumentos apresentada entre parnteses aps o
nome da operao. Uma lista de argumentos vazia indica que a operao no tem
argumentos; da ausncia da lista de argumentos no se pode concluir nada. O tipo de
resultado vem aps a lista de argumentos, sendo precedido por dois pontos (:). Caso a
operao retorne resultado, este no deve ser omitido, pois esta a forma de distingui-la de
operaes que no retornam resultado. Exemplos de representao de operaes em OMT so
apresentados na Figura abaixo:

Figura: Representao diagramtica de OMT para classes com atributos e operaes

- 18 ADVPL Avanado

1.3.4. Sugestes de desenvolvimento


Na construo de um modelo para uma aplicao, as seguintes sugestes devem ser
observadas a fim de se obter resultados claros e consistentes:
 No comece a construir um modelo de objetos simplesmente definindo classes,
associaes e heranas. A primeira coisa a se fazer entender o problema a ser
resolvido.
 Tente manter seu modelo simples. Evite complicaes desnecessrias.
 Escolha nomes cuidadosamente. Nomes so importantes e carregam conotaes
poderosas. Nomes devem ser descritivos, claros e no deixar ambigidades. A escolha
de bons nomes um dos aspectos mais difceis da modelagem.
 No enterre apontadores ou outras referncias a objetos dentro de objetos como
atributos. Ao invs disto, modele estas referncias como associaes. Isto torna o
modelo mais claro e independente da implementao.
 Tente evitar associaes que envolvam trs ou mais classes de objetos. Muitas vezes,
estes tipos de associaes podem ser decompostos em termos de associaes binrias,
tornando o modelo mais claro.
 No transfira os atributos de ligao para dentro de uma das classes.
 Tente evitar hierarquias de generalizao muito profundas.
 No se surpreenda se o seu modelo necessitar vrias revises; isto o normal.
 Sempre documente seus modelos de objetos. O diagrama pode especificar a estrutura
do modelo, mas nem sempre suficiente para descrever as razes por trs da definio
do modelo. Uma explicao escrita pode clarificar pontos tais como significado de
nomes e explicar a razo para cada classe e relacionamento.
 Nem sempre todas as construes OMT so necessrias para descrever uma aplicao.
Use apenas aquelas que forem adequadas para o problema analisado.

- 19 ADVPL Avanado

2. Orientao a objetos em ADVPL


Neste tpico ser detalhada a forma com a qual a linguagem ADVPL implementa os conceitos
de orientao a objetos e a sintaxe utilizada no desenvolvimento de aplicaes.

2.1. Sintaxe e operadores para orientao a objetos


Palavras reservadas

 CLASS
 CLASSDATA
 CONSTRUCTOR
 DATA
 ENDCLASS
 EXPORT
 FROM
 HIDDEN
 METHOD
 PROTECTED
 SELF
CLASS
Descrio

Utilizada na declarao de uma classe de objetos para identificar a qual


classe um determinado mtodo est relacionado.

Sintaxe 1

CLASS <nome_da_classe>

Sintaxe 2

METHOD <nome_do_mtodo> CLASS <nome_da_classe>

CLASSDATA
Descrio

Utilizada na declarao de um atributo da classe de objetos com a finalidade


de definir um tipo e um contedo padro para este atributo.

Sintaxe 1

CLASSDATA <nome_da_varivel> AS <tipo> <atributo> INIT <contedo>

CONSTRUCTOR

Descrio

Utilizada na especificao de um mtodo especial, definido como construtor,


o qual tem a funo de retornar um novo objeto com os atributos e mtodos
definidos na classe.

Sintaxe

METHOD <nome_do_mtodo()> CONSTRUCTOR

- 20 ADVPL Avanado

DATA
Descrio

Utilizada na declarao de um atributo da classe de objetos.

Sintaxe

DATA <nome_do_atributo>

ENDCLASS
Descrio

Utilizada na finalizao da declarao da classe.

Sintaxe

ENDCLASS

EXPORT

Descrio

Operador utilizado para definir o modo de acesso de um atributo especificado


na classe de objetos. O uso deste operador indica que o atributo ser visvel
e altervel sem a necessidade de utilizao dos mtodos do prprio objeto.
Seu uso na linguagem ADVPL opcional.

Simular

EXPORT ou [PUBLIC]

Sintaxe 1

DATA cNome

Sintaxe 2

EXPORT DATA cNome

FROM

Descrio

Utilizada na declarao de uma classe, a qual ser uma instncia de uma


superclasse, recebendo os atributos e mtodos nela definidos,
implementando a herana entre classes.

Sintaxe

CLASS <nome_da_classe> FROM <nome_da_superclasse>

HIDDEN

Descrio

Operador utilizado para definir o modo de acesso de um atributo especificado


na classe de objetos. O uso deste operador indica que o atributo no ser
visvel para chamadas diretas do objeto, sendo necessria a utilizao de
mtodos para sua manipulao.

Simular

HIDDEN ou [LOCAL]

Sintaxe

HIDDEN DATA cNome

METHOD
Descrio

Utilizada na declarao do prottipo do mtodo de uma classe de objetos, e


na declarao do mtodo efetivamente desenvolvido.

Sintaxe 1

METHOD <nome_do_mtodo()>

Sintaxe 2

METHOD <nome_do_mtodo(<parmetros>)> CLASS <nome_da_classe>

- 21 ADVPL Avanado

PROTECTED

Descrio

Operador utilizado para definir o modo de acesso de um atributo especificado


na classe de objetos. O uso deste operador indica que o atributo ser visvel
mas no ser editvel para chamadas diretas do objeto, sendo necessria a
utilizao de mtodos para sua manipulao.

Simular

PROTECTED ou [READONLY]

Sintaxe

PROTECTED DATA cNome

SELF
Descrio

Utilizada principalmente pelo mtodo construtor para retornar o objeto


criado para a aplicao.

Sintaxe

Return SELF

Operadores especficos

Utilizado para referenciar um mtodo ou um atributo de um objeto j


instanciado.

Exemplo 1

cNome := oAluno:sNome

Exemplo 2

cNota := oAluno:GetNota(cCurso)

::

Utilizado pelos mtodos de uma classe para referenciar os atributos


disponveis para o objeto.
METHOD GetNota(cCurso) CLASS ALUNO
Local nPosCurso := 0
Local nNota := 0
nPosCurso := aScan(::aCursos,{|aCurso| aCurso[1] == cCurso})

Exemplo

IF nPosCurso > 0
nNota := ::aCursos[nPosCurso][2]
ENDIF
Return nNota

- 22 ADVPL Avanado

2.2. Estrutura de uma classe de objetos em ADVPL


Declarao da classe
A declarao de uma classe da linguagem ADVPL realizada de forma similar a declarao de
uma funo, com a diferena de que uma classe no possui diferenciao quanto a sua
procedncia, como uma Function() e uma User Function(), e no possui visibilidade limitada
como uma Static Function().
Exemplo:
#include protheus.ch
CLASS Pessoa()

Definio dos atributos


Seguindo o mesmo princpio de variveis no tipadas, os atributos das classes em ADVPL no
precisam ter seu tipo especificado, sendo necessrio apenas determinar seus nomes.
Desta forma recomendado o uso da notao Hngara tambm para a definio dos atributos
de forma a facilitar a anlise, interpretao e utilizao da classe e seus objetos instanciados.
Exemplo:
#include protheus.ch
CLASS Pessoa()
DATA cNome
DATA nIdade

Prototipao dos mtodos


A prototipao dos mtodos uma regra utilizada pelas linguagens orientadas a objetos,
atravs da qual so especificadas as operaes que podem ser realizadas pelo objeto,
diferenciando os mtodos de outras funes internas de uso da classe, e para especificar quais
so os mtodos construtores.
Em linguagens tipadas, na prototipao dos mtodos necessrio definir quais so os
parmetros recebidos e seus respectivos tipos, alm de definir o tipo do retorno que ser
fornecido. Em ADVPL necessrio apenas descrever a chamada do mtodo e caso necessrio
se o mesmo um construtor.

- 23 ADVPL Avanado

Exemplo:
#include protheus.ch
CLASS Pessoa()
DATA cNome
DATA nIdade
METHOD Create() CONSTRUCTOR
METHOD SetNome()
METHOD SetIdade()
ENDCLASS

2.3. Implementao dos mtodos de uma classe em ADVPL


Mtodo Construtor
O mtodo construtor possui a caracterstica de retornar um objeto com o tipo da classe da qual
o mesmo foi instanciado. Por esta razo diz-se que o tipo do objeto instanciado a classe
daquele objeto.
Para produzir este efeito, o mtodo construtor utiliza a palavra reservada SELF, a qual
utilizada pela linguagem ADVPL para referncia a prpria classe daquele objeto.
Exemplo:
#include protheus.ch
CLASS Pessoa()
DATA cNome
DATA nIdade
METHOD Create() CONSTRUCTOR
METHOD SetNome()
METHOD SetIdade()
ENDCLASS
METHOD Create(cNome, nIdade) CLASS Pessoa
::cNome := cNome
::nIdade := nIdade
Return SELF

- 24 ADVPL Avanado

Manipulao de atributos
Os atributos definidos para uma classe com a utilizao da palavra reservada DATA em sua
declarao podem ser manipulados por seus mtodos utilizando o operador ::.
A utilizao deste operador permite ao interpretador ADVPL diferenciar variveis comuns
criadas pelas funes e mtodos que utilizam este objeto dos atributos propriamente ditos.
Exemplo:
#include protheus.ch
CLASS Pessoa()
DATA cNome
DATA nIdade
METHOD Create() CONSTRUCTOR
METHOD SetNome()
METHOD SetIdade()
ENDCLASS
METHOD Create(cNome, nIdade) CLASS Pessoa
::cNome := cNome
::nIdade := nIdade
Return SELF

Utilizao de funes em uma classe de objetos


Conforme mencionado anteriormente, a utilizao da palavra reservada METHOD permite ao
interpretador ADVPL diferenciar os mtodos que podem ser utilizados atravs da referncia do
objeto de funes internas descritas internamente na classe.
Isto permite a utilizao de funes tradicionais da linguagem ADVPL, como as Static
Functions() as quais sero visveis apenas a classe, e no podero ser referenciadas
diretamente pelo objeto.
Exemplo parte 01: Funo CadPessoa (usuria da classe Pessoa)
#include protheus.ch
USER FUNCTION CadPessoa()
Local
Local
Local
Local

oPessoa
cNome :=
dNascimento:= CTOD()
aDados := {}

aDados := GetDados()
oPessoa := Pessoa():Create(cNome,dNascimento)
Return

- 25 ADVPL Avanado

Exemplo parte 02: Classe Pessoa


#include protheus.ch
CLASS Pessoa()
DATA cNome
DATA nIdade
DATA dNascimento
METHOD Create() CONSTRUCTOR
METHOD SetNome()
METHOD SetIdade()
ENDCLASS
METHOD Create(cNome, dNascimento) CLASS Pessoa
::cNome := cNome
::dNascimento := dNascimento
::nIdade := CalcIdade(dNascimento)
Return SELF
STATIC FUNCTION CalcIdade(dNascimento)
Local nIdade
nIdade := dDataBase - dNascimento
RETURN nIdade

Herana entre classes


Seguindo o principio da orientao a objetos, a linguagem ADVPL permite que uma classe
receba por herana os mtodos e atributos definidos em uma outra classe, a qual tornasse a
superclasse desta instncia.
Para utilizar este recurso deve ser utilizada a palavra reservada FROM na declarao da
classe, especificando a superclasse que ser referenciada.
Em ADVPL o exemplo prtico desta situao a superclasse TSrvObject, a qual utilizada pela
maioria das classes e componentes da interface visual, como demonstrado no mdulo 06.

Exemplo parte 01: Declarao da classe Pessoa


#include protheus.ch
CLASS Pessoa()
DATA cNome
DATA nIdade
DATA dNascimento
METHOD Create() CONSTRUCTOR
METHOD SetNome()
METHOD SetIdade()
ENDCLASS

- 26 ADVPL Avanado

Exemplo parte 02: Declarao da classe Aluno


#include protheus.ch
CLASS Aluno() FROM Pessoa
DATA nID
DATA aCursos
METHOD
METHOD
METHOD
METHOD
METHOD

Create() CONSTRUCTOR
Inscrever()
Avaliar()
GetNota()
GetStatus()

ENDCLASS
// Os objetos da classe Aluno, possuem todos os mtodos e atributos da classe
Pessoa, alm
// dos mtodos e atributos declarados na prpria classe.

Construtor para classes com herana


Quanto utilizado o recurso de herana entre classes, o construtor da classe instanciada deve
receber um tratamento adicional, para que o objeto instanciado seja criado com os atributos e
mtodos definidos na superclasse.
Nestes casos, logo aps a definio do mtodo construtor da classe, dever ser executado o
mtodo construtor da superclasse.
Exemplo parte 03: Mtodo Construtor da classe Aluno
METHOD Create(cNome,dNascimento,nID)
:Create(cNome,dNascimento) // Chamada do mtodo construtor da classe Pessoa.
::nID := ID
Return SELF

- 27 ADVPL Avanado

3. Regras adicionais da linguagem ADVPL


3.1. Palavras reservadas
AADD
ABS
ASC
AT
BOF
BREAK
ENDIF
LTRIM
SPACE
CTOD
FILE
PCOUNT
TRANSFORM
DOW
IIF
CATCH

DTOS
ELSE
ELSEIF
EMPTY
ENDCASE
ENDDO
LOWER
SETPOS
COL
FIELDNAME
PCOL
TIME
DEVPOS
IF
RECNO
THROW

INKEY
INT
LASTREC
LEN
LOCK
LOG
SELECT
CMONTH
FCOUNT
MONTH
SUBSTR
DELETED
FUNCTION
RECCOUNT
UPPER

 Palavras reservadas no
procedimentos ou funes;

REPLICATE
RLOCK
ROUND
ROW
RTRIM
SECONDS
CHR
EXP
MIN
STR
DAY
FOUND
PROW
TYPE
TRY

podem

ser

VAL
VALTYPE
WHILE
WORD
YEAR
CDOW
EOF
MAX
SQRT
DATE
FLOCK
PROCEDURE
TRIM
DTOC
AS

utilizadas

para

variveis,

 Funes reservadas so pertencentes ao compilador e no podem ser


redefinidas por uma aplicao;
 Todos os identificadores que comearem com dois ou mais caracteres
_ so utilizados como identificadores internos e so reservados.
 Identificadores de escopo PRIVATE ou PUBLIC utilizados em aplicaes
especficas desenvolvida por ou para clientes devem ter sua
identificao iniciada por um caractere _.

- 28 ADVPL Avanado

3.2. Pictures de formatao disponveis


Com base na documentao disponvel no DEM Documentao Eletrnica Microsiga, a
linguagem ADVPL e a aplicao ERP Protheus admitem as seguintes pictures:
Dicionrio de Dados (SX3) e GET
Funes
Contedo
A
C
E
R
S<n>
X
Z
(
)
!

Funcionalidade
Permite apenas caracteres alfabticos.
Exibe CR depois de nmeros positivos.
Exibe numrico com o ponto e vrgula invertidos (formato Europeu).
Insere caracteres diferentes dos caracteres de template na exibio, mas no os
insere na varivel do GET.
Permite rolamento horizontal do texto dentro do GET, <n> um nmero inteiro
que identifica o tamanho da regio.
Exibe DB depois de nmeros negativos.
Exibe zeros como brancos.
Exibe nmeros negativos entre parnteses com os espaos em branco iniciais.
Exibe nmeros negativos entre parnteses sem os espaos em branco iniciais.
Converte caracteres alfabticos para maisculo.

Templates
Contedo Funcionalidade
X
Permite qualquer caractere.
9
Permite apenas dgitos para qualquer tipo de dado, incluindo o sinal para
numricos.
#
Permite dgitos, sinais e espaos em branco para qualquer tipo de dado.
!
Converte caracteres alfabticos para maisculo.
*
Exibe um asterisco no lugar dos espaos em branco iniciais em nmeros.
.
Exibe o ponto decimal.
,
Exibe a posio do milhar.
Exemplo 01 Picture campo numrico
CT2_VALOR Numrico 17,2
Picture: @E 99,999,999,999,999.99

Exemplo 02 Picture campo texto, com digitao apenas em caixa alta


A1_NOME Caracter - 40
Picture: @!

- 29 ADVPL Avanado

MDULO 07: ADVPL Orientado objetos II


Neste mdulo sero tratados os componentes e objetos da interface visual da linguagem
ADVPL, permitindo o desenvolvimento de aplicaes com interfaces grficas com sintaxe
orientada a objetos.

4. Componentes da interface visual do ADVPL


A linguagem ADVPL possui diversos componentes visuais e auxiliares, os quais podem ser
representados utilizando a estrutura abaixo:

Classes da Interface Visual


Tsrvobject

Classes Auxiliares
Tfont

Classes de Janelas
Msdialog
Tdialog
Twindow

Classes de Componentes
Tcontrol

- 30 ADVPL Avanado

Classes de Componentes
Visuais
Brgetddb
Mscalend
Mscalendgrid
Msselbr
Msworktime
Sbutton
Tbar
Tbitmap
Tbrowsebutton
Tbtnbmp
Tbtnbmp2
Tbutton
Tcbrowse
Tcheckbox
Tcolortriangle
Tcombobox
Tfolder
Tfont
Tget
Tgroup
Thbutton
Tibrowser
Tlistbox
Tmenu
Tmenubar
Tmeter
Tmsgraphic
Tmsgbar
Tmultibtn
Tmultiget
Tolecontainer
Tpageview
Tpanel
Tradmenu
Tsbrowse
Tsay
Tscrollbox
Tsimpleeditor

Tslider

Classes de Componentes
Visuais
Tsplitter
Ttabs
Ttoolbox
Twbrowse
Vcbrowse

Atributos comuns as classes de componentes visuais


cCaption
cF3
cMsg
cName
cTooltip
cVariable
lPassword
lReadOnly
lShowHint
lVisibleControl
nHeight
nLeft
nTop
nWidth
Picture

Ttulo ou contedo do objeto.


Consulta F3 ao qual o objeto est vinculado, quando o
mesmo do tipo get.
Mensagem exibida na barra de status da janela principal
quando o objeto ganha foco.
Nome do objeto
Mensagem exibida quando objeto exibe seu tooltip.
Varivel que receber o contedo selecionado ou digitado no
objeto, quando o mesmo for to tipo get ou similar.
Indica se o texto digitado no objeto ser exibido no formato
de password, quando o mesmo do tipo get.
Flag que indica se o objeto pode ou no ser editado.
Flag que ativa .T. ou desativa .F. a exibio do tooltip do
objeto.
Se .T. o objeto visvel, se .F. o objeto invisvel.
Altura em pixels.
Coordenada horizontal em pixels.
Coordenada vertical em pixels.
Largura em pixels.
Picture de digitao do objeto, quando o mesmo do tipo
get.

Eventos comuns as classes de componentes visuais


bAction
bChange
bF3
bGotFocus
blClicked
blDblClick
bLostFocus
brClicked
bValid
bWhen

Bloco de cdigo executado quando o objeto utilizado,


quando o mesmo do tipo boto ou similar.
Bloco de cdigo executado quando ocorre uma mundana na
seleo de itens que compe o objeto, como por exemplo
em listas ou grids.
Bloco de cdigo executado quando utilizado o recurso de
consulta F3 vinculado ao objeto.
Executado quando objeto ganha foco.
Executado quando acionado click do boto esquerdo do
mouse sobre o objeto.
Executado quando acionado duplo click do boto esquerdo
do mouse sobre o objeto.
Executado quando objeto perde foco.
Executado quando acionado click do boto direito do mouse
sobre o objeto.
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 h movimentao de foco na janela.Se
retornar .T. o objeto continua habilitado, se retornar .F. o
- 31 ADVPL Avanado

objeto ser desabilitado.

Classes da interface visual


TSRVOBJECT()


Descrio: Classe abstrata inicial de todas as classes de interface do ADVPL. No deve


ser instanciada diretamente.

Propriedades:
nLeft
nTop
nWidth
nHeight
cCaption
cTooltip
lShowHint
cMsg
nClrText
nClrPane
bWhen

bValid
blClicked
brClicked
blDblClick
oWnd
lVisible
Cargo
bLostFocus
bGotFocus

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

Construtor: No pode ser instanciada.

Parmetros:
Nenhum

- 32 ADVPL Avanado

Mtodos auxiliares:
SetFocus
 Descrio: Fora mudana do foco de entrada de dados para o controle.
 Sintaxe: SetFocus( )
 Parmetros:
Nenhum

 Retorno:
Nil
Hide
 Descrio: Torna objeto invisvel.
 Sintaxe: Hide( )
 Parmetros:
Nenhum

 Retorno:
Nil
Show
 Descrio: Torna objeto visvel.
 Sintaxe: Show( )
 Parmetros:
Nenhum

 Retorno:
Nil
Enable
 Descrio: Habilita o objeto.
 Sintaxe: Enable( )
 Parmetros:
Nenhum

 Retorno:
Nil

- 33 ADVPL Avanado

Disable
 Descrio: Desabilita o objeto.
 Sintaxe: Disable( )
 Parmetros:
Nenhum

 Retorno:
Nil
Refresh
 Descrio: Fora atualizao (sincronia) de propriedades entre o programa e o
Protheus Remote.
 Sintaxe: Refresh( )
 Parmetros:
Nenhum

 Retorno:
Nil

Exemplo:

CLASS TCONTROL FROM TSRVOBJECT

- 34 ADVPL Avanado

Classes auxiliares
TFONT()


Descrio: Classe de objetos que define a fonte do texto utilizado nos controles
visuais.

Propriedades:
-

Herdadas as classes superiores

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


[lPar7], [nPar8], [alItalic], [alUnderline])

Parmetros:
acName
nPar2
anHeight
lPar4
alBold
nPar6
lPar7
nPar8
alItalic
alUnderline

Caractere, opcional. Nome da fonte, o padro Arial.


Reservado.
Numrico, opcional. Tamanho da fonte. O padro -11.
Reservado.
Lgico, opcional. Se .T. o estilo da fonte ser negrito.
Reservado.
Reservado.
Reservado.
Lgico, opcional. Se .T. o estilo da fonte ser itlico.
Lgico, opcional. Se .T. o estilo da fonte ser sublinhado.

Aparncia:

Exemplo:
#include 'protheus.ch'
User Function Teste()
Local oDlg, oSay
DEFINE MSDIALOG oDlg FROM 0,0 TO 200,200 TITLE 'My dialog' PIXEL
// Cria font para uso
oFont:= TFont():New('Courier New',,-14,.T.)
// Apresenta o tSay com a fonte Courier New
oSay := TSay():New( 10, 10, {|| 'Mensagem'},oDlg,, oFont,,,, .T.,
CLR_WHITE,CLR_RED )
oSay:lTransparent:= .F.
ACTIVATE MSDIALOG oDlg CENTERED
Return

- 35 ADVPL Avanado

Classes de janelas
MSDIALOG()


Descrio: Classe de objetos que 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:
-

Herdadas as classes superiores

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


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

Parmetros:
anTop
anLeft
anBotom
anRight
acCaption
cPar6
nPar7
lPar8
nPar9
anClrText
anClrBack
oPar12
aoWnd
alPixel
oPar15
oPar16
nPar17

Numrico, opcional. Coordenada vertical superior em pixels


ou caracteres.
Numrico, opcional. Coordenada horizontal esquerda em
pixels ou caracteres.
Numrico, opcional. Coordenada vertical inferior em pixels
ou caracteres.
Numrico, opcional. Coordenada horizontal direita em pixels
ou caracteres.
Caractere, opcional. Ttulo da janela.
Reservado.
Reservado.
Reservado.
Reservado.
Numrico,opcional. Cor do texto.
Numrico,opcional. Cor de fundo.
Reservado.
Objeto, opcional. Janela me da janela a ser criada, padro
a janela principal do programa.
Lgico, opcional. Se .T. considera as coordenadas passadas
em pixels, se .F. considera caracteres.
Reservado.
Reservado.
Reservado.

- 36 ADVPL Avanado

Aparncia:

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


Descrio: Classe de objetos do tipo dilogo de entrada de dados, sendo seu


uso reservado. Recomenda-se utilizar a classe MSDialog que
herdada desta classe.

Propriedades:
-

Herdadas as classes superiores

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


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

Parmetros:
anTop
anLeft
anBotom
anRight

Numrico, opcional. Coordenada


ou caracteres.
Numrico, opcional. Coordenada
pixels ou caracteres.
Numrico, opcional. Coordenada
ou caracteres.
Numrico, opcional. Coordenada
- 37 ADVPL Avanado

vertical superior em pixels


horizontal esquerda em
vertical inferior em pixels
horizontal direita em pixels

ou caracteres.
Caractere, opcional. Ttulo da janela.
Reservado.
Reservado.
Reservado.
Reservado.
Numrico,opcional. Cor do texto.
Numrico,opcional. Cor de fundo.
Reservado.
Objeto, opcional. Janela me da janela a ser criada, padro
a janela principal do programa.
Lgico, opcional. Se .T. considera as coordenadas passadas
em pixels, se .F. considera caracteres.
Reservado.
Reservado.
Reservado.
Numrico, opcional. Largura da janela em pixels.
Numrico, opcional. Altura da janela em pixels.

acCaption
cPar6
nPar7
lPar8
nPar9
anClrText
anClrBack
oPar12
aoWnd
alPixel
oPar15
oPar16
nPar17
anWidth
anHeight

Mtodos auxiliares:
Activate
 Descrio: Ativa (exibe) o dilogo. Chamar somente uma vez este
mtodo.
 Sintaxe: Activate([bPar1], [bPar2], [bPar3], [alCentered], [abValid],
[lPar6], [abInit], [bPar8], [bPar9] )
 Parmetros:
Reservado.
Reservado.
Reservado.
Lgico, opcional. Se .T. exibe a janela centralizada, .F.
padro.
Bloco de cdigo, opcional. Deve retornar .T. se contedo
do dilogo vlido, se retornar .F. o dilogo no fechar
quando solicitada de encerrar.
Reservado.
Bloco de cdigo, opcional. Executado quando o dilogo
inicia exibio.
Reservado.
Reservado.

bPar1
bPar2
bPar3
alCentered
abValid
lPar6
abInit
bPar8
bPar9
 Retorno:
Nenhum

- 38 ADVPL Avanado

End
 Descrio: Encerra (fecha) o dilogo.
 Sintaxe: End( )
 Parmetros:
Nenhum

 Retorno: Lgico .T. se o dilogo foi encerrado.


Lgico

Indica se o dilogo foi encerrado.

Aparncia:

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

- 39 ADVPL Avanado

TWINDOW()


Descrio: Classe de objetos do tipo dilogo principal de programa. Dever


existir apenas uma instncia deste objeto na execuo do programa.

Propriedades:
-

Herdadas das classes superiores

Construtor: New( [anTop], [anLeft],[anBottom], [anRight], [acTitle], [nPar6],


[oPar7] ,[oPar8],[oPar9], [aoParent], [lPar11], [lPar12], [anClrFore],
[anClrBack], [oPar15], [cPar16], [lPar17], [lPar18], [lPar19],
[lPar20], [alPixel] );

Parmetros:
nTop
nLeft
nBottom
nRight
cTitle
nPar6
oPar7
oPar8
oPar9
oParent
lPar11
lPar12
nClrFore
nClrText
oPar15
cPar16
lPar17
lPar18
lPar19
lPar20
lPixel

Numrico, opcional. Coordenada vertical superior em pixels


ou caracteres.
Numrico, opcional. Coordenada horizontal esquerda em
pixels ou caracteres.
Numrico, opcional. Coordenada vertical inferior em pixels
ou caracteres.
Numrico, opcional. Coordenada horizontal inferior em pixels
ou caracteres.
Caractere, opcional. Ttulo da janela.
Reservado.
Reservado.
Reservado.
Reservado.
Objeto, opcional. Janela me da janela corrente.
Reservado.
Reservado.
Numrico, opcional. Cor de fundo da janela.
Numrico, opcional. Cor do texto da janela.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Lgico, opcional. Se .T. (padro) considera coordenadas
passadas em pixels, se .F. considera caracteres.

- 40 ADVPL Avanado

Mtodos auxiliares:
Activate
 Descrio: Ativa (exibe) a janela. Chamar esse mtodo apenas uma vez.
 Sintaxe: Activate([acShow], [bPar2], [bPar3], [bPar4], [bPar5], [bPar6],
[ abInit ], [bPar8], [bPar9], [bPar10], [bPar11], [bPar12] ,[bPar13],
[bPar14], [bPar15], [abValid], [bPar17], [bPar18] ).
 Parmetros:
acShow
bPar2
bPar3
bPar4
bPar5
bPar6
abInit
bPar8
bPar9
bPar10
bPar11
bPar12
bPar13
bPar14
bPar15
abValid
bPar17
bPar18

Caracter, opcional. ICONIZED para janela iconizada ou


MAXIMIZED para janela maximizada.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Bloco de cdigo. Executado quando janela est sendo
exibida.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Reservado.
Bloco de cdigo. Executado quando a janela for solicitada
de fechar. Dever retornar .T. se o contedo da janela for
vlido, ou .F. se no. Se o bloco retornar .F. a janela no
fechar.
Reservado.
Reservado.

 Retorno:
Nenhum

End
 Descrio: Solicita encerramento da janela.
 Sintaxe: End( )
 Parmetros:
Nenhum

 Retorno: Lgico .T. se o dilogo foi encerrado.


Lgico

Indica se a janela foi encerrada.

- 41 ADVPL Avanado

Center
 Descrio: Centraliza a janela.
 Sintaxe: Center( )
 Parmetros:
Nenhum

 Retorno: Lgico .T. se o dilogo foi encerrado.


Nenhum


Aparncia:

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
.

- 42 ADVPL Avanado

- 43 -

ERROR: undefined
OFFENDING COMMAND: ~
STACK:

You might also like