Você está na página 1de 367

Adquirido por : Fabrcio Moreira da Silva

PowerBuilder 9.0 Bsico


Pensamentos

Este livro foi escrito com a finalidade de poder compartilhar alguns conhecimentos
sobre o Sybase PowerBuilder adquiridos ao longo da minha vida profissional. Uns, com
grande investimento financeiro, de estudos e pacincia; outros, repassados por
grandes profissionais que compartilham da mesma filosofia de vida.

O que importa nesta vida, mais do que ganhar
sozinho, ajudar os outros a vencer, mesmo que
isso signifique diminuir os nossos passos...

Celso S. Crtes.

Morder o fruto amargo e no cuspir
mas avisar aos outros quanto amargo,
cumprir o trato injusto e no falhar
mas avisar aos outros quanto injusto,
sofrer o esquema falso e no ceder
mas avisar aos outros quanto falso;
dizer tambm que so coisas mutveis...
E quando em muitos a noo pulsar
do amargo e injusto e falso por mudar
ento confiar gente exausta o plano
de um mundo novo e muito mais humano.
Geir Campos

"Procure ser uma pessoa de valor, em vez de
procurar ser algum de sucesso"
Albert Einstein


Celso S. Crtes brasileiro, carioca de Vila Isabel e atualmente reside na cidade de
Niteri-RJ, onde, em todos os sentidos, se apaixonou.


... Niteri! Niteri! como s formosa!
Eu me glorio de dever-te o brao!
Montanhas, vrzeas, lagos, mares, ilhas,
Prolfica Natura, cu ridente,
Lguas e lguas de prodgios tantos....


poema de Gonalves de Magalhes


Foto : Museu de Arte Contempornea (MAC) Rio de Janeiro Niteri - Projeto de : Oscar Niemeyer 1994
1 Poema extrado do livro "Geir Campos - Antologia Potica", Lo Christiano Editorial Ltda. - Rio de Janeiro, 2003, pg. 89,
organizada por Israel Pedrosa.
2 Pensamentos de Albert Einstein
PowerBuilder 9.0 Bsico


PowerBuilder 9.0 Bsico
Celso S. Crtes.





Sybase PowerBuilder marca registrada da Sybase, Inc. Copyright
Todos os direitos reservados.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico

Bibliografia :

Getting Started PowerBuilder 9
DOCUMENT ID: 37772-01-0900-01
LAST REVISED: March 2003
Copyright 1989-2003 by Sybase, Inc. All rights reserved.

Capa :

Gilberto Santana lvvg@ig.com.br

Projeto Grfico e Composio:

Celso S. Crtes

Reviso do texto:
Eduardo Olimpio Mota Fialho

Endereo eletrnico :
http://www.pb9basico.net

Email :

pb9basico@pb9basico.net

Autor :
Celso S. Crtes Analista de Sistemas Snior IBGE/DI/COADS Supervisor
de Pesquisas, Sistema Pesquisas Continuas Agropecurias
www.pca.ibge.gov.br

Usurio do Sybase PowerBuilder Enterprise desde 1993, verses
PB4,PB5,PB6,PB7,PB8 e PB9.

Desenvolvedor Java,JavaScript,VBScript,ASP,PHP

Criador e mantenedor do stio na internet sobre Sybase PowerBuilder
www.celso.cortes.nom.br, desde 1996.

Email: celso.cortes@celso.cortes.nom.br
PowerBuilder 9.0 Bsico
Agradecimentos

Pessoas inovadoras que chamam a si a misso de desbravar novas tecnologias
enfrentam sempre dois grandes desafios.

O primeiro intrnseco ao pioneirismo. Elas tm que acreditar em seus
propsitos e correr os riscos e as incertezas que acompanham todas as inovaes.

O segundo desafio est em disseminar, nas suas reas de atuao, uma nova
cultura tecnolgica que venha a se constituir no ambiente propcio para a evoluo
profissional.

Em conseqncia, cria-se um processo sinrgico onde h um crescimento
cultural tanto das Empresas como das Comunidades com as quais elas interagem.

Foi dentro deste esprito que surgiu a iniciativa de oferecer aos
desenvolvedores brasileiros um livro em portugus para iniciantes sobre a ferramenta
de desenvolvimento para MS Windows, o Sybase PowerBuilder 9.0.

Com esta edio, mais que simplesmente preencher uma lacuna existente na
bibliografia em portugus de informtica, est sendo dado um forte impulso para que
se evolua no esforo comum de criar outras publicaes sobre esta tima ferramenta
de desenvolvimento.

Agradeo ao meu amigo, Maycon J. Oleczinski que muito tem me auxiliado
tanto neste trabalho, quanto na hospedagem do stio na internet, dirigido
comunidade de PowerBuilder no Brasil, www.celso.cortes.nom.br.

Agradeo tambm a todos os participantes do nosso frum
http://groups.yahoo.com/group/powerbuilder-br/ que esto sempre a disposio com
valorosos textos.

Aos meus filhos, Daniel e Thiago, pela pacincia que me dispensaram enquanto
eu escrevia este livro.

Aos meus amigos de trabalho Jos de Souza Pinto Guedes, Analista de
Sistemas e Paulo Sergio da Silva, Desenvolvedor (Supervisor do Sistema de Coleta das
Pesquisas Contnuas Agropecurias IBGE/DI/COADS) pelo companheirismo, incentivo
e profissionalismo que compartilhamos nestes onze anos de convvio e trabalho.

E, em especial, a Eduardo Olimpio Mota Fialho, Analista de Sistemas (Sistema
Pesquisas Contnuas Agropecurias - IBGE/DI/COADS), Estatstico, Mestre em Estudos
Populacionais e Pesquisas Sociais, um grande amigo, pelo interminvel incentivo e
reviso desta obra.

Celso S. Crtes.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico
Apresentao

Sobre o livro
Este livro tem o objetivo de ajudar os iniciantes desta tima ferramenta de
desenvolvimento o PowerBuilder 9.0 em portugus.

O roteiro de desenvolvimento para essa ajuda se dar de modo aplicado.
Alguns conceitos bsicos sero explicados para em seguida desenvolvermos
uma aplicao modelo, utilizando os mdulos bsicos do PowerBuilder,
visando uma maior fixao dos seus conceitos.
Sobre o Sybase PowerBuilder 9.0
O PowerBuilder 9.0 uma ferramenta de desenvolvimento padro MS
Windows , orientada a objetos, que permite desenvolver aplicaes cliente,
cliente/ servidor e para internet.

Em verses anteriores do PowerBuilder voc poderia trabalhar s nos objetos
da sua aplicao . A partir do PowerBuilder 8.0 foi introduzido a WorkSpace
no qual voc pode trabalhar em vrias aplicaes ou objetos.

Para trabalhar com objetos, voc tem que ter uma WorkSpace aberta. Voc
s pode ter uma nica WorkSpace aberta, mas, voc incluir vrios objetos.

H dois tipos de objetos: PowerScript cliente e Objetos de Rede.

Um objeto de PowerScript pode ser qualquer aplicao que voc trabalha,
como uma aplicao cliente. Um objeto de Rede pode conter todos os
elementos que voc precisa para construir um sitio (HTML) , cdigos,
imagens, componentes, bem como definies para conexes de banco de
dados.

Para trabalhos corporativos, sem dvida, ser um grande ganho no
desenvolvimento, pois se podero compartilhar cdigos, objetos sem ter que
inclu-los a sua aplicao. Alm disso, o workspace possibilita a incluso de
vrios diretrios que podem ser abertos e linkados sua aplicao.
PowerBuilder 9.0 Bsico
Sumrio

i
Sumrio
Captulo 1


Barras de Ferramentas 1
Conhecendo as suas funes 1

Criando a WORKSPACE 4

Criando uma aplicao 5

Captulo 2


Criando uma WINDOW (janela) 6
Configurando as barras de menu 8
Template Properties 9
Salvando a WINDOW 15

Captulo 3


Criando um menu 16

Escrevendo em PowerScript 19

Como definir tipos de janelas 22

Uso dos tipos de janela 23

Tipos de controle 24

Captulo 4


Implementao da Herana de Janelas 29

Captulo 5


Projetando o menu

31
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico
Sumrio

ii
Sumrio
Captulo 6


A Linguagem PowerScript 36
Eventos 37
Ambiente de Script 38
A Linguagem PowerScript 39
Fundamentos da Linguagem PowerScript 41

Variveis 41

Tipos de Dados 42

Escopo de Variveis 44

Encapsulamento 45

Objetos e Controle 46

Execuo de uma funo por meio da notao de ponto 46

Estruturas 48

Arrays 50

Arrays multidimensionais 51

Arrays variveis 51

Dados de objetos 52

Operadores 52
Operadores Aritmticos 52
Operadores binrios 53
Operadores unrios 53
Operadores de combinao 54
Operador de string 54
Operadores lgicos 54
Operadores relacionais 55

Operadores de conjuno
55

Procedncia e Parnteses 56

Comandos do PowerBuilder 56
O Uso da estrutura IF 56
Estrutura Choose Case 57
Estrutura de iterao(Loops) 58
Estrutura de Do Loop 58
Estrutura For Next 59
PowerBuilder 9.0 Bsico
Sumrio

iii
Sumrio
Captulo 7


Transaes de Bancos de Dados 60
Definindo uma transao 61
Montando a transao em PowerScript 61

O uso do SQL no PowerBuilder 63

Captulo 8


DataWindow 67
Objeto DataWindow 67
Fonte de dados 68
Interface inteligente 68
Interface com o usurio 68
Como criar um objeto DataWindow 69
Fontes de dados 70
SQL Select 71
Query 71
Stored Procedure 71
External 71
Montando uma DataWindow com SQL Select 72
Template de SQL 74
Argumentos 75
Personalizando sua DataWindow 77
Composite 78
Crosstab (planilha) 79
FreeForm (Formulrio livre) 80
Graph (Grfico) 81
Grid (Grade) 82
Group(Grupo) 83
Label (Etiquetas) 84
N-up (Mltiplas linhas) 84
Ol 2.0 85
RichText 85
Tabular 86

Cores e Bodas 87
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico
Sumrio

iv
Sumrio
Captulo 9


Recuperao de dados a partir de uma DataWindow 88

Funes para o controle DataWindow 90

Montando um Objeto DataWindow 105

Aperfeioando a visualizao da DataWindow 110

Vinculando duas DataWindow 114

Vinculando objeto DataWindow a um controle DataWindow 123

Incluindo controle DataWindow a Window (janela) 123
Incluindo parmetros de atualizao 130
Rotina de incluso 131
Rotina de alterao 137
Rotina de Excluso 144

Captulo 10


DataWindow : Tcnicas avanadas
Buffers Internos 147
Detectar a validao 148
Detectar o Tipo de dado 148
Detectar regras de validao 148
Detectar mudanas no item 148
Usando Filtros 150
Classificando 151
Clusula Where para Update e Delete 153
Modify e Describe 155
Funo Evaluate( ) 160
Propriedade Object 162
Parametrizando com a clusula DATA 165

Captulo 11


PipeLine de dados 167

Captulo 12


Criando Relatrios 175
PowerBuilder 9.0 Bsico
Sumrio

v
Sumrio
Captulo 13


Grficos 197

Captulo 14


XML
Conceito 213
Exportando DataWindow (DataWindow Export) 228
Importando um padro XML para a DataWindow 239

Captulo 15


Preparando sua aplicao final 249
Criando o objeto Project 249
Criando o arquivo executvel 254

Captulo 16


Criando uma aplicao Web 256
Criando um stio WEB com PowerDynamo 256
Captulo 17


Criando a primeira pgina Web 269
Utilizando 4GL Web/JSP Page wizard 270

Guia de Referncia

Nomenclaturas 293
Atributos e Eventos 296
Dados Enumerados 316
Adquirido por : Fabrcio Moreira da Silva
Captulo 1

Barras de Ferramentas
Conhecendo as suas funes
Criando a WORKSPACE
Criando uma aplicao
PowerBuilder 9.0 Bsico Captulo 1 1

Barras de Ferramentas: PowerBar1
A barra de ferramenta PowerBar1 a barra principal do PowerBuilder.Nessa
barra podemos definir e selecionar os tipos de objetos da nossa aplicao.

Em qualquer local da PowerBar1, clicando-se com o boto esquerdo do mouse
pode-se customizar suas funes, incluindo ou inibindo seus mdulos.

A barra acima um padro que aparecer na primeira vez que voc iniciar o
PowerBuilder e caso seja customizada as alteraes sero mantidas.

Conhecendo as suas funes

SEARCH - Ativa o tpico AJUDA no modo SEARCH (pesquisa)
HELP - Ativa o tpico AJUDA no modo padro.
NEW - Ativa o template de habilitao dos objetos do PowerBuilder,
como WorkSpace, Target, PB Object, Web, DataWindow, DataBase, Project e
Tool. Iremos estudar cada um desses modulo descrito acima.
OPEN Abre um objeto previamente salvo, como uma DataWindow,
Menu ou aplicao.

SYTEM TREE Mostra ou esconde a janela de descrio do seu
projeto.
OUTPUT Mostra ou esconde a janela de informaes de sada do seu
projeto.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 1 2

Conhecendo as suas funes

NEXT ERROR/MESSAGE Exibe a prxima mensagem de erro da
aplicao (se existir).

PREVIOU ERROR/MESSAGE Exibe a mensagem de erro anterior
(se existir).

SYSTEM OPTION Ativa o template de configurao pessoal da sua
mscara de trabalho.
TO-DO-LIST Monta uma lista de pendncias
BROWSER Ativa o template de viso dos objetos da WorkSpace,
com suas propriedades.
CLIP WINDOW Abre o template CLIP. Serve como um bloco de
notas para sua aplicao possibilitando copiar e colar.
LIBRARY Abre o template tipo EXPLORER para seleo de
aplicao ou objetos.

DB PROFILE Abre o template que possibilita configurar o tipo de
conexo e a base de dados qual seu projeto estar associado.
EASERVER PROFILE Abre o template que possibilita configurar o
tipo de conexo com o servidor de aplicao EASERVER.
DATA BASE Abre o template de consulta, edio e alterao das
bases de dados associadas ao DB PROFILE.
PowerBuilder 9.0 Bsico Captulo 1 3

Conhecendo as suas funes
FILE EDITOR Abre o template de edio de arquivo. Com esse
editor possvel criar qualquer funo ou objetos para serem utilizados pelo
POWERBUILDER.
DEBUG Abre o template para auxilio a depurao de sua aplicao.
RUN Ao clicar neste boto o POWERBUILDER ir executar sua
aplicao em modo interpretado.

SELECT and RUN Executa a aplicao selecionada, em modo
interpretado.
EXIT Sair do POWERBUILDER.
Conhecendo as funes bsicas da POWERBAR1 podemos iniciar a nossa
primeira aplicao. Desse modo iremos, passo a passo conhecendo o
PowerBuilder 9.0.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 1 4

Criando a WORKSPACE
Clique no boto NEW e selecione WORKSPACE. Clique em OK.
Selecione o diretrio onde voc ira salvar a WorkSpace e d um nome para
ela (para acompanhar corretamente a aplicao neste livro atribua o nome
exemplo_01 e clique em salvar).

Se tudo deu certo no template Sytem Tree aparecer :



PowerBuilder 9.0 Bsico Captulo 1 5

Criando uma aplicao.
Clique em NEW e selecione Target em seguida Application e
clique em OK.

Aparecer a tela de definio da sua aplicao.

Em Application Name digite : exemplo1.

Em Library selecione o diretrio onde voc salvou a WorkSpace.

Em Target repita o procedimento anterior.

Clique em Finish

OBS: No necessariamente voc precisa atribuir os mesmos diretrios na
criao de uma aplicao. Neste caso fizemos isso, para facilitar o exemplo.

Se tudo deu certo voc visualizar :


Agora que estamos com a WorkSpace e a Aplicao criada. Vamos criar nosso
primeiro objeto.
Adquirido por : Fabrcio Moreira da Silva

Captulo 2
Criando uma WINDOW (janela)
Configurando as barras de menu
Template Properties
Salvando a WINDOW (janela)


PowerBuilder 9.0 Bsico Captulo 2 6

CRIANDO UMA WINDOW(JANELA)
Clique em NEW selecione PB Object, selecione o cone Window
conforme figura abaixo:

E clique em OK.

Com este procedimento, voc acaba de criar sua primeira Window (janela) e
poder notar que trs novas barras de trabalho surgiram assim como um
novo template denominado Properties direita. Note que, ao centro, est
a window que voc criou, e logo abaixo existem cinco abas de tabela com
as descries: Layout, Open, Event List, Function List e Declare
Instance Variables.

Open : Abre o template dos eventos padro do objeto assim como o quadro
de funes e de declarao de variveis e funes compartilhadas.

Event List : Como o prprio nome diz, lista os eventos padro da window.

Function List :Abre o template das funes padro da window.

Declare Instance Variables : Abre o template para as declaraes das
variveis e funes compartilhadas que podem ser de instncia ou global.

Instancia Pertence ao objeto e s estar disponvel se o objeto estiver
ATIVO.
Global Pertence APLICAO

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 2 7

CRIANDO UMA WINDOW (JANELA)

Para uma visualizao mais limpa, clique em OUTPUT para inibir o
template de OUTPUT e clique em CLIP WINDOW para inibir o
template de trabalho.

Voc agora tem uma viso mais limpa da sua WINDOW(janela).




PowerBuilder 9.0 Bsico Captulo 2 8

CRIANDO UMA WINDOW (JANELA)
Configurando as barras de menu

Coloque o mouse sobre uma barra de menu e clique no boto esquerdo. Um
menu-popup aparecer conforme a figura abaixo:



A PowerBar1 a barra de trabalho do POWERBUIDER. As barras
PainterBarX so as barras de trabalho do objeto que voc selecionou para
trabalhar - neste caso, o objeto WINDOW. Clique em cada opo do menu-
popup para conhecer as barras. Voc pode tambm definir o seu
posicionamento, colocando o mouse sobre a barra e clicando nas opes de
posicionamento: Left, Top, Right, Botton ou Floating.

O PowerBuilder possibilita personalizar a sua barra, incluindo ou excluindo
itens que sero exibidos. Posicione o mouse na barra, clique no boto
esquerdo, selecione Customize e utilize o processo de arrastar e soltar.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 2 9

CRIANDO UMA WINDOW (JANELA)

Template Properties
Desvendando as Propriedades da janela que acabamos de criar.

Title : O ttulo que aparecer no topo da janela que voc est criando.

Tag : Uma descrio para a sua janela ou um alerta ao utiliz-la. Poder
conter qualquer texto e poder ser acessada em tempo de execuo atravs,
por exemplo, da funo do PowerBuilder SetMicroHelp que veremos mais
adiante.

MenuName : O PowerBuilder disponibiliza 6 (seis) tipos de janela, a saber:
Child, Main, MDI, MDIHelp, Popup e Response. Somente as janelas Main, MDI,
MDIHelp e Popup podem possuir barras de menus associados. Para atribuir
uma barra de menu a uma janela primeiro voc ter que cri-la.

Os checkbox a seguir definem o estado da sua janela assim como os itens
que voc quer exibir na mesma.

Visible: Define se a sua janela ter o status de estar visvel ou invisvel ao
usurio.
Enable: Define se a sua janela estar ativa ou inativa para o usurio.
Titlebar: Define se a sua janela ter uma barra de titulo.
Controlmenu: Define se a sua janela ter os itens na lateral
direita da janela.
MaxBox: Define se a sua janela ter no controlmenu.

MinBox : Define se a sua janela ter no controlmenu.

ClientEdge: Define se a sua janela apresentar um padro de apresentao
chanfrado.

PowerBuilder 9.0 Bsico Captulo 2 10

CRIANDO UMA WINDOW (JANELA)

Center : Centraliza automaticamente a sua janela.

Resizable: Ativa a permisso de redimensionar a janela em modo de
execuso.

WindowType: Define o tipo da janela.

Template Properties

WindowState: Define o modo de apresentao em modo de execuo:

Normal do mesmo tamanho que foi definido no
desenvolvimento.

Maximized Ser redimensionada para o tamanho mximo da
resoluo do monitor em modo de execuo.

Minimized Ativar a janela minimizada, colocando-a na barra de
ferramenta do MS Windows.

BackColor: Define a cor de fundo da sua janela.

Icon: Define o cone(imagem) que voc quer associar a sua janela
o cone padro. Voc pode associar qualquer imagem padro .ICO. O
PowerBuilder disponibiliza vrios cones.

NOTA : Alguns itens no foram descritos, devido a sua complexidade, sero
vistos mais frente.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 2 11

CRIANDO UMA WINDOW (JANELA)


Com a janela aberta, e agora que conhecemos algumas de suas propriedades,
vamos configurar-la. Assim comearemos nosso projeto, exemplo1.
No template properties, na aba GENERAL digite :

Tiltle : Exemplo 01
Tag : Janela principal do exemplo 01
MenuName : Deixe em branco

Marque as caixas de verificao conforme as figuras abaixo:



PowerBuilder 9.0 Bsico Captulo 2 12

CRIANDO UMA WINDOW(JANELA)

WindowType : Selecione MAIN
WindowState : Selecione Normal
BackColor : Selecione Button Face
Icon: Selecione um cone a sua escolha

Agora clique em PREVIEW e veja como ficar a sua janela. Para fechar
e voltar ao editor clique em na janela que voc criou.

Podemos notar que o tamanho da janela no est no padro. Para uma janela
que ser a principal do nosso primeiro projeto voc pode redimensiona-la
manualmente. Para isto, na barra de rolagem da janela procurar o seu
vrtice, verificar a mudana do cone do mouse, pressionar o boto direito do
mouse e arrastar para o tamanho que lhe satisfizer. Veja a figura abaixo:


ou se voc sabe o tamanho que sua janela dever ficar, clique na aba
Other do template Properties. Se a aba Other no estiver visvel
clique na barra de rolagem (parte superior direita do template Properties

nas setinhas ai ao lado) e a ela aparecer.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 2 13

CRIANDO UMA WINDOW (JANELA)

Ao selecionar o item Other nos deparamos com novos itens a serem
configurados. Ento vamos entend-los para poder configur-los com
segurana.


X Posio inicial na margem
esquerda do seu monitor.

Y Posio inicial que sua janela
ocupar de cima para baixo.

OBS : As duas opes s tero
efeito se a opo Center estiver
desmarcada.

Width Define a largura da sua
janela.

Height Define a altura da sua
janela.

OBS: As opes s tero efeito, se a
opo Normal em WindowState
estiver selecionada.

Pointer Define que o ponteiro do
mouse ser apresentado quando o
mouse passear pela janela.



O padro apresentado acima estabelece uma tomada completa do
monitor, padro 800x600, resoluo que aconselho utilizar, devido a
quantidade de informaes que o PowerBuilder, assim como outros
Front-End, hoje disponibilizam.

PowerBuilder 9.0 Bsico Captulo 2 14

CRIANDO UMA WINDOW(JANELA)

J que comeamos a navegar no template Properties, iremos ver as suas
outras propriedades.

Clique na aba Scroll.

HscrollBar- Ativa a barra de rolagem horizontal
na sua janela.

VscrollBar Ativa a barra de rolagem vertical
na sua janela.

UnitsPerLine, ColunmPerPage,
LinesPerPage Definem o modo de como sua
janela ira deslizar, 0 define como padro o
mesmo do MS Windows.





Clique agora na aba ToolBar.


Quando anexamos um menu em nossa
aplicao, podemos definir automaticamente o
seu posicionamento assim como deix-lo visvel,
ou no. Esse procedimento pode ser padro,
configurando-se a propriedade Toolbar ou em
modo de execuo.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 2 15

CRIANDO UMA WINDOW (JANELA)

Note que a maioria das propriedades de uma janela no PowerBuilder, j esta
configurada para a utilizao do padro MS Windows, o que facilita bastante,
voc s ter que configurar itens a qual queira personalizar sua aplicao.

Nesta primeira vez, percorremos todos os passos para que pudssemos
conhecer as caractersticas e propriedades de uma janela no POWERBUILDER,
da prxima vez, ser muito mais tranqilo.

SALVANDO A WINDOW (JANELA)

Clique em SAVE e preencha :

Windows : w_001
Comments: Janela principal do exemplo 1
Clique em OK e sua Janela j estar criada e anexada a aplicao
exemplo1.





Captulo 3

Criando um menu
Escrevendo em PowerScript
Como definir tipos de janelas
Uso dos tipos de janela
Tipos de controle
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

16
CRIANDO UM MENU

A criao de objetos no PowerBuilder segue sempre o mesmo padro. A
diferena recai na particularidade das propriedades de cada objeto que se
queira criar. A criao de um menu segue os passos da criao de uma
WINDOW (JANELA). Clique em NEW, na aba PB Object e selecione
.

O Template de criao do MENU se abrir:



Coloque o mouse sobre o texto untitled0, clique no boto direito e
selecione a opo do menu-popup Insert Submenu Item.

O Template de Properties se abrir no lado esquerdo. Ento deveremos
montar o nosso menu preenchendo os campos a seguir.


PowerBuilder 9.0 Bsico Captulo 3

17
CRIANDO UM MENU





Clique em untitled0 e com o boto esquerdo do mouse selecione a opo do
menu-popup Insert Submenu Item para inserir outro item no menu.
Troque em Name para m_item02, Text para Item 02, MicroHelp para
Item 01 esta em foco e Tag para item 01. Ficou fcil no?

No final dessa operao o seu quadro de menu ficar assim.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

18
CRIANDO UM MENU

Clique em SAVE e preencha o quadro Menu com m_menu01 e o
quadro Comments com Menu 01 da aplicao.

Clique em OK.

Seu menu j foi criado e salvo na aplicao exemplo1.




D um duplo clique no item w_001 no template TREEVIEW esquerda.

Sua Janela w_001 se abrir.

No template Properties direita, no item MenuName, clique no boto
de seleo , e selecione o menu que acabamos de

criar, m_menu01. Pronto, nossa janela j possui um menu.


Agora clique em PREVIEW e teste.

PowerBuilder 9.0 Bsico Captulo 3

19
Escrevendo em PowerScript.
At agora montamos nossa Janela e adicionamos um menu sem
funcionalidade. Agora, vamos escrever nosso primeiro cdigo em
PowerScript, O PowerScript a linguagem que o PowerBuilder aceita.
Assim poderemos escrever comandos para que o PowerBuilder os execute.

D um duplo clique em no template TREEVIEW, esquerda,
uma janela de Script aparecer no centro.

A traduo desta tela : A aplicao exemplo1, este Script est direcionado
para o evento open e este evento no prev cdigo de retorno.

Agora digite conforme a tela abaixo:

Clique em SAVE, depois em RUN e veja-a sua aplicao executando.

Para fechar a aplicao clique em .
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

20
Escrevendo em PowerScript.

Para ficar mais fcil, e treinarmos um pouco mais vamos selecionar no
TREEVIEW esquerda, com um duplo clique, m_menu01.

O objeto menu ser editado. Clique com o boto esquerdo do mouse sobre o
item m_menu01 e selecione Insert Submenu Item.

Na opo que se abriu ao final da lista de itens digite Sair.

No template Properties a direita, no item MicroHelp, digite Sair do
exemplo 01 e repita o texto para o item Tag.

D um duplo clique no item Sair no painter Script logo abaixo. Repare
que j esta selecionado o evento clicked. Este evento ser sempre ativado
quando se clicar na opo Sair e ento vamos escrever em PowerScript o
comando para sair da aplicao.
PowerBuilder 9.0 Bsico Captulo 3

21
Escrevendo em PowerScript.

Digite : Close(w_001).

Salve a aplicao Save e clique em Run para executar e testar. Para
fechar a aplicao, clique em Sair do menu.


Analisando :
At aqui voc criou uma aplicao e incluiu uma window. A esta window,
acrescentou um objeto menu e a este objeto menu, incluiu itens e viu como
programar esses itens de modo que possa executar procedimentos diversos
ao ser selecionado. Por enquanto s executamos o comando closed. Outros
comandos veremos adiante.

Para continuar com o nosso exemplo, precisaremos entender um pouco
mais sobre a window, que a partir de agora iremos chamar de
janela. Nos prximos itens, iremos :

x Delinear e fazer a distino entre diferentes tipos de janela;
x Definir atributos de janela;
x Adicionar e implementar controles de janela;
x Implementar a herana de janelas.


J vimos um pouco dos atributos de janela quando w_001 foi definida.
Agora, veremos outros tipos de janela e o motivo pelo qual voc deve
utiliz-las.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

22
Como definir tipos de janelas

Janelas MDI (Multiple Document Interface).

Dificilmenta sua aplicao no apresentar uma tela principal. Normalmente
utilizamos o padro MDI como tela principal que apresenta dos modelos MDI e
MDIhelp. A MDIhelp normalmente mais utilizada pois o microhelp, aquela
barra na inferior da janela, uma excelente opo para exibio de
mensagens resumidas para os usurios do seu aplicativo, MDIhelp tem um
aspecto mais profissional do que as janelas independentes.

Janelas Popup (Instantnea)

As janelas instantneas so abertas normalmente a partir do interior de outra
janela, Embora esta janela no possa ser encoberta por sua janela superior,
ela pode se estender alm daqueles limites da janela superior. Quando a
janela superior fechada ou minimizada a janela instantnea tambm
fechada, ou minimizada.

Janelas Child (filhas)

As janelas filhas tambm so abertas a partir de outra janela, assim como as
janelas instantneas elas possuem uma janela superior, mas com alguns
conceitos fundamentais.

x Nunca podem existir fora da janela superior;
x Nunca so consideradas ativas;
x Quando maximizadas, s preenchem o espao da janela superior;
x No possuem menus.

Janelas Response (Resposta)

As janelas de resposta so um tipo de janela instantnea. Elas diferem das
janelas pelo fato de serem modais aplicao. Nenhuma outra janela na
aplicao pode ser acessada enquanto a janela de resposta no for fechada.

As janelas de resposta so muitas vezes chamadas de caixa de dilogos. Voc
ir utilizar com freqncia essas janelas de resposta.

PowerBuilder 9.0 Bsico Captulo 3

23
Uso dos tipos de janela

MDI e MDI com microhelp

Um MDI uma janela(quadro) que contm outras janelas (folhas). Voc s
tem um quadro por aplicao mas pode ter muitas folhas dentro do seu
quadro.

Em qualquer aplicao complexa e em geral qualquer aplicao simples do MS
WIndows voc deve empregar um quadro MDI. A MDI microhelp funciona bem
como um meio fcil de transmitir uma mensagem para o usurio, sem
interromper a aplicao.

Incluso de controles de janela

Um controle de janela qualquer elemento que voc insere em uma janela. A
quase totalidade da PainterBar de janelas contm diferentes controles que
voc pode colocar na sua janela. Os controles so necessrios para toda a
janela. Sem controles uma janela simplesmente um retngulo sem qualquer
funcionalidade, que exibido na sua tela.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

24
Tipos de controle

Existem diversos tipos diferentes de controles, tais como :

Boto de comandos
O boto de comando um objeto que tem por finalidade executar processos
quando clicados. Quando so acionados aparecem como se fossem
empurrados enquanto o boto do mouse se encontra pressionado. Para inserir
um boto de comando na sua janela, d um clique no cone Command
Button na barra PowerBar1 e depois clique no local em que deve ficar o boto
de comando no interior da janela que voc esta definindo.

Boto de figura

O boto de figura semelhante ao boto de comando, exceto pelo fato de
terem figuras sobre eles. Para colocar na sua janela um controle boto de
figura, clique no cone Picture Button e depois clique no local em que o
boto de figura deve estar posicionado na janela que voc esta definindo. Nas
suas propriedades, direita, no item PictureName, voc pode selecionar a
figura que ele dever exibir.

Texto esttico

O Texto esttico uma frase ou descrio exibida na sua janela. Para inserir
um controle de texto na sua janela clique no cone Static Text, e depois
um clique no local em que deve aparecer o texto esttico. Atravs do
template propriedades direita no item Text voc tem a possibilidade de
digitar o texto que dever ser exibido na janela que est sendo definida.

PowerBuilder 9.0 Bsico Captulo 3

25
Tipos de controle

DataWindow

Para acrescentar um controle DataWindow sua janela, clique no cone
DataWindows control e em seguida, clique no local em que a DataWindow
deve aparecer no interior da janela que voc esta definindo.

A DataWindow a resposta do PowerBuilder s telas de entrada de dados. A
DataWindow de uso muito prtico quando voc est tentando unir sua
aplicao a um banco de dados, alm disto, so fundamentais para o
desenvolvimento do PowerBuilder. A DataWindow tambm apresenta vrios
recursos avanados de edio.

Edio em vrias linhas


Para inserir na sua janela um controle de edio em vrias linhas, clique sobre
MultLineEdit , e depois d um clique no local em que o controle de
edio em vrias linhas deve ficar posicionado na janela que voc est
definindo.

Diferente dos controles de edio em nica linha (veremos a seguir), que s
permitem a introduo ou visualizao de uma linha de texto, o controle de
edio em vrias linhas um controle que permite a digitao pelo usurio de
diversas linhas de texto. A edio em vrias linhas usada com freqncia
nos comentrios de forma livre. Pelo fato de incorporarem muitos recursos de
edio, as edies em vrias linhas so indispensveis durante a introduo
de grandes quantidades de dados em campos. Entretanto, os controles de
edio em vrias linhas no so utilizados com freqncia pois possvel
conseguir maior funcionalidade atravs de uma coluna DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

26
Tipos de controle

Figuras

Para inserir na sua janela um controle de figura, clique sobre Picture
Control , e depois d um clique no local em que a figura deve ficar
posicionado na janela que voc esta definindo.

As Figuras so controles que fazem referncia a mapas de bits que sero
exibidos em uma janela. Da mesma forma que o texto esttico, as figuras so
utilizadas apenas para a exibio de informaes, a partir da verso 7.0, links
da web podem ser associados atravs dos Picture HiperLink control que tem
as mesmas propriedades da Picture e mais o HiperLink.

Edio em uma nica linha

Para inserir na sua janela um controle de edio em uma nica linha, clique
sobre SingleLineEdite Control , e depois clique no local em que edio
em uma nica linha deve ficar posicionado na janela que voc esta definindo.

Os controles de edio em uma nica linha so campos de entrada de dados
que voc pode inserir em uma janela com o objetivo de digitar uma linha de
texto isolada. Os controles de edio em uma nica linha no so usados
normalmente, porque a maior parte de entrada de dados realizada em uma
DataWindow.

Mscara de Edio


Para inserir na sua janela um controle de edio em uma nica linha, clique
sobre EditMask Control , e depois d um clique no local em que mscara
de edio deve ficar posicionada na janela que voc esta definindo.

As mscaras de edio constituem um tipo de edio em uma nica linha e
permitem voc especificar a formatao necessria no momento da entrada.
Essa formatao definida quando voc acrescenta inicialmente o controle
mscara de edio por meio do template Properties, Mask.
PowerBuilder 9.0 Bsico Captulo 3

27
Tipos de controle

Caixa de listagem

Para inserir na sua janela uma controle de caixa de listagem, clique sobre
ListBox control , e depois clique no local em que a caixa de listagem
deve ficar posicionada na janela que voc est definindo.

A caixa de listagem constitui um tipo de edio em uma nica linha e oferece
ao usurio diversas opes para a resposta correta. Podem ser usadas barras
de rolagem caso exista uma quantidade muito grande de opes, como ocorre
com muitos outros controles de janela que se relacionam com entrada de
dados.


Caixa de verificao

Para inserir na sua janela uma controle de caixa de verificao, clique sobre
CheckBox control , e depois clique no local em que a caixa de verificao
deve ficar posicionada na janela que voc est definindo.

As caixas de verificao funcionam com questes do tipo sim-no que podem
ser ativadas ou desativadas. Internamente, uma tabela de cdigos descreve o
valor de dados retornado quando uma caixa de verificao ativada ou
desativada.


Botes de rdio e Caixas de grupo

Para inserir na sua janela uma controle de caixa de verificao clique sobre
RadioButton control , e depois clique no local em que o boto de rdio
deve ficar posicionado na janela que voc esta definindo.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 3

28
Tipos de controle

Para inserir na sua janela um controle caixa de grupo, clique sobre o cone
GroupBox Control e, em seguida, um clique no local em que a caixa de
grupo deve ser colocado no interior da janela que esta sendo definida.

Um boto de rdio um tipo de caixa de verificao. Vrios botes de rdio
so agrupados no interior de uma caixa de grupo. Esses botes de rdio,
assim como as caixas de verificao, podem estar ativos ou inativos. Somente
um boto de rdio no interior de uma caixa de grupo pode ser ativado de
cada vez.

Manipulao de controles e janelas
Muitas vezes voc desejar manipular seus controles. Atravs de um clique
simples sobre um controle ser exibido o template de propriedades na lateral
direita. Com um clique com o boto direito do mouse sobre o controle far
surgir um menu de opes possveis para essse controle.

Ordem e tabulao

Voc pode utilizar o teclado em lugar do mouse. Para se deslocar entre os
controles, o usurio tem de pressionar a tecla Tab Entretanto a ordem de
tabulao padro dos controles de janela a ordem na qual esses controles
so acrescentados.

Para alterar a ordem de tabulao em uma janela, abra o menu
Format e escolha Tab Order. Essa opo exibe a ordem de tabulao de
cada controle, incrementada pelo valor de 10. Se quiser mudar a ordem de
tabulao simplesmente altere a numerao dos controles. Em seguida
escolha de novo Format e Tab Order, a fim de desativar a ordem de
tabulao.


Captulo 4
Implementao da Herana de Janelas
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 4 29

Implementao da Herana de Janelas

A herana o modo pelo qual usamos nossos prottipos no PowerBuilder.
Atravs da herana o objeto filho obtm todos os controles, powerscript e
atributos do objeto ancestral. Quaisquer mudanas adicionais efetuadas no
objeto ancestral se refletem automaticamente no objeto filho. O Objeto filho
pode ento acrescentar outras caractersticas ou modificar as que herdaram.
As janelas e os menus podem ser herdados.

Para entender melhor vamos criar uma janela herana da janela w_001 do
nosso exemplo.

Com o PowerBuilder aberto, no TREEVIEW esquerda, clique com o boto
esquerdo do mouse sobre o objeto Window w_001. No menu-popup que se
abrir, selecione Inherit e uma nova janela se abrir. Clique em Save e d
como nome w_002.

Repare no ttulo do template da window que voc acabou de criar:

A janela w_002 foi criada como uma herana da w_001.

Toda mudana que voc implementar na w_001 ser herdada pela w_002 e
esta poder ter objetos que s pertenam a ela prpria. Essa funcionalidade
de herana, assim como a DataWindow, faz a grande diferena no desenrolar
de um projeto com PowerBuilder.

PowerBuilder 9.0 Bsico Captulo 4 30

Implementao da Herana de Janelas

Para o nosso exemplo ficar mais claro, vamos agora abrir a nova janela do
nosso projeto exemplo, chamado exemplo1.

No TREEVIEW esquerda d um duplo clique no objeto w_001, template
"propriedade" item "WindowType" e selecione "mdihelp!". Salve a w_001.

No TREEVIEW esquerda d um duplo clique no objeto w_002, template
"propriedade" item "WindowType" e selecione "main!", no item "MenuName".
Apague o "m_menu01" e salve a w_002.

No TREEVIEW esquerda d um duplo clique no objeto menu m_menu01.

Selecione com um clique o item do objeto menu Item 01 no template
"Script". Note que j se encontra selecionado o evento "Clicked", e ento
escreva :

OpenSheet(w_002, w_001, 2, Layered!)
Salve o m_menu01.

Execute a aplicao, clique na opo "Item 01" e veja a janela w_002 abrir
dentro da janela w_001.

Para uma melhor visualizao selecione no TREEVIEW esquerda a
janela w_001, e no template "propriedade" selecione a opo
"ClientEdge". Salve a janela w_001.

Execute a aplicao.


Adquirido por : Fabrcio Moreira da Silva
Captulo 5
Projetando o menu
PowerBuilder 9.0 Bsico Captulo 5

31
Projetando o menu.

O menu constitui uma parte importante de qualquer aplicao, seja ela
padro MS Windows, Linux, Solares, MAC ou outro qualquer. Atravs do
menu disparamos eventos, emitimos comandos e controlamos o fluxo de uma
aplicao.

Voc j foi apresentado aos menus, quando m_menu01 foi criado na
parte 03 deste manual. Agora voc ter a possibilidade de aumentar
seus conhecimentos e compreenso dos menus.

Antes de projetar o menu importante ter uma idia da aparncia que voc
deseja para ele. Usando uma planilha eletrnica, uma tabela de processador
de texto, ou uma folha de papel esquematize aquilo que dever estar contido
em todos os menus. Pode ser til observar outras aplicaes a fim de
examinar as opes que elas apresentam nos seus menus.

Dica : Para manter a coerncia dos menus, desenvolva um nico com todas
as suas opes em vez de projetar vrios menus diferentes. Este menu
mestre ser usado como layout bsico para outros menus.

No menu m_menu01 desenvolvido at agora implementamos os itens:
Item 01, Item 02 e Sair. Para prosseguir com o nosso exemplo devemos
implementar esse menu.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 5

32
Projetando o menu.

Edite o menu m_menu01 e selecione com um duplo clique Item 01, as
propriedades. Selecione Text e digite no lugar de Item 01 &Arquivo. O
caractere & na frente de um caractere qualquer no campo Text das
propriedades do menu incluir automaticamente um atalho para esse item no
menu, Como conseqncia ao rodarmos a nossa aplicao e pressionarmos a
tecla ALT junto com a letra A de Arquivo, teremos acesso imediato aos
itens desse item do menu.

Cada item deve ter a sua prpria tecla de atalho. Definindo A para o item
Arquivo e a mesma letra A para um outro item qualquer, sempre ir ser
acionado o primeiro item encontrado. Note que a palavra Arquivo esta com
a letra A sublinhada, informando que essa letra o atalho para esse item.
Caso queira trocar para uma outra letra do item, basta colocar o caractere
& na frente da letra que voc quer que seja o atalho.

Apague nesse novo item Arquivo o item MicroHelp.

Coloque o mouse sobre esse novo item Arquivo e com o boto direito do
mouse selecione, no menu-popup, Insert Submenu Item. Nesse novo
quadro digite &Fechar e no Item MicroHelp digite Fecha a janela
corrente.

Repita a operao, crie um novo quadro e digite &Sair. No item MicroHelp
digite, Fechar a aplicao.

D um duplo clique nesse item e no template de eventos digite, no evento
Clicked : Close (w_001)

Agora apague o item Sair, o ltimo item do nosso antigo menu.

D um duplo clique no item Arquivo e apague o comando PowerScript do
evento clicked. Salve o menu e execute a aplicao quando ento teremos.

PowerBuilder 9.0 Bsico Captulo 5

33
Projetando o menu.

Selecione o item Arquivo :


Clique em Sair ou tecle Alt + S para sair da aplicao.

Ainda no item Arquivo pode-se implementar um pouco mais
e tornar o menu mais agradvel visualmente acrescentando
uma barra de ferramentas, ToolBar, com figuras.


D um clique em Fechar, e no template propriedades selecione a aba
ToolBar.

Em ToolBarItemText digite Fechar.

No Item ToolbarItemName selecione CheckBox!. Voc pode selecionar
qualquer cone, mas para que tenhamos uma coerncia no nosso projeto
aconselho que siga o parametrizado.

No Item ToolbarItemDownName voc pode selecionar o cone que ir ser
exibido quando a figura estiver sendo pressionada com o mouse. No nosso
exemplo deixe em branco.
No Item ToolbarItemVisible verifique se esta marcado . Este item
marcado indica que a Toolbar estar visvel.

No Item ToolbarItemDown deixe desmarcado . Este item sem
marcao indica que o ToolbarItemName selecionado aparecer sempre,
como se estivesse pressionado.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 5

34
Projetando o menu.

No item ToolbarItemSpace mantenha 0 esse item define a quantidade de
espaos que dever existir entre os cones.

No item ToolbarItemOrder mantenha 0 esse item define a ordem que o
cone dever aparecer na janela.

O Item ToolbarItemBarIndex define a ordem que a Toolbar ir aparecer
quando no seu projeto existir mais de uma Toolbar.

No Item Object Type selecione Menu. A opo Menu Cascate para o
caso de seu menu ter subItens. Ser visto adiante.


Repetiremos o mesmo processo para o item "Sair".


D um clique em Sair e no template propriedades selecione a aba
ToolBar.

Em ToolBarItemText digite Sair.

No Item ToolbarItemName selecione Exit!. Voc pode selecionar qualquer
cone, mas para que tenhamos uma coerncia no nosso projeto aconselho que
siga o parametrizado.

No Item ToolbarItemDownName, voc pode selecionar o cone que ir ser
exibido quando a figura estiver sendo pressionada com o mouse. No nosso
exemplo, deixe em branco.

No Item ToolbarItemVisible, verifique se est marcado, . Esse item
indica que a Toolbar estar visvel.

No Item ToolbarItemDown deixe desmarcado . Esse item sem
marcao indica que o ToolbarItemName selecionado aparecer sempre
como se estivesse pressionado.
PowerBuilder 9.0 Bsico Captulo 5

35
Projetando o menu

No item ToolbarItemSpace mantenha 0. Esse item define a quantidade de
espaos que dever existir entre os cones.

No item ToolbarItemOrder mantenha 0. Esse item define a ordem que o
cone dever aparecer na janela.

No Item ToolbarItemBarIndex define a ordem que a Toolbar ir aparecer
quando no seu projeto existir mais de uma Toolbar.

No Item Object Type, selecione Menu, a opo Menu Cascate para o
caso de seu menu ter subItens. Ser visto adiante.

Os primeiros passos para montagem do menu principal da aplicao 01 j
foram dados, adiante teremos a necessidade de incluir novos itens no menu,
quando outras tcnicas sero apresentadas.



Adquirido por : Fabrcio Moreira da Silva

Captulo 6
A Linguagem PowerScript
Eventos
Ambiente de Script
A Linguagem PowerScript
Fundamentos da Linguagem PowerScript
Variveis
Tipos de Dados
Escopo de Variveis
Encapsulamento
Objetos e Controle
Execuo de uma funo por meio da
notao de ponto
Estruturas
Arrays
Arrays multidimensionais
Arrays variveis
Dados de objetos
(continua)

Captulo 6
Operadores
Operadores Aritmticos
Operadores binrios
Operadores unrios
Operadores de combinao
Operador de string
Operadores lgicos
Operadores relacionais
Operadores de conjuno
Procedncia e Parnteses
Comandos do PowerBuilder
O Uso da estrutura IF
Estrutura Choose Case
Estrutura Choose Case
Estrutura de iterao (Loops)
Estrutura de Do Loop
Estrutura For Next

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 36

A Linguagem PowerScript.

At aqui foi aplicado o conceito de criao de janelas, janelas com herana e
menu. Para continuarmos com o nosso exemplo teremos que abordar outros
conceitos, como o uso de eventos, funes e da linguagem PowerScript.

A linguagem PowerScript, sendo a linguagem de programao do
PowerBuilder, controla o fluxo de um programa, atualiza banco de dados,
exibe informaes e mensagens de erro e ainda, encerra o programa.

importante que o desenvolvedor do PowerBuilder tenha um bom
conhecimento do trabalho com o PowerScript. Nesta parte do manual iremos
abordar :

x Ambiente de Script
x Compreender os eventos
x Tipos de variveis do PowerScript
x Entender as estruturas, objetos e os controles
x Escopo das variveis

Programao a eventos no um conceito novo no desenvolvimento de
software. A programao mais antiga tem natureza seqencial onde cada
funo pode ser considerada como resultante de uma instruo anterior.
Contudo, no mundo real, a maior parte das funes de negcios so baseadas
em eventos, no sendo seqenciais.

Funes baseadas em eventos so funes independentes e no obedecem a
uma seqncia lgica. Em vez disso, certos eventos fazem com que as
funes sejam executadas. Como conseqncia, o desenvolvimento de
software se tornava difcil porque se tentava mapear o mundo baseado em
eventos, nos programas de natureza seqencial.

A codificao no PowerBuilder se baseia em eventos. Se voc d um clique
sobre um cone executado um certo PowerScript em um evento. Se uma
janela perde o foco logo surge outra, e executado outro PowerScript em
outro evento. Programao de eventos se adapta melhor maneira pela qual
o usurio final ir utilizar sua aplicao.

Programao de eventos um dos muitos pontos de destaque do
PowerBuilder.
PowerBuilder 9.0 Bsico Captulo 6 37


A Linguagem PowerScript.

importante diferenciar Programao baseada em eventos de Ambiente
de programao baseado em objetos.

Muito poderia ser dito a respeito da programao baseada em objetos (OOP -
Object-Oriented Programming). Para simplificar, as linguagens baseadas em
objetos consistem em trs maneiras principais para realizar a atividade de
programao.

1. Toda funo e grupo de funes inter-relacionadas (classes) no devem
afetar os valores de dados em outras funes.A a isto chamamos
"Encapsulamento".

2. A linguagem deve permitir que seja reutilizada grande parte do seu cdigo
antigo e seja efetuada alterao.

3. As funes que herdam caractersticas de cada uma das outras devem ter
a possibilidade de se personalizarem, quando necessrio. A isso
chamamos "Polimorfismo".

Uma vez implementado, o OOP facilita bastante o projeto interativo. O projeto
interativo um projeto que pode ser ampliado posteriormente com pouco
esforo do desenvolvedor, e nele consiste em criar uma pequena parte de sua
aplicao de cada vez. O projeto interativo um subproduto do
desenvolvimento baseado em objetos, o que permite desenvolver sua
aplicao em blocos, desde o incio at o fim. Enquanto um bloco est sendo
avaliado e testado voc pode ampliar facilmente seu trabalho anterior.
Partindo desta filosofia de OOP, desde a verso 8.0 do PowerBuilder foi
implantado a WorkSpace onde este conceito, antes implcito, agora fica
explicito desde a inicializao do seu projeto.

O PowerBuilder visual, com implementaes que no existem em outras
Ferramentas de desenvolvimento "visual". No PowerBuilder voc no
programa sua aplicao, mas desenha a aplicao. Quando necessrio
qualquer atividade de programao ela implementada por trs dos objetos
projetados. Isto pode parecer um pouco estranho, mas na construo das
nossas janelas e menus voc no programou para que isso acontecesse,
simplesmente voc desenhou, utilizando os painter para desenvolver sua
aplicao.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 38

A Linguagem PowerScript.

Ambiente de Script

Um objeto do PowerBuilder uma entidade que voc desenvolve por meio do
uso do PowerBar. Janelas, Menus, DataWindow e aplicaes so exemplos de
objetos.

Os controles do PowerBuilder so construes que se associam aos objetos.

Botes de comando, Figuras e DataWindow so exemplos de controles.

Nota : H uma diferena entre Objeto DataWindow e Controle DataWindow,
ser visto oportunamente.

Cada controle e cada objeto podem ter um PowerScript ou Script. Vamos
agora identificar o ambiente Script no PB 9.0.

D um duplo clique no TREEVIEW esquerda, no Objeto Window w_001. Na
parte inferior do template da janela voc poder visualizar vrias "abas" de
tabelas como a figura abaixo.

Onde:

Layout : o template que exibe a janela que voc criou.

Open : o template dos eventos relacionados ao objeto em foco, no
caso a sua janela, quando selecionar outro evento do seu objeto, seu nome
ser exibido nessa "aba".

Event List : Exibe os eventos j disponveis para o objeto em foco.

Function List: Exibe as funes pr-definidas para o objeto em foco.

Declare Instance Variable : Exibe o template de declarao de variveis de
Instancia, Compartilhadas e Globais, assim como, declaraes de funes
externas Globais e Locais.

PowerBuilder 9.0 Bsico Captulo 6 39

A Linguagem PowerScript.

D um clique na "aba" open e o template do script do evento "open" ser
exibido.

O template de script sempre se abre automaticamente pela primeira vez no
evento "open". Ele se abrir sempre no ltimo evento que voc codificou.

Neste template que voc dever escrever seu cdigo, caso necessite, para
ser executado quando a janela "w_001" se abrir.

No quadro onde foi desenhado um circulo mais claro esquerda, voc poder
selecionar o que definir. Sero disponibilizados os objeto(s), o template para
declaraes de funes, seja do PB ou qualquer outro que voc queira definir
(desenvolver), ou o template para declaraes e definies de variveis e
funes externas.

No quadro direita voc poder selecionar eventos pr-definidos ou definir
um novo evento.

Sempre que for disparado um evento ser executado o script contido nesse
evento, Isto diferente das tcnicas tradicionais em outros Front-End onde
um cdigo sempre tem que ser escrito para verificar a ocorrncia de eventos,
e para reagir a cada evento.

O PowerBuilder predetermina os eventos para os quais voc precisar, ou
no, codificar. Entretanto pode ser necessrio um evento especial que o
PowerBuilder no tenha previsto. Para definir seus prprios eventos:

No quadro de seleo de eventos, selecione (New Event).

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 40

A Linguagem PowerScript.

E o template para definio do novo evento do usurio ser disponibilizado.


Access : Neste caso ele ser de acesso "Publico"

Return Type : O tipo de dados que ser retornado, Numrico, Caractere ou
Binrio, se voc quiser que o evento retorne algum dado; quando definido
como None no haver retorno de dados.

Event Name : O nome que voc definir para o seu evento. Pode ser
qualquer nome, mas o ideal que tenha sempre uma relao com a ao que
voc est definindo.

Argument Type : Indica que tipo de dado ser repassado para o evento.
Pode ser tanto um dado de contedo, como valores ou textos, quanto
objetos, Windows, boto etc.

Argument Name : O nome definido pelo usurio para o tipo de dado
definido. Ao preencher esse campo ou quando necessitar de mais campos
para definir outras variveis que o seu evento dever receber, deve-se
pressionar a tecla "TAB" para que essa linha seja repetida.

Throws : Cria um trigger para uma exceo que ocorra neste evento.

External : Caso esteja criando um evento para controlar um objeto externo.

PowerBuilder 9.0 Bsico Captulo 6 41

A Linguagem PowerScript.

Event ID : Voc poder selecionar um dos eventos do PB que j esto
definidos mas no disponibilizado para o objeto em foco. Tambm serve para
selecionar um evento denominado "pbm_customX" onde X est em um
intervalo de 1 a 75, mas neste caso, a passagem de parmetros padro, ou
seja deve-se no selecionar nenhum valor.

Fundamentos da Linguagem PowerScript
Comentrio : // Barra dupla, Transforma em comentrio o restante da
linha. Tambm possvel incluir entre /* e */ uma seqncia de texto ou at
mesmo diversas linhas.

Exemplo : X = Y // Isto comentrio
ou /* Isto tambm
comentrio */

Caracter de continuao : & E comercial, Algumas vezes uma linha de
comando se estende alm do limite da janela o que pode tornar difcil
depurao, a impresso ou a visualizao do PowerScript. Digite o caractere
de continuao &, ao final da linha, de modo a informar ao programa que o
comando continua na linha seguinte.

Exemplo : var_01 = "Aqui um exemplo de con" &
+"tinuao"

Espao em branco : Espao em branco, ou seja, os espaos vazios entre
variveis, constantes ou comandos so ignorados em PowerScript. A exceo
acontece quando se est no interior de uma varivel string. Voc pode inserir
entre os comandos a quantidade de espaos que desejar.

Dica : Lembre-se que a tecla "Enter" no considerada como espao em
branco. O retorno do cursor somente so ignorados quando est dentro de
um comentrio.

Variveis

Como qualquer outra linguagem o PowerScript permite que voc utilize uma
varivel para armazenar valores. Algumas dessas variveis so declaradas por
voc, outras so declaradas pelo prprio PowerBuilder.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 42

A Linguagem PowerScript.
Tipos de Dados

Toda varivel tem um tipo de dado que informa ao desenvolvedor que tipo
de informaes esto armazenadas na varivel, bem como tambm informa
ao PowerBuilder qual a quantidade de espaos de armazenamento que dever
ser reservado e ainda como tratar a varivel.

Sintaxe: Tipo_de_dado nome_da_variavel
Para declarar uma varivel do tipo inteira e numrica, utilizaremos:
Int contador
Onde : int o tipo de dado Integer (inteiro) no caso e contador o
nome da varivel.

Tipo de dado Faixa de variao Observao
Boolean(booleano) TRUE ou FALSE Varivel lgica
Charater (carter) Pode ser abreviado como char
Date (data) De 01-01-1900 at 12-31-
3000
A data esta no formato mm-dd-
aaaa. No so permitidos espaos
em branco.
DateTime 01-01-1900
00:00:00:0000
23:59:59:9999

Decimal At 18 dgitos (todos
significativos)
O separador pode estar em
qualquer lugar entre os 18 dgitos.
O tipo pode ser abreviado como
dec
Integer (inteiro) De -32.768 at +32.767 Pode ser abreviado como int
Long (longo) De -2.147.483.648 at
+2.147.483.647

String At 60.000 caracteres Todos os caracteres ASCII
Time (hora) De 00:00:00:0000
At 23:59:59:9999
A hora incrementada em
segundos
PowerBuilder 9.0 Bsico Captulo 6 43

A Linguagem PowerScript.

Tipo de dados Faixa de variao Observao
Blob Tipo de dado no vinculado que
significa objeto binrio extenso.
usado geralmente para guardar
figuras.
Double De 2.23E-308 at 1.78E308 Preciso de 15 dgitos
DragObject Contm o tipo de objeto
arrastado.
Object Contm o tipo de dados
enumerado de um objeto do
PowerBuilder.
PowerObject Qualquer objeto do PowerBuilder,
inclusive estruturas.
Real De 1.18e-38 at 3.40E+38 Preciso de 6 dgitos
UsingnedInteger De 0 at 65.535 Pode ser abreviado como
unsignedint ou uint
UnsignedLong De 0 at 4.294.967.295 Pode ser abreviado como ulong
LongLong 64 bits De -
9223372036854775808 a
9223372036854775807.


Ateno : Todos os tipos de dados numricos incluem faixas de variao para
cada tipo de dado. Alguns tipos de dados numricos tambm incluem dgitos
de preciso (dgitos significativos) .
Se voc efetuar um clculo com perda de dgitos significativos o PowerBuilder
no informar sobre isto. Tenha cuidado !!!

Alm disso, se voc exceder a faixa de variao do tipo de dado ocorrer o
rollover. O rollover acontece quando um nmero excede o limite de uma faixa
de variao, e recomea em outro extremo de faixa. Por exemplo, se voc
armazenasse 32.766 em uma varivel inteira e acrescentasse cinco unidades
a varivel inteira conteria o valor -32.765 no campo. Em outras palavras foi
efetuado o rollover de quatro unidades e agora voc tem um valor incorreto
guardado na sua varivel inteira. Nenhuma mensagem de erro ir surgir se
isso acontecer.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 44

A Linguagem PowerScript.

Escopo de Variveis
Em linguagens mais antigas, como COBOL e BASIC, qualquer varivel
poderia ser acessada de qualquer local da aplicao . Atualmente , a
maior parte das linguagens aceita o conceito de escopo de varivel. O escopo
de varivel descreve onde uma varivel pode ser utilizada.

O conceito de escopo de varivel importante. O escopo permite a um
usurio escrever uma funo ou um evento sem sobrescrever as variveis de
outra rea da aplicao, mesmo que as variveis tenham o mesmo nome. H
quatro nveis de escopo no PowerBuilder.

Escopo local : As variveis de escopo local (variveis locais) so variveis
que voc declara dentro do seu script. As variveis definidas pelo usurio que
voc emprega so, em sua maioria, variveis locais, que s existem no
interior do evento ou da funo em que so declaradas.

Exemplo : Voc pode declarar uma varivel int contador no evento "open"
da janela w_001 e declarar tambm int contador no evento "close" da mesma
janela w_001. Neste caso voc tem duas verses de contador isoladas uma
da outra o que voc fizer no contador no evento "open" no influenciar o
contador no evento "close".

Escopo de instancia : As variveis de escopo de instancia so variveis s
quais o objeto inteiro tem acesso. Se voc declara uma varivel como sendo
uma varivel de instncia de um objeto ento qualquer evento, funo ou
controle desse objeto ter acesso varivel.

Escopo Compartilhado : Em uma aplicao com janelas MDI voc pode
abrir mais de uma janela do mesmo tipo; ou seja, voc pode abrir mais de
uma "w_001". Essas verses mltiplas da mesma janela so chamados
instancias da janela. As variveis compartilhadas so variveis que podem
ser compartilhadas por todos os objetos, funes ou controles de cada
instancia de um objeto.

Escopo Global : As variveis globais so acessadas por toda a aplicao. Elas
nunca saem do escopo enquanto a aplicao no fechada.
Voc no deve usar variveis globais se outro tipo de varivel servir. O uso de
uma grande quantidade de variveis globais viola o princpio do
encapsulamento.
PowerBuilder 9.0 Bsico Captulo 6 45

A Linguagem PowerScript.

Se voc define uma varivel global em um evento qualquer outro evento pode
reinicializar a varivel sem que aquele evento tome conhecimento do fato.

Encapsulamento

O termo encapsulamento usado com freqncia na programao baseada
em objetos. Quando uma funo ou um evento estiver encapsulado isso
significa que ele independente. A funo encapsulada no pode ter suas
variveis alteradas a partir do seu exterior. Alm disso, a funo encapsulada
tambm no tem acesso a variveis fora dela prpria.

O Encapsulamento uma questo de grau. Para elevar o encapsulamento de
um sistema ao maior grau possvel existem algumas regras, a saber :

1. desejvel que todas as suas declaraes de variveis sejam locais. Essa
a melhor maneira de encapsular seus dados, evitando que eles sejam
danificados por outras funes e eventos. Nesse nvel mais elevado de
encapsulamento uma funo ou um evento pode ser inserido em qualquer
objeto e ainda funcionar de maneira apropriada.

2. Quando uma varivel local no funciona porque voc precisa preservar um
valor ou ter acesso varivel a partir de outras reas do seu objeto,
experimente usar uma varivel de instncia caso no resolva dessa forma
use uma varivel compartilhada.

3. Como ltimo recurso utilize uma varivel global. As variveis globais
podem ser acessadas e alteradas por qualquer objeto ou funo em uma
aplicao.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 46

A Linguagem PowerScript.

Objetos e Controle

Na programao orientada a objetos, freqentemente voc precisa se referir a
um controle do interior de outro controle, necessitar alterar suas
configuraes originais (seus atributos) em tempo de execuo.

Todo controle e todo objeto possui atributos ou variveis que
controlam a sua funcionalidade e a sua aparncia. Podemos ter acesso
aos atributos de um objeto ou controle por meio da notao de ponto.

controle.atributo
objeto.atributo

Para definir um atributo voc referencia o controle ou o objeto em que se
encontra o atributo. Essa referncia seguida por um ponto (.) e pelo nome
do atributo.

A maior parte dos objetos e controles tem um atributo booleano chamado
visible (visvel) que estabelece se o objeto ou controle pode ser visto na tela.
Suponha que exista um objeto boto (cb_01) na janela w_001. Para definir o
atributo para o boto cb_01, usaramos a seguinte notao:

w_001.cb_01.visible = FALSE // boto est invisvel
Voc tambm pode verificar a propriedade do boto usando a seguinte
instruo
IF:

IF w_001.cb_01.visible THEN
{executa alguma funo}
END IF

Execuo de uma funo por meio da notao de ponto
Voc tambm utiliza a notao de ponto para executar funes. Todo objeto
bem como todo controle, tm um conjunto de funes que podem ser
executadas em seu interior.

PowerBuilder 9.0 Bsico Captulo 6 47

A Linguagem PowerScript.

A funo Hide compartilhada pela maioria dos controles e objetos, e
estabelece o atributo visible como FALSE. Para ocultar o boto cb_01 na
janela w_001 atravs de uma funo ao contrrio de ocult-lo por meio de
um atributo, use a funo:

w_001.cb_01.Hide ()
No mesmo patamar teremos Show para estabelecer o atributo visible como
TRUE. Para tornar o boto cb_01 visvel na janela w_001 atravs de uma
funo use a funo abaixo:

w_001.cb_01.Show ()
Se voc estiver no escopo do objeto, que voc quer alterar seu atributo, voc
pode referenci-lo diretamente.

cb_01.Hide () ou cb_01.Show () ou
This.Hide () ou This.Show ()
A notao de ponto utilizada largamente em linguagens orientada a
objetos. Por ser uma linguagem totalmente estruturada voc pode navegar
pela estrutura dos objetos atravs da notao de pontos.

Exemplo : Se voc quiser acessar o evento Clicked!, do item Sair do
menu m_menu01, no qual definimos o comando PowerScript Close
(w_001) sem precisar clicar no item Sair escreva :

M_menu01.m_sair.TriggerEvent (Clicked!)

Com este comando PowerScript voc faz o PowerBuilder imaginar que o
usurio abriu o menu Arquivo e escolheu a opo Sair.

Voc pode usar a funo TriggerEvent no PowerBuilder com a finalidade de
forar o PowerBuilder a executar um evento. TriggerEvent usa um nico
argumento. Este pode ser uma string contendo o nome do evento ou um tipo
de dados enumerado do PowerBuilder descrevendo o evento.

Clicked! um tipo de dado enumerado que descreve um evento clicked
acionado.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 48

A Linguagem PowerScript.

Estruturas
Voc usa as estruturas para criar seu prprio tipo de dados. As estruturas
contm muitas variveis inter-relacionadas diferentes de diversos tipos
agrupadas sob um nome nico. As estruturas permitem que voc faa a
movimentao dos dados e usando um nico nome, para fazer referncia a
eles.

Criando uma estrutura.

Clique em New, selecione PB Object e clique em Structure


O template para a criao da estrutura bem simples, com um quadro para a
seleo do tipo de dados e um quadro para a definio do nome da varivel,
ao final clique em salvar.


Nota : sempre importante voc utilizar a padronizao para nomes de
objetos, funes e etc.
PowerBuilder 9.0 Bsico Captulo 6 49

A Linguagem PowerScript.

Voc acabou de criar uma estrutura global. O PowerBuilder tambm
permite declarar estruturas locais que s podem ser acessadas no objeto em
que foram criadas.

Para criar uma estrutura local no PB 9 abra a janela qual voc quer que sua
estrutura pertena, clique em Insert no menu principal e selecione
Structure, abrindo o painter de criao de estrutura. Ao salvar essa
estrutura ela s poder ser acessada dentro da instncia dessa janela.

A qualquer momento voc pode alterar a sua estrutura, incluindo, excluindo
ou alterando tipo e nome de dados.

Acessando uma estrutura

Voc terminou de criar a sua estrutura, mas lembre-se de que uma estrutura
um tipo de dado e no uma varivel.
Ainda preciso declarar variveis usando a sua estrutura, e depois utilizar a
notao de ponto para obter acesso s variveis no interior da estrutura.

Para um melhor entendimento vamos criar uma pseudo-estrutura:

Nome da estrutura : str_identifica
Varivel 1 string : s_nome
Varivel 2 string : s_sigla
Varivel 3 string : s_senha

Em PowerScript :

// cria a varivel identifica_usuario com o modelo de dados da
// estrutura str_identifica

str_identifica identifica_usuario

//criando variveis locais com o mesmo padro de dados da estrutura

string nome
string sigla, senha

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 50

A Linguagem PowerScript.

//atribuindo dados a variveis locais.

nome = Roberto
sigla = bob
senha = power

// Atribuindo dados estrutura

identifica_usuario.s_nome = nome
identifica_usuario.s_sigla = sigla
identifica_usuario.s_senha = senha

ARRAYS
Os arrays so sries de variveis indexadas do mesmo tipo de dados.

Voc declara um array colocando um nmero entre colchetes logo aps uma
declarao de dados.

Ao declarar uma varivel inteira de nome X criamos uma nica clula de
inteiro na memria.

Int x
Acrescentando [5] declarao do inteiro X voc passa a ter cinco inteiros
declarados.

Int x[5]
Os arrays podem ser acessados usando o nome do array seguido por um
nmero entre colchetes

X[1] X[2] X[3] X[4] X[5]

PowerBuilder 9.0 Bsico Captulo 6 51

A Linguagem PowerScript.

Arrays Multidimensionais

Se a declarao de um array tiver mais de um conjunto de nmeros depois
dela, isto significa que foi declarado um array multidimensional.

Array simples Int X [5]

X[1] X[2] X[3] X[4] X[5]

Array Multidimensional int x[4,5]

X[1,1] X[1,2] X[1,3] X[1,4] X[1,5]
X[2,1] X[2,2] X[2,3] X[2,4] X[2,5]
X[3,1] X[3,2] X[3,3] X[3,4] X[3,5]
X[4,1] X[4,2] X[4,3] X[4,4] X[4,5]

Onde : Int x[linha, coluna]
Array variveis

Os arrays variveis so arrays cujo tamanho no definido no momento da
declarao. Para declarar um array varivel deixe o nmero fora dos colchetes
quando declarar o array. O tamanho ser estabelecido com o primeiro acesso
a esse array.

Int x []

// Define o limite superior do array como 35 e preenche a posio 35
// com o dado 1234

Int x [35] = 1234


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 52

A Linguagem PowerScript.

Dados de objetos
Os objetos que voc declara constituem um tipo de dados. Esses tipos de
dados especiais so chamados de instncias do seu objeto.

O principal uso das variveis de instncias a abertura de vrias verses da
mesma janela em um quadro MDI. Desejando abrir duas janelas w_001 voc
poderia usar o seguinte trecho de cdigo:

W_001 janela1 // declara a primeira instncia de w_001
W_001 janela2 // declara a segunda instncia de w_001

Open (janela1,w_001)
Open (janela2,w_001)

A sintaxe anterior abre duas janelas. Voc pode navegar entre as janelas
utilizado Alt+Tab.

Operadores
Existem quatro tipos de operadores: aritmticos, de strings, lgicos e de
agrupamento.

x Operadores aritmticos so usados em clculos matemticos;
x Operadores lgicos so utilizados para realizao de testes de
condies;
x Operadores strings executam funes sobre variveis do tipo string;
x Operadores de agrupamento so os parnteses esses afetam a ordem
na qual os outros operadores sero executados;

Operadores Aritmticos.

Os operadores aritmticos podem ser divididos em trs categorias :

x Operadores binrios;
x Operadores unrios;
x Operadores de combinao;

PowerBuilder 9.0 Bsico Captulo 6 53

A Linguagem PowerScript.

Os operadores binrios exigem dois operandos (variveis ou constantes) Os
operadores binrios do PowerBuilder esto relacionados na tabela abaixo:



Smbolo Nome Exemplo Descrio
^ Exponenciao a ^ b Eleva a, potncia
representada pelo expoente b
+ Adio a + b Soma a + b
- Subtrao a - b Subtrai b de a
* Multiplicao a * b Multiplica a por b
/ Diviso a / b Divide a por b
= Igualdade a = b Atribui o valor de b em a



Os operadores unrios requerem um nico operando. Os operadores
unrios do PowerBuilder encontram-se na tabela abaixo.



Smbolo Nome Exemplo Descrio
- Negativo - a Simboliza o valor negativo
de a
+ Positivo + a Simboliza o valor positivo
de a
++ Incremento a ++ Incrementa uma unidade
ao valor de a
-- Decremento a -- Decrementa uma unidade
ao valor de a

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 54

A Linguagem PowerScript.

Os operadores de combinao so operadores binrios que combinam as
caractersticas de dois operadores , o operador de igualdade e o de adio ou
subtrao. Como os operadores de combinao so binrios, eles exigem dois
operandos.

Smbolo Nome Exemplo Descrio
+= Plus Equal a+=b Defina a, como igual a a + b
-= Minus Equal a-=b Define a, como igual a a - b
*= Times Equal a*=b Define a, como igual a a * b
/= Divide Equal a/=b Define a, como igual a a / b
^= Power Equal a^=b Define a, como igual a a ^ b

O nico operador de string do PowerBuilder usa um sinal de adio (+) para
concatenao.

String x1 = Power
String x2 = Builder

String x3 = x1 + x2

O valor resultante em x3 : PowerBuilder

Os operadores lgicos testam se uma condio verdadeira ou falsa. H
dois tipos de operadores lgicos: os operadores relacionais e os operadores
de conjuno.

PowerBuilder 9.0 Bsico Captulo 6 55

A Linguagem PowerScript.

Os operadores relacionais so sempre binrios e, portanto, exigem dois
operandos.


Smbolo Nome Exemplo Descrio
= Igual a = b Retorna TRUE se a igual
a b
> Maior que a > b Retorna TRUE se a maior
que b
< Menor que a < b Retorna TRUE se a
menor que b
>= Maior que ou igual
a
a>=b Retorna TRUE se a maior
ou igual a b
<= Menor que ou igual
a
a<=b Retornar TRUE se a
menor ou igual a b
< > No igual a <> b Retorna TRUE se a no
igual a b


Todo operador relacional que no retorna TRUE, retorna FALSE.


Os operadores de conjuno tm expresses relacionais com seus
operandos. Os trs operadores de conjuno do PowerBuilder so dois
operadores binrios , (AND e OR), e um operador unrio, (NOT). Suas
funes podem ser vistas na tabela verdade abaixo:


a b a AND b b OR b Not a
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE FALSE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE TRUE



A primeira linha pode ser lida como Se a TRUE e b TRUE, ento a AND b
TRUE, a OR b TRUE e NOT a FALSE
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 56

A Linguagem PowerScript.

Procedncia e Parnteses
Certas operaes tm precedncia sobre outras. Por exemplo, 5 + 4 * 3 pode
parecer que resulta em 27, porque 5 + 4 = 9 e 9 * 3 = 27. Na verdade, essa
equao resulta em 17, porque a multiplicao (*) tem precedncia sobre a
adio (+). Desse modo 4 * 3 avaliado primeiro totalizando 12, em seguida
somado o valor 5 a esse resultado.

Para que o resultado fosse 27, teramos que escrever : (5 + 4) * 3

Comandos do PowerBuilder

A linguagem PowerScript contm dois tipos de instrues: funes embutidas
(ou internas) e comandos. Embora existam muitas funes internas h
somente trs tipos principais de comando: os comandos de atribuio que
atribuem um valor a uma varivel; as estruturas de deciso que consistem
em instrues IF e instrues Choose Case; e as estruturas iterativas (ou
de loops), que consistem em loops Do e loops For...Next.
As estruturas de deciso so comandos que avaliam variveis. O
PowerBuilder aceita dois tipos de estruturas de deciso: a estrutura
IF..ElseIf..Else...End (ou apenas a estrutura IF) e a estrutura Choose Case.

O Uso da estrutura IF
A instruo IF avalia varivel. Com base nessa avaliao a instruo IF realiza
alguma forma de ao.

IF a < b THEN
Um comando ou conjuntos de comandos
END IF

IF a < b THEN um comando // dispensa o END IF

IF a < b THEN
Um comando ou conjuntos de comandos
ELSE
Um comando ou conjuntos de comandos
END IF
PowerBuilder 9.0 Bsico Captulo 6 57

A Linguagem PowerScript.

IF a < b THEN
Um comando ou conjuntos de comandos
ELSEIF a < c THEN
Um comando ou conjuntos de comandos
ELSEIF a > d THEN
Um comando ou conjuntos de comandos
ELSE
Um comando ou conjuntos de comandos
END IF

Voc pode ter quantas clusulas ELSEIF desejar em uma instruo IF. O Uso
de instruo IF uma forma eficiente de controlar o fluxo do seu programa de
acordo com as informaes existentes.

Estrutura Choose Case
A estrutura CHOOSE CASE avalia uma nica varivel de diversas maneiras
diferentes.

Choose Case varivel_a_ser_testada
Case expresso 1
Um comando ou conjuntos de comandos
Case expresso 2
Um comando ou conjuntos de comandos
Case Expresso 3
Um comando ou conjuntos de comandos
Case ESLE
Um comando ou conjuntos de comandos
END Choose

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 6 58

A Linguagem PowerScript.

Exemplo:
Choose Case salario
Case is > 4000
Um comando ou conjuntos de comandos
Case 2000 to 3000
Um comando ou conjuntos de comandos
Case 2000, 2100,2200
Um comando ou conjuntos de comandos
Case 5000
Um comando ou conjuntos de comandos
Case Else
Um comando ou conjuntos de comandos
END Chosse

Estrutura de iterao (Loops)
As estruturas de loops so construes que causam a execuo de uma srie
de comandos um certo nmero de vezes. A linguagem PowerScript tem duas
estruturas de loop: a estrutura Do Loop e a estrutura For...Next.

Estrutura Do Loop
Em PowerScript uma maneira eficiente de implementar um loop. Existem
quatro maneiras de implementao.

Do While condio 1
Conjunto de comandos 1
Loop

Do Until condio 2
Conjunto de comandos 2
Loop

Do
Conjunto de comandos 3
Loop Until condio 3

Do
Conjunto de comandos 4
Loop While condio 4
PowerBuilder 9.0 Bsico Captulo 6 59

A Linguagem PowerScript.

Estrutura For Next
Outro tipo de estrutura de loop o loop For.. Next que combina a iterao e
o incremento de um contador.

For varivel_numrica = inicio TO fim { Step incremento }
Conjunto de comandos
Next
For a = 1 to 10 For a = 100 to 1 Step -1
b = b + a b = b + a
Next Next

Adquirido por : Fabrcio Moreira da Silva
Captulo 7

Transaes de Bancos de Dados
Definindo uma transao
Montando a transao em PowerScript
O uso do SQL no PowerBuilder

PowerBuilder 9.0 Bsico Captulo 7

60
A Linguagem PowerScript.

Transaes de Bancos de Dados.
Os objetos de transaes so usados pelo PowerBuilder para se comunicar
com um banco de dados. Antes de usar um banco de dados voc tem que
defini-lo no objeto de transao. Embora voc possa definir sua prpria
varivel de transao o PowerBuilder lhe oferece uma varivel padro,
SQLCA.

Um objeto (ou estrutura) de transao como SQLCA possui quinze campos.
Dez desses campos precisam ser preenchidos pelo desenvolvedor, os outros
cincos so usados para uma rea de retorno depois que voc efetua a
chamadas de SQL.

Atributo Tipo de dado Descrio
DBMS String nome do tipo de banco de dados
Database String nome do banco de dados ao qual voc esta
se conectando
UserId String Identificao do usurio que esta se
conectando ao banco
DBParm String Especfica de um DBMS
DBPass String senha que ser usada para conexo com o
banco de dados.
Lock String nvel de bloqueio
LogId String nome ou identificao do usurio que ir
se conectar ao servidor
LogPass String senha usada para a conexo ao servidor
ServerName String nome do servidor no qual reside o banco
de dados
AutoCommit Boolean Indicador automtico de Commit, (TRUE)
automtico.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 7

61
A Linguagem PowerScript.

Atributo Tipo de dado Descrio
SQLDBCode Long Cdigo de sucesso ou falha da operao de
SQL mais recente:
0 = Sucesso;
100 = Nenhum conjunto de resultados
retornado;
-1 = Erro (Use SQLDBCode ou SQLErrText
para obter os detalhes).
SQLDBNRow
s
Long O Nmero de linhas afetadas.
SQLDBCode Long O cdigo de erro do fornecedor do banco
de dados.
SQLErrText String A mensagem de erro do fornecedor do
banco de dados
SQLReturnDa
ta
String Dados de retorno especficos do DBMS

Definindo uma transao
Transao : SQLCA
DataBase : TESTE
Usurio : joao
Senha : 12345
CONEXO : VIA ODBC

Montando a transao em PowerScript.
SQLCA.DBMS = ODBC
SQLCA.Database = TESTE
SQLCA.USERID = joao
SQLCA.DBPass = 12345
SQLCA.DBParm =
ConnectString=DSN=TESTE;UID=DBA;PWD=SQL

// Conectando

CONNECT USING SQLCA;
PowerBuilder 9.0 Bsico Captulo 7

62
A Linguagem PowerScript.

//Testando a conexo

IF SQLCA.SQLCode <> 0 THEN
Messagebox (DataBase, Erro ao conectar)
HALT
END IF

Definindo uma transao
Transao : SQLCA
DataBase : TESTE
Usurio : joao
Senha : 12345
CONEXO : NATIVA ORACLE

Montando a transao em PowerScript.

sqlca.DBMS = "O73 Oracle 7.3"
sqlca.database =
sqlca.userid =
sqlca.dbpass =
sqlca.logid = "joao"
sqlca.logpass = "12345"
sqlca.servername = @ORACLE_PROD
sqlca.dbparm = DelimitIdentifier='No',Block=1000

// Conectando

CONNECT USING SQLCA;

//Testando a conexo

IF SQLCA.SQLCode <> 0 THEN
Messagebox(DataBase, Erro ao conectar)
HALT
END IF
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 7

63
O uso do SQL no PowerBuilder.

A SQL(Structures Query Language) uma linguagem comum encontrada em
muitos bancos de dados. A SQL foi criada para oferecer ao desenvolvedores
um mtodo comum para atualizao e recuperao de dados de tabelas de
um banco de dados. A SQL permite o acesso a um banco de dados a partir do
painter PowerScript.

Pode ser que voc no tenha percebido, mas escrever instrues em SQL
pode ser um trabalho penoso. Voc obrigado a conhecer alm da sintaxe de
SQL, as colunas das tabelas que deseja acessar.

O PowerBuilder responde a essa exigncia atravs do seu Painter de SQL.

O cone DataBase fornece acesso ao DataBase Administration
um ambiente visual que proporciona um total controle de acesso, edio e
desenvolvimento de bancos de dados.


PowerBuilder 9.0 Bsico Captulo 7

64
O uso do SQL no PowerBuilder.

No cone DB Profile DataBase Profile voc pode criar, modificar e
excluir uma conexo.



Se voc instalou o PB 9 e o SQL AnyWhere Studio poder ter acesso ao banco
EAS Demo Db V9 que acompanha o PB 9.0 e verificar a potencialidade deste
painter.

Na figura anterior, no template Object Layout, voc pode visualizar
graficamente todo o seu banco assim como seus relacionamentos. Clique em
para expandir o item ODB ODBC , em seguida clique em Table para
listar as tabelas do banco EAS Demo Db V9. Coloque o mouse sobre a tabela
bnus, pressione o boto esquerdo e arraste para o template Object
Layout onde voc poder visualizar a tabela bonus.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 7

65
O uso do SQL no PowerBuilder.



Clicando com o boto direito do mouse sobre a barra de titulo da tabela
aparecer o menu-popup .






PowerBuilder 9.0 Bsico Captulo 7

66
O uso do SQL no PowerBuilder.

Close : Fecha a tabela em foco.

New : Habilita a criao de Index, Foreign Key, Primary Key e Coluna para
a tabela em foco.

Edit Data : Edita a tabela no formato Grid, Tabular ou Livre permitindo
incluso, alterao e excluso de dados.
DataPipeline : Ativa o template de PipeLine. O PipeLine um objeto do
PowerBuilder que auxilia na construo, manuteno, cpia e exportao de
dados.

Alter Table : Habilita o template para a alterao fsica da tabela, nome da
coluna, tamanho do campo etc.

Drop Table : Exclui fisicamente uma tabela.

Print Definition : Imprime a definio da tabela em foco.

Export Sintaxe : Exporta a sintaxe de criao para o parmetro de ODBC
selecionado, da tabela em foco.

Properties : Exibe as propriedades da tabela.


Adquirido por : Fabrcio Moreira da Silva






Captulo 8
DataWindow
Objeto DataWindow
Fonte de dados
Interface inteligente
Interface com o usurio
Como criar um objeto DataWindow
Fontes de dados
SQL Select
Query
Stored Procedure
External
Montando uma DataWindow com SQL
Select
Template de SQL
Argumentos



(continua)

Captulo 8
Personalizando sua DataWindow
Composite
Crosstab (planilha)
FreeForm (Formulrio livre)
Graph (Grfico)
Grid (Grade)
Group (Grupo)
Label (Etiquetas)
N-up (Mltiplas linhas)
Ol 2.0
RichText
Tabular
Cores e Bodas

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 67

DataWindow

Objeto DataWindow

O objeto DataWindow um objeto exclusivo do PowerBuilder. usado
para recuperar, apresentar, manipular e atualizar dados de uma base de
dados relacional ou de outras fontes de dados.

Esse objeto encapsula as informaes sobre a fonte de dados. Inclui tambm
informao de formatao que descreve como o dado deve ser apresentado
no controle DataWindow. A informao codificada no objeto DataWindow
usada pelo ncleo da DataWindow para fornecer uma interface inteligente
entre o cliente e o servidor em tempo de execuo. Buffers so associados ao
objeto DataWindow para armazenar os dados. Estes dados so referenciados
como result set.


PowerBuilder 9.0 Bsico Captulo 8 68

Fonte de dados

Uma das informaes encapsuladas no objeto a fonte de dados. Existem
dois tipos de fontes de dados:
x Relacional, que deve executar um comando SELECT em uma
tabela ou view, ou um EXECUTE PROCEDURE
x No relacional, para importar arquivos seqenciais (nos
formatos TXT, DBF, CSV e XML) ou pela digitao do usurio.
Interface inteligente
O ncleo do objeto administra todo o relacionamento que deve existir entre a
mquina cliente e o servidor de banco de dados. Por exemplo, o ncleo da
DataWindow sabe onde existe um item de dado alterado, quando um item de
dado obrigatrio, qual o tipo de dado e quando um valor passa pelas
regras de validao. Antes de o processamento iniciar o ncleo da
DataWindow realiza todas essas checagens nos dados assegurando a validade
dos mesmos.
Interface com o usurio
O PowerBuilder fornece uma variedade de features para criao de uma
interface com o usurio atrativa e amigvel. Permite que se escolha o estilo
de apresentao dos dados recuperados.
Os estilos possveis so: tabular, grid, freeform, label, N-up, OLE, rich text,
groups, graphs, crosstabs, e composite.
Exemplo:



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 69

Como criar um objeto DataWindow
O PowerBuilder tambm fornece outras facilidades para melhorar o formato
padro de apresentao. Por exemplo, podemos reorganizar e classificar os
itens de dados. Podemos, tambm, adicionar elementos grficos como linhas,
crculos e retngulos, botes, figuras, etc.

1. Na PowerBar1 clique em New.
2. No template New selecione o tipo de estilo que sua DataWindow
dever apresentar. (figura 1.1)
3. No Template Fonte de Dados, (figura 1.2), voc deve selecionar o
tipo de fonte de dados que sua DataWindow ir processar.


Figura 1.1


PowerBuilder 9.0 Bsico Captulo 8 70

Fontes de dados.
Figura 1.2

Entendendo Fonte de Dados

No PowerBuilder, existem cinco maneiras de sua DataWindow, recuperar
dados, a saber:

1. Quick Select;
2. SQL Select;
3. Query;
4. Store Procedures;
5. External.

Quick Select.

No PowerBuilder a forma mais simples de definir a fonte de dados. Voc no
escreve nada, apenas desenha com o mouse o tipo de dado. Esta opo
impe alguns limites pois a navegao entre a tabela s possvel atravs
dos seus relacionamentos. O Tipo de SELECT utilizado o mais simples,
apenas a clusula WHERE suportada.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 71

SQL Select.

Permite que o desenvolvedor selecione livremente o conjunto de tabelas do
banco de dados. Suporta todas as clausulas pertencentes ao comando
SELECT, padro ANSI (ODBC) e padro do seu banco, com a conexo nativa.

Query
O mesmo tipo de comando SELECT da opo SQL Select pode ser obtido
usando o template Query. Este comando, uma vez salvo na biblioteca
PowerBuilder como um objeto do tipo Query, pode ser utilizado como base
para a construo de objetos DataWindow.

Stored Procedure

Esta seleo retorna uma lista de stored procedures gravadas no banco de
dados atualmente conectado. Uma stored procedure um conjunto de
comandos SQL que executam uma operao no banco de dados. Quando
escolhemos uma stored procedure da lista o objeto DataWindow constri o
result set da DataWindow em funo das colunas recuperadas pela stored
procedure selecionada.

O uso de Stored Procedures pode incrementar a performance pela reduo:

x do nmero de passos que a DataWindow percorre para
recuperar dados
x do trfego na rede

O DBMS compila a stored procedure no momento da sua criao.

External
O PowerBuilder possibilita que o desenvolvedor fornea externamente a fonte
de dados para construo da DataWindow. Para isso o padro EXTERNAL foi
disponibilizado. Tal opo exige que se informe o nome do dado e o formato
para cada coluna.

PowerBuilder 9.0 Bsico Captulo 8 72

Montando uma DataWindow com SQL Select
Quando selecionado o SQL Select, o template para seleo das tabelas
disponveis no banco de dados conectado apresentado. Ao fundo o template
de construo da DataWindow receber a sua seleo.

Com um duplo clique no nome da tabela selecione a(s) tabela(s). Ao final
clique em Cancel .



Selecionando as tabelas departament e employee como exemplo, teremos
no template de Layout:


Neste exemplo, escolhemos um conjunto de tabelas que possuem
relacionamentos onde representa o Join entre as tabelas. Um duplo
clique sobre o smbolo do Join abrir o template de possibilidades de juno
da tabela, sempre com a opo definida com foco.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 73

Montando uma DataWindow com SQL Select

A tabela a seguir, descreve as possibilidades de Join.



Smbolo Descrio
*= Tabela A = tabela B e linhas da tabela A que no tenham
correspondncia em B
=* Tabela A = tabela B e linhas da tabela B que no tenham
correspondncia em A
> Tabela A > que tabela B
< Tabela A < tabela B
<= Tabela A menor ou igual tabela B
>= Tabela a maior ou igual tabela B
<> Tabela a diferente da tabela B




Voc tambm pode especificar um Join manualmente. Para isso clique no
cone Join e selecione a(s) coluna(s) para realizao desse Join. Ao
trmino clique no cone Join outra vez.

Assim como podemos criar, podemos excluir um Join. D um duplo clique no
cone no template Join e selecione a opo excluir em seguida
clique no boto Delete.

PowerBuilder 9.0 Bsico Captulo 8 74

Montando uma DataWindow com SQL Select

Template de SQL
Neste template, localizado na parte inferior do template DataWindow, existem
algumas ferramentas de auxlio na construo do seu comando SQL, so elas:
Template SQL


Onde :

Sort : Seleciona as colunas para a classificao do resultado da
query. A colunas selecionadas faro parte da clausula Order By.

Where : Define o critrio de seleo de dados na query.

Group : Agrupa logicamente o resultado da query criando um grupo
definido pelo desenvolvedor para sumarizar os dados da(s) coluna(s)
selecionada(s).

Having : Restringe os dados recuperados pela query, baseado na
seleo feita pelo desenvolvedor.

Compute : Cria uma nova coluna, com referncia, ou no, a outras
colunas da tabela selecionada.

Syntax : Exibe a query montada.

Nota : Muitas vezes poder ser interessante manipularmos os dados da
tabela. Por exemplo, na tabela existem as colunas salario e gratificacao. S o
que interessa no relatrio a renda composta pelo salario + gratificao.
mais lgico trafegar pela rede somente a informao de renda do que as
informaes de salrio e gratificao que sero somadas na mquina cliente.
Para excluir uma coluna computada basta limpar a sua especificao na pasta
Compute.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 75

Montando uma DataWindow com SQL Select

A clusula Where, se existir, contm o critrio lgico do relacionamento
entre as tabelas escolhidas. Se no desejarmos recuperar todas as
linhas do banco de dados, devemos acrescentar um critrio lgico para
seleo das linhas. Normalmente a clusula Where formada por colunas do
banco de dados, colunas computadas e argumentos de recuperao,
fornecidos pela aplicao ou pelo usurio.

Argumentos
O PowerBuilder permite que voc defina argumentos. Argumentos so
variveis que sero encaminhadas na chamada de execuo da query, com o
propsito de filtrar a seleo.

Selecione no menu principal, item Design e sub item Retrieve Arguments
para exibir o template de definio:



Escreva o nome do argumento e o tipo de varivel. Ao final clique em OK.

Outro mtodo muito interessante que o PowerBuilder disponibiliza o modo
Syntax, da sua query, onde voc poder incluir manualmente (digitando
direto) definies mais elaboradas na sua query. No Menu principal, selecione
Design e sub item Convert to Syntax para retornar ao modo grfico.
Ento, selecione Design e sub item Convert to Graphics.

Ateno : Algumas implementaes no sero suportadas no modo Grfico
mas funcionaro perfeitamente no modo Syntax.
PowerBuilder 9.0 Bsico Captulo 8 76

Montando uma DataWindow com SQL Select

Com as colunas selecionadas e a query montada, clique no cone
Return, e o PowerBuilder montar sua DataWindow nos padres de sua
seleo, tanto em estilo quanto em recuperao de dados.
Para retornar ao template do SQL clique em Data Source.

Entendendo o template da DataWindow.


No painter Design da DataWindow voc pode movimentar os objetos a
vontade at que melhor lhe sirva o Layout.

Para Alterar o contedo dos label, que est em negrito, basta selecion-los
com um clique.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 77

Montando uma DataWindow com SQL Select

Toda alterao ser representada automaticamente no template Preview. Para
atualizar os dados no template preview clique em Preview.
Personalizando sua DataWindow
O painter DataWindow fornece vrios recursos para formatao da interface
com o usurio:
x Estilos de apresentao predefinidos.
x Funes para gerao de relatrios
x Funes para ajuste do formato das colunas e seus cabealhos.

O PowerBuilder fornece vrios estilos de apresentao predefinidos para
auxiliar na formatao dos dados. Cada estilo de apresentao representa um
formato diferente.



PowerBuilder 9.0 Bsico Captulo 8 78

Personalizando sua DataWindow
Composite
O Estilo composite consiste em um Objeto DataWindow com vrios objetos
DataWindow inseridos. Trata-se de uma maneira bem profissional de
apresentar um relatrio pequeno com vrias informaes de estilos e origem,
distintos ou no.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 79

Personalizando sua DataWindow
Crosstab (planilha)
O estilo de apresentao crosstab apresenta os dados de forma sumarizada,
em clulas subordinadas a uma linha ou coluna.


PowerBuilder 9.0 Bsico Captulo 8 80

Personalizando sua DataWindow
FreeForm (Formulrio livre)
O estilo de apresentao freeform muito flexvel. Com este estilo, as
colunas e seus labels so distribudos na vertical. possvel organizar as
colunas automaticamente em vrios agrupamentos verticais atravs da
especificao da altura mxima de uma coluna no painter DataWindow. Por
default a DataWindow tem somente um campo em cada linha.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 81

Personalizando sua DataWindow
Graph (Grfico)
O estilo de apresentao grfico fornece uma apresentao grfica do result
set em vrios estilos. Podemos escolher entre vrios estilos, de duas e trs
dimenses, incluindo grfico de barras, linha, rea, pizza, etc.
PowerBuilder 9.0 Bsico Captulo 8 82

Personalizando sua DataWindow
Grid (Grade)
O estilo de apresentao grid exibe os dados em colunas separadas por linhas
de grid. Em tempo de execuo, ou no modo preview, o estilo grid permite
que se arraste o grid vertical de uma coluna para aumentar ou diminuir a sua
largura alm de trocar a seqncia das mesmas.

No modo design, no se pode movimentar as colunas. Podemos, no entanto,
trocar a ordem da coluna, executando o modo preview e arrastando as
colunas para a posio desejada.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 83

Personalizando sua DataWindow
Group (Grupo)
parecido com o estilo tabular, mas ele simplifica a construo de um objeto
DataWindow tabular com agrupamentos.
Quando se escolhe o estilo group, o template DataWindow exibe caixas de
dilogo para definir cabealho de agrupamentos, gerar subtotal de
agrupamentos e total geral para os campos numricos .


PowerBuilder 9.0 Bsico Captulo 8 84

Personalizando sua DataWindow
Label (Etiquetas)
Apresenta os dados na forma de etiquetas. Podemos escolher o estilo da
etiqueta a partir de uma relao ou especificar uma configurao
personalizada.



N-up (Mltiplas linhas)
Suporta a exibio de mltiplas linhas, repetidas horizontalmente. til
quando a linha de detalhe estreita.





Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 85

Personalizando sua DataWindow
Ol 2.0
Conecta com servidores OLE que suportem o protocolo Uniform Data
Transport (UDT). Tais como Microsoft Word, Microsoft Graph, ou Microsoft
Excel entre outros, registrados na mquina cliente.

RichText
Uma DataWindow com o estilo de apresentao RichText, permite:
x Carregar arquivos RTF (RichText Format)
x Incluir cabealhos e rodaps
x Usar vrias fontes, cores e tamanhos dentro de um nico controle
x Fornecer funes de edio ao usurio
PowerBuilder 9.0 Bsico Captulo 8 86

Personalizando sua DataWindow
Tabular
Exibe as colunas de dados em linhas no controle DataWindow. Formata um
cabealho sobre cada coluna. Podem-se movimentar as colunas livremente,
agrup-las e personalizar cabealhos.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 8 87

Personalizando sua DataWindow
Cores e Bodas

Ao trmino da etapa de criao da DataWindow, surgir o template para
definio do estilo de borda, cores e distncias entre as bands (faixas).

Aconselha-se manter o default nesta etapa de criao. Tais dados podem ser
alterados facilmente no template da DataWindow e, ainda com uma melhor
visualizao dos resultados.

Marque o item Save as default para criar a DataWindow com
caractersticas padro.



Captulo 9
Recuperao de dados a partir de uma
DataWindow
Funes para o controle DataWindow
Montando um Objeto DataWindow
Aperfeioando a visualizao da DataWindow
Vinculando duas DataWindow
Vinculando objeto DataWindow a um controle
DataWindow
Incluindo controle DataWindow a Window
Incluindo parmetros de atualizao
Rotina de incluso
Rotina de alterao
Rotina de Excluso
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 88

Recuperao de dados a partir de uma DataWindow.
No PowerBuilder basicamente toda recuperao e atualizao de dados so
realizadas por controles de DataWindow associados com objetos de
DataWindow.

O Objeto DataWindow mantm o controle sobre a fonte de dados sua
formatao, validao e atualizao.

O Controle DataWindow usado para exibir os dados selecionados no objeto
DataWindow.

Sendo a interface entre o banco de dados e o usurio nesse controle que
devemos inserir os cdigos PowerScript que se faro necessrios para a
manipulao correta da base de dados como; incluso, alterao, validao e
excluso. Para tanto o controle DataWindow disponibiliza algumas funes j
programadas que facilitam muito a manipulao de dados na DataWindow.
No controle DataWindow est disponibilizado uma lista de eventos pr-
programados, ao contrario de outras linguagens, o PowerScript no precisa de
uma programao para detectar se um evento foi ou no disparado. Os
eventos disponveis no controle DataWindow sempre so disparados quando a
condio qual eles foram programados acorrerem, o evento CLICKED!
ser disparado quando o controle DataWindow sofrer a ao do clique do
mouse, independente, se nesse evento houver uma codificao PowerScript
ou no.

PowerBuilder 9.0 Bsico Captulo 9 89

Recuperao de dados a partir de uma DataWindow.

O PowerBuilder 9.0, disponibilizou alguns novos eventos, mas ainda no esto
trigados a aes, segundo a Sybase em breve estaro, a saber:

DoDefaultAction
DoHitTest
DoNavigation
DoSelection
GetChildCount
GetDefaultAction
GetDescription
GetFocusObject
GetHelp
GetHelpFile
GetHelpTopic
GetKeyboardShortcut
GetName
GetRole
GetSelection
GetValue


A DataWindow disponibiliza vrias funes pr-programadas de manipulao
de dados, na tabela a seguir descreveremos essas funes.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 90

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
AcceptText Integer Aplica o contedo da edio de um controle
DataWindow do item corrente ao buffer da
DataWindow.
CanUndo Boolean

Retorna TRUE se a ltima edio pode ser
desfeita para a linha e coluna especifica e
FALSE se a ltima edio no puder ser
desfeita.
CategoryCount Integer Retorna o nmero de categorias em um
grfico especifico do controle DataWindow.
CategoryName String Retorna o nome de uma categoria especifica
de um grfico em um controle DataWindow.
ClassName String Retorna o nome do controle DataWindow.
Clear Integer Apaga os textos selecionados em no
controle de edio de um controle
DataWindow, Se o estilo for RichText
apagar os textos selecionados na
DataWindow.
ClearValues Integer Apaga todos os itens da lista associada com
a coluna especificada no controle de
DataWindow.
Clipboard Integer

Cpias o grfico especificado no controle de
DataWindow para o clipboard.
Copy Integer Copia o texto selecionado no controle de
edio para a linha e coluna do controle de
DataWindow para o clipboard. Para uma
apresentao de estilo RichText
DataWindow, copia o texto selecionado no
controle de DataWindow.
CopyRTF String Copia o texto selecionado, quadros, e
campos de edio em um controle de
DataWindow como uma linha de texto
formatado com RichText. So includos
bitmaps e campos de edio na linha.
PowerBuilder 9.0 Bsico Captulo 9 91

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
Create Integer Cria um objeto de DataWindow
usando o cdigo fonte especificado,
substituindo o objeto DataWindow no
controle DataWindow especificado
com o novo objeto de DataWindow.
CrosstabDialog Integer Exibe a definio Crosstab na caixa
de dialogo, onde o usurio poder
modificar a definio em tempo de
execuo.
Cut Integer Corta o texto selecionado do controle
de edio em uma linha e coluna da
DataWindow e guarda no clipboard.
Para um estilo de apresentao
RichText DataWindow, corta o
texto selecionado no controle
DataWindow.
DataCount Long Retorna o nmero de dados em uma
srie, em um grfico do controle
DataWindow informado.
DBCancel Integer Cancela o Retrieve em progresso.
DBErrorCode Long Retorna o cdigo de erro gerado pelo
banco de dados. Esta Funo esta
obsoleta DBErrorCode uma e ser
descontinuado em uma liberao
futura. Cdigos de erro de banco de
dados esto agora disponveis como
argumentos de evento.
DBErrorMessage String Devolve uma linha que contm o
texto da mensagem de erro gerado
por um erro de banco de dados.
DBErrorMessage uma funo
obsoleta e ser descontinuada em
uma liberao futura.
DeletedCount Long Devolve o nmero de linhas que
foram apagadas do controle
DataWindow, mas no foram
atualizadas no de banco de dados.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 92

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
DeleteRow Integer Apaga a linha especificada no
controle de DataWindow.
Describe String Retorna informaes sobre a
estrutura do controle DataWindow.
Drag Integer Comeos ou fins o arrastamento no
controle de DataWindow.
FilteredCount Integer Devolve o nmero de linhas que no
so visveis por causa do filtro atual.
Find Long Sintaxe 1: procura a prxima linha
em um controle DataWindow no qual
os dados satisfaam uma condio
especificada. Sintaxe 2: Para um
estilo RichText acha o texto
especificado no controle e reala o
texto se achou. Voc pode especificar
a direo de procura e se procura
palavras inteiras ou em partes
FindCategory Integer Retorna o nmero da categoria
especificada do grfico no controle de
DataWindow.
FindGroupChange Long Procura o inicio de uma linha
especificada para a primeira quebra
para o grupo especificado no controle
de DataWindow.
FindNext Integer Procura a prxima ocorrncia de
texto no controle e reala, enquanto
aplica os critrios em uma chamada
prvia da funo de procura (find).
Esta funo s se aplica a controles
de DataWindow cujo contedo tem o
estilo de apresentao RichText.
FindRequired Integer Identifica as colunas editveis que o
usurio no preencheu.
FindSeries Integer Retorna o nmero das sries do
grfico no controle DataWindow.
GenerateHTMLForm Integer Cria um formulrio HTML que contm
colunas para uma ou mais linhas.
PowerBuilder 9.0 Bsico Captulo 9 93

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
GenerateResultSet Long Retorna um result set EAServer de
um objeto PowerBuilder rodando
como um componente em EAServer.
GetBandAtPointer String Retorna uma string que contm a
faixa na qual o ponteiro fica
atualmente posicionado seguido por
um carter (~t).
GetBorderStyle Border
(enumerated
)
Retorna o tipo de borda da coluna
especificada no controle de
DataWindow. So:
Box!Lowered!NoBorder!Raised!Resize
Border!ShadowBox!Underline!
GetChanges Long Recupera as mudanas feitas a um
DataWindow.

GetChild Integer Guarda em uma varivel, o nome da
coluna especificada da child
DataWindow .
GetClickedColumn Integer Retorna o nmero da coluna no
controle DataWindow que o usurio
clicou ou clicou duas vezes.
GetClickedRow Long Retorna o nmero da linha no
controle DataWindow que o usurio
clicou ou
clicou duas vezes.
GetColumn Integer

Retorna o nmero da coluna atual no
controle DataWindow.
GetColumnName String Retorna o nome da coluna atual no
controle DataWindow.
GetContextService Integer

Cria uma referncia a uma instncia
especificada do servio especificado.
GetData Double Retorna os valores de dados nas
sries no grfico do controle de
DataWindow. Tambm veja
GetDataValue.
GetDataPieExplode Integer Informa porcentagem que uma
fatia explodida em um grfico tipo
pie (torta).
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 94

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
GetDataStyle Integer Retorna estilos, dependendo do que for
informado para se retornar. Existem 3
sintaxes diferentes.
GetDataValue Integer Retorna o valor dos dados na srie
especificada no grfico do controle
DataWindow.
GetFormat String Retorna qual formato foi usado para
exibio da coluna especificada do
controle DataWindow.
GetFullState Long Recupera o estado completo de um
DataWindow/Datastore em uma varivel
Blob. Esta funo principalmente
usada em aplicaes distribudas.
GetItemDate Date Retorna o dado no padro Date na linha
e coluna especificada do controle
DataWindow.
GetItemDateTime DateTime Retorna o dado no padro de DateTime
na linha e coluna especificada do
controle DataWindow.
GetItemDecimal Decimal Retorna o dado no padro decimal na
linha e coluna especificada do controle
DataWindow.
GetItemNumber Double Retorna o dado no padro Numrico na
linha e coluna especificada do controle
DataWindow.
GetItemStatus dwItemSta
tus
(enumerat
ed)
Retorna o estado do item na linha e
coluna especificada. Valores so:
DataModified!New!NewModified!NotModif
ied!
PowerBuilder 9.0 Bsico Captulo 9 95

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
GetItemString String Retorna os dados no padro String na
linha e coluna especificada do controle
DataWindow.
GetItemTime Time Retorna os dados no padro Time na
linha e coluna especificada do controle
DataWindow.
GetMessageText String Retorna o texto de mensagem gerado por
uma DataWindow CrossTab.
GetMessageText uma funo obsoleta e
ser descontinuada em uma liberao
futura. MessageText est agora disponvel
como um argumento em um evento
DataWindow que pode ser definido
associado com o pbm_dwnmessagetext.
GetNextModified Long Retorna o nmero da primeira linha que
foi modificada no buffer da DataWindow.
GetObjectAtPointer String Retorna uma string que contm o nome
da coluna ou controle de grfico apontado
no controle DataWindow, separado por
(~t), e o nmero da linha.
GetParent PowerObject Retorna uma referncia para o nome do
objeto pai.
GetRow Long Retorna um Inteiro que contm o nmero
da linha atual no controle DataWindow.
GetRowFromRowId Long Obtm o nmero da linha de uma linha
afim em um controle DataWindow,
identificada por uma linha diferente,
associada com aquela linha.
GetRowIdFromRow Long Obtm um identificador nico da linha em
um controle de DataWindow do nmero
da linha associado com aquela linha.
GetSelectedRow Integer Retorna o nmero da primeira linha
selecionada depois do nmero da linha
especificada no controle DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 96

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
GetSeriesStyle Integer Procura externamente o aparecimento de
umas sries em um grfico. H vrias
sintaxes, enquanto dependendo de que
colocaes voc queira.
GetSQLPreview String Retorna a declarao de SQL atual que o
controle de DataWindow est
submetendo ao banco de dados.
GetSQLPreview uma funo obsoleta e
ser descontinuada em uma liberao
futura. Sintaxe de SQL est agora
disponvel como um argumento de
evento.
GetSQLSelect String Retorna a declarao SELECT atual para o
controle DataWindow.
GetStateStatus Long Retorna o estado atual das flags de status
internas do objeto DataWindow e as
guarda em uma varivel Blob. Esta
funo principalmente usada em
aplicaes distribudas.
GetText String Retorna o texto no controle de edio na
linha e coluna atual do controle
DataWindow.
GetTrans Integer Retorna os valores da transao do
objeto DataWindow.
GetUpdateStatus Integer Guarda o nmero da linha que ser
atualizada no dwBuffer e o datatype que
a identifica. GetUpdateStatus uma
funo obsoleta e ser descontinuada em
uma liberao futura. GetUpdateStatus
est agora disponvel como um
argumento no controle DataWindow
DBError e eventos de SQLPreview.
GetValidate String Retorna que a regra de validao usada
na coluna especificada do controle
DataWindow.
GetValue String Retorna um item especificado na lista de
valores para a coluna especificada.
GroupCalc Integer Recalcula as quebras nos grupos no
controle DataWindow.
Hide Integer Faz o controle invisvel.
PowerBuilder 9.0 Bsico Captulo 9 97

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
ImportClipboard Long Copia dados do clipboard para o
controle DataWindow.
ImportFile Long Copia dados de um arquivo para o
controle DataWindow.
ImportString Long Copia dados de uma string para o
controle de DataWindow.
InsertDocument Integer Inserir um formato de richtext ou
arquivo de texto em um controle
DataWindow. Voc usa um parmetro
de funo para especificar como o
contedo novo adicionado, pode ser
inserido a um ponto de insero, ou
pode substituir todo um contedo
existente. Esta funo aplica-se a
controles DataWindow cujo contedo
tem um estilo RichText.
InsertRow Long Insere uma nova linha antes da linha
especificada no controle DataWindow.
IsSelected Boolean Retorna TRUE se a linha especificada
na DataWindow foi selecionada;
Retorna FALSE se a linha no esta
selecionada ou maior que o nmero
de linhas no controle DataWindow.
LineCount Integer Determina o nmero de linhas dentro
um controle de edio que permite
linhas mltiplas.
ModifiedCount Long Retorna o nmero de linhas que
foram modificadas no controle
DataWindow mas no foram contudo
atualizadas no banco de dados.
Modify String Usada especificamente para modificar
um controle DataWindow com seu
contedo string.
Move Integer Move o controle DataWindow para
uma localizao especificada.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 98

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
ObjectAtPointer grObjectType Retorna o ObjectType e o nome da sria
de qualquer ponto clicado do grfico .
OLEActivate Integer Ativa o OLE para o objeto OLE da linha e
coluna especificada no controle
DataWindow
Paste Integer Insere o contedo do clipboard em cima
da linha e coluna atual controle
DataWindow.
PasteRTF Long Cola dados de um controle RichText de
uma linha em um controle DataWindow
com estilo RichText.
PointerX Integer Retorna a distncia que o objeto esta da
extremidade esquerda do controle
DataWindow.
PointerY Integer Retorna a distncia que o objeto esta do
topo do controle DataWindow.
Position Integer Sintaxe 1: Retorna a posio do ponto de
insero no controle de edio em cima
da linha e coluna do controle
DataWindow. Sintaxe 2: Retorna a linha
e coluna do ponto de insero ou o
comeo e fim de texto selecionado em
um controle DataWindow cujo contedo
tem o estilo RichText.
PostEvent Boolean Acrescenta um evento ao fim da fila de
mensagem para o controle DataWindow.
Print Integer Envia o contedo do controle
DataWindow impressora atual. Esta
funo tem vrias sintaxes.
PrintCancel Integer Cancela o trabalho de impresso e apaga
o arquivo de spool (se existir) quando o
contedo do controle DataWindow
enviado pela funo de print.
ReplaceText Integer Substitui o texto selecionado dentro do
controle edio pela string especificada.
PowerBuilder 9.0 Bsico Captulo 9 99

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
ReselectRow Integer

Acessa o banco de dados para recuperar
todas as colunas que podem ser
atualizadas a recuperao pode ser
pontual.
Reset Integer apaga todos os dados de um controle
DataWindow.
Apaga os dados, as categorias, ou as
sries de um grfico dentro de um objeto
DataWindow com uma fonte de dados
externa.
ResetDataColors Integer Reajusta a cor de um ponto de dados
cor especificada para as sries.
ResetTransObject Integer Faz com que controle DataWindow pare
de usar um objeto de Transao.
ResetUpdate Integer Reajusta e atualiza as flags do controle
DataWindow.
Resize Integer Muda a largura e altura do controle
DataWindow.
Retrieve Long Recupera as linhas do banco de dados
para o controle DataWindow.
RowCount Long retorna o nmero de linhas atualmente
disponvel no controle de DataWindow
(todas as linhas recuperadas menos as
excludas e as filtradas) e acrescenta as
que foram includas.
RowsCopy Integer

Cpias uma gama de linhas de um
controle DataWindow para outro ou de
um buffer para outro dentro de um nico
controle de DataWindow.
RowsDiscard Integer Descartes uma gama de linhas. As linhas
no podem ser restabelecidas sem serem
recuperadas do banco de dados.
RowsMove Integer Apaga uma gama de linhas de um
controle DataWindow e insere as linhas
em um outro controle DataWindow ou
outro buffer do mesmo controle
DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 100

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
SaveAs Integer Envia os dados representados no
grfico especificado no controle
DataWindow para o arquivo
especificado, no formato
especificado.
SaveAs Integer Envia o contedo do controle
DataWindow ao arquivo especificado,
no formato especificado, com ou sem
ttulos de coluna.
SaveAsAscii Long Envia o contedo de um DataWindow
em um arquivo texto padro ASCII.
Scroll Integer Avana o um controle DataWindow
direo especificada o nmero
especificado de linhas.
ScrollNextPage Long Avana para a prxima pgina do
controle DataWindow.
ScrollNextRow Long Avana para aproxima linha do
controle DataWindow. ScrollNextRow
muda a linha atual mas no muda a
coluna atual.
ScrollPriorPage Long Retorna para a primeira pagina do
controle DataWindow.
ScrollPriorRow Long Retorna para a primeira linha, muda
a linha atual mas no muda a coluna
atual.
ScrollToRow Integer Avana ou retrocede para a linha
especificada, muda a linha atual mas
no muda a coluna atual.
SelectedLength Integer Retorna o nmero total de carter e
espaos (comprimento) no texto
selecionado no controle de edio em
cima da linha atual e coluna.
SelectedLine Integer Retorna o nmero da linha no
controle de edio em cima da linha
atual e coluna.
PowerBuilder 9.0 Bsico Captulo 9 101

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
SelectedStart Integer

Retorna a posio comeando no controle
editado em cima da linha atual e coluna.
SelectedText String Retorna qualquer texto se selecionado
para a linha atual e coluna do controle
DataWindow.
SelectText Integer Seleciona texto dentro de um controle
DataWindow. Voc especifica onde a
seleo comea e quanto caractere ir
selecionar.
SelectTextAll Integer Seleciona todo o contedo de um controle
DataWindow com o estilo RichText .
SelectTextLine Integer Seleciona a linha que contm o ponto de
insero em um controle DataWindow
com o estilo.
SelectTextWord Integer Seleciona a palavra que contm o ponto
de insero em um controle DataWindow
com o estilo RichText.
SeriesCount Integer Retorna o nmero de sries no grfico
especificado no controle DataWindow
SeriesName String Retorna o nome das sries especificadas
no grfico especificado no controle de
DataWindow.
SetActionCode Integer Define a ao um controle DataWindow
disparando um evento. SetActionCode
uma funo obsoleta e ser
descontinuado em uma liberao futura.
SetBorderStyle Integer Atribui o estilo de borda da coluna
especificada no controle DataWindow.
SetChanges Long Aplica mudanas capturadas com
GetChanges a um DataWindow. Esta
funo principalmente usada em
aplicaes distribudas.
SetColumn Integer Salta para a coluna especificada da
coluna atual no controle de DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 102

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
SetDataPieExplode Integer Explode uma fatia do grfico PIE em
um grfico de PIE
SetDataStyle Integer Para o dado especifico apontado na
srie especifica no grfico especifico
no controle DataWindow: Sintaxe 1:
Mudar a cor do ponto de dados.
Sintaxe 2: Mudar o estilo de linha e
largura para os dados.
SetDetailHeight Integer Mudar a altura de cada linha em uma
faixa especificada
SetFilter Integer Define os critrios de filtro para o
controle de DataWindow.
SetFocus Integer Move o foco para o controle
DataWindow.
SetFormat Integer Move o formato de exibio para a
coluna especificada do controle
DataWindow.
SetFullState Long Aplica o contedo de uma varivel
Blob de DataWindow recebido por
GetFullState a um DataWindow. Esta
funo principalmente usada em
aplicaes distribudas.
SetHTMLAction Integer Aceita ao e informao de contexto
sobre interao de usurio com o
controle Web DataWindow em um
browser de forma que HTML
recentemente gerado possa refletir
qualquer mudana.
SetItem Integer

Move o valor da linha especificada e
coluna do controle DataWindow.
SetItemStatus Integer Atribui o status de uma linha e uma
coluna especificada do controle
DataWindow no buffer.
PowerBuilder 9.0 Bsico Captulo 9 103

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
SetPosition Integer Sintaxe 1: Especifica se o controle
DataWindow sempre exibe On TOP na
ordem de frente-para-parte de trs
dentro da window.
Syntaxe 2: Movimenta um objeto dentro
da DataWindow para outra faixa ou muda
a ordem de frente-para-parte de trs de
objetos dentro de uma faixa.
SetRedraw Integer Controla automaticamente novo desenho
do controle DataWindow depois de cada
mudana em suas propriedades ou
contedos.
SetRow Integer

Especifica que a linha especificada a
linha atual do controle DataWindow.
SetRowFocusIndicator Integer

Especifica o foco na linha atual para o
controle DataWindow.
SetSeriesStyle Integer Especifica para a srie do grfico do
controle DataWindow:
Sintaxe 1: seta a cor das sries.
Sintaxe 2: seta o estilo de linha e largura.
Sintaxe 3: seta o padro de
preenchimento ou smbolo para
marcadores de dados nas sries.
SetSort Integer Define os critrios de sort para o controle
de DataWindow. A escolha atual
executada pela funo de sort.
SetSQLPreview Integer Especifica a declarao de SQL atual para
o controle DataWindow.
SetSQLSelect Integer

Muda declarao SELECT atual para o
controle DataWindow.
SetTabOrder Integer Muda o valor do TabOrder da coluna
especificada no controle de DataWindow
SetText Integer Substitui o texto para a linha atual e
coluna do controle DataWindow com o
texto especificado.
SetTrans Integer Especifica os valores no objeto de
Transao interno do controle
DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 104

Funes para o controle DataWindow.
Funo DataWindow Retorno Descrio
SetTransObject Integer Especifica o objeto de Transao para a
DataWindow e prov controle em cima da
transao, inclusive a habilita o commit.
SetValidate Integer Muda a regra de validao para a coluna
especificada do controle DataWindow.
SetValue Integer Especifica o valor do item em uma lista
valida ou na tabela de cdigo da coluna
especificada do controle DataWindow.
ShareData Integer Compartilham dados entre o buffer
Primrio do controle DataWindow e um
buffer secundrio do controle
DataWindow.
ShareDataOff Integer Cancela o compartilhamento do buffer
primrio para o controle de DataWindow.
Todos os controles DataWindow
secundrios sero desconectados e
perdero seus dados.
Show Integer Faz o controle DataWindow visvel.
ShowHeadFoot Integer Em uma DataWindow estilo RichText,
exibe os painis para editar o cabealho e
rodap ou esconde os painis e retorna a
edio do texto principal.
Sort Integer Classifica as linhas do controle
DataWindow baseado em seus critrios
de classificao (sort) atuais.
TextLine String Exibe Informaes sobre o controle
editado em cima da linha e coluna
corrente.
TriggerEvent Integer Chama um evento especificado no
controle de DataWindow e executa o
script para o evento.
TypeOf Object Retorna o tipo do controle.
Undo Integer Cancela as ltimas modificaes em um o
controle de edio para a linha e coluna
corrente.
Update Integer

Envia ao banco de dados todos os
Inserts, Deletes, e Updates do controle
DataWindow.
PowerBuilder 9.0 Bsico Captulo 9 105

Montando um Objeto DataWindow
Nesta etapa, iremos nos aprofundar dos conceitos da DataWindow, iremos:

x Criar e visualizar um objeto DataWindow;
x Aperfeioar a visualizao da DataWindow;
x Vincular duas DataWindow;
x Incluir os dois objetos DataWindow a um controle DataWindow


O Primeiro passo criar a DataWindow, como j foi visto anteriormente, a
receita nica, mas vamos repeti-la para uma melhor fixao.

Clique em NEW, no template selecione DataWindow e selecione o
estilo Tabular. Clique em OK.

No template Wizard que ir se abrir, selecione Quick Select para o Data
Source e certifique-se que a caixa de verificao Retrieve on Preview esteja
marcada. Clique em Next.

Neste momento o PB 9.0, dever conectar com o banco de dados EAS Demo
DB, caso isto no acontea, siga os passos de como conectar a uma base de
dados.

No template Quick Select selecione a tabela customer com um clique, a
lista de colunas disponveis da tabela ser disponibilizada para seleo.

Selecione as colunas: id, fname, lname. Mantenha a ordem de seleo para
que nosso exemplo possa ficar coerente com o que voc esta desenvolvendo.

Clique na verticalscrollbar, da lista de colunas para selecionar a coluna
company_name.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 106

Montando um Objeto DataWindow
Na figura abaixo mostramos o template Quick Select.

Quando se seleciona as colunas, automaticamente elas so inseridas no
template de colunas, disponibilizados abaixo do template de seleo, o
template de colunas disponibiliza as linhas de : Column, Sort, Criteria e Or.


Onde :

Column : Indica o nome da coluna selecionada;
Sort : Define como os dados recuperados sero apresentados,
Ascendentes ou Descendente;
Criteria : Realiza um filtro no momento da seleo dos dados,
aceita todos os modelos do padro SQL;
OR : Operador para combinaes lgicas.

PowerBuilder 9.0 Bsico Captulo 9 107

Montando um Objeto DataWindow
Os operadores lgicos aceitveis :

Operadores Descrio
= Igual a
> Maior que
< Menor que
<> Diferente de
>= Maior ou Igual a
<= Menor ou Igual a
LIKE Contm
NOT LIKE No Contm
IN So iguais a
NOT IN So diferentes de

Exemplos :

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 108

Montando um Objeto DataWindow
Rolando a VerticalScrollbar esquerda, o template interno rolar,
permitindo mltiplos critrios de filtragem.

Para continuar a construo do objeto DataWindow, clique em OK, Next e
Finish.

O objeto DataWindow ser gerado, no template de DataWindow.

Do mesmo modo, teremos a viso da seleo definida, no template Preview
da DataWindow.


Agora salve a DataWindow gerada para que tenhamos acesso
posteriormente.

PowerBuilder 9.0 Bsico Captulo 9 109

Montando um Objeto DataWindow
Clique em Save, e salve com o nome de d_lista01, em nossa

aplicao exemplo_1.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 110

Aperfeioando a visualizao da DataWindow
No PowerBuilder 9.0 podemos modelar a DataWindow para uma visualizao
mais apropriada ao negocio desenvolvido. Sempre que se cria um objeto
DataWindow ele seguir uma apresentao padro, mas nem sempre a
apresentao padro a melhor forma de visualizarmos os dados, utilizando
os recursos de edio do painter de DataWindow, com facilidade poderemos
maquiar o objeto DataWindow.

Abra o objeto DataWindow: d_lista01


Note que, o cabealho no esta alinhado com a linha de detalhe(Customer ID)
com ( ID ), vamos alinhar.

Clique em cima de Customer ID", mantendo pressionada a tecla Ctrl, clique
em id, note que as duas clulas estaro marcadas com selecionadas.


Agora na Painterbar2, selecione no cone
Alinhamentos, o cone Alinhar pela direita,
as colunas se alinharo.

Clique em qualquer parte branca do objeto DataWindow para
remover a seleo.
PowerBuilder 9.0 Bsico Captulo 9 111

Aperfeioando a visualizao da DataWindow
Clique em Company Name e mantendo o Ctrl pressionado, clique em Last
Name, arraste para direita ou utilize as setas do teclado para movimentar as
colunas para a direita afastando-as da coluna First Name.

Ento teremos:

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 112

Aperfeioando a visualizao da DataWindow
Ajuste as colunas se baseando no Preview DataWindow, at conseguir uma
formatao mas bem definida entre as colunas.

Utilize os botes de ajustes para auxiliar na formatao, so eles:

Contedo da coluna

Justifica o texto.


Alinha a direita

Centraliza

Alinha a esquerda



OBJETOS

Alinha objetos
esquerda

Alinha objetos
direita

Centraliza os
objetos
selecionados
horizontalmente

Centraliza os
objetos
selecionados
verticalmente

Alinha os objetos
selecionados pelo
topo

Alinha os objetos
selecionados pela
base

Padroniza os
espaos
horizontalmente
entre os objetos
selecionados

Padroniza os
espaos
verticalmente entre
os objetos
selecionados

Padroniza os
objetos
selecionados
quanto a sua
largura

Padroniza os
objetos
selecionados
quanto a sua altura

Padroniza os
objetos
selecionados
quanto a sua
largura e altura

PowerBuilder 9.0 Bsico Captulo 9 113

Aperfeioando a visualizao da DataWindow
Com o boto Selection, podemos selecionar objetos para incluir no
objeto DataWindow, selecione LINE para incluir uma linha no
cabealho(Header), clique no ponto onde voc quer incluir a linha.

Para modificar seu tamanho, clique no objeto linha inserido e com a tecla
Shift pressionada, clique nas setas do teclado para realizar a operao.
Voc tambm poder clicar no objeto linha e passar o mouse sobre o objeto,
quando o cone do mouse mudar para uma cruz, clique no boto direito do
mouse continue pressionando e arraste at o tamanho desejado.

No final seu objeto DataWindow dever ficar com a aparncia da figura
abaixo.



Clique em Save para salvar o objeto DataWindow com as novas
configuraes.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 114

Vinculando duas DataWindow

Na montagem do primeiro objeto DataWindow, selecionamos algumas colunas
para visualizao. Nessa etapa, vincularemos outro objeto DataWindow e
trabalharemos com seleo de dados, para tal, teremos que utilizar o
Retrieval Argument e a clausula WHERE como critrio de seleo para o
segundo objeto DataWindow, que ser passado em tempo de execuo.

Para isso teremos que seguir os seguintes passos:

1. Selecionar o Data Source e o estilo de apresentao;
2. Selecionar a tabela e as colunas;
3. Definir o Retrieval Argument;
4. Especificar a clausula WHERE;
5. Conferir no template Preview se esta tudo certo;
6. Salvar o objeto DataWindow

Clique em NEW selecione DataWindow, selecione o estilo Freeform.
Clique em OK.

No template Wizard que ir se abrir, selecione SQL Select para o Data
Source e certifique-se que a caixa de verificao Retrieve on Preview
esteja marcada. Clique em Next.

A caixa de dialogo Select Table aparecer, selecione a tabela customer.
Clique em Open.

Voc tambm pode selecionar a tabela com um duplo clique.



PowerBuilder 9.0 Bsico Captulo 9 115

Vinculando duas DataWindow

Coloque o ponteiro do mouse sobre a parte mais escura da tabela customer
(esta rea denominada Header). Clique com o boto direito do mouse e no
menu-popup que aparecer selecione Select All.




Neste momento estamos com todas as colunas
selecionadas no template Table Layout e
automaticamente o PowerBuilder 9.0 escreveu o Select
para as colunas que foram selecionas na tabela.

Agora temos que definir o Retrieval Argument. Para
isto clique na PainterBar1 em Design selecione
Retrieval Argument.


A caixa de dialogo para definio do tipo de argumento que ser repassado
para o objeto DataWindow aparecer, para definirmos o tipo de argumento,
teremos que informar um nome, que ser utilizado nas definies no objeto
DataWindow, associado a esse nome, o tipo de varivel, se String,
Numrica, Date, Time, Integer etc. Disponveis na caixa de seleo.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 116

Vinculando duas DataWindow

O tipo de dado sempre estar relacionado com a coluna a qual voc quer
selecionar, se o tipo de dado da coluna for uma varivel string, o tipo de
dado do Retrieval Argument dever ser uma varivel do tipo string.

Defina como a figura abaixo. Clique em OK, para continuar.

Name : pass_id
Type : Number



Clique no quadro abaixo na aba WHERE.
O Template WHERE se abrir, nele voc ira visualizar os quadros; Column,
Operator, Value e Logical.

Clique sobre o quadro Column e todas as colunas da tabela selecionada,
estaro disponveis para a seleo, selecione "customer"."id".

PowerBuilder 9.0 Bsico Captulo 9 117

Vinculando duas DataWindow

No quadro Operator, selecione = (igual).

No Quadro Value, clique com o boto direito do mouse e no menu-popup
selecione Argument e na caixa de dialogo, selecione a varivel que
acabamos de criar, pass_id.

Neste caso s teremos uma linha na clausula Where, portanto o quadro
Logical, ficar em branco.



Para uma maior noo das aes realizadas, clique na aba Syntax, e visualize
a query montada.




Clique em Return na caixa de dialogo que surgir. Clique em Next
e depois em Finish para visualizar o objeto DataWindow gerado.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 118

Vinculando duas DataWindow

Aparecer a caixa de dialogo para se especificar o Retrieval Argument, isto
se d pelo fato da opo Retrieve On Preview estar ligada, ento digite 101
e poder ver a recuperao dos dados relativos a customer"."id" = 101,
definidos na clausula WHERE.

Viso do objeto DataWindow.


PowerBuilder 9.0 Bsico Captulo 9 119

Vinculando duas DataWindow

Viso dos dados selecionados, DataWindow Preview.

Para selecionar outros dados no painter de construo do objeto DataWindow,
clique em Retrive, e informe um outro valor na caixa de dialogo do
Retrieval Argument.

Clique em Save e salve com o nome de d_lista02, na aplicao
exemplo1.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 120

Vinculando duas DataWindow

Com a criao do segundo objeto DataWindow para a tabela customers,
temos que pensar que esses dois objetos sero includos em uma janela
(WINDOW) e que eles devem ter um tamanho que possibilite arrumar os dois
objetos nesta janela sem que a janela fique muito poluda e de difcil
navegao.

O que podemos fazer para esta melhora?

1. Rearrumar as colunas e labels;
2. Alinhar as colunas e labels;
3. Facilitar a visualizao de algumas colunas com o estilo de objeto
drop-down DataWindow.

Com um duplo clique sobre o label d_lista02 no template TreeView, edite o
objeto DataWindow d_lista02.

A viso inicial do objeto que criamos :



PowerBuilder 9.0 Bsico Captulo 9 121

Vinculando duas DataWindow

Com base na edio e seguindo o caminho da alterao do objeto
DataWindow d_lista01, altere o objeto d_lista02 para que ele tenha a
aparncia abaixo.

OBS: Os campos da DataWindow que aparecem em negrito chamamos de
Label.

Label uma descrio que identifica a coluna.


A novidade em relao a d_lista01 a coluna State, que apresenta uma
visualizao com estilo drop-down DataWindow.

Para fazer esta coluna receber este estilo, siga os passos seguir:

1. D um clique sobre a coluna;
2. Com o mouse sobre a coluna, clique o boto direito do mouse e selecione
properties (propriedades);
3. Na tabela selecione a aba, Edit;
4. No item Style Type, selecione DropDownDW;
5. Marque a caixa Always Show Arrow;
6. Marque a caixa VscrollBar.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 122

Vinculando duas DataWindow

Veja o exemplo:


Quando terminar de arrumar o objeto DataWindow d_lista02, clique em
Save para salvar as alteraes.

Dicas: Para trabalhar com as colunas e labels, utilize os botes de ajustes
que descrevemos.

Clicando em uma parte branca do objeto DataWindow com o boto esquerdo
do mouse e mantendo-o pressionado, arraste o mouse sobre vrias clulas,
(colunas e labels) uma caixa de seleo surgir, selecionando todas as
clulas a qual a caixa de seleo estiver envolvendo. Veja figura.


Neste caso sero selecionados todos os campos a qual a caixa de seleo esta
envolvendo.

PowerBuilder 9.0 Bsico Captulo 9 123

Vinculando objeto DataWindow a um controle
DataWindow
Aps criar e salvar os objetos DataWindow esses objetos j esto aptos a
serem vinculados a um controle DataWindow esse controle DataWindow
estar associado a um objeto Window (janela) e esse objeto Window (janela)
a sua aplicao.

Assim teremos uma janela com uma funcionalidade de recuperao de dados
de uma base de dados. Para isso seguiremos os seguintes passos:

1. Incluir o controle DataWindow a Window (janela);
2. Incluir os objetos DataWindow ao controle DataWindow;
3. Vincular a janela a aplicao;
4. Executar e depurar a aplicao.


Incluindo controle DataWindow a Window (janela)
Edite a janela w_001 com um duplo clique em w_001 no template TREEVIEW
esquerda.

Com a janela editada selecione a aba Layout na parte inferior.

Agora voc tem a sua janela pronta para receber o controle DataWindow e
assim ser associado a esse controle, o objeto DataWindow.

Clique em Visualizar e selecione DataWindow e inclua

na parte superior da janela conforme o exemplo abaixo.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 124

Incluindo controle DataWindow a Window (janela)
No template propriedades direita no item DataObject. Clique no boto de
seleo mais direita e selecione o objeto DataWindow, d_lista01.

Note que no foi possvel visualizar todo o objeto d_lista01 agora iremos
redimensionar o controle para se poder visualizar todo o objeto. Clique com o
boto esquerdo do mouse no controle DataWindow na janela, coloque o
mouse sobre a borda do controle direita, quando o ponteiro do mouse se
modificar para uma seta de duas pontas clique com o boto direito do mouse
mantendo-o pressionado e arraste para a direita, assim o seu controle poder
ser redimensionado, conforme a figura abaixo.



Com estes procedimentos, j podemos visualizar os labels do objeto
DataWindow, d_lista01.

Note que o PowerBuilder 9.0 automaticamente atribuiu a esse controle
DataWindow o nome de dw_1, veja o atributo Name na figura. Voc pode
deixar sempre o PowerBuilder 9.0, atribuir nomes seus controles, como
tambm pode dar a eles o nome que desejar, mas sempre que possvel, siga
as regras j vistas para identificao de controles e objetos.

Agora repetiremos toda a operao anterior, para incluirmos o objeto
DataWindow d_list02, em um novo controle DataWindow abaixo do controle
dw_1.

PowerBuilder 9.0 Bsico Captulo 9 125

Incluindo controle DataWindow a Window (janela)
Veja como ficou:



Voc pode executar a sua aplicao e visualizar como o controle DataWindow
ser apresentado na janela.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 126

Incluindo controle DataWindow a Window (janela)

Mas notar que nenhum dado foi recuperado da base de dados porque ainda
no vinculamos o controle a esta base de dados.

Para vincular o controle DataWindow a base de dados primeiro temos que
ativar o banco de dados ou seja, coloc-lo ativo, para depois poder extrair
dados desse banco, atravs da tabela customers.

Usaremos a transao padro, a SQLCA, como j vimos em captulos
anteriores.

Os parmetros necessrios para serem informados so:

sqlca.dbms : Recebe o tipo de conexo nesse caso ODBC.

sqlca.dbparm : Recebe os parmetros de conexo como Nome do
profile definido, o nome do usurio do banco e a senha
de acesso para o usurio que esta pedindo a conexo.

// Aplica os parmetros do DBMS de teste, a transao SQLCA
sqlca.dbms ="ODBC"
sqlca.dbparm ="ConnectString='DSN=EAS Demo DB
V9;UID=dba;PWD=sql'"

Aps a definio dos parmetros, conectamos ao banco.

// Conecta com o banco
Connect;

O banco ser ativado e estar disponvel para acesso, para testarmos
usamos:

//Testando a conexo
If sqlca.sqlcode < 0 Then
MessageBox ("Erro: Impossivel conectar com o banco de
dados", &
sqlca.sqlerrtext, Exclamation!)
HALT
End If
PowerBuilder 9.0 Bsico Captulo 9 127

Incluindo controle DataWindow a Window (janela)

//Se tudo estiver OK
//associamos o controle DataWindow a transao SQLCA
//e recuperamos os dados

dw_1.settransobject(SQLCA)
dw_1.Retrieve()

Nesse ponto, associamos o primeiro controle DataWindow a transao do
banco agora associamos o segundo controle a mesma transao.

dw_2.settransobject(SQLCA)

Note que no faremos a recuperao dos dados neste momento porque os
dados para este controle devero ser recuperados a partir da seleo no
controle DataWindow dw_1.

Para que o controle DataWindow dw_1 execute a seleo para o controle
DataWindow dw_2 d um duplo clique no controle dw_1, procure na drop-
down de eventos, o evento clicked e escreva em PowerScript o cdigo a
seguir.

//Cria a varivel numrica que recebera o cdigo para a
//recuperao em dw_2

integer wk_id

//Recupera a seleo

wk_id = dw_1.GetItemNumber(row, "id")

//Recupera os dados segundo a seleo em dw_1

dw_2.Retrieve(wk_id)

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 128

Incluindo controle DataWindow a Window (janela)

Clique em Save e salve a sua aplicao e em Run para
executar.

Teremos ento:



Essa janela s tem a funcionalidade de consulta a partir de um pequeno dado
se pode acessar uma gama maior de informaes pertinentes ao dado
selecionado.

PowerBuilder 9.0 Bsico Captulo 9 129

Incluindo controle DataWindow a Window (janela)
O prximo passo ser o desenvolvimento de rotinas de incluso, atualizao e
alterao. Com esses procedimentos teremos uma viso bem ampla de como
se pode manipular dados atravs de controles DataWindow e de como
simples e seguro faze-lo.

A manipulao de dados com controles DataWindow, embora seja uma tarefa
simples pode se tornar complexa assim como, to complexa for a sua
aplicao e o foco do seu negocio. Voc ver que esta tarefa por mais
complexa que ela seja se tornar menos rdua utilizando os objetos e
controles DataWindow.

O desenvolvimento utilizando objetos DataWindow no se limita s caixas de
dilogos e wizards disponibilizados pelo PowerBuilder 9.0. Atravs de um
editor SQL, como SQLplus da Oracle por exemplo, voc poder desenvolver
querys complexas e importar para o painter de SQL do PowerBuilder 9.0,
alm disso, voc tambm poder trabalhar com CURSOR e PROCEDURE
para recuperar dados em um objeto DataWindow.

Uma outra forma de se trabalhar com um objeto DataWindow a utilizao
de DataStore, o DataStore um controle DataWindow no visual, ou seja,
um controle DataWindow invisvel, Quase todas as funcionalidades de um
controle DataWindow esto disponibilizados, menos as funcionalidades visuais
que no caberiam ao DataStore, tendo em vista que ele no permite
visualizar dados e s e somente s, recuperar e manipular dados.

Se voc entendeu o que um controle DataWindow, tenha certeza que
tambm entendeu o que um DataStore. No decorrer desse captulo iremos
exemplificar as diversas tcnicas de se trabalhar com o objeto DataWindow.

Para que o exemplo comece a ficar mais completo iremos incluir a rotina de
incluso de dados. Utilizaremos alguns conceitos interessantes que j foram
explicados, mas no exemplificados, como criar um evento de usurio,
chamar estes eventos e incluir objetos na janela.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 130

Incluindo parmetros de atualizao

Em nosso exemplo, incluiremos agora trs rotinas: de incluso, de excluso e
de atualizao dos dados no banco, para isto, incluiremos trs controles de
boto de comando, e em cada controle adicionaremos sua programao
PowerScript correspondente.

Clique em CommandButton e clique do lado direito do controle

DataWindow dw_1, assim ser includo o controle CommandButton na janela
w_001.

Como iremos incluir trs controles, clique com o boto direito mouse sobre o
controle CommandButton que acabou de incluir na janela e no menu-popup
que aparecer, selecione a opo Duplicate. Assim o controle ser
automaticamente inserido na janela.



PowerBuilder 9.0 Bsico Captulo 9 131

Incluindo parmetros de atualizao

Repita a operao e teremos os trs controles na janela w_001.

Agora incluiremos a programao correspondentes cada controle, para que
esse exera a funo a qual se vez necessria a sua incluso na janela.

Rotina de incluso

Clique no primeiro controle de boto de controle e selecione suas
propriedades, no template que surgira direita preencha os atributos para
esse controle, conforme a figura abaixo.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 132

Rotina de incluso

A rotina de incluso em um controle DataWindow deve habilitar o objeto
DataWindow a receber uma nova linha no Buffer da DataWindow, e
posteriormente atualiza-la na base de dados.

Para incluir uma linha no buffer utilizamos a funo InsertRow (linha). Essa
funo insere uma linha no Buffer da DataWindow ou de um DataStore.

Sintaxe: long dwcontrole.InsertRow ( long linha )
Onde : dwcontrole : o nome do controle DataWindow/DataStore.
linha : o nmero da linha que voc quer incluir
long : retorna a linha que ser includa ou -1 se houver erro
na tentativa de incluso da linha no controle
DataWindow.

D um duplo clique no controle cb_incluir e selecione o evento Clicked e
escreva o cdigo PowerScript abaixo:

Praticando:

No template em branco, clique com o boto do mouse direito selecionando
Paste Special, e depois Object, na lista que surgir selecione dw_2.

Agora coloque um ponto (.) aps dw_2, clique com o boto direito do mouse
e selecione Function e Built-in. Na lista que surgir procure por InsertRow.
Com um duplo clique selecione a funo.

Agora coloque o zero(0) entre os parnteses. Pronto o PowerBuilder 9.0
montou para voc a funo InsertRow, o parmetro zero(0) ir inserir uma
linha no final do Buffer do controle DataWindow fazendo desta linha, a linha
corrente.

PowerBuilder 9.0 Bsico Captulo 9 133

Rotina de incluso

Voc poderia ter digitado direto, mas o PowerBuilder 9.0 disponibiliza o
autoscript para facilitar a edio e evitar erros de sintaxe provenientes de
esquecimentos de detalhes da funo.

Como estamos usando a dw_2 que antes era s um controle de consulta dos
dados selecionados na dw_1. Para podermos incluir e visualizarmos direto
uma linha nova neste controle, primeiro apagamos o contedo desse controle.

Caso voc no o faa, a funo InsertRow (0), ir incluir uma linha aps a
linha que estiver ativa, caso exista uma em dw_2, se no existir nenhuma
linha ativa ir mostrar diretamente, ento caso exista uma linha ativa, voc
dever incluir uma barra de rolagem vertical para acessar esta nova linha, o
que ficaria deselegante e com uma tarefa a mais para o usurio. Ento
sempre aconselhvel limpar o controle DataWindow, antes de uma incluso,
para este tipo de visualizao que estamos utilizando existem outros modos
de se exibir os dados que no se aplicaria esta regra.

Para limpar o controle DataWindow utilizaremos a funo Reset ().

Sintaxe: integer dwcontrole.Reset ( )
Onde: dwcontrole : o nome do controle DataWindow ou DataStore.
Integer : Retorna 1, se a execuo foi bem sucedida e -1 se
houver erro.
Ento agora digite antes do comando dw_2.InsertRow (0), dw_2.Reset ().




Clique em Save e salve a sua aplicao em Run para
executar.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 134

Rotina de incluso

Clique no boto Incluir e teste.




PowerBuilder 9.0 Bsico Captulo 9 135

Rotina de incluso

Navegue pela dw_2 com a ajuda da tecla Tab note que agora podemos incluir
uma nova linha na dw_2, mas ainda no podemos incluir esta linha nova na
base de dados. Ento teremos que montar uma rotina para executar esta
funo.

Clique na aba Layout selecione com um duplo clique o ltimo controle
CommandButton. No template propriedade direita, preencha:



Aps preencher as propriedate para o boto Gravar agora teremos que
colocar o cdigo PowerScript para ser executado quando o boto for
pressionado e esta ao deve ser de gravao na base de dados. Para tal,
utilizaremos a funo UpDate().

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 136

Rotina de incluso

Sintaxe:
integer dwcontrole.Update ({ boolean accept {,boolean resetflag} })
Onde: dwcontrole : o nome do controle DataWindow ou DataStore.
Integer : Retorna 1, se a execuo foi bem sucedida e -1 se
houver erro.
Accept : varivel booleana que informa ao PowerBuilder 9.0
se ele deve proceder aos testes de validao
antes de gravar na base.
x TRUE: (Default) procede ao teste e retorna se
houver erro.
x FALSE: grava na base.

Resetflag : varivel booleana que informa ao PowerBuilder se ele
deve resetar as flags de controle aps o update ou
no.
x TRUE: (Default) Reseta as flags.
x FALSE: No reseta as flags.

D um duplo clique no controle cb_gravar, selecione o evento Clicked, e
escreva o cdigo PowerScript abaixo:



Clique em Save e salve a sua aplicao e em Run para
executar.
PowerBuilder 9.0 Bsico Captulo 9 137

Rotina de alterao

A rotina de alterao j esta pronta a combinao da rotina de consulta com
a rotina de gravao. Ento voc pode clicar na dw_1, editar o item
selecionado, alterar este item e clicar em Gravar.

A novidade o terceiro boto, o de Retrieve. Que servir para recuperar os
dados alterados na dw_2. Essa rotina poderia ser automatizada, veremos os
dois modos.

Primeiro, com o boto Ler Dados (retrieve).

Clique no CommandButton que esta no meio e preencha suas propriedades.

Clique na aba Clicked e digite os comandos para recuperao dos dados.
Usaremos o Retrieve() igual para a recuperao no evento Open da
aplicao.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 138

Rotina de alterao

Clique em Save e salve a sua aplicao e em Run para
executar.



Poderamos tambm automatizar a recuperao dos dados sem precisar
incluir um boto para isto. Umas das solues seria incluir a rotina do boto
Ler Dados na linha de IF aps o comando Commit.

Outra soluo seria atualizar a dw_1 sem precisar usar o comando Retrieve
(), assim no estaramos contribuindo para o trafego na rede e a aplicao
ficaria muito mais rpida.

Vamos demonstrar as duas embora, a segunda seja uma soluo mais
profissional. A primeira no esta errada depende do enfoque do seu negcio.
Por exemplo: imagine uma grande rede com grande volume de dados, e o
usurio precise acessar vrios dados. E esses dados esto sempre sofrendo
alterao. Ento se faz necessrio o uso do Retrieve, para cada atualizao ou
grupos de atualizao.
PowerBuilder 9.0 Bsico Captulo 9 139

Rotina de alterao

Primeira soluo:


Para o segundo mtodo usaremos a aplicao da rotina de alterao do
controle DataWindow dw_1. Atravs do uso do evento j disponibilizado pelo
PowerBuilder 9.0 para controles DataWindow, UpdateEnd. Esse evento
sempre disparado ao final de uma atualizao atravs do controle
DataWindow, seja um Insert, Delete ou Update.

Com um duplo clique no controle DataWindow dw_2 o template de script se
abrir. Na caixa de seleo de script ao centro da parte superior, selecione o
evento UpdateEnd.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 140

Rotina de alterao

Segunda soluo:

Para se incluir ou substituir dados em um controle DataWindow, utiliza-se
funo SetItem. Para se recuperar dados de um controle DataWindow se
utiliza funo GetItemNumber, GetItemString, GetItemDate,
GetItemDateTime e GetItemTime. Cada funo recupera o seu dado
correspondente ao tipo de coluna definido no objeto DataWindow.

Sintaxe :
numeric dwcontrole.GetItemNumber ( long row, string column {,
DWBuffer dwbuffer, boolean originalvalue } )

numeric dwcontrole.GetItemNumber ( long row, integer column {,
DWBuffer dwbuffer, boolean originalvalue } )

Onde: dwcontrole : o nome do controle DataWindow/DataStore.
Row : Dado numrico que representa a linha do dado
no objeto DataWindow.
Column : Nome ou a posio (numrica) da coluna.
Dwbuffer(opcional) : Identifica qual buffer o dado ser recuperado na
DataWindow.
Originalvalue(optional):Varivel booleana, que indica se a
recuperao ser da linha corrente ou dos
dados originais no buffer.
True: Retorna os valores originais
(os mesmos do Retrieve na base de
dados).
False: (Default) Retorna os valores
correntes.
PowerBuilder 9.0 Bsico Captulo 9 141

Rotina de alterao

Segunda soluo:

Sintaxe:
integer dwcontrole.SetItem ( long row, integer column, any value )

integer dwcontrole.SetItem ( long row, string column, any value )

Onde: dwcontrole : o nome do controle DataWindow/DataStore.
row : Dado numrico que representa a linha do dado
no objeto DataWindow.
column : Nome ou a posio (numrica) da coluna.
value : Valor que dever ser includo na DataWindow.

Notando a sintaxe da funo SetItem verifica-se a necessidade de se informar
que linha deve ser alterada. Essa informao s possvel se obter atravs do
evento Clicked! da dw_1. Onde montamos a rotina de recuperao de
dados para a dw_2.

Para que se passe esse valor para um outro evento de um outro objeto,
podemos criar uma varivel do tipo Instance, como definido anteriormente.

Clique caixa de seleo de script a esquerda da parte superior, selecione
Declare Instance Variable. Defina a varivel long wk_linha conforme a
figura abaixo.



Agora clique na aba Clicked e atribua o valor da linha clicada (row) a
varivel de instacia wk_linha.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 142

Rotina de alterao

Segunda soluo:



Clique na aba Layout e de um duplo clique no controle DataWindow dw_2
combinando a funo SetItem com a funo GetItemNumber e GetItem
String. teremos:

Para uma melhor documentao, sempre melhor utilizar o nome da coluna
na sintaxe, mas pode-se utilizar o nmero (posio) que ela ocupa no banco
de dados. Onde : id seria posio 1 e fname posio 2.

Caso tenha implementado a primeira opo coloque as linhas dw_Reset( ) e
dw_Retrieve( ) como comentrio para testar a segunda opo.
PowerBuilder 9.0 Bsico Captulo 9 143

Rotina de alterao

Segunda soluo:




Clique em Save e salve a sua aplicao e em Run para
executar.

Para completar este exemplo de manipulao de dados em um controle
DataWindow. Inclua um boto de excluso de dados.

Rotina de Excluso

Clique em CommandButton e depois na posio da janela que voc
quer incluir o boto(coloque logo abaixo do boto Gravar). E no template
Propriedade preencha:
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 144

Rotina de Excluso

Agora de um duplo clique no boto cb_excluir. No evento clicked,
programe a rotina para excluso usando a funo DeleteRow.

Sintaxe : integer dwcontrole.DeleteRow ( long row )
Onde : dwcontrole : o nome do controle DataWindow/DataStore.
row : Dado numrico que representa a linha do dado
no objeto DataWindow.

Para excluir uma linha do controle DataWindow primeiro selecionamos a linha
que se deseja excluir. Como programamos para a incluso, a varivel
wk_linha guardar a linha em que se clicou. Ento podemos utilizar esta
mesma varivel para pegar a linha clicada. Note, que desta vez programamos
o boto no modo Enable para desabilitado e este s estar habilitado caso
se selecione uma linha excluir.

A excluso em uma base de dados uma transao que deve ser cautelosa.
Ps, no tem retorno. Ento devemos sempre pedir uma confirmao para
executarmos esta tarefa. Para isto utilizaremos a funo MessageBox.

Sintaxe: MessageBox ( title, text {, icon {, button {, default } } } )
Onde : title : Texto que ira aparecer no header da janela de alerta.
text : Um texto que represente o motivo da mensagem.
icon : (opcional) Informa ao PowerBuilder 9.0 que tipo de cone ser
apresentado do lado esquerdo da janela de mensagem para
chamar ateno.
x Information! (Default)
x StopSign!
x Exclamation!
x Question!
x None!

button: (opcional) Que tipo de boto se queira mostrar dependendo
do tipo de questionamento que se faa.
x OK! (Default) OK
x OKCancel! OK e Cancelar
x YesNo! Sim e No
x YesNoCancel! Sim, No, e Cancelar
x RetryCancel! Repetir e Cancelar
x AbortRetryIgnore! Abortar, Repetir e Ignora
PowerBuilder 9.0 Bsico Captulo 9 145

Rotina de Excluso

Programando o boto.

D um duplo clique no objeto DataWindow dw_1 no evento Clicked
adicione o cdigo abaixo:


Agora de um duplo clique no boto Excluir e programe a rotina de excluso.



Note que a funo DeleteRow apaga o dado selecionado do controle
DataWindow. Para se ter o efeito refletido na base de dados precisamos
atualizar a base. Utilizaremos a funo Update.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 9 146

Rotina de Excluso

Ento teremos:



Nesse nosso exemplo poderemos notar a exibio de uma mensagem de erro
aps se optar por excluir na base de dados. Isso se deve ao fato da tabela
customer ter a sua Primary Key apontada para a Foreign Key
'ky_so_customer' na tabela sales_order ou seja, para excluir este item
devemos excluir em cascata como vimos no item, Uso do SQL no
PowerBuilder.

Veremos este processo mais adiante, mas se for retirado ou comentado a
funo UpDate poderemos ver a funcionalidade da funo DeleteRow,
apagando o item selecionado no controle DataWindow que nosso foco.
Manipular dados em um controle DataWindow.
Captulo 10
DataWindow : Tcnicas avanadas
Buffers Internos
Detectar a validao
Detectar o Tipo de dado
Detectar regras de validao
Detectar mudanas no item
Usando Filtros
Classificando
Clusula Where para Update e Delete
Modify e Describe
Funo Evaluate( )
Propriedade Object
Parametrizando com a clusula DATA
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 147

DataWindow : Tcnicas avanadas
Neste captulo veremos algumas expresses utilizadas no controle
DataWindow para acessar os dados de um objeto DataWindow, tais
expresses permitem acessar um dado especfico ou retornar um grande
volume de dado.

Para isso teremos que entender um pouco mais sobre o controle
DataWindow. Esse controle responsvel pela recuperao, manipulao e
atualizao de dados no banco de dados, dados quando recuperados, sero
armazenados em buffers internos do objeto DataWindow.

Buffers Internos.

Buffer Descrio
Original Dados recuperados do BD que no se alteram.
Primary a primeira imagem do original, aceita alterao e insero.
Delete Itens que foram apagados do buffer primrio.
Filter Dados que no sero mostrados, devido ao filtro de seleo
definido no objeto DataWindow.

Esses buffers sempre sero criados na mquina cliente e l permanecero at
a atualizao UPDATE() ou descarte dos dados pela aplicao que os solicitou.

Toda manipulao de dado atravs de um controle DataWindow segue
algumas regras para a sua transferncia entre o controle DataWindow e
o buffer primrio. So elas:

x Detectar a validao;
x Detectar o tipo de dado;
x Detectar regras de validao;
x Detectar mudanas no item.

Aps essas regras retornarem todas como verdade ou zero, o dado do
item selecionado ento transferido para o buffer primrio.

PowerBuilder 9.0 Bsico Captulo 10 148

DataWindow : Tcnicas avanadas
Detectar a validao.

O controle DataWindow dispara a validao quando:

1. Quando a coluna que foi alterada perde o foco;
2. Quando a tecla Enter pressionada;
3. Ou a funo AcceptText( ) executada.

Detectar o Tipo de dado.
Todos os controles de edio so do tipo string, por esse motivo aceitam
todos os caracteres. Por isso o controle DataWindow compara o tipo de dado
digitado com o tipo de dado no Buffer. Se o tipo de dado no for compatvel o
evento ItemError disparado.

Detectar regras de validao
Nessa etapa o dado submetido a regras de validao para a coluna. Estas
regras so definidas no banco de dados ou na criao da DataWindow para
cada coluna.

Detectar mudanas no item
O dado digitado comparado com o dado no buffer primrio da DataWindow.

Se o dado no foi alterado, esta etapa termina, caso contrrio, o evento
ItemChanged disparado possibilitando a execuo de alguma validao de
usurio no evento ItemChanged. Aps a execuo da validao de usurio,
se existir, o dado transferido para o buffer primrio.

A execuo de um script do evento ItenError ser determinada pelos
cdigos de retorno, so eles:

Cdigo de
retorno
Ao
0 (Default) Rejeita o dado e exibe uma tela de mensagem de erro.
1 Rejeita o dado sem exibir uma tela de mensagem de erro.
2 Aceita o dado.
3 Aceita o dado, sem alterar o buffer primrio e permite que o foco
mude de coluna.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 149

DataWindow : Tcnicas avanadas

Se o evento ItenChanged for disparado, a seqncia de execuo ser
determinada pelos cdigos de retorno, so eles:

Cdigo de
retorno
Ao
0 (Default) Aceita o dado digitado.
1 Rejeita o dado e dispara o evento ItemError.
2 Rejeita o dado, mas permite que o foco mude de coluna.

Os eventos ItemError e ItemChanged, permitem ao desenvolvedor saber
qual coluna, qual linha e que dado do controle DataWindow disparou o
evento. Os argumentos para este evento estaro sempre disponveis caso
disparados, so eles :

ROW Contm o nmero da linha do item que esta sendo alterado.
DWO Referncia para a coluna que disparou o evento.
DATA O contedo da coluna que disparou o evento.

Exemplo:

dwo.Type : Retorna o tipo de controle que disparou o evento.
dwo.Name : Retorna o nome da coluna que disparou o evento.

PowerBuilder 9.0 Bsico Captulo 10 150

DataWindow : Tcnicas avanadas
Usando Filtros.

O desenvolvedor poder limitar o acesso que o controle DataWindow tem aos
dados seja por segurana ou para facilitar o tratamento pelo usurio. Assim
poder com apenas um acesso a base de dados, disponibilizar os dados de
vrias maneiras diferentes (filtrados).

Como funciona: Depois que o objeto DataWindow recupera os dados, aplica-
se o filtro no buffer primrio gerando assim o buffer Filter com todas as
linhas que no atenderam as condies determinadas pelo filtro.

A funo utilizada a SetFilter (condio), para definir e aplicar o filtro
utiliza-se a funo Filter ().

sempre aconselhvel utilizar a funo SetRedraw ( boolean redraw ) em
conjunto com a funo Filter( ) essa funo tem como parmetro TRUE ou
FALSE.

False - interrompe a montagem em tempo de execuo de um controle
DataWindow. O que faz a aplicao do filtro ser mais rpido para grandes
grades de dados.

True - Ativa a montagem em tempo de execuo de um controle
DataWindow.

Exemplo:

String s_filtro
s_filtro = salario>1000 and departamento=Informtica
dw_1.SetRedraw(FALSE)
dw_1.SetFilter(s_filtro)
dw_1.Filter( )
dw_1.SetRedDraw(TRUE)

Ao se aplicar um filtro em uma DataWindow com agrupamentos, faz-se
necessrio executar a funo GroupCalc( ) para se recalcular os
agrupamentos.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 151

DataWindow : Tcnicas avanadas
Classificando.
Pode-se ordenara a recuperao de dados tanto no servidor quando no
cliente. No servidor usamos o ORDER BY no comando SELECT. Em tempo de
execuo utilizamos SetSort (). Para definir ou modificar a classificao
corrente. Este mtodo possibilita a pesquisa pelo usurio por dados
especficos.

Sintaxe : integer dwcontrole.SetSort ( string format )

Exemplo :

//Classifica dw_1, ascendente por nome e descendente por salrio
dw_1.SetSort(nome A, salario D)

Pode-se usar o nmero da coluna, com parmetro.

dw_1.SetSort(#1 A, #10 D)

Onde : # : obrigatrio antes do nmero da coluna;
1 : Posio da coluna;
A : Ascendente;
10 : Posio da coluna;
D : Descendente.


A funo SetSort( ) apenas define os critrio de classificao. Para efetivar a
classificao na DataWindow, utilize a funo Sort( ).

dw_1.Sort( )


Para uma base com grande volume de dados, utilize a funo
SetRedraw( ).



Ao se classificar uma DataWindow com agrupamentos, faz-se
necessrio executar a funo GroupCalc( ) para se recalcular os
agrupamentos.
PowerBuilder 9.0 Bsico Captulo 10 152

DataWindow : Tcnicas avanadas
Conhecendo a funo UpDate ().

Quando se utiliza a funo UpDate internamente o PowerBuilder executa
vrios comandos de SQL. So eles:

DELETE : Um para cada linha antiga do buffer delete;
UPDATE : Um para cada linha antiga modificada nos buffers, Primary e
Filter;
INSERT : Um para cada linha nos buffers, Primary ou Filter.

Sempre que se chama a funo UpDate um comando de atualizao de
banco enviado por vez. Se algum erro for retornado todo o processo de
atualizao ser interrompido e o evento DBError do controle DataWindow
que chamou a atualizao ser disparado. E a funo UpDate retornar -1.

Para visualizar os comandos SQL gerados para atualizao dos dados
no banco de dados acesse os argumentos do evento SQLPreview no
controle DataWindow que chamou a atualizao.

O PowerBuilder 9.0 controla as atualizaes processadas no banco de dados
montando o comando SQL mais apropriado para cada DML de INSERT,
DELETE e UPDATE.

Voc pode dar um lock na linha editada internamente o PowerBuilder 9.0
responde a este problema com a tcnica de analisar as caractersticas
definidas pelo desenvolvedor na criao do objeto DataWindow.

Estas caractersticas so definidas no painter DataWindow. Selecione na
PowerBar1, Rows e UpDate Properties.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 153

DataWindow : Tcnicas avanadas
O Wizard Specify UpDate Properties se abrir e as propriedades para as
atualizaes estaro disponveis para seleo. So eles:

Clusula Where para Update e Delete.

x Key Columns;
x Key and Update Columns;
x Key and Modified Columns.
Key Columns : Somente a chave primria da tabela selecionada
utilizada na clusula Where.

Vrios usurios podem alterar o dado ao mesmo tempo.

Key and UpDate Columns : A chave primria e as colunas
atualizveis da DataWindow sero usadas na clusula WHERE.
Esta opo pode notificar a outro usurio, que o item foi
alterado.
Key and Modified Columns : A chave primria e todas as colunas
alteradas da DataWindow sero usadas na clusula WHERE.

Esta opo permite que usurios alterem itens distintos.

Allow Update : Habilita o update para a tabela. Se desligada a
DataWindow apenas de leitura, normalmente utilizada para relatrios.

UpDateTable Columns : Seleciona as colunas que sero atualizveis
as colunas no selecionadas no sero atualizadas com a funo
UpDate.

Table to Update : Especifica a tabela que ser atualizada apenas uma
tabela. Se existir junes na query da DataWindow apenas uma delas
poder ser atualizada.
PowerBuilder 9.0 Bsico Captulo 10 154

DataWindow : Tcnicas avanadas

Key Modification : Define o modo de alterao da chave primria.
Pode ser definida como: Apaga o item e inclui um novo item na
base ou Atualiza o item corrente alterando a chave primria.

Essa opo deve ser bem estudada deve-se conhecer bem a base de dados,
principalmente os relacionamentos entre as tabelas. Se a base de dados
estiver parametrizada com Delete on Cascate sero excludos todos os
itens nas tabelas relacionadas.


Unique Key Columns: Especifica as colunas que fazem parte da
chave primria.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 155

DataWindow : Tcnicas avanadas
Modify e Describe, obtendo o mximo da DataWindow
Sem dvida a DataWindow o mais poderoso recurso do PowerBuilder 9.0
para acesso a bases de dados possibilitando a criao de uma interface
eficiente e de fcil utilizao.

No PowerBuilder 9.0 podemos manipular um controle DataWindow e objetos
DataWindow atravs das funes Modify e Describe. Sempre ouo que estas
funes so as mais difceis de se utilizar das funes disponibilizadas pelo
PowerBuilder 9.0. At concordo que em alguns casos seja um emaranhado de
linhas de cdigo tornando bastante complexa a sua depurao, mas por outro
lado, seguindo-se algumas regras veremos que no um bicho de sete
cabeas.

Sintaxe: string dwcontrole.Modify ( string modstring )
Onde : string: Tipo de retorno. Modify retorna vazio se OK e o erro
se falhar.
dwcontrole: nome da DataWindow.
modString : linha a ser modificada da DataWindow.

Atravs do Modify pode-se alterar todos os atributos de um objeto ou controle
DataWindow. Suponha que em tempo de execuo voc queira inibir uma
coluna em uma DataWindow. Usando o Modify, ficaria:

//Esconde a coluna
dw_1.Modify(nome_da_coluna.visible=0)
//Esconde o label
dw_1.Modify(label_t.visible=0)
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()

Com o Modify podemos tambm alterar os atributos do Painter de
DataWindow contornando o problema de a DataWindow s deixar se
especificar uma tabela para atualizao.

PowerBuilder 9.0 Bsico Captulo 10 156

DataWindow : Tcnicas avanadas
Suponha uma DataWindow com colunas exibidas de vrias tabelas e se queira
atualizar dados em todas as tabelas.

Tabelas do processo: empregado e salrio

Passo 1:

x Aplique o UpDate padro.

//Atualiza a tabela definida no painter DataWindow(empregado)

Integer i_ret
I_ret = dw_1.Update(TRUE,FALSE)


FALSE Marca como no reiniciar as flags.


IF i_ret = 1 THEN
//desativa a atualizao para as colunas da tabela, empregado
dw_1.Modify(empregado_numero.UpDate = No)
dw_1.Modify(empregado_nome.UpDate = No)
dw_1.Modify(empregado_endereco.UpDate = No)
dw_1.Modify(empregado_telefone.UpDate = No)

//Faz a tabela salrio aceitar UpDate
dw_1.Modify(DataWindow.Table.UpdateTable = ~salario~ )

//Faz as colunas da tabela salario aceitarem Update
dw_1.Modify(salario_nmero_empregado.UpDate = Yes)
dw_1.Modify(salario_salario.UpDate = Yes)

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 157

DataWindow : Tcnicas avanadas
//Atualiza a tabela salrio e zera as flags
i_ret = dw_1.UpDate( )
IF i_ret = 1 THEN
dw_1.ResetUpDate
Commit;
ELSE
Messagebox(Erro,Erro no UpDate da tabela - salrio)
RollBack;
END IF
ELSE
Messagebox(ERRO,Erro no UpDate da tabela empregado)
RollBack;
END IF

//Desativa a tabela salrio
dw_1.Modify(salario_numero.UpDate = No)
dw_1.Modify(salario_salario.UpDate = No)

//Ativa a tabela empregado(estado original da DW)

dw_1.Modify(empregado_numero.UpDate = Yes)
dw_1.Modify(empregado_nome.UpDate = Yes)
dw_1.Modify(empregado_endereco.UpDate = Yes)
dw_1.Modify(empregado_telefone.UpDate = Yes)

//Faz a tabela "empregado" aceitar UpDate
dw_1.Modify(DataWindow.Table.UpDateTable = ~empregado~)

No foi to complicado. Apenas uma seqncia at os sinais (~) til, (~r) til +
r e (~t) til + t, seguem uma seqncia.

x Para se incorporar uma string dentro de outra string, apstrofos(aspas
simples) so reconhecidos como diferentes de aspas (duplas).
x Um apstrofo (aspa simples) representa ~`.

O PowerBuilder 9.0 incorpora um analisador de strings, que usado para
validar os strings submetidos. O til usado para informar ao analisador que
o caractere seguinte deve ser usado como literal.
PowerBuilder 9.0 Bsico Captulo 10 158

DataWindow : Tcnicas avanadas
Alguns atributos do objeto DataWindow disponibilizam a utilizao de
expresses. Voc pode nota-los com este boto ao lado do atributo.
o caso do atributo VISIBLE. Voc poder passar uma
expresso atravs da funo Modify.
Coluna : salrio
Expresso IF - dentro do painter DataWindow :
If ( boolean, truevalue, falsevalue )

string s_mod
s_mod = salrio.visible = 0~tIF (salrio > 1000,0,1)
dw_1.Modify(s_mod)

Neste exemplo, sempre que o salrio for maior que 1000 no ficar visvel.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 159

DataWindow : Tcnicas avanadas
Todos os atributos esto disponveis no HELP do PowerBuilder 9.0.

PowerBuilder 9.0 Bsico Captulo 10 160

DataWindow : Tcnicas avanadas
Funo Evaluate()
A funo Evaluate( ) deve ser utilizada com a funo Describe. A funo
Evaluate, permite a avaliao de expresses na DataWindow.

Sintaxe : "evaluate('expresso', linha)"
Onde : expresso : expresso que se deseja avaliar
linha : nmero da linha que se deseja avaliar a expresso

Exemplo :

O exemplo abaixo retorna a linha corrente da pgina atual e coloca como
ttulo da janela w_1.

string s_mod, s_linha
s_linha = string(dw_1.GetRow())
s_mod = Evaluate(Page(). + s_linha +)
w_1.Title = "Pgina " + dw_1.describe(s_mod)

Evaluate com expresses condicionais

Sintaxe : defaultvalue ~t expresso
Onde : defaultvalue: Valor padro da propriedade.
~t : separador obrigatrio.
expresso : expresso aplicada funo evaluate.

Exemplo:

Retorna 0 se a linha nova ou 1 se a linha antiga.

string s_ret
s_ret = dw_1.Describe(Evaluate(If( IsRowNew ( ), 0, 1) ,GetRow() ) )

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 161

DataWindow : Tcnicas avanadas
Assim como a funo Modify atribui a DataWindow existe a funo Describe
que recupera as informaes da DataWindow.

Sintaxe: String Describe (sintaxe)
Onde : sintaxe : propriedade a ser recuperada.
string : retorno da propriedade solicitada.

Exemplo :

//Lista todos os atributos da DataWindow
dw_1.Describe("DataWindow.Attributes")
Faa este teste no evento OPEN do exemplo1.

Messagebox("Atributos da DataWindow", & +
dw_1.Describe("DataWindow.Attributes"))

x Ir retornar uma lista com todos os atributos do controle DataWindow.

Voc poder ter acesso a esses atributos e ver muitos exemplos no HELP do
PowerBuilder 9.0. Procure por Describe DataWindow expression function
e selecione Controls in a DataWindow and their properties.
As funes Modify e Describe so muitos teis quando se trata
de trabalhar mais profissionalmente com as DataWindow por
esse motivo tente sempre que possvel utilizar estas funes.
Seu projeto ficar sempre mais dinmico e o limite das suas
funcionalidades esta no limite da sua criao.
PowerBuilder 9.0 Bsico Captulo 10 162

DataWindow : Tcnicas avanadas
Propriedade Object.

Podemos utilizar a propriedade Object para acessar dados em um objeto
DataWindow em forma de expresses. Essas expresses podem se referenciar
ao nome da coluna, nmero da coluna ou a linhas inteiras.

Recuperando uma nica linha da coluna especificada.

Sintaxe : dw_controle.Object.ColumnName[RowNum]
Onde : dw_controle : Nome do controle DataWindow que se ir
recuperar ou inserir dados.
columnName : Nome da coluna no objeto DataWindow.
cowNum : Nmero da linha que se deseja recuperar.

Sempre retorna um nico valor

Exemplo:

//RECUPERANDO UM VALOR
Long l_salario
l_salario = dw_1.Object.salario[1]

Recupera o contedo da coluna salario no objeto DataWindow e guarda
na varivel l_salario.

//ATRIBUINDO UM VALOR
Long l_salario = 3450
dw_1.Object.salario[1]=l_salario
//OU
dw_1.Object.salario[1]=3450

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 163

DataWindow : Tcnicas avanadas
Recuperando todas as linhas da coluna especificada.
Sintaxe : dw_controle.Object.ColumnName.Buffer
Onde : dw_controle : Nome do controle DataWindow que se ir
recuperar ou inserir dados.
columnName : Nome da coluna no objeto DataWindow.
buffer : designa o Buffer que ser recuperado o dado.

Retorna um ARRAY do mesmo tipo de dado definido para a
coluna.
Exemplo:

//RETORNA OS DADOS DO BUFFER PRIMARIO DO OBJETO DATAWINDOW
String s_departamento[ ]
s_departamento = dw_1.Object.departamento.Primary

//RETORNA OS DADOS DO BUFFER CORRENTE DO OBJETO DataWindow
String s_departamento [ ]
s_departamento = dw_1.Object.departamento.Current

Recupera para o array s_departamento os dados da coluna
departamento de todas as linhas do objeto DataWindow.


Recuperando as linhas selecionadas da coluna especificada.
Sintaxe : dw_controle.Object.ColumnName.Selected
Onde : dw_controle : Nome do controle DataWindow que se ir
recuperar ou inserir dados.
columnName : Nome da coluna no objeto DataWindow.
selected : Clusula de acesso as linhas selecionadas na
DataWindow.

Retorna um ARRAY do mesmo tipo de dado definido para a
coluna.

PowerBuilder 9.0 Bsico Captulo 10 164

DataWindow : Tcnicas avanadas
Exemplo:

//RETORNA AS LINHAS SELECIONADAS NO CONTROLE DATAWINDOW
String s_empregado[ ]
S_empregado = dw_1.Object.empregado.Selectd

Se no controle DataWindow nenhuma linha estiver selecionada,
retornar um array vazio.

Recuperando um conjunto de linhas da coluna especificada.
Sintaxe: dw_controle.Object.ColumnName.[StartRowNum,EndRowNum]
Onde : dw_controle : Nome do controle DataWindow que se ir
recuperar ou inserir dados.
columnName : Nome da coluna no objeto DataWindow.
startRowNum : Nmero da primeira linha a ser recuperada.
endRowNum : Nmero da ltima linha a ser recuperada.

Retorna um ARRAY do mesmo tipo de dados definido para a
coluna e os limites informados.


Exemplo:

//RECUPARA OS NOMES DAS LINHAS 20,21,22,23 E 24 DA COLUNA NOME
String s_nomes[5]
s_nome = dw_1.Object.nome[20,24]

//ATRIBUI BRANCOS NAS LINHAS 20,21,22,23 E 24 DA COLUNA NOME
dw_1.Object.nome[20,24]=

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 10 165

DataWindow : Tcnicas avanadas
Parametrizando com a clusula DATA.

Caso o nome da coluna seja desconhecido podemos parametrizar o acesso
atravs do nmero da coluna.

Recuperando uma nica linha da coluna especificada.

Sintaxe: dw_controle.Object.Data.[StartRowNum,StartColNum]
Onde : dw_controle : Nome do controle DataWindow que se ir
recuperar ou inserir dados.
columnName : Nome da coluna no objeto DataWindow.
startRowNum : Nmero da primeira linha a ser recuperada.
startColNum : Nmero da coluna.

Sempre retorna um nico valor do buffer primrio.
//RECUPERA O DADO DA COLUNA 5 DA LINHA 9
Long l_dependentes
L_dependentes = dw_1.Object.Data[9,5]

//ATRIBUI O VALOR 3 NA COLUNA 5 DA LINHA 9
dw_1.Object.Data[9,5] = 3

Recuperando um bloco especifico de colunas

Sintaxe:
dw_controle.Object.Data.[StartRowNum,StartColNum,EndRowNum,EndColNum]

Onde : dw_controle : Nome do controle DataWindow que se ir
recuperar ou inserir dados.
columnName : Nome da coluna no objeto DataWindow.
startRowNum : Nmero da primeira linha a ser recuperada.
startColNum : Nmero da coluna inicial.
sndColNum : Nmero da coluna final.

Retorna um ARRAY de estrutura do mesmo tipo de dados
definido para a coluna e os limites informados.
PowerBuilder 9.0 Bsico Captulo 10 166

DataWindow : Tcnicas avanadas
Exemplo :

//RETORNA OS VALORES DAS LINHAS 1 A 10 DAS COLUNAS DE 1 A 6
Str_departamento str_depto[ ]
Str_depto = dw_1.Object.Data[1,1,10,6]

A clusula Data possibilita combinaes para manipulao de dados.

Retornar uma linha inteira.
array_ou_estrutura = dw_1.Object.data[linha]

Retorna a DataWindow inteira.

array_tipo_ANY = dw_1.object.data

Transfere dados do buffer primrio de dw_1 para dw_2.

dw_2.object.data = dw_1.Object.data

Transfere da dw_1 para dw_2 as linhas selecionadas.

dw_2.Object.Data = dw_1.Object.Data.Selected


Adquirido por : Fabrcio Moreira da Silva
Captulo 11
PipeLine de dados
PowerBuilder 9.0 Bsico Captulo 11 167

PipeLine de dados

O pipeline de dados consiste como mais uma funcionalidade do PowerBuilder
9.0. Com o pipeline se transferem grandes quantidades de dados de um
banco para outro banco independente. Podem-se transferir dados de um
banco SQL Server para um banco Oracle. Assim como se pode utilizar o
pipeline para se atualizar uma rede de dados distribudos.


No painter DataBase selecione a tabela que ser transferida do

banco e clique em Pipeline para abrir o template do pipeline.


No Template pipeline. Teremos:


Table : Nome da tabela que ser criada no banco destino.

Options: O tipo de transferncia de dados, opes:

x Create-Add Table - Cria uma nova tabela, ela no pode existir na
base destino.
x Replace-Drop/Add Table - Apaga a tabela se ela existir no banco
destino e cria uma nova tabela.
x Refresh-Delete/Insert Rows - Mantm o banco destino, mas faz
com que as linhas se correspondam ao banco origem.
x Append-Insert Rows - Insere apenas as linhas novas no banco
destino, linhas repetidas sero apontadas atravs de mensagens de
erro.
x Update-Update/Insert Rows - Insere linhas novas no banco
destino e atualiza as linhas j existentes se alguma informao
sofreu alterao.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 11 168

PipeLine de dados

Key : O nome da chave primria da tabela destino, normalmente a usada
mesma chave na tabela do banco origem.

Max Errors : A quantidade de erros que sua transferncia pode receber at
ser suspensa.

Commit : A quantidade de instrues SQL executadas antes da instruo
de Commit.


No template de definio de dados pode-se definir como os dados sero
recebidos pelo banco de destino. Source Name e Source Type no
permitem alterao, os itens com fundo em branco, permitem alterao.

x Destination Name - Altera o nome da coluna no banco destino.

x Type - Altera o tipo de dado na tabela destino.

x Key - Indica que itens faro parte da chave primria
na tabela destino.
x Width - Altera o tamanho do item no banco destino.

x Dec - Altera o nmero de casas decimais no banco
destino
x Nulls - Indica que valores podem ter valores NULL.

x Initial Value - Indica o novo valor padro para o banco
destino.
PowerBuilder 9.0 Bsico Captulo 11 169

PipeLine de dados

Aps completar a definio dos dados para serem transferidos agora
defina qual banco ir receber os dados da tabela de origem. Clique em
Destination Profile e selecione o banco destino.

Clique em Execute e ser iniciada a transferncia dos dados.


Clique em Save para salvar a sua definio do pipeline para

ser executada posteriormente. De o nome de U_COPIA_TABELA.

O mtodo que acabamos de ver executa o Pipeline no ambiente de
desenvolvimento. Pode-se usar o Pipeline em tempo de execuo para isso
teremos que criar um objeto Pipeline e anexarmos a aplicao.

Clique em New selecione PB Object e Standart Class.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 11 170

PipeLine de dados

A caixa de dialogo para seleo do tipo de classe a ser usada se abrir. Ento
selecione Pipeline.

O template de definio da pipeline se abrir :


PowerBuilder 9.0 Bsico Captulo 11 171

PipeLine de dados

Clique em Declare Instance Variables.
Ento defina os objetos:
statictext st_lidos,st_gravados,st_erros


Agora clique em Event List e escreva o cdigo abaixo.
Agora clique em Save e salve o objeto do usurio como

uo_pipeline01 em nossa aplicao exemplo1.

Para executar o pipeline em tempo de execuo voc pode criar uma
dropdown com uma lista de objetos e ao selecionar o objeto execute o cdigo
abaixo ou crie um boto para isto.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 11 172

PipeLine de dados

O cdigo abaixo executa o PipeLine. Nesse exemplo teremos como padro de
execuo um boto.

Integer li_RC
Long ll_Start, ll_End

Transaction lt_Source

uo_pipeline01 lp_Create

st_erros.Text = "0"
st_lidos.Text = "0"
st_tempo.Text = "0"
st_gravados.Text = "0"
String erros[18]

erros[1] = "-1 Erro ao abrir o Pipeline"
erros[2] = "-2 Faltam colunas"
erros[3] = "-3 Tabela j existe"
erros[4] = "-4 Tabela no existe"
erros[5] = "-5 Sem conexo inexistente"
erros[6] = "-6 Erro nos parmetros"
erros[7] = "-7 Colunas incompatveis"
erros[8] = "-8 Erro fatal no SQL de origem"
erros[9] = "-9 Erro fatal no SQL de destino"
erros[10] = "-10 Maximo nmero de erros excedidos"
erros[12] = "-12 Erro na sintaxe do Pipeline"
erros[13] = "-13 chave requerido no encontrada"
erros[15] = "-15 Pipeline j esta executando"
erros[16] = "-16 Erro no database origem"
erros[17] = "-17 Erro no database destino"
erros[18] = "-18 Base de dados destino e um read-only"

SetPointer(HourGlass!)
This.Enabled = False
cb_executa.Enabled = False
transaction lt_origem
lt_origem = CREATE Transaction
lt_origem.dbms = sqlca.dbms
lt_origem.database = sqlca.database
PowerBuilder 9.0 Bsico Captulo 11 173

PipeLine de dados

lt_origem.userid = sqlca.userid
lt_origem.dbpass = sqlca.dbpass
lt_origem.logid = sqlca.logid
lt_origem.logpass = sqlca.logpass
lt_origem.servername = sqlca.servername
lt_origem.dbparm = sqlca.dbparm

Connect using lt_origem;

If lt_origem.sqlcode <> 0 Then
Messagebox("Erro ao conectar", lt_origem.sqlerrtext)
Return
End If

lp_Create = CREATE uo_pipeline01

lp_Create.st_lidos = st_lidos
lp_Create.st_gravados = st_gravados
lp_Create.st_erros = st_erros

//Recupera o pipeline de uma dropdown
//lp_Create.DataObject = ddlb_pipeline.text
//Ou atribua direto

lp_Create.DataObject = "u_copia_tabela"
ll_Start = CPU()
li_RC = lp_Create.Start(lt_origem, sqlca,dw_erros)
ll_End = CPU()
st_tempo.Text = String((ll_End - ll_Start)/1000,"##0.0")
If li_RC <> 1 Then
Beep(2)
MessageBox("Erro", erros[ABS(li_rc)])
st_men.text = "Execuo abortada"
End if
Commit;
DESTROY lp_Create
Disconnect Using lt_origem;
DESTROY lt_origem
This.Enabled = True
cb_executa.Enabled = FALSE
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 11 174

PipeLine de dados

If li_RC = 1 Then
st_men.text = "Execuso terminada com sucesso."
End if

Nota : Para a dw_erros crie somente o controle datawindow.




Este exemplo voc poder testar no CD do PowerBuilder 9.0 Bsico.


Captulo 12
Criando Relatrios
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 175

Criando Relatrios

A criao de relatrios com o PowerBuilder 9.0 muito simples quanto
simples o seu relatrio, no PowerBuilder 9.0 a criao de um relatrio segue
os mesmos critrios da criao de uma DataWindow.

O Relatrio assim como a DataWindow o resultado de uma consulta (query)
ao banco de dados. A grande diferena que o relatrio no pode ser editado
pelo usurio a sua ordem de tabulao igual a zero. Em um relatrio no
existe validao de dados nem atualizao dos mesmos.

As opes de relatrios quanto a estilo de apresentao e origem de dados,
so as mesmas disponibilizadas para a DataWindow.

Veja as definies no captulo 9, sobre DataWindow.


Para se produzir um relatrio devemos seguir alguns passos:

1. Determinar o tipo de relatrio que se ir produzir;
2. Criar o objeto DataWindow que ir recuperar e exibir os dados;
3. Anexar o objeto DataWindow a um controle DataWindow;
4. Adicionar no controle DataWindow os processos para recuperar os dados e
imprimir.

Os tipos:

x Tabular
x Freeform
x Grid
x Label
x N-Up
x Group
x Composite
x Graph
x Crosstab
x OLE 2.0
x RichText

PowerBuilder 9.0 Bsico Captulo 12 176

Criando Relatrios

Em um relatrio podem-se agregar todas as funcionalidades da DataWindow
exceto as funcionalidades de atualizao, por uma questo lgica e no por
limitao. Ento criar um relatrio com o PowerBuilder muito simples.

Seguiremos alguns passos criando um relatrio em cima da base de dados
exemplo EAS Demo DB V9 e descrevendo passo a passo seus eventos,
funes e propriedades.


Clique em New selecione DataWindow e o estilo Freeform. Selecione
no estilo de recuperao de dados Quick Select marque Retrieve on
Preview. Clique em Next.

Selecione a tabela Department, selecione todas as colunas clicando no boto
direita Add All, agora clique na tabela associada Employee, selecione as
colunas emp.id, emp.fname, emp.lname, emp.salary.

Clique em OK e marque o Save as Default. Clique em Next e em Finish
para finalizarmos a criao de nossa DataWindow.

A DataWindow foi criada. Como selecionamos o estilo Freeform os dados e
label foram disponibilizados na vertical assim teremos que ajustar para que o
relatrio disponibilize as informaes de modo satisfatrio e coerente para
uma boa visualizao e customizao de recursos.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 177

Criando Relatrios

Teremos ento no template de edio o quadro abaixo:



Neste exemplo que iremos criar de relatrio utilizaremos os recursos
mais comuns para um relatrio gerencial. Com cabealho, informaes
de pgina, data da impresso, hora da impresso e a utilizao de expresses
na DataWindow de relatrio.

O Primeiro passo maximizar o template de edio para uma melhor
visualizao dos dados. Com esse procedimento podemos melhor visualizar as
bandas disponveis para manipulao.

x Header - Onde colocaremos nosso cabealho.
x Datail - Onde colocaremos as linhas de dados.
x Summary - Onde colocaremos os dados sumarizados.
x Footer - Detalhes de rodap do relatrio.

PowerBuilder 9.0 Bsico Captulo 12 178

Criando Relatrios



A figura acima mostra o template de edio maximizado coloque o mouse
sobra banda Header. Na mudana do ponteiro do mouse, clique com o
boto direito e mantenha-o pressionado, arrastando para baixo abrindo assim
um espao entre o limite do template e a banda Header.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 179

Criando Relatrios

Criando cabealho.

Na PaintBar1 selecione o objeto Text e clique na parte branca entre o
Header e banda limite Header. Para criarmos uma caixa de texto onde
comearemos a montar nosso cabealho.



Para o objeto texto criado digite: Demonstrativo : Salrio X
Departamento. Centralize o texto na parte superior da banda Header.

Agora selecione o objeto Picture e clique na parte esquerda da banda
Header.

A caixa de dialogo para se selecionar a figura a inserir no objeto se abrir.
Selecione:C:\Arquivosdeprogramas\Sybase\PowerBuilder9.0\Code\
Examples\ExampleApp\nautilus.bmp
Caso a figura fique fora de proporo, coloque o mouse sobre a figura e clique
com o boto direito no menu popup que se abrir. Selecione, Original Size.


Selecione outro objeto Text e inclua-o na banda Header.

Para cada coluna selecionada na base iremos incluir um objeto texto com a
identificao da coluna conforme segue :
PowerBuilder 9.0 Bsico Captulo 12 180

Criando Relatrios

Algumas colunas estaro agrupadas formando assim uma nica informao.
Para se quebrar uma linha do objeto Text, digite logo aps o texto que se
deseja quebrar (~r) Til mais a letra erre.

Coloque o mouse sobre cada banda e na mudana do ponteiro do mouse
clique com o boto direito mantenha-o pressionado e alinhe cada banda para
que o relatrio tenha uma proporcionalidade adequada para cada linha que
ser exibida. Veja figura abaixo.

Note que algumas colunas tero um alinhamento esquerda e outras
direita podendo at ter colunas que devero estar centralizadas. Esses
ajustes sero necessrios para adequar o tipo de dado a visualizao
que se queira dar ao relatrio. No existe uma regra definida neste caso vale
sempre o bom senso. Lembrando que sempre se deve procurar mostrar o
mximo de informaes possveis sem se poluir o relatrio. Fazendo-se assim
um relatrio de fcil leitura e identificao dos dados.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 181

Criando Relatrios

Agora vamos incluir algumas funes disponveis no PowerBuilder 9.0.

Funo Descrio
Today() Retorna a data corrente
Now() Retorna a hora corrente
Page() Retorna a pgina corrente
PageCount() Retorna o total de pginas

Incluindo a data corrente

Clique em Todays Date e clique ao lado do ttulo direita para incluir o
objeto Text com a expresso Today().







Note que a expresso Today() retorna a data atual no modelo a qual ela
esta definida no painel de controle do MS Windows.









direita no template propriedades, em Compute Expression. clique no
boto de seleo para abrir a caixa de dialogo Modify Expression e digite
ou selecione na caixa de seleo na parte inferior esquerda String(x,s), no
lugar do x, escreva Today() e ignore o s.

Ento teremos: string( today() )

PowerBuilder 9.0 Bsico Captulo 12 182

Criando Relatrios

Clique em Ok. Aumente a clula at que esta disponibilize a data e a hora.







Ento teremos no relatrio :









Coloque o mouse sobre a banda Summary e na mudana do ponteiro do
mouse clique com o boto esquerdo mantenha-o pressionado e arraste
abrindo assim um espao entre a banda Datail e Summary.

Clique na coluna salary da banda Datail e clique em para criar uma
coluna com a mdia dos valores recuperados do banco de dados.

Agora clique na parte branca da banda Summary e o campo computado
com a expresso, avg(employee_salary for all) ser adicionado a
DataWindow. Clique em e crie um novo objeto de texto e digite Mdia
Salarial :. Alinhe o campo computado com a coluna salrio e coloque o
objeto texto frente do campo computado.









Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 183

Criando Relatrios

Com estes procedimentos montamos uma coluna com a mdia
salarial de todos os departamentos.


Agora incluiremos um controle de pgina no rodap do relatrio.

Coloque o mouse sobre a banda Footer e na mudana do ponteiro do
mouse clique com o boto esquerdo mantenha-o pressionado e arraste.
Abrindo assim um espao entre a banda Summary e Footer.

Clique em para criar um campo computado com a expresso: 'Page ' +
page() + ' of ' + pageCount(). No template propriedade direita na
propriedade Compute Expression clique no boto de seleo na caixa de
dialogo que se abrir e substitua :

1. Page por Pgina
2. of por de

Ento teremos : 'Pgina ' + page() + ' de ' + pageCount()

E como resultado:










PowerBuilder 9.0 Bsico Captulo 12 184

Criando Relatrios
Criamos controle e total para o relatrio geral. Criaremos agora estes
grupo pa
a PowerBar clique em Rows e selecione no menu que se abrir Create
a caixa de dialogo Specify Group Columns que se abrir clique e arraste
lique em Ok.


controles para um determinado grupo. Assim devemos criar um
ra dividirmos o relatrio e dar e ele uma aparncia mais profissional.

N
Group.

N
a coluna department_dept_id da caixa Source Data para a caixa Columns.
Conforme a figura abaixo.




















C

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 185

Criando Relatrios

Note que novas bandas foram disponibilizadas a partir da incluso de um
grupo. So elas :



Header group department_dept_id : Cabealho especfico para o grupo.

Trailer group department_dept_id : Rodap especfico do grupo

Coloque o mouse sobre a banda Trailer group e na mudana do ponteiro
do mouse clique com o boto esquerdo mantenha-o pressionado e arraste.
Abrindo assim um espao entre a banda Trailer group e Detail.

Mova os itens da banda Summary Mdia Salarial. O computed Field com
o valor da mdia salarial e a linha para a banda Trailer Group.


Para continuarmos teremos que entender sobre as propriedades da banda de
grupo. As outras bandas exibem propriedades padro, j para a banda de
grupo existem algumas particularidades.
PowerBuilder 9.0 Bsico Captulo 12 186

Criando Relatrios

Coloque o ponteiro do mouse sobre a banda Header group e clique com o
boto direito. As propriedades da banda aparecero direita.


Color : Define a cor de fundo da
banda.

Height : Define o tamanho (altura)
que a banda vai ter.

Group Definition : Definio dos
itens que compe o grupo.

Group Sort : O tipo de classificao
que o grupo ter.

Reset Page Count : Inicia o contador
para cada quebra de grupo.

New Page on Group Break : Quebra
a pgina a cada quebra de grupo.

Clique no boto de seleo de Group Sort e clique e arraste a coluna
department_dept_id de Source Data para Columns. Conforme a
figura.

Clique em Ok.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 187

Criando Relatrios

No template propriedade selecione New Page on Group Break. Essa
seleo far com se quebre a pgina a cada novo grupo.


Veja no Template Preview como ficou o relatrio.

Note que automaticamente uma barra foi
includa em cada quebra, esta barra pode ser
inibida, siga os passos abaixo.



Clique na parte branca da banda Trailer gruop para acessar as
propriedades.

Selecione Hide Gray Line on Group Break. Se deseja inibir esta barra.











PowerBuilder 9.0 Bsico Captulo 12 188

Criando Relatrios

Para uma apresentao mais profissional, coloque o mouse sobre a
banda Header group e na mudana do ponteiro do mouse clique com
o boto esquerdo mantenha-o pressionado e arraste abrindo assim um espao
entre a banda Header group e a banda Header.

Mova as colunas department_dept_id, department_dept_name e
department_dept_head_id para a banda Header group.












Como resultado, teremos:





Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 189

Criando Relatrios

Clique em Save salve o relatrio com o nome d_rel01, feche o
template DataWindow.

Agora, clique em New selecione DataWindow escolha como
estilo Group em Choose Data Source for Group DataWindow
selecione Quick Select.

Na caixa de dialogo Quick Select selecione a tabela Department e
clique no boto Add All.

Selecione a tabela Employee e selecione as colunas emp.id,
emp.fname, emp.lname e emp.salary.

Em Source Data clique em department_dept_id e arraste para o
item Columns. Clique em Next.

Na caixa de dialogo Set Group Page Data item New page on
group break clique em Next e na caixa de dialogo Select Color
and Border Settings clique em Next. Na Caixa de dialogo Ready to
Create Group DataWindow, clique em Finish.


O Resultado que teremos se aproxima e muito da DataWindow criada
anteriormente com a vantagem que s clicamos, o PowerBuilder 9.0
construiu tudo automaticamente nesse caso teramos somente que acertar o
cabealho e dimensionar melhor as colunas.
PowerBuilder 9.0 Bsico Captulo 12 190

Criando Relatrios


Entendendo o estilo Composite.

O Estilo denominado composite designa-se a apresentar uma DataWindow
cujo seu contedo a insero de vrias DataWindow independentes ou no
entre si com estilos de apresentao diferentes.

Normalmente este estilo utilizado para relatrios condensados e complexos.
A DataWindow principal receber a denominao Composite (que recebe as
outras DataWindow), as DataWindow internas recebem a denominao
Nested Reports (que compe a DataWindow de estilo composite).


Clique em New selecione DataWindow e o estilo Grid. Selecione no
estilo de recuperao de dados Quick Select. Marque Retrieve on
Preview. Clique em Next.

Selecione a tabela Department. Selecione todas as colunas clicando no boto
direita Add All.

Clique em OK, e marque o Save as Default. Clique em Next e em Finish
para finalizar a criao da DataWindow.

Teremos :











Clique em Save e salve a DataWindow como d_relatorio_1. Feche
o template de DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 191

Criando Relatrios

Vamos criar a segunda DataWindow que ser inserida em nosso relatrio
composite.

Clique em New selecione DataWindow e o estilo Tabular.
Selecione no estilo de recuperao de dados Quick Select marque Retrieve
on Preview. Clique em Next.

Na caixa de dialogo Quick Select selecione a tabela employee e as
colunas; emp_id, manager_id, emp_fname, emp_lname,
dept_id e salary. Clique em Ok , Next e Finish.

Ento teremos:











Clique em Save e salve a DataWindow como d_relatorio_2. Feche
o template de DataWindow.

Vamos criar a terceira DataWindow que ser inserida em nosso relatrio
composite.

Clique em New selecione DataWindow e o estilo Graph. Selecione no
estilo de recuperao de dados Quick Select. Marque Retrieve on
Preview. Clique em Next.

PowerBuilder 9.0 Bsico Captulo 12 192

Criando Relatrios

Na caixa de dialogo Quick Select selecione a tabela employee e as
colunas; salary e sex. Clique em Ok, Next e Finish.

Na caixa de dialogo Define Graph Data na propriedade Category
selecione sex em Values selecione salary. Clique em Next. Na caixa
de dialogo Define graph Style na propriedade Title escreva Salrio X
Sexo e em Graph Type selecione Column. Clique em Next e
Finish.

Ento teremos :




















Agora falta descriminar as variveis do nosso grfico nesse exemplo no
iremos exemplificar todas as propriedades do objeto grfico, veremos isto
mais adiante.

Na propriedade direita selecione General e em Title digite; Slario X
Sexo. Agora selecione a aba Axis e selecione na propriedade Axis o item
Category em Label digite Sexo. Retorne na propriedade Axis e
selecione Value e em Label digite Salrio.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 193

Criando Relatrios

Ento teremos:






















Clique em Save e salve a DataWindow como d_relatorio_gr_3.
Feche o template de DataWindow.

PowerBuilder 9.0 Bsico Captulo 12 194

Criando Relatrios

Com os relatrios gerados iniciaremos a construo da DataWindow estilo
composite.

Clique em New selecione DataWindow e o estilo Composite. Na
caixa de dialogo Choose Nested DataWindows for Composite selecione
os relatrios d_relatrio_1, d_relatorio_2 e d_relatorio_gr_3. Clique
em Next e Finish.

Ento teremos:










Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 12 195

Criando Relatrios

A disposio fsica dos relatrios as mesmas efetuadas durante a seleo,
podemos modificar esta disposio para uma melhor visualizao.


O estilo Composite como todos os outros estilos tambm disponibiliza
algumas propriedades que podem ser configuradas para uma melhor
visualizao. So:

Em General :

Name : Nome dado ao relatrio e que define o acesso a este Nested.

HideSnaked : Faz com que o controle s aparece uma vez por pgina
quando voc imprimir a DataWindow caso esta utilize o formato de colunas de
jornal.

Visible : Habilita ou inibe a visualizao do relatrio.

Border : Define o tipo de contorno que o relatrio deve exibir.
PowerBuilder 9.0 Bsico Captulo 12 196

Criando Relatrios

Report : Seleciona ou altera o relatrio em foco.

New Page :Quebra a pgina antes da exibio do prximo relatrio
(Nested).

Trail Footer : Fora a banda footer a aparecer depois da ltima linha de
dados do relatrio.

Em Pointer :

Pointer : Seleciona o tipo de ponteiro do mouse ser exibido.

Em Criteria :

A condio de filtro da clusula Where para o relatrio. A propriedade de
Critrios define a conexo entre o relatrio e o DataWindow.

Exemplo : emp_id=:id_emp








Adquirido por : Fabrcio Moreira da Silva
Captulo 13

Grficos
PowerBuilder 9.0 Bsico Captulo 13 197

Grficos
Um grfico em linhas gerais igual a qualquer outro objeto DataWindow.
Exceto pelo fato de revelar os dados em forma de grfico ao invs de
apresentar os dados em forma de nmeros.

Para se criar um grfico precisaremos entender alguns padres. Em um
grfico existem as categorias, os valores e as sries. Onde :

Categoria : Os dados independentes, tipo: meses, anos e bimestres.

Valor : Os dados dependentes, esta informao normalmente sofre
alterao por categoria, tipo : Vendas (por ms) , Vendas (por ano) e Vendas
(por bimestre).

Srie : Os conjuntos de pontos de dados do grfico.


Para se criar um grfico deve-se definir as categorias e os valores. As
sries estaro presentes no grfico de acordo com as categorias e os
valores. Normalmente as categorias correspondem a uma coluna da tabela.
Os valores tambm podem provir de uma coluna, mas normalmente provm
de agregaes, somatrias ou mdia de uma coluna.

Criando um grfico

Clique em New selecione DataWindow e escolha o estilo Graph
em Choose Data Source for Graph DataWindow selecione Quick
Select e marque a caixa de seleo Retrieve on Preview e tecle Next.

Na caixa de dialogo Quick Select selecione employee. No quadro
Columns selecione salary e sex e clique em Ok

Na caixa de dialogo Define Graph Data selecione para Category; sex.
Para Values; sum(salary for graph) e para Series; sex. Clique em
Next.

Na caixa de dialogo Define Graph Style selecione SolidBar e clique em
Finish.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 198

Grficos
Ento teremos:

Com esta primeira viso podemos notar que praticamente o grfico j est
montado. Precisamos alterar algumas configuraes para uma melhor
preciso dos dados e compreenso do mesmo por qualquer pessoa que o
analise.

Para isto, existem as propriedades do objeto grfico. So:

Propriedade Tipo de dado Descrio
BackColor Long Especifica o valor numrico da cor de
fundo: -2 a 16,777,215
Border Border Especifica se o controle tem uma borda
BorderStyle BorderStyle
(Descrita)
Especifica o estilo da borda do controle.
Seus valores so:
StyleBox!
StyleLowered!
StyleRaised!
StyleShadowBox!
PowerBuilder 9.0 Bsico Captulo 13 199

Grficos
Propriedade Tipo de dado Descrio
BringToTop Boolean Especifica se PowerBuilder 9.0 mover o
controle front-to-back na janela ou controle
de DataWindow.
Category grAxis Especifica as propriedades do eixo de
categoria do grfico.
CategorySort grSortType Especifica como as categorias so
ordenadas.
ClassDefinition PowerObject Um objeto de tipo PowerObject que contm
informao sobre a definio de classe do
objeto ou controle.
Depth Integer Especifica o percentual de profundidade da
largura do grfico.
DragAuto Boolean Especifica se PowerBuilder por o grfico
automaticamente em modo de arrastar e
soltar. TRUE - Quando o controle clicado
ou, o controle est automaticamente dentro
do modo arrastar e soltar. FALSE - Quando
o controle clicado, o controle no est
automaticamente dentro do modo arrastar
e solta.
DragIcon String Especifica o nome do cone ou o arquivo
que contm o cone que voc quer exibir
quando o usurio arrastar um controle .
Elevation Integer Especifica o ngulo de elevao de frente
para a parte de trs.
Enabled Boolean Especifica se o controle habilitado (pode
ser selecionado).True : Habilitado / False :
No habilitado
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 200

Grficos
Propriedade Tipo de dado Descrio
GraphType grGraphType
(Decrita)
Especifica o tipo do grfico, os valores so:
Area3D!
AreaGraph!
Bar3DGraph!
Bar3DObjGraph!
BarGraph!
BarStack3DObjGraph!
BarStackGraph!
Col3DGraph!
Col3DObjGraph!
ColGraph!
ColStack3DObjGraph!
ColStackGraph!
Line3D!LineGraph!
Pie3D!
PieGraph!
ScatterGraph!
Height Integer Especifica a altura do controle, em
unidades do PowerBuilder.
Legend grLegendType
(descrita)
Especifica o alinhamento da legenda do
grfico, os valores so:
AtBottom!
AtLeft!
AtRight!
AtTop!NoLegend!
Legend DispAttr grDispAttr Especificam o estilo para o tipo de texto da
legenda do grfico, inclusive tamanho, cor,
e rotao.
OverlapPercent Integer Especifica o percentual da largura dos
marcadores de dados para sries diferentes
em um grfico.
Perspective Integer Especifica a distncia que o grfico da
frente da janela.
PieDispAttr grDispAttr Especificam as propriedades do texto em
grfico de torta com label, inclusive
tamanho, cor, e rotao.
Pointer String Contm o nome do ponteiro ou o arquivo
que contm o ponteiro usado para o
grfico.
PowerBuilder 9.0 Bsico Captulo 13 201

Grficos
Propriedade Tipo de dado Descrio
Rotation Integer Especifica quanto girar o grfico da
esquerda para direita.
Series grAxis Especifica as sries no grfico.
SeriesSort grSortType Especifica como as sries so ordenadas.
ShadeColor Long Especifica a cor usada para o
preenchimento no grfico.
Spacing Integer Especifica o espao entre marcadores de
dados no grfico em percentual.
TabOrder Integer Especifica o valor do controle TAB na
seqncia da tecla TAB.
Tag String Especifica o valor de etiqueta do controle.
TextColor Long Especifica a cor a ser usada para o texto no
controle.
Title String Especifica o texto do ttulo para o grfico.
TitleDispAttr grDispAttr Especificam o estilo para o texto na
legenda do grfico, inclusive estilo de
texto, tamanho, cor e rotao.
Values grAxis Especifica os valores do eixo de valor do
grfico.
Visible Boolean Especifica se o controle visvel. Se TRUE
- Controle visvel. Se FALSE - Controle
no visvel.
Width Integer Especifica o modo de texto no controle; por
exemplo, 400 para normal ou 700 para tipo
negrito.
X Integer Especifica o posicionamento X ( distncia
da extremidade esquerda da janela
principal), em unidades do PowerBuilder.
Y Integer Especifica o posicionamento Y ( distncia
do topo da janela principal), em unidades
do PowerBuilder.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 202

Grficos
Em todas as propriedades disponibilizadas pelo PowerBuilder 9.0, pode-se
usar a notao por pontos atravs do PowerScript facilitando a interao com
o usurio em tempo de execuo.

Exemplo:

gr_1.BackColor = RGB(255, 255, 0) ou

gr_1.Category.LabelDispAttr.BackColor = RGB(0, 128, 255) ou

gr_1.Category.Label = "Tipos X Produtos" ou

gr_1.Depth = 50


Alterando as propriedades do grfico no painter DataWindow.


No template propriedade direita clique na aba General. Para saber cada
propriedade consulte a tabela acima.

Title : digite Salrio X Sexo.

Units : selecione PowerBuilder (0)

Timer Interval : Selecione (0)

Color : Selecione Black

BackColor : Selecione White

Name : o padro sempre gr_1.

Depth : No estar disponvel.

Elevation : No estar disponvel.


PowerBuilder 9.0 Bsico Captulo 13 203

Grficos
No template propriedade direita clique na aba Axix. Para saber cada
propriedade consulte a tabela acima.

Na propriedade Axix selecione Category em Label, digite Sexo.

Na propriedade Axix selecione Label em Label, digite Salrio.

Na propriedade Axix selecione Series em Label, digite Descrio.

Na propriedade Scale marque a caixa AutoScale.

Ento teremos :




















Clique em Save salve o modelo do grfico como d_grafico.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 204

Grficos
Explore as propriedades do objeto grfico. Normalmente se aplica sua
variao em tempo de execuo. Os padres 3D disponibilizam as
propriedades Perspective, Elevation e Rotation que oferecem um bom
recurso para visualizao. Atravs das instrues de notao de ponto se
pode disponibilizar suas definies para o usurio.

At aqui conceituamos funes, objetos e aplicamos suas funcionalidades. O
mesmo ser feito para o objeto grfico. Para isto, utilizando o aprendizado at
agora iremos alterar o projeto proposto. Adequando-o a novas inseres de
objetos e funes.

Edite a janela w_000 altere a propriedade Window Type para
mdihelp!. Salve a janela.

Clique em New selecione PB Object e Window. O template para
criao de um novo objeto Window aparecer. Altere a propriedade
Window Type para child!. Selecione a aba Other e altere a
propriedade Width para o valor 3666 e Height para 2284. Salve a
janela como w_003.

Clique em New selecione PB Object e Menu. O template para
criao de um novo objeto menu se abrir. Clique no item untitle0
com o boto direito do mouse e selecione no menu-popup que se abrir
Insert Submenu item.

Na propriedade Text digite Grfico. Com um duplo clique no item
Grfico selecione o evento Clicked e escreva o cdigo PowerScript:
OpenSheet(w_003, w_000, 2, Layered! ). Salve como m_menu02.

Edit a janela w_000 no template propriedade substitua propriedade
MenuName pelo novo menu m_menu02. Salve a janela w_000.

PowerBuilder 9.0 Bsico Captulo 13 205

Grficos
Incluindo o objeto grfico na janela principal.

Edite a janela w_003 clique em Select Control e selecione Create
DataWindow control. Clique na janela para incluir o objeto DataWindow.

No template propriedade do controle DataWindow inclua na propriedade
DataObject o objeto grfico d_grfico. Ajuste o controle DataWindow
para que se visualize todo o objeto DataWindow.

Ento teremos:























Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 206

Grficos
Habilitando a DataWindow.

Clique em Select Control e selecione Create CommandButton
control. Clique na janela para incluir o objeto CommandButton.

No template propriedade na propriedade Text digite Retrieve.

D um duplo clique no objeto CommandButton. Selecione o evento Clicked
e digite:

// Desconecta o DBMS
Disconnect;
// Aplica os parmetros do DBMS de teste a transao SQLCA
sqlca.dbms ="ODBC"
sqlca.dbparm ="ConnectString='DSN=EAS Demo DB
V9;UID=dba;PWD=sql'"
// Conecta com o banco
connect;
//Testa a conexo
If sqlca.sqlcode < 0 Then
MessageBox ("Erro: Impossvel conectar com o banco de
dados", sqlca.sqlerrtext, Exclamation!)
HALT
End If
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()

PowerBuilder 9.0 Bsico Captulo 13 207

Grficos
Clique em Select Control e selecione Create CommandButton
control. Clique na janela para incluir o objeto CommandButton.

No template propriedade na propriedade Text digite Fechar.

D um duplo clique no objeto CommandButton selecione o evento Clicked e
digite:

// Desconecta do DBMS
Disconnect;
// Apaga todos os dados de um controle DataWindow
dw_1.Reset()
Clique em Save. Salve o modelo do grfico.

Ento teremos :

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 208

Grficos
Em tempo de execuo podemos alterar o modelo do grfico. para tal usamos
notao de pontos.

Clique em DropDownListBox. Clique na janela para incluir o objeto
DropDownListBox.

No template propriedades direita na propriedade Text digite; 4
Bar3Dobj.

Marque nas propriedades Visible, Enabled, AllowEdit e
VscrollBar.

No template propriedade selecione a aba Items e digite para cada
linha da tabela disponibilizada as linhas abaixo:

1 Area
2 Bar
3 Bar3D
4 Bar3Dobj
5 BarStacked
6 BarStacked3Dobj
7 Col
8 Col3D
9 Col3Dobj
10 ColStacked
11 ColStacked3Dobj
12 Line
13 Pie
14 Scatter
15 Area3D
16 Line3D
17 Pie3D

Essa tabela, representa os tipos de grficos disponveis no PowerBuilder 9.0.

Salve sua aplicao. Essa uma forma de nunca perdermos um
trabalho, a cada etapa ou de tempos em tempos no nosso trabalho,
salve sua aplicao.
PowerBuilder 9.0 Bsico Captulo 13 209

Grficos
Clique em HtrackBar e clique na janela para incluir o objeto
HtrackBar. Inclua este objeto na parte superior do controle DataWindow.

Repita a operao para a incluso de mais um objeto HtrackBar. Posicione
esse objeto na parte inferior do controle DataWindow.

Clique em VtrackBar e clique na janela para incluir o objeto
VtrackBar. Inclua este objeto na lateral direita do controle DataWindow.

Ento teremos:

Agora para que os controles tenham sua funcionalidade iremos escrever
atravs de notao de pontos, sua programao.


OBS : Inclua quatro StaticText. No primeiro escreva; Elevao, no
segundo; Perspectiva no terceiro; Rotao e no quarto; Tipo do
Grfico e distribua conforme a figura acima.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 210

Grficos
Selecione com um duplo clique o objeto HtrackBar definido como htb_1
que ser utilizado para Elevao. Selecione o evento Moved esse evento
sempre ser disparado se a barra do controle HtrackBar for movimentada.

Escreva o cdigo PowerScript :

dw_1.Object.gr_1.Elevation = This.Position
Selecione com um duplo clique o segundo objeto HTrackBar definido como
htb_2 que ser utilizado para Rotao. Selecione o evento Moved esse
evento sempre ser disparado se a barra do controle HTrackBar for
movimentada.

Escreva o cdigo PowerScript :

dw_1.Object.gr_1.Rotation=This.Position
Selecione com um duplo clique o terceiro objeto VTrackBar definido como
vtb_1 que ser utilizado para Perspectiva. Selecione o evento Moved ess
evento sempre ser disparado se a barra do controle VTrackBar for
movimentada.

Escreva o cdigo PowerScript :

dw_1.Object.gr_1.Perspective = This.Position
Selecione com um duplo clique a DropDownListBox definido como ddlb_1.
Selecione o evento selectionchanged ess evento sempre ser disparado
quando o contedo da ddlb for alterado. Como resultado desta alterao a
varivel index ser preenchida com a posio fsica da seleo formando
assim um indexador. Como o texto na tabela segue uma numerao uniforme
podemos utilizar o contedo da varivel index como um parmetro para
seleo.
Escreva o cdigo PowerScript:

integer l_index
l_index = index
dw_1.Object.gr_1.GraphType = l_index

PowerBuilder 9.0 Bsico Captulo 13 211

Grficos
Salve a aplicao e execute. Ento teremos:























Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 13 212

Grficos
Para que as barras HtrackBar e VtrackBar tenham funcionalidade escolha na
DropDownListBox um tipo de grfico com padro 3D. Tipo : Bar3D

Agora movimente as barras e veja os efeitos que se pode proporcionar.






Captulo 14
XML

Conceito

Exportando DataWindow
(DataWindow Export)

Importando um padro XML para a
DataWindow
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 213

XML
Conceito
A XML (eXtensible Markup Language, ou Linguagem de Marcao Estendida)
um subconjunto da SGML (Standard Generalized Markup Language, ou
Linguagem de Marcao Padro Generalizada) que permite que uma
marcao especfica seja criada para especificar idias e compartilh-las na
rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitaes
bvias.

Pontos fortes da XML
Inteligncia: a XML inteligente para qualquer nvel de complexidade. A
marcao pode ser alterada de uma marcao mais geral como:

<funo> Desenvolvedor </funo>

para uma mais detalhista, como:

<funo>
<Diretoria de Informtica>
<Informtica> Desenvolvedor </Informtica>
</Diretoria de Informtica>
</funo>

As idias so bem marcadas para que :

<Informtica> Desenvolvedor </Informtica> e,

<Jurdico> Adv. Junior </Jurdico> sejam sempre valores diferentes.

A informao conhece a si mesma. No necessria mais nenhuma idia
indesejvel;

Manuteno: a XML fcil de manuteno. Ela contm somente idias e
marcaes. Folhas de estilos e links, vm em separado, e no escondidas no
documento. Cada um pode ser alterado separadamente quando preciso com
fcil acesso e fceis mudanas;

PowerBuilder 9.0 Bsico Captulo 14 214

XML
Ligao: a XML possui uma maneira de ligar que inclui todas as formas de
ligao. No s isso; ela liga de maneira que a HTML no pode. A HTML pode
fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz
isso, mas tambm pode ligar dois ou mais pontos a uma idia. Existem ainda
links gmeos que ligam todas as idias dentro de uma mesma. Qualquer link
entre uma idia pode ser manipulado de uma nica maneira;

Portabilidade: a XML de fcil portabilidade. A razo da sua existncia
fora e portabilidade. A SGML tem fora. A HTML tem portabilidade. A XML
tm ambas. A XML pode ser navegada com ou sem o seu DTD (Document
Type Definition, ou Definio de Tipo de Documento - as normas que definem
como as tags so estruturas nos documentos XML), tornando o download
mais rpido. Tudo que um navegador precisa para ver XML ter a noo que
ela prpria e a folha de estilos, controlam a aparncia. Se uma validao
restrita necessria, o seu DTD pode acompanh-lo e fornecer detalhes
exatos da sua marcao.

Como a XML definida
A XML definida pelas seguintes especificaes:

Extensible Markup Language (XML) 1.0: define a sintaxe da XML;

XML Pointer Language (XPointer) e XML Linking Language (XLink):
define um padro para representar os links entre os recursos. Alm dos links
simples, como a tag <A> da HTML, a XML possui mecanismos para ligar
recursos mltiplos e diferentes. A XPointer descreve como enderear um
recurso, e a XLink descreve como associar dois ou mais recursos;

Extensible Style Language (XSL): define a linguagem de folhas de estilos
padro para a XML.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 215

XML
Uma DTD (Document Type Definition) pode ser definida como um conjunto de
regras que define quais tipos de dados e entidades far parte de um
documento XML. Estas regras sero utilizadas para que o analisador sinttico
verifique se o documento est correto ou no.

A DTD pode estar definida dentro do prprio arquivo XML ou em um arquivo
parte com extenso .dtd, que deve ser includo no cdigo XML. A DTD pode
ser usada para padronizar um documento XML e torn-lo bastante coerente
com as necessidades do desenvolvedor, porm sua criao no obrigatria.

DTDs Externas: Quando temos um documento XML muito extenso, melhor
utilizarmos um DTD externo, o que traz boa qualidade com super organizao
dos dados.

DTDs Internas: A DTD interna melhor trabalharmos quando usamos
pequenos documentos XML.

Como criar uma DTD

Para criarmos um arquivo DTD devemos analisar vrios aspectos como por
exemplo: Tipos de dados que o arquivo XML ir conter etc.

Criando uma DTD Interna.

Abaixo esta uma pequena demonstrao de dados de uma DTD interna.

<?xml version='1.0' encoding="iso-8859-1" ?>
<! DOCTYPE NOTA [
<! ELEMENT NOTA (PARA,DE,ASSUNTO)
<! ELEMENT PARA (#PCDATA)>
<! ELEMENT DE (#PCDATA)>
<! ELEMENT ASSUNTO (#PCDATA)>
<! ENTITY NOME "JOS DA SILVA">
]>
<NOTA>
<PARA>PEDRO XAVIER</PARA>
<DE>&NOME;</DE>
<ASSUNTO>HORARIO DA REUNIO</ASSUNTO>
</NOTA>

PowerBuilder 9.0 Bsico Captulo 14 216

XML
Onde :
<!DOCTYPE NOTA [
Esta linha diz que tudo o que estiver entre os colchetes ser o DTD de um
documento cujo elemento raiz <NOTA>. Como mencionado anteriormente,
o elemento raiz contm todos os outros.
<! ELEMENT NOTA (PARA,DE,ASSUNTO)
Isto define a tag <NOTA>. Os parnteses dizem que estes dois outros
conjuntos de tags devem aparecer dentro das tags <NOTA>, naquela ordem
especfica.
<! ELEMENT PARA (#PCDATA)>
#PCDATA, significa Parsed Character Data ou dados de caractere analisados
(isto , qualquer coisa que no seja dados binrios, como uma imagem).
Neste caso, o #PCDATA ser texto por exemplo, "PEDRO".

Criando uma DTD Externa.

O Cdigo desta demonstrao ser o mesmo do que da DTD interna acima
somente iremos dividir o DTD e XML em dois arquivos com as extenses .xml
e .dtd.

Abaixo o arquivo .xml

<?xml version='1.0' encoding="iso-8859-1" ?>
<! DOCTYPE NOTA SYSTEM "dtdexterna.dtd">
<NOTA>
<PARA>PEDRO</PARA>
<DE>&NOME;</DE>
<ASSUNTO>CARTA DO USUARIO</ASSUNTO>
</NOTA>

Note que no arquivo .xml, adicionamos uma linha para chamar o
arquivo .dtd

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 217

XML
Agora abaixo o arquivo .dtd

<?xml version='1.0' encoding="iso-8859-1" ?>
<! ELEMENT NOTA (PARA,DE,ASSUNTO)
<! ELEMENT PARA (#PCDATA)>
<! ELEMENT DE (#PCDATA)>
<! ELEMENT ASSUNTO (#PCDATA)>
<! ENTITY NOME "JOSE DA SILVA">

Validao
Existem duas categorias de documentos XML: bem formatados e vlidos.

Documentos Bem Formatados
Um documento somente pode ser bem formatado se ele obedece sintaxe da
XML. Um documento que inclui seqncias de caracteres de marcao que
no podem ser analisadas ou so invlidas no podem ser bem formatados.
Alm disso, o documento deve atender a todas as seguintes condies
(subentendendo-se que algumas destas condies podem exigir experincia
com SGML):

x A instncia do documento deve estar conforme a gramtica dos
documentos XML. Em particular, algumas construes de marcaes
(referncias a entidades parmetro, por exemplo) so somente permitidas
em locais especficos. O documento no bem formatado se tais
ocorrerem em outros locais, ainda que o documento esteja bem formatado
nos outros casos.

x O texto de substituio para todas as entidades parmetro referenciadas
dentro de uma declarao de marcao consiste em zero ou mais
declaraes de marcaes completas. (Nenhuma entidade usada no
documento pode consistir de somente uma parte de uma declarao de
marcao.)

x Nenhum atributo pode aparecer mais do que uma vez na mesma marca de
incio.

x Valores de atributos cadeias de caracteres no podem conter referncias a
entidades externas.

x Marcas no-vazias devem ser apropriadamente aninhadas.
PowerBuilder 9.0 Bsico Captulo 14 218

XML


x Entidades parmetro devem ser declaradas antes de serem usadas.

x Todas as entidades devem ser declaradas, exceto as seguintes: amp, lt,
gt, apos e quot.

x Uma entidade binria no pode ser referenciada no fluxo do contedo; ela
pode ser usada somente em um atributo declarado como ENTITY ou
ENTITIES.

Documentos
Um documento bem formatado vlido somente se ele contm uma
declarao de tipo de documento e se o documento obedece s restries da
declarao.

Documentos com DTD

Definio
Na XML as regras que definem um documento so ditadas por DTDs
(Document Type Definitions), as quais ajudam a validar os dados quando a
aplicao que os recebe no possui internamente uma descrio do dado que
est recebendo. Mas os DTDs so opcionais e os dados enviados com um DTD
so conhecidos como dados XML vlidos. Um analisador de documentos pode
checar os dados que chegam analisando as regras contidas no DTD para ter
certeza de que o dado foi estruturado corretamente. Os dados enviados sem
DTD so conhecidos como dados bem formatados. Nesse caso, o documento
pode ser usado para implicitamente se autodescrever.

Com os dados XML vlidos e com os bem-formatados, o documento XML se
torna autodescritivo porque as tags do idia de contedo e esto misturadas
com os dados. Devido ao formato do documento ser aberto e flexvel, ele
pode ser usado em qualquer lugar onde a troca ou transferncia de
informao necessria. Desta forma, podemos usar o XML para descrever
informaes sobre pginas HTML, ou descrever dados contidos em objetos ou
regras de negcios, ou transaes eletrnicas comerciais.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 219

XML
O XML pode ser inserido dentro de documentos HTML, o que foi definido pelo
W3C como "data-islands". Esse recurso permite que um documento HTML
possa ter mltiplas formas de visualizao quando se faz uso da informao
de semntica contida no XML.

O que define formalmente quais elementos e quais combinaes possveis
permitida dentro de um documento XML o "schema", ou seja, esquema.

Existem novos esquemas propostos ao W3C, dentre eles esto o DCD
(Document Content Description), que provm mesma funcionalidade dos
DTDs, e que, pelo fato de linguagens esquema serem extensveis, os
desenvolvedores podem aument-los com informaes adicionais, tais como
regras de apresentao, tornando essas novas linguagens esquema mais
poderosas que os DTDs.

Resumo

As DTDs so formas de se descrever classes de documentos XML (como
gramticas para outras linguagens).

Problemas com DTDs:

x se muito simples no tem poder expressivo de descrio.
x se for muito complexa ter uma sintaxe horrvel.



A soluo para as DTDs: usar linguagens de esquemas (schema languages)
tais como DSD,XML Schema, etc

Os documentos, para serem validados, tm que ser bem formatados e
tambm estarem em conformidade com a DTD dada.
PowerBuilder 9.0 Bsico Captulo 14 220

XML
XML case sensitive.

XML case sensitive <MinhaTag> diferente de </ Minhatag>, pertence a
dois elementos diferentes.

Nulo ou Branco.
Colunas com branco ou nulo devem ser representadas, a XML no interpreta
estes tipos de dados, se uma coluna no contm dados deve ser representada
por; <dado></dado> ou <dado/>, onde a tag dado no disponibiliza um
contedo.

Aps conceituarmos a XML, aplicaremos este conceito ao PowerBuilder
9.0, utilizando as novas propriedades de importao e exportao de
dados de uma DataWindow para XML.

As linhas de uma DataWindow podem ser exportadas e importadas utilizando
eXtensible Markup Language (XML), neste capitulo vamos abordar a
exportao e importao de dados utilizando XML.

O exemplo abaixo, um XML simplificado que contm a declarao do
documento XML, seguida pela TAG que descreve o elemento denominado raiz,
<d_dept_list>, a definio da linha <d_dept_list_row>, a definio da
coluna <dept_id>, <dept_name> e <dept_head_id>, os dados e a tag
de finalizao de cada coluna </dept_id>, </dept_name> e
</dept_head_id>. Finalizando o bloco </d_dept_list_row>.

Teremos :

<?xml version="1.0">
<d_dept_list>
<d_dept_list_row>
<dept_id>100</dept_id>
<dept_name>R &amp;D</dept_name>
<dept_head_id>501</dept_head_id>
</d_dept_list_row>
...
</d_dept_list>
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 221

XML
Modelo XML DOM em rvore.
<?xml version=1.0 encoding=UTF-8?>
<!DOCTYPE menu SYSTEM menu.dtd>
<menu>
<refeio nome=Caf da manh>
<descrio>
Ovos mexidos
</descrio>
<descrio>
Queijo quente
</descrio>
<bebidas>
Suco de laranja
</bebidas>
</refeio>
<refeio nome=lanche>
<descrio>
Frios fatiados
</descrio>
</refeio>
</menu>











PowerBuilder 9.0 Bsico Captulo 14 222

XML
A partir da verso 9.0 do PowerBuilder, foram incorporadas novas
caractersticas para XML, como exportao e importao de DataWindow /
DataStores. A essas novas caractersticas se denominou Servios de XML
Nativos e XML Parser interface.

Exportando DataWindow (DataWindow Export)

DataWindow Export, um componente novo da DataWindow, possibilita
exportar linhas da DataWindow em uma estrutura de dados padro XML.

O modelo de exportao de uma DataWindow mapeia os elementos da
DataWindow ao gerar o XML correspondente.

Os seguintes objetos de uma DataWindow podem ser usados em modelos de
exportao.

Column
Computed Column
Text Control
Computed Field
Nested Report

Um template de exportao uma parte da definio da DataWindow. Uma
DataWindow pode conter vrios template de exportao. So permitidos
template em formato PBL e SRD de uma DataWindow. A propriedade
DataWindow , Export.XML.UseTemplate, usada para especificar um
objeto (template) para uso em uma determinada operao de exportao.

Esta propriedade pode ser fixada em runtime e designtime.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 223

XML
Exemplo de um template de exportao XML.
export.xml(
usetemplate="t_lista01"
metadatatype=2 savemetadata=1
template=(
comment="Lista de funcionrios sada DTD"
name="t_lista01"
publicid="c:\dwxml\lista01.dtd"
xml="<?xml version=~"1.0~"
encoding=~"UTF-8~"
standalone=~"no~"?>
<!DOCTYPE Lista>
<Orders><!-- ....... --></Orders>"
)
)


Exemplo de exportao utilizando a interface grfica.






PowerBuilder 9.0 Bsico Captulo 14 224

XML
Na painter DataWindow do PowerBuilder 9.0 foi includo um novo template,
onde se permite; definir, editar e exportar a DataWindow em um padro XML.

Este template, visualizado em modo default do layout do painter
DataWindow, se localiza na parte inferior esquerda e se intitula
Export / Import Template XML .

A viso deste novo template no painter DataWindow caracteriza-se por um
controle TreeView representando a estrutura XML. Nesta estrutura fica
explicito; as Entidades, os Marcadores e os Dados. Diferentes cones e fontes
diferem os tipos de dados e seus elementos.

Apenas um modelo de exportao pode ser editado.

cones usados no template de Export/Import.

cone Descrio

Declarao de XML ou declarao de tipo de documento.

Raiz ou elemento descendente.

Elemento do Group header.

Referncia da coluna da DataWindow.

Referncia de controle Static text.

Referncia Computed field.

Referncia de expresso DataWindow.

Texto.

Comentrio

Instruo de processamento

Seo CDATA

Nested report
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 225

XML
Explorando o template Export / Import Template - XML

Clique com o boto direito do mouse em qualquer rea de fundo do template para ter
acesso ao menu popup de edio do template.

Item Descrio
New Cria um modelo novo de XML com a raiz e
elementos de linha de detalhe vazio.
New Default Cria um modelo novo de XML com a raiz e
elementos de linhas de detalhes para cada
elemento mapeado, colunas e campos
computados.
Open Abre um modelo de XML previamente salvo
Save Salva o modelo de XML atual atribuindo-lhe um
nome. Se o modelo atual
um template novo, uma caixa de dialogo ser
exibida, solicitando um nome e comentrios
"opcional".
Save As Salva o modelo de XML atual como uma cpia
debaixo de um novo nome, ser aberta uma
caixa de dialogo solicitando um nome e
comentrios "opcional".
Delete Apaga o modelo de XML atual. Uma caixa de
dialogo solicitando confirmao ser exibida
antes desta ao, permitindo o usurio cancelar
ou no.


A seleo no menu popup do item Delete apaga o template atual, para apagar
itens do template, simplesmente o marque e pressione a tecla Del.

PowerBuilder 9.0 Bsico Captulo 14 226

XML
Pressionando o boto direito do mouse em cima de qualquer elemento do template,
disponibilizar o menu popup correspondente, por exemplo : Clicando-se na
Declarao de XML ou declarao de tipo de documento, teremos :

Item Descrio
Edit Exibe uma caixa de dilogo para edio da
verso da XML, disponibiliza codificar se haver
remarcaes externas no documento
standalone = Yes, caso contrrio standalone =
No (default)
Delete Apaga a declarao de XML

Pressionando o boto direito do mouse em cima da Referncia da coluna da
DataWindow disponibilizar o menu popup com as opes :

Item Descrio
Edit Exiba caixa de dilogo de edio do nome do
DOCTYPE e seu identificador.
Insert Before abre o menu popup tipo cascata listando todos
os modos disponveis para construo do
contexto da XML.
Delete Apaga a declarao contexto do Documento

O menu popup para uma Raiz ou elemento descendente, exibe :

Item Descrio
Edit Permite adicionar um rtulo raiz ou elemento
descendente. Se a raiz ou elemento
descendente tem um ou mais atributos,
selecione Edit para habilitar a caixa de dilogo
para editar o nome da raiz ou elemento
descendente ou acrescentar um atributo.
Edit/Add
Attribute
Abre a caixa de dilogo para editar o nome da
raiz ou elemento descendente permitindo a
definio de um atributo.
Add Child abre o menu popup tipo cascata listando todos
os modos disponveis que podem ser
adicionados a uma raiz ou elemento
descendente de um XML.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 227

XML
Insert Before abre o menu popup tipo cascata listando todos
os modos disponveis que podem ser
adicionados antes da definio de uma raiz ou
elemento descendente.
Schema
Option
Abre uma caixa de dilogo para editar o nome
da raiz do documento
gerado no esquema da XML


Template Export - Detalhes



















Descrio :

Seo de detalhe : Esta seo separada graficamente por uma barra cinza
separando a seo de cabealho da seo de detalhe. Esta marcao poder
ser alterada pelo desenvolvedor atravs da opo Starts Detail no menu
popup dos elementos da rvore de dados.

S um elemento pode ser marcado como elemento de Inicio de detalhe
(Starts Detail).

PowerBuilder 9.0 Bsico Captulo 14 228

XML
Exportando uma DataWindow.

Pode-se exportar uma DataWindow utilizando a mesma funo utilizada para
exportar para HTML ou PSR, a funo SaveAs ;

dw_1.SaveAs( "c:\minha_aplicao\d_lista01.xml", XML!, TRUE )
Assim como notao de pontos;

dw_sua_datawindow.object.datawindow.data.xml

Ou a funo Describe;

dw_sua_datawindow.Describe( "datawindow.data.xml" )

O PowerBuilder 9.0 disponibiliza em suas novas propriedades para exportao
XML funes que permitem ajustes de seleo de modos, tanto em Design
Time quanto em RunTime, So elas:

Sintaxe : Export.XML.UseTemplate Utilizada para informar o modelo que
ser usado para exportao. Esse modelo dever estar criado.

Onde: valor = Uma string que especifica o nome do template xml de
exportao previamente criado no painter do objeto DataWindow.

PowerScript;

dw_sua_datawindow.Object.DataWindow.Export.XML.UseTemplate =
"valor"

Modify;

dw_sua_datawindow.Modify( "DataWindow.Export.XML.UseTemplate
{= valor }" )


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 229

XML
Sintaxe: Export.XML.MetaDataType - usado para especificar que
metadato ser associado ao XML gerado na exportao da DataWindow.
Essa propriedade pode ser utilizada em DesignTime ou em RunTime.
Onde: valor = Uma string que especifica um valor para
Export.XML.MetaDataType, dado descrito ou codificado.(veja a tabela abaixo
para os valores possveis para a utilizao da sintaxe de exportao).

dw_sua_datawindow.Object.DataWindow.Export.XML.MetaDataType
= "valor"

Modify;

dw_sua_datawindow.Modify(
"DataWindow.Export.XML.MetaDataType {= valor}" )


Sintaxe : Export.XML.SaveMetaData - usado para especificar o
metadado que ser gerado em tempo de execuo (RunTime) ou em tempo
de desenho (Design Time).

Onde valor = Uma string que especifica um valor para Export.XML.
SaveMetaData, dado descrito ou codificado.


PowerScript;

dw_sua_datawindow.Object.DataWindow.Export.XML.SaveMetaData
= " valor "

Modify;

dw_sua_datawindow.Modify(
"DataWindow.Export.XML.SaveMetaData {= valor}" )

PowerBuilder 9.0 Bsico Captulo 14 230

XML
Sintaxe : Export.XML.HeadGroups - usado para especificar como sero
geradas as linhas de cabealho do XML, em tempo de desenho (DisignTime),
selecione na tabela de propriedades (Data Export) o item Interate Header
for Group, aplicando-se expresses condicionais. Em tempo de execuo
(RunTime) usa-se a sintaxe :

Onde: valor = Pode assumir, Yes, No, TRUE, FALSE, O ou 1

dw_sua_datawindow.Object.DataWindow.Export.XML.HeadGroups =
"valor"
Modify;

dw_sua_datawindow.Modify( "DataWindow.Export.XML.HeadGroups
{= valor}" )

Sintaxe : Export.XML.IncludeWhiteSpace - usada para especificar se
espao em branco deve ser preservado no XML gerado. Essa propriedade
pode ser selecionada em Tempo de desenho (DesignTime) selecionando na
tabela de propriedades (Data Export) o item Include WhiteSpace aplicando-
se expresses condicionais. Ou em Tempo de execuo (RunTime) usa-se a
sintaxe :

Onde: valor = Pode assumir, Yes, No, TRUE, FALSE, O ou 1

PowerScript;

dw_sua_datawindow.Object.DataWindow.Export.XML.IncludeWhiteSp
ace = "valor"
Modify;

dw_sua_datawindow.Modify(
"DataWindow.Export.XML.IncludeWhiteSpace {= valor}" )

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 231

XML
Os valores possveis para a utilizao da sintaxe de exportao so :

Valor descrito Valor
numrico
Descrio
XMLNone! 0 O esquema do XML ou DTD, no sero
gerados na exportao do documento
XML .
XMLSchema! 1 O esquema do XML ser gerado junto
com a produo documento de XML.
XMLDTD! 2 DTD ser gerado junto com a produo
documento de XML.
MetaDataInternal! 0 O metadato ser gerado na seo de
DOCTYPE no momento da gerao do
XML.
MetaDataExternal! 1 O metadado ser salvo como um arquivo
externo com o mesmo nome do
documento de XML, com a extenso ".
dtd" (para XMLDTD! ).
A produo do documento XML incluir
um DOCTYPE se referenciando para o
arquivo de metadata.

PowerBuilder 9.0 Bsico Captulo 14 232

XML
Viso da propriedade de exportao do template DataWindow XML.


















Modificando e testando cada propriedade. Veja a seguir os resultados obtidos.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 233

XML
Exemplo 1.

Template : t_lista01
Meta Data Type : XMLNone!
Save Meta Data Type : MetaDataInternal!
Include White Space : Marcado
Head Group : No marcado

Resultado exemplo 1:



















PowerBuilder 9.0 Bsico Captulo 14 234

XML
Exemplo 2:

Template : t_lista01
Meta Data Type : XMLDTD!
Save Meta Data Type : MetaDataInternal!
Include White Space : Marcado
Head Group : No marcado


Resultado exemplo 2:














Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 235

XML
Exemplo 3:

Template : t_lista01
Meta Data Type : XMLSchema!
Save Meta Data Type : MetaDataExternal!
Include White Space : Marcado
Head Group : No marcado


Resultado exemplo 3:

Contedo do arquivo exportado exemplo3.xml

















PowerBuilder 9.0 Bsico Captulo 14 236

XML
Contedo do arquivo exportado exemplo3.xsd


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 237

XML
Exemplo 4:

Template : t_lista01
Meta Data Type : XMLSchema!
Save Meta Data Type : MetaDataExternal!
Include White Space : Marcado
Head Group : No marcado


Resultado exemplo 4:













PowerBuilder 9.0 Bsico Captulo 14 238

XML
Contedo do arquivo exportado exemplo4.xsd

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 239

XML
Importando um padro XML para a DataWindow.

Voc pode importar o contedo de um documento XML para uma
DataWindow ou DataStore usando tcnicas semelhantes usadas para
importar outros formatos de dados estruturados.

x Para isto o template XML dever existir.
x modelo do template deve ser bem formatado.
x Composite, Grfico, objetos OLE DataWindow Composite,
Grfico e OLE no podem ser importados usando um template.
x Voc tem que usar o formato default.

As declaraes abaixo so equivalentes. Ambas importaro os contedos do
arquivo padro XML de nome exemplo1.xml.

dw_1.ImportFile(exemplo1.xml)
dw_1.ImportFile(XML!, exemplo1)



Viso da propriedade de importao do template DataWindow XML.


PowerBuilder 9.0 Bsico Captulo 14 240

XML
Quando voc importa dados de um arquivo XML com ou sem um modelo,
voc pode criar um arquivo de log para verificar se o processo de
importao executou a contento. O contedo deste arquivo mostra o que foi
importado; como o modelo, os elementos e as linhas.

Para criar esta log, basta selecionar a opo do template de importao
Trace XML Import e em Trace File Name definir o caminho e o nome do
arquivo que receber as informaes. Tipo: C:\LOGS\TRACE01.LOG.

Modelo de um arquivo Tracer log.






Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 241

XML
Nesse captulo, mudou-se a forma de apresentao, devido a aparente
complexidade desta nova funcionalidade, a de Exportao e Importao de
dados em padro XML do PowerBuilder 9.0, mas como foi visto, o
PowerBuilder 9.0, minimiza em muito desenvolvimento desta tarefa.

Aplicaes clientes bem como aplicaes com componentes de servidor
ganharam caractersticas mais robustas que permitem uma melhor
inteligibilidade com outras aplicaes e componentes.

Para uma melhor fixao dos conceitos at agora vistos, realizaremos um
pequeno modelo demonstrando os conceitos vistos.

Em nossa aplicao exemplo denominada exemplo1. Edite a DataWindow
d_lista01.

Ento teremos:
PowerBuilder 9.0 Bsico Captulo 14 242

XML
No template Export / Import Template - XML clique na rea em branco com
o boto direito do mouse e selecione no menu popup que surgir, a opo
Save.
Na caixa de dialogo que se abrir. Digite um nome para este template XML.
Digite t_lista01 clique em Ok. O template XML denominado t_lista01 foi
criado.

Agora edite o objeto menu denominado m_menu02.

Clique com o boto direito do mouse no item m_menu02 do template de
edio do menu e selecione no menu popup que se abrir Insert Submenu
Item.

No novo item que se disponibilizar. Digite XML e tecle Enter.

Selecione com um duplo clique o item XML disponibilizando assim o
template de eventos para este item do m_menu02.

Selecione o evento Clicked.





Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 243

XML
Digite no evento Clicked:

OpenSheet(w_004,w_000, 2, Layered! )
Clique em New e selecione PB Object e Window.

No painter de edio da Window no template "Propriedades" direita.
Selecione Other. Na propriedade Width escreva 3666 e em Height
escreva 2284.

Clique em Select Control e selecione o objeto DataWindow. Clique na janela
que acabou de criar e inclua o objeto DataWindow.

No template propriedade do objeto DataWindow que acabou de incluir defina:

Name : dw_1
DataObject : d_lista01
Title : Janela 04 XML






PowerBuilder 9.0 Bsico Captulo 14 244

XML
Selecione a aba Other e defina:



Salve a nova janela como w_004.

Volte ao painter de edio do menu e salve o menu m_menu02.

At este ponto; criamos um novo item para o menu(m_menu02) e uma
nova janela com um novo objeto DataWindow associado ao controle
DataWindow d_lista01. Agora vamos montar a Exportao e a Importao dos
dados da DataWindow para o padro XML.

Clique em Select Control e selecione o objeto CommandButton. Clique na
janela que acabou de criar e inclua o objeto CommandButton.

Com o mouse em cima do boto clique com o boto direito do mouse e no
menu popup que aparecer selecione Duplicate. Repita esta operao 3
vezes. Assim teremos 4 Objetos CommandButton na janela w_004.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 245

XML
Com um duplo clique no primeiro boto selecione o evento Clicked.

Digite :

dw_1.Object.DataWindow.Export.XML.HeadGroups = "No"
dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"
dw_1.SaveAs( "c:\exemplo1.xml", XML!, TRUE )
Com um duplo clique no segundo boto selecione o evento Clicked.

Digite :

dw_1.Object.DataWindow.Export.XML.HeadGroups = "No"
dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"
dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'")
dw_1.Modify("DataWindow.Export.XML.MetaDataType = 2")
dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 2")
dw_1.SaveAs( "c:\exemplo2.xml", XML!, FALSE )
PowerBuilder 9.0 Bsico Captulo 14 246

XML
Com um duplo clique no terceiro boto selecione o evento Clicked.

Digite :

dw_1.Object.DataWindow.Export.XML.HeadGroups = "No"
dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"
dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'")
dw_1.Modify("DataWindow.Export.XML.MetaDataType = 1")
dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 1")
dw_1.SaveAs( "c:\exemplo3.xml", XML!, FALSE )
Com um duplo clique no quarto boto selecione o evento Clicked.

Digite :

dw_1.Object.DataWindow.Export.XML.HeadGroups = "Yes"
dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes"
dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'")
dw_1.Modify("DataWindow.Export.XML.MetaDataType = 1")
dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 1")
dw_1.Modify("Export.XML.SaveMetaData = MetaDataExternal!")
dw_1.SaveAs( "c:\exemplo4.xml", XML!, FALSE )
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 14 247

XML
Clique na janela w_004 e selecione o evento OPEN.

Digite :

// Desconecta o DBMS
Disconnect;
// Aplica os parametros do DBMS de teste transao SQLCA
sqlca.dbms ="ODBC"
sqlca.dbparm ="ConnectString='DSN=EASDemoDB
V9;UID=dba;PWD=sql'"
// Conecta com o banco
connect;
//Testa a conexo
If sqlca.sqlcode < 0 Then
MessageBox ("Erro: Impossivel conectar com o banco de
dados", sqlca.sqlerrtext, Exclamation!)
HALT
End If
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
PowerBuilder 9.0 Bsico Captulo 14 248

XML
Salve a janela w_004. Teremos:



Execute a aplicao. Clique nos botes para gerar os arquivos. Edite os
arquivos gerados e analise.




Adquirido por : Fabrcio Moreira da Silva
Captulo 15

Preparando sua aplicao final

Criando o objeto Project

Criando o arquivo executvel
PowerBuilder 9.0 Bsico Captulo 15 249

Criando o objeto Project

O PowerBuilder 9.0 disponibiliza um Wizard para criao do executvel da
sua aplicao. Voc pode gerar dois tipos de executvel: PseudoCdigo ou
Cdigo de mquina. (s na verso Enterprise)

Cdigo de mquina (machine code) : Esta opo poder ser selecionada
no template de gerao do executvel. Se em sua aplicao, voc utilizou a
expresso Try-Catch no utilize como opo o cdigo de mquina. Essa
seleo lhe retornar um erro de compilao.

Se a sua aplicao precisa de velocidade de processamento o cdigo de
mquina uma boa opo embora o tempo de compilao seja muito
maior. Se sua aplicao no necessita de uma grande velocidade de
processamento o mais aconselhvel a compilao em Pcode, mais
rpida a compilao e consome menos memria em tempo de
execuo ps os objetos no estaro todos na memria e sim s os
objetos necessrios para o processamento naquele momento.

Bibliotecas dinmicas: Voc pode criar tambm bibliotecas dinmicas para
sua aplicao. Podem ser usadas bibliotecas dinmicas para armazenar os
objetos da aplicao. Usando bibliotecas dinmicas voc pode quebrar a
aplicao em unidades menores que so mais fcil de administrar e tambm
reduzir o tamanho do arquivo executvel.

Para aplicaes de pequeno porte voc no precisa utilizar bibliotecas
dinmicas.

Para se criar um objeto Project clique em New e selecione Project.

Na caixa de dialogo que aparecer selecione Application Wizard e clique
em Ok.

Na caixa de dialogo About Application Wizard clique em Next.

Na caixa de dialogo Specify Destination Library selecione a biblioteca a
qual o objeto Project ser includo. No nosso caso selecione
exemplo1.pbl.

Na caixa de dialogo Specify Project Object d um nome ao seu objeto ou
assuma o que o PowerBuilder gerar. Clique em Next.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 15 250

Criando o objeto Project

Na caixa de dialogo Specify Executable and Resurce Files especifique o
caminho a qual ser gravado o arquivo .exe e o seu nome, no caso do
exemplo seria : C:\Manual PB\exemplo1.exe
Neste caso o arquivo de recursos .pbr no existe. Ento deixe em branco e
clique em Next.

Na caixa de dialogo Specify Build Option sero disponibilizados quatro
opes:



Prompt for Overwrite Abre uma tela de dialogo perguntando se regrava
o arquivo se este j existir.

New Visual Style Controls Ativa o estilo de exibio para o modelo
Windows XP. S ter funcionalidade se voc utiliza o MS Windows XP.
PowerBuilder 9.0 Bsico Captulo 15 251

Criando o objeto Project

Full Build Verifica e pr-compila toda a aplicao

Incremental Build Verifica e pr-compila s as pbls que sofreram
alterao.


Para o nosso exemplo marque as opes conforme a figura acima.


Clique em Next.

Na caixa de dialogo Generate Machine Code voc poder escolher que tipo
de compilao deseja realizar. Para o nossa exemplo selecione a primeira
opo conforme a figura abaixo.


Clique em Next.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 15 252

Criando o objeto Project

Na caixa de dialogo Specify Dynamic Options selecione a opo
disponibilizada se voc deseja criar bibliotecas dinamicas ou deixe
desmarcado se voc s quiser gerar um arquivo do tipo .exe.

Para o nosso exemplo marque a opo.

Clique em Next.

PowerBuilder 9.0 Bsico Captulo 15 253

Criando o objeto Project
Na caixa de dialogo Specify Version Information os campos disponibilizados
j estaro previamente preenchidos, mas voc poder alterar estas
informaes para melhor compor o seu projeto.

Clique em Next.

Na caixa de dialogo Ready to Create Application clique em Finish.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 15 254

Criando o objeto Project
Ento teremos:


O seu objeto Project j esta configurado e pronto para compilar a sua
aplicao.

Clique em Deploy para compilar.

Note que ao final, foram gerados os arquivos exemplo1.exe e o arquivo
exemplo1.pbd.

Faa um teste gerando seu executvel em cdigo de mquina. Assinale
Machine Code e clique em Deploy. Compare os arquivos.
PowerBuilder 9.0 Bsico Captulo 15 255

Criando o objeto Project
Os arquivos da primeira compilao tm um .exe reduzido e uma biblioteca
.pbd maior. J o arquivo gerado na segunda compilao (machine code) tem
um tamanho maior para o .exe e para a .dll gerada. Alm de a compilao
demorar um pouco mais.









Adquirido por : Fabrcio Moreira da Silva






Captulo 16

Criando uma aplicao WEB

Criando um stio WEB com
PowerDynamo


PowerBuilder 9.0 Bsico Captulo 16 256

Criando um stio WEB com PowerDynamo
Os captulos a seguir descrevem as funcionalidades do PowerBuilder 9.0
voltado para a WEB. Para estas funcionalidades alguns softwares da Sybase
devero estar instalados. So :
x PowerDynamo 3.6 ou maior
x Internet Explorer 6.0 ou maior

Embora voc possa executar o PowerDynamo em baixo do EAServer esse
e-book estar se referenciando ao PowerDynamo Personal Web
Server.

Um stio Web com PowerDynamo so arquivos ou repositrios de banco de
dados onde voc pode; criar, armazenar e administrar o acesso de
documentos HTML e de dados. O PowerDynamo permite embutir instrues
de server-side em uma pgina Web. Possibilitando o processamento destas
instrues quando uma chamada cliente efetuada na pgina.

O PowerDynamo um servidor de aplicao que gera contedo de Web
dinmico. Possibilita recuperar informaes de seus bancos de dados
retornando os resultados para o servidor Web. O PowerDynamo tambm
disponibiliza um servidor da Web Pessoal (PowerDynamo Personal Web
Server) para uso durante o desenvolvimento.

Para se desenvolver em PowerDynamo deve-se como em todo servidor de
aplicao definir suas configuraes. O PowerBuilder 9.0 disponibiliza um
Wizard bem simples para esse processo onde automaticamente se poder
mapear todos os objetos utilizados em sua aplicao WEB.





Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 16 257

Criando um stio WEB com PowerDynamo

Utilizando passo a passo o Wizard do PowerBuilder 9.0 criaremos um stio
WEB com PowerDynamo.

Clique em New e selecione Target. Selecione PowerDynamo Web
Site e clique em Next.

Na caixa de dialogo Why PowerDynamo? clique em Next.

Na caixa de dialogo Select Target Location and Folder no item Web
Target digite o nome da Target onde ser organizada toda a sua aplicao
WEB.
Para o nosso exemplo digite conforme a figura abaixo. No necessrio
digitar todos os campos apenas na linha Web Target digite ex1.pbt os
demais campos sero automaticamente preenchidos.


Clique em Next.
PowerBuilder 9.0 Bsico Captulo 16 258

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Create Url Prefix Mapping no item URL Prefix
Mapping confirme /exemplo e clique em Next.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 16 259

Criando um stio WEB com PowerDynamo

Na caixa de dialogo, Create or Select ODBC Data Source escreva ou
confirme exemplo e clique em Next.







PowerBuilder 9.0 Bsico Captulo 16 260

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Specify Database File digite ou confirme o local onde
ser acondicionado o banco de dados.



Clique em Next.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 16 261

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Specify Login Information informe a identificao de
usurio. Por default dba e a senha de acesso que por default sql.


Clique em Next.

PowerBuilder 9.0 Bsico Captulo 16 262

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Load Help Files And Samples deixe desmarcado.

Clique em Next.

Na caixa de dialogo Name New Deployment Configuration d o nome
para esta nova configurao ou assuma o default.



Clique em Next.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 16 263

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Specify HTTP Server Information informe para
HTTP Server Name, localhost e como HTTP Port o default, 80.




Clique em Next.

PowerBuilder 9.0 Bsico Captulo 16 264

Criando um stio WEB com PowerDynamo

Na caixa dialogo Select Object Model assuma default Object Model e
clique em Next.






Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 16 265

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Choose File Deployment Options assuma o default e
clique em Next.



PowerBuilder 9.0 Bsico Captulo 16 266

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Specify Local Copy Folder assuma o default e clique
em Next.



E em seguida em Finish para criar o PowerDynamo Web Site.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 16 267

Criando um stio WEB com PowerDynamo

Na caixa de dialogo Specify Local Copy Folder assuma o default e clique
em Next.

Ento teremos em Ready to Create PowerDynamo Web Site todas as
especificaes para criao. Clique em Finish.


PowerBuilder 9.0 Bsico Captulo 16 268

Criando um stio WEB com PowerDynamo


Em nossa aplicao:




Aps a criao do ambiente agora podemos criar nossa primeira pgina no
stio ex_1.


Adquirido por : Fabrcio Moreira da Silva
Captulo 17

Criando a primeira pgina Web

Utilizando 4GL Web/JSP Page wizard
PowerBuilder 9.0 Bsico Captulo 17 269

Criando a primeira pgina Web.


Utilizando o Wizard 4GL Web / JSP page voc cria pginas no seu ambiente
PowerDynamo muito facilmente. Nesse captulo vamos criar uma pgina de
abertura e adicionar no ambiente ex_1.

No template TreeView clique com o mouse direito em cima de ex_1 e
selecione New.

Clique em Web e selecione 4GL Web / JSP Page e clique em Ok.


Na tela acima clique em Next.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 270

Utilizando o Wizard 4GL Web / JSP Page

Na caixa de dialogo, Specify New HTML File digite o ttulo para a abertura
da pgina que ser criada. Para o nosso exemplo digite Bem-vindo, em
File Name. Automaticamente ser assumido o nome do titulo como nome do
arquivo .htm.



Clique em Next.

PowerBuilder 9.0 Bsico Captulo 17 271

Utilizando o Wizard 4GL Web / JSP Page

Se a sua aplicao Web utilizar estilos de apresentao padronizados tipo
arquivos .css, nessa caixa de dialogo voc poder identifica-los. Caso
contrrio deixe em branco a opo Style Sheet e clique em Next.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 272

Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo Specify Background Characteristics voc pode
especificar uma imagem de fundo. Para o nosso exemplo deixe em branco e
em Background Color escolha uma cor de fundo. Em nosso exemplo
utilizaremos o defaul White.


Clique em Next.
PowerBuilder 9.0 Bsico Captulo 17 273

Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo Specify Page Context pode-se definir um cabealho e
um rodap para a pgina em construo. Nesse caso o cabealho ser
preenchido pelo ttulo da pgina e o rodap com a data atual. Ambos os dados
podero ser alterados posteriormente. Marque as duas caixas e clique em
Next.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 274

Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo Specify Error e Tracing Options marque os itens
conforme a figura abaixo. Assim os erros que por ventura surgirem sero
apresentados no rodap da pgina. Para desenvolvimento uma boa opo,
mas no muito apresentvel quando em produo. Portanto ao selecionar
este modo lembre-se que essa opo pode ser alterada para se inibir a
exibio das mensagens de erro. O Trace uma boa opo se deixar
ativado.


Clique em Next.
PowerBuilder 9.0 Bsico Captulo 17 275

Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo Define Page Parameters voc pode definir variveis e
atribuir-lhes escopo se for necessrio. Automaticamente estas variveis sero
adicionadas a variveis globais para serem usadas do lado servidor de sua
aplicao. No nosso exemplo defina em Parameter Name, ID e em
Default Value, deixe em branco.



Clique em Next.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 276

Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo Choose EAServer Profile marque a caixa Skip
EAServer Components e clique em Next.

Caso existisse algum componente do EAServer definido e este fizesse parte da
sua aplicao. poderia ser selecionado aqui, mas no caso do exemplo que
estamos desenvolvendo ainda no criamos nenhum componente.




PowerBuilder 9.0 Bsico Captulo 17 277

Utilizando o Wizard 4GL Web / JSP Page
Ento teremos a caixa de dialogo final do 4GL Web / JSP Page. Clique em
Finish para gerar a primeira pgina da aplicao ex_1.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 278

Utilizando o Wizard 4GL Web / JSP Page
Viso da pgina gerada.





Nesse ponto j estamos com a primeira pgina html criada atravs do 4GL
Web / JSP Page para o ambiente PowerDynamo ex_1. O PowerBuilder 9.0
ainda disponibiliza o painter de edio e visualizao html possibilitando a
manuteno e melhoramento da pgina html gerada.


PowerBuilder 9.0 Bsico Captulo 17 279

Conhecendo o painter de edio html

No painter de edio html do PowerBuilder 9.0 esta disponibilizada uma nova
barra de ferramentas.


Alguns objetos do PowerBuilder esto disponveis para incluso em
seu projeto Web. No entraremos nestes detalhes considerados
avanados. Alguns desses controles precisam de configuraes mais
detalhadas para o EAServer. O que no o propsito deste livro.

Descrevendo a barra de ferramenta PainterBar3.



Inserir linha Horizontal

Inserir boto

Inserir fim de linha(Line Break)

Inserir boto com imagem

Inserir tabela

Inserir texto esttico

Inserir figura

Inserir DataWindow

Inserir HiperLink

Inserir objeto

Inserir Ancora

Inserir Applet

Inserir Caixa de marcao

Inserir plug-in

Inserir boto de rdio

Inserir campo de linha simples

Inserir rea de texto

Inserir ListBox



Aps estar familiarizado com a barra de ferramenta procederemos
familiarizao do painter de edio. Para isto modificaremos a pgina
Bem-vindo.htm.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 280

Alterando a pgina Bem-vindo.htm

Com a pgina editada coloque o cursor no final do texto Bem-vindo e tecle
Enter.

Marque o texto Bem-vindo e clique com o boto esquerdo do mouse no
menu popup que aparecer. Selecione Header Properties.

Na caixa de dialogo que surgir selecione a tabela Inline Style e clique na
caixa de rdio Inline e no boto Edit.

Esta opo disponibiliza as opes de edio de texto como fontes, fundo,
margens e etc.
PowerBuilder 9.0 Bsico Captulo 17 281

Alterando a pgina Bem-vindo.htm

Selecione a fonte Arial Black clique no boto com a seta para direita para
transferir a fonte.

No grupo Font Size clique no boto de rdio marcado como Specific para o
tipo digite 20 e selecione pt.

Selecione Nave para Color. Varrendo a dropdownlistbox de cores.

Clique na aba Backgrond e marque o boto de rdio Relative e selecione
center para horizontal e vertical.

Selecione White para BackGround Color.

Clique em Ok. E teremos :


Clique em Ok para aceitar a seleo dos dados e permitir ao PowerBuilder
9.0 alterar a pgina Bem-vindo.htm.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 282

Alterando a pgina Bem-vindo.htm

A figura abaixo representa a alterao realizada na pgina Bem-vindo.htm.


Clique em Save para guardar as alteraes.


PowerBuilder 9.0 Bsico Captulo 17 283

Incluindo uma imagem na pgina Bem-vindo.htm

Clique como o boto do mouse direito no item ex_1.

No menu popup que surgir selecione New Folder e digite Imagens para o
nome da nova pasta e tecle Enter.

Clique com o boto do mouse direito sobre a nova pasta e selecione no menu
popup Import File.

Selecione em Tipo de arquivo, All Files.

Navegue na pasta onde o PowerBuilder 9.0 esta instalado e no diretrio
PowerBuilder 9\Tutorial selecione a imagem tshirtw.jpg. A imagens ser
copiada para a pasta Imagens.

Clique na pgina Bem-vindo.htm. Coloque o cursor no final da linha Bem-
vindo. Tecle Enter para incluir uma nova linha.
Coloque o cursor nesta nova linha e clique no menu (PowerBar3) em
Incluir figura. Clique no boto (...) para procurar a figura a ser inserida.

Abra a pasta Imagens e selecione a imagem tshirtw.jpg.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 284

Incluindo uma imagem na pgina Bem-vindo.htm
Teremos :



Clique em OK. E Em OK outra vez.

PowerBuilder 9.0 Bsico Captulo 17 285

Incluindo uma imagem na pgina Bem-vindo.htm

Teremos :


Melhorando :
Clique na imagem como boto direito do mouse e selecione Position e Use
Absolute Positioning. Mova a imagem conforme sua preferncia.















Clique em Save para guardar as alteraes.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 286

Criando uma pgina Inicial

Para o projeto ficar um pouco mais profissional e treinarmos um pouco mais,
criaremos uma pgina inicial utilizando o mesmo processo da criao da
pgina Bem-vindo.htm.

No template TreeView clique com o boto do mouse direito em cima de ex_1
e selecione New.

Clique em Web e selecione 4GL Web / JSP Page. Clique em Ok.
Clique em Next.
Na caixa de dialogo Specify New HTML File digite o ttulo para a abertura
da pgina que ser criada. Para o nosso segundo exemplo Abertura, em
File Name automaticamente ser assumido o nome do titulo como nome do
arquivo .htm. Clique em Next.

Deixe em branco a opo Style Sheet e clique em Next.

Na caixa de dialogo Specify Background Characteristics voc pode
especificar uma imagem de fundo. Para o nosso segundo exemplo deixe em
branco e em Background Color escolha uma cor de fundo. Em nosso
segundo exemplo utilizaremos o default White. Clique em Next.
Na caixa de dialogo Specify Page Context pode-se definir um cabealho e
um rodap para a pgina em construo. Nesse caso o cabealho ser
preenchido pelo ttulo da pgina e o rodap com a data atual. Ambos os dados
podero ser alterados posteriormente. Marque as duas caixas e clique em
Next.
Na caixa de dialogo Specify Error e Tracing Options deixe em branco.
Clique em Next.

PowerBuilder 9.0 Bsico Captulo 17 287

Criando uma pgina Inicial

Na caixa de dialogo Define Page Parameters voc pode definir variveis e
atribuir-lhes escopo se for necessrio. Automaticamente estas variveis sero
adicionadas a variveis globais para serem usadas do lado servidor de sua
aplicao. No nosso segundo exemplo deixe em branco. Clique em Next.

Na caixa de dialogo Choose EAServer Profile marque a caixa Skip
EAServer Components e clique em Next.

Ento teremos a caixa de dialogo final do 4GL Web / JSP Page clique em
Finish para gerar a segunda pgina da aplicao ex_1.



Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 288

Criando uma pgina Inicial

Ento teremos:


Marque o texto Put your data here e troque o texto por : Clique para
entrar.

Clique em Save para guardar as alteraes.

Ento teremos:

PowerBuilder 9.0 Bsico Captulo 17 289

Criando uma pgina Inicial
Agora marque o texto Clique para entrar no menu principal e selecione
Format e Hyperlink. E preencha os campos conforme a figura abaixo.



Clique em OK. Teremos:













Clique em Save para guardar as alteraes.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 290

Depurando e executando sua aplicao Web.

Coloque o mouse sobre a aplicao Web ex_1 clique no boto direito do
mouse e selecione Deploy.

Acompanhe no template Output a depurao da aplicao Web ex_1. Ao
final, se tudo estiver correto a mensagem Finished Deploy of Target
ex_1 ser exibida.




Para executar a sua aplicao voc precisa estar com o PowerDynamo
Personal Web Server ativo.

Clique em Iniciar e procure no seu diretrio do PowerBuilder 9.0 a chamada
para o atalho PowerDynamo 3.6 e selecione Personal Web Server.

Quando o Personal Web Server estiver ativo o cone ser visualizado
na Taskbar do MS Windows.

Ento selecione no menu principal Run e Select and Run.

Selecione ex_1. E clique em OK.


PowerBuilder 9.0 Bsico Captulo 17 291

Depurando e executando sua aplicao Web.
Ento teremos:


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Captulo 17 292

Finalizando


Seu projeto agora j possui uma ligao Web. O PowerBuilder 9.0 pode
disponibilizar dados via DataWindow direto pelo browser, possibilitando uma
interao ambiente cliente/servidor e Web, mas para que isto seja possvel
necessria utilizao EAServer. Este livro, conforme nos referenciamos no
inicio uma literatura bsica, cujo objetivo possibilitar aos iniciantes ter
uma referncia, um ponto de partida. Para cada vez mais desbravar as
possibilidades oferecidas por esta ferramenta de desenvolvimento. O Sybase
PowerBuilder 9.0.

Em breve e com o pensamento positivo de todos, estarei escrevendo um
modulo sobre as tcnicas avanadas do Sybase PowerBuilder 9.0.

At Breve.

Paz e prosperidade a todos.
PowerBuilder 9.0 Bsico Guia de Referncia : Nomenclaturas




Guia de Referncia

Nomenclaturas
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Nomenclaturas

293
Nomenclatura dos Tipos de Objetos

Nome do Objeto Conveno Exemplo
Objeto de DataWindow d_ d_cliente
Funo (global) f_ f_exibir _ erro
Menu m_ m_cliente
Estrutura s_ s_empregado
Consulta q _ q _
clientes_para_agentes
Objeto do usurio u_ u _ pedido
Janela w _ w_ ancestral


Nomenclatura dos Controles da Janelas


Nome do Controle Conveno Exemplo
ChekBox cbx_ cbx_rascunho
CommandButton cb_ cb_ok
DataWindowControle dw_ dw_dados
DropDowListBox ddlb_ ddlb_agentes
EditMask em_ em_telefone
WindowsFunction wf_ wf_errosql
Graph gr_ gr_chegadas_por_agentes
GrupBox gb_ gb_opo_de_saida
HscrollBar hsb_ hsb_vermelho
Line ln_ ln_linhacurta
ListBox lb_ lb_agentes
MultiLineEdit mle_ mle_comentrios
Oval oval_ oval_equipe
Picture p_ p_empregado
PictureButton pb_ pb_atualizar
RadioButton rb_ rb_construo
Rectangle r_ r_ret
RoundRectangle rr_ rr_tela
SingleLineEdit sle_ sle_nome_do_cliente
StatleText st_ st_prompt_do_cliente
UserObject uo_ uo_pedido
VscrollBar vsb_ vsb_percentual_feito

PowerBuilder 9.0 Bsico Guia de Referncia : Nomenclaturas

294
Nomenclatura por Espao

Escopo da Varivel Conveno
Local lx_ ou nada (o prefixo opcional nas variveis
locais)
Global gx_
Instncia ix_
Compartilhada sx_
Argumento ax_


Nomenclatura por Tipo de Dados

Tipo de Dados Conveno
Janela (Window) w
Item de Menu (MenuItem) m
Controle de DataWindow dw
Estrutura(structure) str
Objeto do usurio (User Object) uo
Inteiro (Integer) i
Inteiro sem Sinal (Unsigned Integer) ui
Longo (Long) l
Longo sem Sinal (Unsigned Long) ul
Booleano (Boolean) b
String (String) s
Duplo (Double) db
Real (Real) r
Decimal (Decimal) dc
Data (Date) d
Hora (Time) t
DataHora (DateTime) dt ou st (TtimeStamp)

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Nomenclaturas

295
Exemplos de Nomenclaturas de Variveis

Nome da Varivel Descrio do Tipo de Dados
sstr_pontos_de_dados [] Array de Shared Structure (estrutura
compartilhada)
iul_id_do_cliente Instncia de um Unsigned Long
(inteiro longo sem sinal)
ss_nome Shared String (string compartilhada)
ii_contagem Instncia de um inteiro
contagem_de_loops Varivel Local (prefixo no
obrigatrio)
li_contagem_de_loops Inteiro Local (prefixo opcional
acrescentado)
lw_inst_de_janela Instncia Local de uma varivel de
janela
as_erro String de argumento (passado|)


Nomenclatura das Funes de Objetos.

Tipo de Objeto da Funo Conveno Exemplo
Funo Global f_ f_erro_sql
Funo de Menu mf_ mf_sair
Funo de Objeto do
Usurio
uf_ uf_pedido
Funo de Janela wf_ wf_atualizar

PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

Guia de Referncia

Atributos e Eventos
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

296
Atributos de Aplicaes

Atributos Valores Descrio
AppName String Uma string contendo o nome da aplicao
DDETimeOut Integer Um inteiro especificando, em segundo, o
intervalo de tempo reservado para uma
conversao DDE
DwMessageTitle String Uma string contendo o ttulo das caixas de
mensagens de datawindow exibidas durante
a execuo
MicroHelpDefault String Uma string contendo o texto bsico para o
MicroHelp
ToolbarText Boolean Um valor TRUE ou FALSE indicando se o
texto da barra de ferramentas deve ou no
ser exibido: Este atributo s tem efeito em
uma janela de quadro MDI
ToolbarFrameTitle String Uma string indicando o ttulo da barra de
ferramentas do quadro, quando ela uma
barra de ferramentas flutuante. Este atributo
s tem efeito em uma janela de quadro MDI
ToolbarSheefTitle String Uma string indicando o ttulo da barra de
ferramentas da folha, quando ela uma
barra de ferramentas flutuante. Este atributo
s tem efeito em uma janela de quadro MDI


Eventos de Aplicaes

Evento Descrio
Close Executado no fechamento da execuo
Idle Executado quando ocorre o nmero
especificado de segundos sem qualquer
atividade durante a execuo da aplicao
Open Executado na abertura da aplicao
SystemError Executado durante um erro do sistema em
qualquer local da aplicao


PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

297
Atributos de Janelas

Atributos Valores Descrio
BackColor Long Um indicador da cor de fundo
Border Boolean Um valor TRUE ou FALSE
indicando se a janela possui ou
no uma borda
BringToTop Boolean Um valor TRUE ou FALSE
indicando a suposio de que a
janela deve estar no primeiro
plano
ColumnsPerPage Integer Um inteiro indicando o nmero de
unidades a rolar quando h um
clique sobre a barra de rolagem
Controle [] Array de
objetos
Um array relacionando os
controles. Voc no pode alterar
os valores desta varivel
ControlMenu Boslean Um valor TRUE ou FALSE
indicando a presena da caixa de
controle e do menu da caixa de
controle
Enabled Boolean O valor TRUE permite janela
transmitir e receber mensagens
Height Integer Indica altura da janela
HscrollBar Boolean Um valor TRUE ou FALSE
indicando a presena de uma
barra de rolagem horizontal
Icon String O cone associado com uma janela
quando a janela se encontra
minimizada
LinesPer|Page Integer Um inteiro indicando o nmero de
unidades a rolar quando h um
clique sobre a barra de rolagem
para baixo
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

298
Atributos de Janelas

Atributos Valores Descrio
MaxBox Boolean Um valor TRUE ou FALSE indicando a
presena de uma caixa de maximizar
na barra de titulo da janela
MenuID String O item do menu associado a janela
MenuName String O nome do menu associado com a
identificao de menu
MinBox Boolean Um valor TRUE ou FALSE indicando a
presena de uma caixa de minimizar
na barra de titulo da janela
Pointer String Uma string contendo o nome do
arquivo que guarda o ponteiro para o
objeto ou controle
Resizable Boolean Um valor TRUE ou FALSE indicando se
a janela ou no redimensionvel
Tag String Uma string contendo o valor da tag
da janela
Title String Uma string contendo o ttulo da janela
TitleBar Boolean Um valor TRUE ou FALSE indicando a
presena de uma barra de titulo na
sua janela. A modificao deste
atributo em um script pode provocar
um erro durante a execuo
ToolbarAlignment Enumerated Controla-se uma barra de
ferramentas, est na parte superior,
inferior, esquerda ou direita, da
janela, ou se uma barra de
ferramentas flutuante. Este atributo
s ter efeito em quadros MDI e
folhas
ToolbarHeight Integer Estabelece a altura da barra de
ferramentas. Este atributo s tem
efeito em quadros MDI e folhas
ToolbarVisible Boolean Torna a barra de ferramentas visvel
ou invisvel (TRUE ou FALSE). Este
atributo s tem efeito em quadros
MDI e folhas
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

299
Atributos de Janelas

Atributos Valores Descrio
ToolbarWidth Integer Especifica a largura de uma barra de
ferramentas flutuante. Este atributo s
tem efeito em quadros MDI e folhas
ToolbarX Integer A coordenada X de uma barra de
ferramentas flutuante. Este atributo s
tem efeito em quadros MDI folhas
ToolbarY Integer A coordenada Y de uma barra de
ferramentas flutuante. Este atributo s
tem efeito em quadros MDI e folhas
UnitsPercolumn Integer Indica o nmero de unidades de rolagem
do PowerBuilder quando o usurio efetua
a rolagem atravs de um clique
esquerda ou direita da caixa de rolagem
UnitsPerLine Integer Indica o nmero de unidades de rolagem
do PowerBuilder quando o usurio efetua
a rolagem atravs de um clique acima ou
abaixo da caixa de rolagem
Visible Boolean Torna a janela visvel ou invisvel
VscrollBar Boolean Um valor TRUE ou FALSE indicando a
presena de uma barra de rolagem
Width Integer Indica a largura da janela
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

300
Atributos de Janelas


Atributos Valores Descrio
WindowState Enumerated Indica o estado (maximizada, minimizada ou
normal) em que a janela esta sendo exibida
no momento.
WindowType Enumerated Indica o tipo de janela (principal,
instantnea, MDI< Frame, etc).
X Integer Indica a coordenada X do canto superior
esquerdo da janela
Y Integer Indica a coordenada Y do canto esquerdo da
janela


Eventos de Janelas

Eventos Descrio
Activate A janela recebeu o foco
Clicked O usurio deu clique na janela
Close A janela esta sendo fechada
CloseQuery A janela esta sendo fechada atravs da caixa de
controle
Deactivate A janela esta perdendo o foco
DoubleClicked O usurio de um clique duplo na janela
DragDrop Um objeto arrastado foi solto na janela
DragEnter Um objeto arrastado entrou na janela
DragLeave Um objeto arrastado deixou a janela
DragWithin Um objeto esta sendo arrastado no interior da janela
Hide A janela se torna oculta
HotLinkAlarm Uma aplicao servidora transmitiu novos dados (ou
dados alterados) atravs de DDE
Key Uma tecla foi pressionada (exceto alt)
Mouse Down Um boto do mouse foi pressionado em uma rea
vazia da janela
MouseMove O mouse esta sendo movimentado
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

301
Eventos de Janelas

Eventos Descrio
MouseUp O boto do mouse foi liberado em uma rea vazia da
janela.
Open A janela se abre.
Other Ocorreu um evento do Windows que no foi definido
pelo PowerBuilder.
RbuttonDown O usurio est mantendo pressionado o boto direito
do mouse na janela
RemoteExec Uma aplicao, cliente transmitiu uma solicitao
atravs da DDE
RemoteHotLinkStar Uma aplicao, cliente quer iniciar um vinculo ativo
atravs da DDE.
RemoteHotLinkStop Uma aplicao, cliente quer encerrar um vinculo ativo
atravs da DDE.
RemoteSend Uma aplicao, cliente transmitiu dados atravs da
DDE.
Resize O usurio esta redimensionando a janela.
Show A janela estava oculta e agora esta sendo exibida.
SystemKey A tecla Alt ou Alt+outra foi pressionada.
Timer O evento foi disparado pela funo Timer em algum
intervalo de tempo determinado.


Atributos de Itens de Menus

Atributos Valores Descrio
Checked Boolean Um valor TRUE ou FALSE
indicando se item de menu esta
assinalado.
Enabled Boolean Um valor de TRUE ou FALSE
indicando se o item de menu
capaz de transmitir receber
mensagens.
Item[] Array de menus Uma lista de itens de menu
MicroHelp String A Microhelp associada a esse
menu.
ParentWindow Window A janela que contm o menu.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

302
Atributos de Itens de Menus

Atributos Valores Descrio
Tag String Uma string contendo o valor da tag do
item de menu.
Text String O texto associado a esse item de menu
ToolbarItemDown Boolean Um valor TRUE ou FALSE indicando se o
item da barra de ferramentas esta
embaixo como padro.
ToolbarItemDownName String O nome da figura exibida quando h um
clique sobre um item de uma barra de
ferramentas.
ToolbarItemName String O nome da figura exibida no item
correspondente da barra de
ferramentas.
ToolbarItemOrder Integer Um inteiro especificando a ordem dos
itens na barra de ferramentas.
ToolbaritemVisible Boolean Um valor TRUE ou FALSE indicando se o
item da barra de ferramentas esta ou
no visvel.
Visible Boolean Um Valor TRUE ou FALSE indicando se o
item do menu esta ou no visvel.


PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

303
Atributos de Controles de Janelas

Atributos Valores Descrio
Accelerator Integer Um inteiro contendo o valor ASC II que
indica a tecla que voc quer atribuir como
aceleradora para um controle
Alignment Enumerated Um tipo de dados enumerados,
especificando o alinhamento do texto em
um controle MultiLineEdit, StaticText ou
PictureButton. Os valores vlidos so;
Center!, Left! ou Right!.
AutoHScroll Boolean Um valor TRUE ou FALSE indicando se voc
quer que a rolagem de um campo no
sentido horizontal seja automtica.
AutoSkip Boolean Um atributo da mscara Edit indicando se
voc quer ou no saltar automaticamente
esse campo e passar para o campo
seguinte na ordem de tabulao.
AutoVScroll Boolean Um valor TRUE ou FALSE indicando se voc
quer que a rolagem de um campo no
sentido vertical seja automtica.
AllowEdit Boolean Um valor TRUE ou FALSE permitindo ou no
a entrada de um valor na tabela de cdigo
em uma DrogDownListBox.
Automatic Boolean Um valor TRUE ou FALSE indicando se o
controle CheckBox ou RadioButton deve ser
assinalado ou desmarcado
automaticamente por um clique do mouse.
BackColor Long Um recurso que utiliza a funo RGB para
determinar a cor do segundo plano de um
controle de janelas, por exemplo: para
definir a cor do fundo de uma edio em
vrias linhas como prpura voc digitaria,
mle_field.backcolor = RGB(255,0,255) .
BeginX Integer O ponto X inicial de um controle de linha
em uma janela em relao ao canto
superior esquerdo.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

304
Atributos de Controles de Janelas

Atributos Valores Descrio
BeginY Integer O ponto Y inicial de um controle de linha
em uma janela em relao ao canto
superior esquerdo.
Border Boolean Um valor TRUE ou FALSE indicando se o
controle da janela tem ou no uma borda
BorderStyle Enumerated Uma varivel enumerada descrevendo o
estilo da borda.
BringToTop Boolean Um valor TRUE ou FALSE indicando se o
controle da janela deve ser levado ou no
para frente dos outros controles.
Cancel Boolean Um valor TRUE ou FALSE indicando se este
CommandButton ou PictureButton deve ou
no ser usado como um boto de
cancelamento.
Category ObjetogrAxis Define os atributos do eixo das categorias
em um controle grfico.
Checked Boolean Um valor TRUE ou FALSE indicando se uma
CheckBox (caixa de verificao, esta
selecionada com um X ou se um
RadioButton (Boto de rdio) esta
preenchida).
ClassName String Uma string contendo o nome do controle da
janela.
Columns PerPage Integer Um inteiro indicando o nmero de unidades
a serem roladas quando houver um clique
acima da caixa de rolagem.
Controle[] WindowObject Um array relacionando os controles. Voc
no pode alterar os valores pela varivel.
ControMenu Boolean Um valor TRUE ou FALSE indicando a
presena de uma caixa de controle de m
menu de caixa de controle no controle da
janela.
CornerHeight Integer A altura do canto arredondado em um
RoundRectangle.
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

305
Atributos de Controles de Janelas

Atributos Valores Descrio
CornerWidth Integer A largura do canto arredondado em um
RoundRectangle.
DateObject String Uma string indicando o objeto de DataWindow
associado com o controle de DataWindow.
Default Boolean Um valor TRUE ou FALSE denotando se esta
CommandButton ou PictureButton deve ou
no ser usado como boto padro.
Depth Integer Um inteiro indicando a porcentagem da
profundidade em relao a largura do grfico,
por exemplo, se o valor da profundidade 75,
a profundidade do grfico corresponde a 75%
da sua largura.
Disabledname String O nome da figura a ser exibida quando um
PictureButton estiver inativo.
DisplayDate String Uma string contendo os dados que aparecem
inicialmente em uma EditMask.
DisplayOnly Boolean Um valor TRUE ou FALSE indicando se este
campo pode ou no ser alterado pelo usurio.
DragAuto Boolean Um valor TRUE ou FALSE indicando se um
clique coloca automaticamente o controle de
janela no modo Drag (Quando DragAuto e no
um evento Clicked).
DragLcon Dtring O icone aparece quando o usurio arrasta o
controle da janela.
Elevation Integer Um inteiro especificando o ngulo de alterao
da parte frontal para a posterior em um grfico
Enabled Boolean Um valor TRUE ou FALSE indicando se o
controle de janela pode ou no transmitir e
receber mensagens.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

306
Atributos de Controles de Janelas

Atributos Valores Descrio
EndX Integer O ponto X final de um controle de linha em
uma janela em relao ao canto superior
esquerdo.
FaceName String Uma string contendo o nome da face de
tipo (por exemplo, Arial) para o texto de
um controle de janela.
FiLLColor Long A cor de preenchimento em um controle
oval retngulo ou retngulo arredondado
FillPatt5ern Enumerated O padro para preenchimento em um
controle de texto esttico, oval, retngulo
ou retngulo arredondado.
FocusRectangle Boolean Um valor TRUE ou FALSE indicando se deve
ou no ser exibido um retngulo em torno
do controle
FontCharSet Enumerated
(CharSet)
Especifica o conjunto de caracteres da
fonte. Os valores validos so: ANSI!,
ChineseBigA!, DefaultCharSet!, HangEul!,
Shiftjis!, OEM e Symbol
FontFamily Enumareted
(Family!)
Especifica um grupo de faces de tipos com
caracteristicas semelhantes para o texto.
Os valores vlidos so: AnyFont!,
Decorative!, Modern!, Roman!, Scripte
Swiss.
FontPitch Enumerated
(Pitch!)
Especifica o esoaamento horizontal (pitch)
do texto. Os valores vlidos so: Default!
utiliza o espaamento padro
correspondente a fonte (fixo ou varivel );
Fixed usa espaamento fixo; Variable
usa espaamento varivel.
GraphType Enumerated Um tipo de dados enumerado grGraphType
especificando o tipo de um grfico.
Height Integer Um nmero indicando a altura do controle
da janela.
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

307
Atributos de Controles de Janelas

Atributos Valores Descrio
HscrollBar Boolean Um valor TRUE ou FALSE indicando se o
controle de janela tem ou no uma barra de
rolagem horizontal.
HscrollBar Boolean Um valor TRUE ou FALSE indicando se o
controle de janela tem ou no uma barra de
rolagem horizontal.
HsplitScrol Boolean Um valor TRUE ou FALSE indicando se o
controle de janela permite ou no dividir a
rolagem.
HtextAlign Enumerated Um recurso que especifica o alinhamento do
texto em um controle PictureButton. Os
valores vlidos so Center, Left e Right.
Icon String Uma string indicando o icone (arquivo ICON)
exibido se o controle de janela estiver
minimizado.
Increment Double Um recurso que especifica um incremento
usado em uma mscara Edit numrica com
controle de rotao.
Invert Boolean Um valor TRUE ou FALSE indicando se um
controle de figura esta ou no invertido
Italic Boolean Um valor TRUE ou FALSE especificando e o
texto em um controle esta ou no itlico.
Item[] Array de
String
Um array de strings de exibio em uma
tabela de cdigo de ListBox ou
DropDownListBox.
LeftText Boolean Um valor TRUE ou FALSE indicando se o
texto deve ser exibido no lado esquerdo
(TRUE) ou no lado direito (FALSE) de uma
caixa de verificao ou de um boto de rdio.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

308
Atributos de Controles de Janelas

Atributos Valores Descrio
Limit Integer Um inteiro contendo o nmero mximo de
caracteres (de 0 at 32767) que o usurio
pode digitar em um controle. O valor 0
indica um nmero ilimitado de caracteres.
Legend Enumerated
( gr Legend
Type )
Um nmero indicando a localizao da
legenda de um grfico. Os valores vlidos
so: 0 None, 1 Left, 2 Right, 3
Top, 4 Botton.
LegenDispAttr Grfico de
objeto
grDispAttr
Define como voc deseja que a legenda
aparea.
LibraryName String O nome da biblioteca de vnculos dinmicos
(DLL) que contm uma classe de objetos
personalizados do usurio.
LineColor Integer A cor para desenho de linhas em um
controle Line, Oval, Rectangle ou
RoundRectangle.
LinesPerPage Integer Um inteiro indicando o nmero de unidades
a serem roladas quando houver um clique
na parte inferior da barra de rolagem.
LineStyle Enumerated
(Style)
Um tipo de dados enumerados Style!
Especificando o estilo da linha de um
controle, Line Oval, Rectangle ou
RoundRectangle.
LineTrickness Integer Um inteiro determinando a espessura da
linha em um controle Line, Oval, Rectangle
ou RoundRectangle.
LiveScroll Boolean Um valor TRUE ou FALSE indicando se o
acionamento das barras de rolagem
possibilita a rolagem DataWindow.
Mask String Uma string contendo um formato de um
controle de mscara de edio.
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

309
Atributos de Controles de Janelas

Atributos Valores Descrio
MaskdataType Enumerated Uma varivel enumerada atribuindo um
formato predefinido a um controle de
mscara de edio.
MaxBox Boolean Um valor TRUE ou FALSE indicando a
presena de uma caixa de maximizar na
DataWindow.
MaxPosition Integer Um inteiro contendo o valor do atributo da
posio quando uma barra de rolagem
horizontal esta na extremidade direita ou
uma barra de rolagem vertical se encontra na
extremidade inferior. Somente para uso em
controle HscrollBar e VscrollBar.
MicroHelpHeight Integer Um inteiro no controle MDIClient (MDI_1)
determinando a altura da MicroHelp
MinBox Boolean Um valor TRUE ou FALSE indicando a
presena de uma caixa de minimizar na
DataWindow.
MinPosition Integer Um inteiro contendo o valor do atributo de
posio quando uma barra de rolagem
horizontal esta na extremidade esquerda ou
uma barra de rolagem vertical se encontra na
extremidade superior.
MinMax String Uma string contando os valores mnimo e
mximo para um controle de rtotao em
uma mscara de edio. Os valores mnimo e
mximo so separados por uma tabulao
(por exemplo, em_campo.minmax= 1000
5000).
MultiSelect Boolean Um valor TRUE ou FALSE indicando se o
usurio pode ou no selecionar diversos
valores em uma ListBox.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

310
Atributos de Controles de Janelas

Atributos Valores Descrio
ObjectType Enumerated Um tipo de dados enumerado especificando o
tipo de objeto do usurio.
OriginalSize Boolean Um valor TRUE ou FALSE indicando se devem
ou no ser ignorados os atributos Height e
Midth em um controle PictureButton sendo
exibida em seu tamanho original a figura
associada com o controle.
OverlapPerce
nt
Integer Um inteiro especificando a porcentagem da
largura dos indicadores de dados (por
exemplo) barras ou colunas de diferentes
sries que se sobreoem em um grfico.
Password Boolean Um valor TRUE ou FALSE indicando se uma
Single Line Edit deve ser criada como campo
de senha.
Perspective Integer Um valor inteiro (de 1 a 100), indicando a
distncia do grfico at a parte frontal da
janela. Quanto maior o nmero maior a
distncia e menor o tamanho do grfico.
PictureName String Uma string contendo o nome do mapa de bits
em um controle Pictyre ou PictureButton.
Pointer String Uma string contendo o ponteiro do mouse
para este objeto.
Position Integer A posio atual de uma barra de rolagem.
Somente para uso nos atributos HscrollBar e
VscrollBar.
Resizable Boolena Um valor TRUE ou FALSE indicando se o
DataWindow ou no redimensionvel.
Rotation Integer Um valor inteiro indicando o quanto voc
deseja girar um grfico da esquerda para a
direita.
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

311
Atributos de Controles de Janelas

Atributos Valores Descrio
Series Objeto GrAxis Define os atributos do eixo das sries em um
controle de grfico.
ShadeColor Integer Um inteiro determinando a cor do sombreado
de um grfico.
ShowList Boolean Um valor TRUE ou FALSE indicando se a lista
de uma DroDowmListBox deixa ou no ser
sempre exibida.
Sorted Boolean Um valor TRUE ou FALSE indicando se os
elementos em uma ListBox ou
DropDowmListBox devem ou no ser
classificados de acordo com seu valor de
exibio.
Spacing Integer Um inteiro determinando o espao entre as
categorias.
Spin Boolean Um valor TRUE ou FALSE indicando se uma
mscara de edio tem ou no controle de
rotao.
StdHeight Boolean Um valor TRUE ou FALSE indicando deve ser
usado a altura da barra de rolagem
horizontal padro (TRUE) ou a altura da
barra de rolagem horizontal do sistema
(FALSE).
StdWicth Boolean Um valor TRUE ou FALSE indicando se deve
ser usada a largura da barra de rolagem
vertical padro (TRUE ou a largura da barra
de rolagem vertical do sistema (FALSE)).
Style Long Controla a aparncia do objeto do usurio.
TabOrder Integer Um inteiro que descreve a ordem de
tabulao do controle de janela em relao a
outros controles.
TabStop [] Array de
inteiros
Um array de inteiros com sinais, contendo a
posio das paredes de tabulao em uma
mscara Edit, ListBox ou Line Edit.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

312
Atributos de Controles de Janelas

Atributos Valores Descrio
Tag String Uma string contendo o valor da tag do
controle de janela.
Text String O texto associado a um controle de janela
TextCase Enumerated
(case)
Uma varivel enumerada Case! Denotando a
altura dos caracteres em um campo texto.
TextColor Long Um inteiro longo indicando a cor do texto em
um campo.
TextSize Integer Um inteiro indicando o tamanho do texto em
um campo texto.
ThirdState Boolean Um valor TRUE ou FALSE indicando se uma
caixa de verificao encontra-se ou no no
seu terceiro estado.
ThreeState Boolean Um valor TRUE ou FALSE indicando se uma
caixa de verificao tem trs estados, (TRUE)
ou somente dois estados (FALSE).
Title String Uma string contendo o ttulo da DataWindow
ou do grfico.
TitleBar Boolean Um valor TRUE ou FALSE indicando se a
DataWindow tem ou no uma barra de titulo.
TitleDispAttr Objeto gr
DispAttr
Um objeto DispAttr definindo o estilo de um
titulo em um grfico.
Underline Boolean Um valor TRUE ou FALSE especificando se o
texto em um controle deve ou no estar
sublinhado.
UnitsPerColu
mn
Integer Um recurso que indica o nmero de unidades
do PowerBuilder na rolagem efetuada pelo
usurio ao dar um clique no lado esquerdo ou
direito da barra de rolagem.
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

313
Atributos de Controles de Janelas

Atributos Valores Descrio
UnitsPerLine Integer Um recurso que indica o nmero de
unidades do PowerBuilder na rolagem
efetuada pelo usurio ao dar um clique na
parte superior ou inferior da barra de
rolagem.
UseCodeTable Boolean Um valor TRUE ou FALSE indicando se
uma mscara Edit ir utilizar tabelas de
cdigos. Esse atributo til em controles
de rotao de campos no-numricos.
Values Objeto gr Axis Um recurso que estabelece os atributos
dos valores em um controle de grfico.
Visible Boolean Um valor TRUE ou FALSE indicando se
controle de janela esta ou no visvel.
VscrollBar Boolean Um valor TRUE ou FALSE indicando se
controle de janela possui ou no uma
barra de rolagem vertical.
VtextAlign Enumerated Um tipo de dados enumerado
especificando o alinhamento do texto em
um controle PictureButton. Os valores
vlidos so: Bottom, MultiLine, Top! E
Vcenter! .
Weight Integer Um inteiro contendo o peso (espessura
das linhas) do texto. O peso medido em
pontos. O PowerBuilder sugere o valor
400 para o texto normal ou 700 para
o texto em negrito.
Width Integer Um nmero indicando a largura do
controle de janela.
X Integer A coordenada X do controle de janela em
relao janela.
Y Integer A coordenada Y do controle de janela em
relao janela.


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

314
Eventos de Controles de DataWindows

Eventos Descrio
Clicked O usurio deu um clique sobre um controle de janela.
Constructor A janela foi aberta e o controle da janela esta sendo
construdo.
DBError Ocorreu um erro do banco de dados no controle de
dataWindow.
Destructor A janela superior esta sendo fechada e o controle esta se
fechando sendo destrudo com ela.
DoubleClicked O usurio de um clique duplo sobre o controle.
DragDrop O usurio soltou um objeto sobre o controle de janela.
DragEnter Um objeto arrastado entrou na rea do controle de
janela.
DragLeave Um objeto arrastado esta deixando a rea do controle de
janela.
DragWithin O usurio esta arrastando um objeto no interior da rea
do controle de janela.
EditChanged O usurio esta digitando em um controle de edio.
GetFocus O controle de janela recebeu o foco.
ItemChanged Um item mudou de valor no controle DataWindow.
ItemError Um item no passou em seu teste de validao.
ItemFocusChanged O foco no interior do controle DataWindow foi modificado.
LineLeft Uma HscrollBar acabou de se deslocar uma linha para a
esquerda.
LineRight Uma HscrollBar acabou de ser deslocar uma linha para a
direita.
LineUp Uma VscrollBar acabou de se deslocar uma linha para
cima.
Line Dow Uma VscrollBar acabou de se deslocar uma linha para
baixo.
PowerBuilder 9.0 Bsico Guia de Referncia: Atributos e Eventos

315
Eventos de Controles de DataWindows
Eventos Descrio
LoseFocus O controle de janela esta a ponto de perder o foco.
Modifed Um controle de edio em vrias linhas de edio em
uma nica linha, caixa de listagem ou caixa de listagem
DropDowm perdeu o foco e foi alterado (modificado).
Other Ocorreu um evento do Windows 3x que no especifico
do PowerBuilder .
PageLeft Uma HscrollBar acabou de se deslocar uma pgina para
a esquerda.
PageRight Uma HscrollBar acabou de se deslocar uma pgina para
a direita.
PageUp Uma VScrollBar acabou de se deslocar uma pgina para
cima.
PageDown Uma VScrollBar acabou de se deslocar uma pgina para
baixo.
PrintEnd O controle de DataWindow terminou sua impresso.
PrintPage Uma nova pgina esta a ponto de iniciar sua impresso.
PrintStart O controle de DataWindow esta a ponto de ser impresso.
RbuttonDown O boto direito do mouse acionado sobre o controle de
janela.
Resize O controle de DataWindow esta sendo redimensionado.
RetrieveEnd Uma recuperao acabou de ser completada.
RetrieveRow Uma linha foi recuperada.
RetrieveStart Uma recuperao esta a ponto de se iniciar.
RowFocusChanged Uma nova linha recebeu o foco.
ScrollHorizontal O controle de DataWindow esta sendo rolado no sentido
horizontal.
ScrollVertical O controle de DataWindow esta sendo rolado no sentido
vertical.
SelectionChanged A seleo foi alterada em uma caixa de listagem ou caixa
de listagem DropDown.
SQLPreview Acabou de ser emitida uma chamada a funo Retrieve,
UpDate, ou ReselectRow, mais a funo ainda no foi
executada.
UpDateEnd Uma atualizao acaba de ser completada.
UpdateStart Uma atualizao esta a ponto de se iniciar.

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados




Guia de Referncia

Dados Enumerados
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

316
Tipos de dados Enumerados

Categorias Valores Comentrios
ArrangeOpen Casacaded!
Layered!
Original!
Como as folhas MDI esto
organizadas quando so abertas.
ArrangeType Cascade!
Icons!
Layer!
Tile!
TileHorizontal!
Como as folhas MDI abertas so
organizadas.
Border Box!
Lowered!
BoBorder!
Raised!
ResizeBorder!
ShadowBorder!
Underline!
O tipo da borda.
BorderStyle StyleBox!
StyleLowered!
StyleRaised!
StyleShadowBox!
O estilo da borda.
Button OK!
OKCancel!
RetryCancel!
YesNo!
YesNoCancel!
Message Box Button.
ConvertType XpixelsToUnits!
XunitsToPixels!
YpixelsToUnits!
YunitsToPixels!
De que maneira voc quer
converter unidades ou pixels nas
funes PixelsToUnit e
UnitsToPixels.
DragModes Begin!
Cancel!
End!
O modo Drag para um objeto.
DwBuffer Delete!
Fitter!
Primary!
O buffer da DataWindow.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

317
Tipos de dados Enumerados
Categorias Valores Comentrios
Dwltemstatus DataModifed!
New!
NewModifed!
NotModifed!
O status de um item DataWindow.
FileAcess Read!
Write!
O acesso permitido ao arquivo.
FileLock LockReady!
LockReadyWrite!
LockWrite!
Shared!
O bloqueio do arquivo para outro
usurio.
FileMode LineModel!
StreamModel!
O modo File para leitura e
gravao.
FillPatern Bdiagonal!
Diamond!
FDiagonal!
Horizontal!
Solid!
Square!
Vertical!
O padro de preenchimento usado
para preencher um desenho ou um
objeto grfico.
FontCharSet Ans!
ChineseBigS!
DefaultCharSet!
HangEu!Shiftjis!
OEM!
Symbol!
O conjunto de caracteres da fonte.
FontFamily AnyFont!
Decorative!
Modern!
Roman!
Script!
Swiss!
A famlia das fontes.
FontPitch Default!
Fixed!
Variable!
O pitch da fonte.
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

318
Tipos de dados Enumerados
Categorias Valores Comentrios
GrColorType Background!
Foreground!
LineColor!
Shade!
Um tipo de cor em um grfico.
GrDataType Xvalue!
Yvalue!
O valor de um ponto de dados em
um grfico.
GrGraphType Area3d!
AreaGraph!
Bar3dGraph!
Bar3dObjGraph!
BarGraph!
BarStack3dObjGraph
!
BarStackGraph!
Col3dGraph!
Col3dObjGraph!
ColGraph!
Colstack3dObjGraph!
ColStackGraph!
Line3d!
LineGraph!
Pie3d!
PieGrapha!
ScatterGraph!

O tipo de Grfico.
GrLegend Type AtBottom!
AtLeft!
AtRight!
AtTop!
NoLegend!
A localizao da legenda do
grfico.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

319
Tipos de dados Enumerados
Categorias Valores Comentrios
GrObjectType TypeCategory!
TypeCategoryAxis!
TypeCategoryLabel!
TypeData!
TypeGraph!
TypeLegend!
TypeSeries!
TypeSeriesAxis!
TypeSeriesLabel!
TypeTitle!
TypeValueAxis!
TypeValueLabel!
O tipo de objeto do grfico.
GrResetType All!
Category!
Data!
Series!
Os dados que voc deseja
reinicializar em um grfico.
GrScaleType Linear!
Log10!
LogE!
O tipo de escala em um grfico.
GrScaleValue Actual!
Cumulative!
CumulativePercent!
Percentage!
O valor da escala em um grfico.
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

320
Tipos de dados Enumerados
Categorias Valores Comentrios
GrSimbolType NoSymbol!
SymbolHollowBox!
SymbolHollowCircle!
SymbolHolloWDiamo
nd!
SymbolHollowDownA
rrow!
SymbolHollowUpArro
w!
SymbolPlus!
SymbolSolidBox!
SymbolSolidCircle!
SymbolSolidDiamond
!
SymbolSolidDownArr
ow!
SybolSolidArrow!
SymbolStar!
SymbolX!
O smbolo que voc deseja usar
para uma srie em um grfico.
GrTicType Inside!
NoTic!
Outside!
Straddle!
O tipo de marcas de escala de um
grfico.
HelpCommand Index!
Keyword!
Topic!
O tipo de comando da funo
Showl Help.
Icon Exclamation!
Informaes!
None!
Question!
StopSign!
O cone de Message Box (Caixa de
Mensagem).
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

321
Tipos de dados Enumerados
Categorias Valores Comentrios
KeyCode





































Key0!
Key1!
Key2!
Key3!
Key4!
Key5!
Key6!
Key7!
Key9!
KeyA!
KeyAdd!
KeyAlt!
KeyB!
KeyBack!
KeyBackQuote!
KeyBackSlash!
KeyC!
KeyCapsLook!
KeyComma!
KeyControl!
KeyD!
KeyDash!
Keydecimal!

KeyDelete!
KeyDivide!numrico!
KeyDowmArrow!
KeyE!
KeyEnd!
KeyEnter!
KeyEqual!
KeyEscape!
KeyF1!
KeyF10!
KeyF11!
KeyF12!
KeyF2!
KeyF3!
O argumento do cdigo de
tecla(KeyCode) na
funo(KeyDowm).







Tecla + no teclado numrico.


TeclaBackspace
Teclas e
Teclas(e)


Teclas <


Teclas e
Tecla . no teclado numrico
quando NumLock esta ativa

No teclado




Teclas = e +
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

322
Tipos de dados Enumerados
Categorias Valores Comentrios
KeyCode KeyF4!
KeyF5!
KeyF6!
KeyF7!
KeyF8!
KeyF9!
Key|G!
KeyH!
KeyHome!
KeyI!
KeyInsert!
KeyJ!
KeyK!
KeyL!
KeyLeftArrow!
KeyLeftBracket!
KeyM!
KeyMultiply!
KeyN!
KeyNumLock!
KeyNumPad0!
KeyNumPad1!
KeyNumPad2!
KeyNumPad3!
KeyNumPad4!
KeyNumPad5!
KeyNumPad6!
KeyNumPad7!
KeyNumPad8!
KeyNumPad9!
KeyO!
KeyP!
KeyPageDowm!
KeyPageUp!
KeyPause!
KeyPeriod!


Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

323
Tipos de dados Enumerados
Categorias Valores Comentrios
KeyCode

KeyPrintscreen!
KeyQ!
KeyQuote!
KeyR!
KeyRightArrow!
KeyRightBracket!
KeyS
KeyscrollLock!
KeySemiColon!
KeyShift!
KeySlash!
KeySpaceBar!
KeySubtract!
KeyT!
KeyTab!
KeyU!
KeyUpArrow!
KeyV!
KeyW!
KeyX!
KeyY!
KeyZ!






















PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

324
Tipos de dados Enumerados
Categorias Valores Comentrios
LibDirType DirAll!
DirApplication!
DirdataWindow!
DirFunctin!
DirMenu!
DirStructure!
DirUserObject!
DirWindow!
O tipo dos objetos a serem
includos na lista de diretrios.
LibExportType ExportAplicattion!
ExportDataWindow!
ExportFunction!
ExportMenu!
ExportStructure!
ExportUserObjet!
ExportWindow!
O tipo de objeto a ser exportado.
LibImportType ImpotDataWindow O tipo de objeto a ser importado.
LineStyle Continuous!
Dash!
DashDot!
DashDotDot!
Dot!
Transparent!
O estilo da linha.
mailFileType mailAttach!
mailOLE!
mailOLEStatic!
Tipos de arquivos de correio.
mailLogonOption mailDownLoad!
mailNewSession!
mailNewSessionWith
DowmLoad!
mailReadOption!
mailBodyAsFile!
mailEntireMessage!
mailEnvelopeOnly!
mailSuppressAttach!
Opes de logon de correio.




Opes de leitura de correio.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

325
Tipos de dados Enumerados
Categorias Valores Comentrios
mailRecipeientType mailBCC!
mailCC!
mailOriginator!
mailTo!
Tipos de destinatrios de correio.
mailReturnCode mailReturnAccessDe
nied!
mailReturnAttachme
nt!
NotFound!
OpenFailmailReturnA
ttachmentWrite!
Failure!
mailReturnDiskFull!
mailReturnFailure!
mailReturnInsufficien
tMemory!
mailReturnLoginFailu
re!
mailReturnMessageln
Use!
mailReturnNoMessag
e!
mailReturnSucess!
mailReturnTextTooLa
rge!
mailReturnTooManyF
iles!
mailReturnTooManyR
ecipients!
mailReturnTooManyS
essions!
mailReturnUserAbort
!
Cdigo de retorno das funes de
correio.
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

326
Tipos de dados Enumerados
Categorias Valores Comentrios
MaskdataType DataMask!
DataTimeMask!
DecimalMask!
NumericMask!
StringMask!
TimeMask!
O tipo de dados de EditMask.
MajorTic Inside!
NoTic!
Outside
Stradde!
O tipo das marcas de escalas
principais na escala do grfico.
MinorTic Inside!
Notic!
Outside!
Stadde!
O tipo de das marcas da escala
secundrias na escala de grficos.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

327
Tipos de dados Enumerados
Categorias Valores Comentrios
Object Checkbox!
Commandbutton!
DataWindow!
Dropdownlistbox!
Editmask!
Graph!
Groupbox!
Hscrolibaqr!
Line!
Listbox!
Mdiclient!
Menu!
Multilineedit!
Nonvisualobject!
Oval!
Picture!
Picturebutton!
Radiobutton!
Rectangle!
Roundectangle!
Singlelineedit!
Stalictext!
Userobject!
Vscrollbar!
Window!
O tipo do objeto.
ParmType TypeBoolean!
TypeDate!
TypeDataTime!
TypeDecimal!
TypeDouble!
TypeInterger!
TypeLong!
TypeReal!
TypeString!
TypeTime!
TypeUlnt!
TypeULong!
Unknown!.
O tipo de dados do parmetro.
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

328
Tipos de dados Enumerados
Categorias Valores Comentrios
Pointer Arrow!
Beam!
Cross!
HourGlass!
SizeNESW!
SizeNS!
SizeNWSE!
SizeWE!
UpArrow!
A forma do ponteiro
correspondente a funo
SetPointer
RowFocuslnd FocusRect!
Hand!
Off!
O mtodo que ser usado para
indicar que uma determinada linha
de uma DataWindow detm o
foco.
SaveAsType Csv!
ClipBoard!
DBase2!
DBase3!
Dif!
Excel!
SQLInsert!
Sylk!
Text!
Wk1!
Wks!
O tipo de arquivo a ser criado
quando forem gravadas as linhas
de uma DataWindow.
SeekType FromBeginning!
FromCurrent!
FromEnd!
A posio na qual voc quer iniciar
uma busca em FileSeek.
SetPosType Behind!
NoTopMost!
TopBottom!
TopMost!
ToTop!
Define a ordem de exibio em
controle de janela.
TextCase AnyCase!
Lower!
Upper!
A altura dos caracteres do texto.
Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

329
Tipos de dados Enumerados
Categorias Valores Comentrios
ToolbarAlignment! AlignAtBottom!
AlignAtLeft!
AlignAtRight!
AlignAtTop!
Roating!
O alinhamento da barra de
ferramentas.
TrigEvent Activate!
Cliked!
Close!
CloseQuery!
DBError!
Deactivate!
DoubleCliked!
DragDrop!
DragEnter!
DragLeave!
DragWithin!
EditChanged!
GetFocus!
Hide!
HotLinkAlarm!
Idle!
ItemChanged!
ItemError!
ItemFocusChanged!
Key!
LineDow!
LineLeft!
LineRight!
LineUp!
LoseFocus!
Modifed!
MouseDown!
MouseMove!
MouseUp!
Moved!
Open!
Other!
PageDown!
O tipo de evento a ser disparado
pela funo TriggerEvent.
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

330
Tipos de dados Enumerados
Categorias Valores Comentrios
PageLeft!
PageRight!
PageUp!
PrintEnd!
Printpage!
PrintStart!
RemoteExec!
RemoteHotLinkStart!
RemotHotLinkStop!
Remoterequest!
Remotesend!
Resize!
RetrieveEnd!
RetrieveRow!
Retrievestart!
RowFocuschanged!
ScrollHorizontal!
ScrollVertical!
Selected!
SekectionChanged!
Show!
SQLPrewiem!
SystemError!
Timer!
UpDateEnd!
UpDatestart!

Adquirido por : Fabrcio Moreira da Silva
PowerBuilder 9.0 Bsico Guia de Referncia : Dados Enumerados

331
Tipos de dados Enumerados
Categorias Valores Comentrios
VtextAlign Bottom!
MultiLine!
Top!
VCEnter!
O alinhamento do texto.
UserObjects! CustomVisual!
ExternaVisual!
O tipo de objeto do usurio.
WindowState Maximized!
Minimized!
Normal!
O estado no qual a janela ou o
programa estar em execuo.
WindowType Child!
Main!
MD!
MDHelp!
Popud!
Response!
Tipo da janela.
WriteMode Aqppend!
Replace!
O modo correspondente a funo
FileOpen.


Adquirido por : Fabrcio Moreira da Silva

Você também pode gostar