PowerBuilder 9.0 Básico

Transcrição

PowerBuilder 9.0 Básico
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
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 paciência; 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. Côrtes.
“Morder o fruto amargo e não cuspir
mas avisar aos outros quanto é amargo,
cumprir o trato injusto e não falhar
mas avisar aos outros quanto é injusto,
sofrer o esquema falso e não ceder
mas avisar aos outros quanto é falso;
dizer também que são coisas mutáveis...
E quando em muitos a noção pulsar
— do amargo e injusto e falso por mudar —
então 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 alguém de sucesso"
Albert Einstein !
Celso S. Côrtes é brasileiro, carioca de Vila Isabel e atualmente reside na cidade de
Niterói-RJ, onde, em todos os sentidos, se apaixonou.
... Niterói! Niterói! como és formosa!
Eu me glorio de dever-te o braço!
Montanhas, várzeas, lagos, mares, ilhas,
Prolífica Natura, céu ridente,
Léguas e léguas de prodígios tantos....
poema de Gonçalves de Magalhães
Foto : Museu de Arte Contemporânea (MAC) – Rio de Janeiro – Niterói - Projeto de : Oscar Niemeyer – 1994
1 Poema extraído do livro "Geir Campos - Antologia Poética", Léo Christiano Editorial Ltda. - Rio de Janeiro, 2003, pág. 89,
organizada por Israel Pedrosa.
2 Pensamentos de Albert Einstein
PowerBuilder 9.0 Básico
PowerBuilder 9.0 Básico
Celso S. Côrtes.
Sybase PowerBuilder é marca registrada da Sybase, Inc. Copyright ©
Todos os direitos reservados.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
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 – [email protected]
Projeto Gráfico e Composição:
Celso S. Côrtes
Revisão do texto:
Eduardo Olimpio Mota Fialho
Endereço eletrônico :
http://www.pb9basico.net
Email :
[email protected]
Autor :
Celso S. Côrtes – Analista de Sistemas Sênior – IBGE/DI/COADS – Supervisor
de
Pesquisas,
Sistema
Pesquisas
Continuas
Agropecuárias
–
www.pca.ibge.gov.br
Usuário do Sybase PowerBuilder
PB4,PB5,PB6,PB7,PB8 e PB9.
Enterprise
desde
1993,
versões
Desenvolvedor Java!,JavaScript!,VBScript!,ASP!,PHP!
Criador e mantenedor do sítio na internet sobre Sybase PowerBuilder
www.celso.cortes.nom.br, desde 1996.
Email: [email protected]
PowerBuilder 9.0 Básico
Agradecimentos
Pessoas inovadoras que chamam a si a missão de desbravar novas tecnologias
enfrentam sempre dois grandes desafios.
O primeiro é intrínseco ao pioneirismo. Elas têm que acreditar em seus
propósitos e correr os riscos e as incertezas que acompanham todas as inovações.
O segundo desafio está em disseminar, nas suas áreas de atuação, uma nova
cultura tecnológica que venha a se constituir no ambiente propício para a evolução
profissional.
Em conseqüência, cria-se um processo sinérgico onde há um crescimento
cultural tanto das Empresas como das Comunidades com as quais elas interagem.
Foi dentro deste espírito que surgiu a iniciativa de oferecer aos
desenvolvedores brasileiros um livro em português para iniciantes sobre a ferramenta
de desenvolvimento para MS Windows®, o Sybase PowerBuilder 9.0.
Com esta edição, mais que simplesmente preencher uma lacuna existente na
bibliografia em português de informática, está sendo dado um forte impulso para que
se evolua no esforço comum de criar outras publicações sobre esta ótima ferramenta
de desenvolvimento.
Agradeço ao meu amigo, Maycon J. Oleczinski que muito tem me auxiliado
tanto neste trabalho, quanto na hospedagem do sítio na internet, dirigido à
comunidade de PowerBuilder no Brasil, www.celso.cortes.nom.br.
Agradeço
também
a
todos
os
participantes
do
nosso
fórum
http://groups.yahoo.com/group/powerbuilder-br/ que estão sempre a disposição com
valorosos textos.
Aos meus filhos, Daniel e Thiago, pela paciência 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 Contínuas Agropecuárias – IBGE/DI/COADS) pelo companheirismo, incentivo
e profissionalismo que compartilhamos nestes onze anos de convívio e trabalho.
E, em especial, a Eduardo Olimpio Mota Fialho, Analista de Sistemas (Sistema
Pesquisas Contínuas Agropecuárias - IBGE/DI/COADS), Estatístico, Mestre em Estudos
Populacionais e Pesquisas Sociais, um grande amigo, pelo interminável incentivo e
revisão desta obra.
Celso S. Côrtes.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Apresentação
Sobre o livro
Este livro tem o objetivo de ajudar os iniciantes desta ótima ferramenta de
desenvolvimento o “PowerBuilder 9.0” em português.
O roteiro de desenvolvimento para essa ajuda se dará de modo aplicado.
Alguns conceitos básicos serão explicados para em seguida desenvolvermos
uma aplicação modelo, utilizando os módulos básicos do PowerBuilder,
visando uma maior fixação dos seus conceitos.
Sobre o Sybase PowerBuilder 9.0
O PowerBuilder 9.0 é uma ferramenta de desenvolvimento padrão MS
Windows !, orientada a objetos, que permite desenvolver aplicações cliente,
cliente/ servidor e para internet.
Em versões anteriores do PowerBuilder você poderia trabalhar só nos objetos
da sua aplicação . A partir do PowerBuilder 8.0 foi introduzido a WorkSpace
no qual você pode trabalhar em várias aplicações ou objetos.
Para trabalhar com objetos, você tem que ter uma WorkSpace aberta. Você
só pode ter uma única WorkSpace aberta, mas, você incluir vários objetos.
Há dois tipos de objetos: PowerScript cliente e Objetos de Rede.
Um objeto de PowerScript pode ser qualquer aplicação que você trabalha,
como uma aplicação cliente. Um objeto de Rede pode conter todos os
elementos que você precisa para construir um sitio
(HTML) , códigos,
imagens, componentes, bem como definições para conexões de banco de
dados.
Para trabalhos corporativos, sem dúvida, será um grande ganho no
desenvolvimento, pois se poderão compartilhar códigos, objetos sem ter que
incluí-los a sua aplicação. Além disso, o workspace possibilita a inclusão de
vários diretórios que podem ser abertos e linkados à sua aplicação.
PowerBuilder 9.0 Básico
Sumário
Sumário
Capítulo 1
Barras de Ferramentas
Conhecendo as suas funções
Criando a WORKSPACE
Criando uma aplicação
1
1
4
5
Capítulo 2
Criando uma WINDOW (janela)
Configurando as barras de menu
Template “Properties”
Salvando a WINDOW
6
8
9
15
Capítulo 3
Criando um menu
Escrevendo em PowerScript
Como definir tipos de janelas
Uso dos tipos de janela
Tipos de controle
16
19
22
23
24
Capítulo 4
Implementação da Herança de Janelas
29
Capítulo 5
Projetando o menu
31
i
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Sumário
Sumário
Capítulo 6
A Linguagem PowerScript
Eventos
Ambiente de Script
A Linguagem PowerScript
Fundamentos da Linguagem PowerScript
Variáveis
Tipos de Dados
Escopo de Variáveis
Encapsulamento
Objetos e Controle
Execução de uma função por meio da notação de ponto
Estruturas
Arrays
Arrays multidimensionais
Arrays variáveis
Dados de objetos
Operadores
Operadores Aritméticos
Operadores binários
Operadores unários
Operadores de combinação
Operador de string
Operadores lógicos
Operadores relacionais
Operadores de conjunção
Procedência e Parênteses
Comandos do PowerBuilder
O Uso da estrutura IF
Estrutura Choose Case
Estrutura de iteração(Loops)
Estrutura de Do Loop
Estrutura For… Next
36
37
38
39
41
41
42
44
45
46
46
48
50
51
51
52
52
52
53
53
54
54
54
55
55
56
56
56
57
58
58
59
ii
PowerBuilder 9.0 Básico
Sumário
Sumário
Capítulo 7
Transações de Bancos de Dados
Definindo uma transação
Montando a transação em PowerScript
O uso do SQL no PowerBuilder
60
61
61
63
Capítulo 8
DataWindow
Objeto DataWindow
Fonte de dados
Interface inteligente
Interface com o usuário
Como criar um objeto DataWindow
Fontes de dados
SQL Select
Query
Stored Procedure
External
Montando uma DataWindow com SQL Select
Template de SQL
Argumentos
Personalizando sua DataWindow
Composite
Crosstab (planilha)
FreeForm (Formulário livre)
Graph (Gráfico)
Grid (Grade)
Group(Grupo)
Label (Etiquetas)
N-up (Múltiplas linhas)
Olé 2.0
RichText
Tabular
Cores e Bodas
67
67
68
68
68
69
70
71
71
71
71
72
74
75
77
78
79
80
81
82
83
84
84
85
85
86
87
iii
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Sumário
Sumário
Capítulo 9
Recuperação de dados a partir de uma DataWindow
Funções para o controle DataWindow
Montando um Objeto DataWindow
Aperfeiçoando a visualização da DataWindow
Vinculando duas DataWindow
Vinculando objeto DataWindow a um controle DataWindow
Incluindo controle DataWindow a Window (janela)
Incluindo parâmetros de atualização
Rotina de inclusão
Rotina de alteração
Rotina de Exclusão
88
90
105
110
114
123
123
130
131
137
144
Capítulo 10
DataWindow : Técnicas avançadas
Buffers Internos
Detectar a validação
Detectar o Tipo de dado
Detectar regras de validação
Detectar mudanças no item
Usando Filtros
Classificando
Cláusula Where para Update e Delete
Modify e Describe
Função Evaluate( )
Propriedade Object
Parametrizando com a cláusula DATA
147
148
148
148
148
150
151
153
155
160
162
165
Capítulo 11
PipeLine de dados
167
Capítulo 12
Criando Relatórios
175
iv
PowerBuilder 9.0 Básico
Sumário
Sumário
Capítulo 13
Gráficos
197
Capítulo 14
XML
Conceito
Exportando DataWindow (DataWindow Export)
Importando um padrão XML para a DataWindow
213
228
239
Capítulo 15
Preparando sua aplicação final
Criando o objeto “Project”
Criando o arquivo executável
249
249
254
Capítulo 16
Criando uma aplicação Web
Criando um sítio WEB com PowerDynamo
256
256
Capítulo 17
Criando a primeira página Web
Utilizando 4GL Web/JSP Page wizard
269
270
Guia de Referência
Nomenclaturas
Atributos e Eventos
Dados Enumerados
293
296
316
v
Adquirido por : Fabrício Moreira da Silva
Capítulo 1
Barras de Ferramentas
Conhecendo as suas funções
Criando a WORKSPACE
Criando uma aplicação
PowerBuilder 9.0 Básico
Capítulo 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 aplicação.
Em qualquer local da PowerBar1, clicando-se com o botão esquerdo do mouse
pode-se customizar suas funções, incluindo ou inibindo seus módulos.
A barra acima é um padrão que aparecerá na primeira vez que você iniciar o
PowerBuilder e caso seja customizada as alterações serão mantidas.
Conhecendo as suas funções
SEARCH - Ativa o tópico AJUDA no modo “SEARCH” (pesquisa)
HELP - Ativa o tópico AJUDA no modo padrão.
NEW - Ativa o template de habilitação 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 aplicação.
SYTEM TREE – Mostra ou esconde a janela de descrição do seu
projeto.
OUTPUT – Mostra ou esconde a janela de informações de saída do seu
projeto.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 1
2
Conhecendo as suas funções
NEXT ERROR/MESSAGE – Exibe a próxima mensagem de erro da
aplicação (se existir).
PREVIOU ERROR/MESSAGE – Exibe a mensagem de erro anterior
(se existir).
SYSTEM OPTION – Ativa o template de configuração pessoal da sua
máscara de trabalho.
TO-DO-LIST – Monta uma lista de pendências
BROWSER – Ativa o template de visão dos objetos da WorkSpace,
com suas propriedades.
CLIP WINDOW – Abre o template “CLIP”. Serve como um bloco de
notas para sua aplicação possibilitando copiar e colar.
LIBRARY – Abre o template tipo “EXPLORER” para seleção de
aplicação ou objetos.
DB PROFILE – Abre o template que possibilita configurar o tipo de
conexão e a base de dados à qual seu projeto estará associado.
EASERVER PROFILE – Abre o template que possibilita configurar o
tipo de conexão com o servidor de aplicação EASERVER.
DATA BASE – Abre o template de consulta, edição e alteração das
bases de dados associadas ao DB PROFILE.
PowerBuilder 9.0 Básico
Capítulo 1
3
Conhecendo as suas funções
FILE EDITOR – Abre o template de edição de arquivo. Com esse
editor é possível criar qualquer função ou objetos para serem utilizados pelo
POWERBUILDER.
DEBUG – Abre o template para auxilio a depuração de sua aplicação.
RUN – Ao clicar neste botão o POWERBUILDER irá
aplicação em modo interpretado.
executar sua
SELECT and RUN – Executa a aplicação selecionada, em modo
interpretado.
EXIT – Sair do POWERBUILDER.
Conhecendo as funções básicas da POWERBAR1 podemos iniciar a nossa
primeira aplicação. Desse modo iremos, passo a passo conhecendo o
PowerBuilder 9.0.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 1
4
Criando a WORKSPACE
Clique no botão
NEW e selecione WORKSPACE. Clique em “OK”.
Selecione o diretório onde você ira salvar a WorkSpace e dê um nome para
ela (para acompanhar corretamente a aplicação neste livro atribua o nome
exemplo_01 e clique em “salvar”).
Se tudo deu certo no template Sytem Tree aparecerá :
PowerBuilder 9.0 Básico
Capítulo 1
5
Criando uma aplicação.
Clique em
clique em “OK”.
NEW e selecione “Target” em seguida “Application” e
Aparecerá a tela de definição da sua aplicação.
Em “Application Name” digite : exemplo1.
Em “Library” selecione o diretório onde você salvou a WorkSpace.
Em “Target” repita o procedimento anterior.
Clique em “Finish”
OBS: Não necessariamente você precisa atribuir os mesmos diretórios na
criação de uma aplicação. Neste caso fizemos isso, para facilitar o exemplo.
Se tudo deu certo você visualizará :
Agora que estamos com a WorkSpace e a Aplicação criada. Vamos criar nosso
primeiro objeto.
Adquirido por : Fabrício Moreira da Silva
Capítulo 2
Criando uma WINDOW (janela)
Configurando as barras de menu
Template “Properties”
Salvando a WINDOW (janela)
PowerBuilder 9.0 Básico
Capítulo 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 três 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 descrições: “Layout”, “Open”, “Event List”, “Function List” e “Declare
Instance Variables”.
Open : Abre o template dos eventos padrão do objeto assim como o quadro
de funções e de declaração de variáveis e funções compartilhadas.
Event List : Como o próprio nome diz, lista os eventos padrão da window.
Function List :Abre o template das funções padrão da window.
Declare Instance Variables : Abre o template para as declarações das
variáveis e funções compartilhadas que podem ser de instância ou global.
Instancia – Pertence ao objeto e só estará disponível se o objeto estiver
ATIVO.
Global – Pertence à APLICAÇÃO
Adquirido por : Fabrício Moreira da Silva
Capítulo 2
PowerBuilder 9.0 Básico
7
CRIANDO UMA WINDOW (JANELA)
Para uma visualização mais limpa, clique em
template de OUTPUT e clique em
template de trabalho.
OUTPUT para inibir o
CLIP WINDOW para inibir o
Você agora tem uma visão mais limpa da sua WINDOW(janela).
PowerBuilder 9.0 Básico
Capítulo 2
8
CRIANDO UMA WINDOW (JANELA)
Configurando as barras de menu
Coloque o mouse sobre uma barra de menu e clique no botão esquerdo. Um
menu-popup aparecerá conforme a figura abaixo:
A PowerBar1 é a barra de trabalho do POWERBUIDER. As barras
PainterBarX são as barras de trabalho do objeto que você selecionou para
trabalhar - neste caso, o objeto WINDOW. Clique em cada opção do menupopup para conhecer as barras. Você pode também definir o seu
posicionamento, colocando o mouse sobre a barra e clicando nas opções de
posicionamento: “Left”, “Top”, “Right”, “Botton” ou “Floating”.
O PowerBuilder possibilita personalizar a sua barra, incluindo ou excluindo
itens que serão exibidos. Posicione o mouse na barra, clique no botão
esquerdo, selecione “Customize” e utilize o processo de “arrastar” e “soltar”.
Adquirido por : Fabrício Moreira da Silva
Capítulo 2
PowerBuilder 9.0 Básico
9
CRIANDO UMA WINDOW (JANELA)
Template “Properties”
Desvendando as “Propriedades” da janela que acabamos de criar.
Title : O título que aparecerá no topo da janela que você está criando.
Tag : Uma descrição para a sua janela ou um alerta ao utilizá-la. Poderá
conter qualquer texto e poderá ser acessada em tempo de execução através,
por exemplo, da função 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 visível ou invisível ao
usuário.
Enable: Define se a sua janela estará ativa ou inativa para o usuário.
Titlebar: Define se a sua janela terá uma barra de titulo.
Controlmenu: Define se a sua janela terá os itens
direita da janela.
MaxBox: Define se a sua janela terá
no “controlmenu”.
MinBox : Define se a sua janela terá
no “controlmenu”.
na lateral
ClientEdge: Define se a sua janela apresentará um padrão de apresentação
chanfrado.
Capítulo 2
PowerBuilder 9.0 Básico
10
CRIANDO UMA WINDOW (JANELA)
Center : Centraliza automaticamente a sua janela.
Resizable: Ativa a permissão de redimensionar a janela em modo de
execusão.
WindowType: Define o tipo da janela.
Template “Properties”
WindowState: Define o modo de apresentação em modo de execução:
Normal
desenvolvimento.
–
do
mesmo
tamanho
que
foi
definido
no
Maximized – Será redimensionada para o tamanho máximo da
resolução do monitor em modo de execução.
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 padrão. Você pode associar qualquer imagem padrão .ICO. O
PowerBuilder disponibiliza vários ícones.
NOTA : Alguns itens não foram descritos, devido a sua complexidade, serão
vistos mais à frente.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 2
11
CRIANDO UMA WINDOW (JANELA)
Com a janela aberta, e agora que conhecemos algumas de suas propriedades,
vamos configurar-la. Assim começaremos nosso projeto, exemplo1.
No template properties, na “aba” GENERAL digite :
Tiltle
Tag
MenuName
: Exemplo 01
: Janela principal do exemplo 01
: Deixe em branco
Marque as caixas de verificação conforme as figuras abaixo:
Capítulo 2
PowerBuilder 9.0 Básico
12
CRIANDO UMA WINDOW(JANELA)
WindowType :
WindowState :
BackColor :
Icon:
Agora clique em
Selecione
Selecione
Selecione
Selecione
MAIN
Normal
Button Face
um ícone a sua escolha
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 não está no padrão. 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
vértice, verificar a mudança do ícone do mouse, pressionar o botão 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” não estiver visível
clique na barra de rolagem (parte superior direita do template “Properties”
nas “setinhas” ai ao lado) e a ela aparecerá.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 2
13
CRIANDO UMA WINDOW (JANELA)
Ao selecionar o item “Other” nos deparamos com novos itens a serem
configurados. Então vamos entendê-los para poder configurá-los com
segurança.
X – Posição inicial na
esquerda do seu monitor.
margem
Y – Posição inicial que sua janela
ocupará de cima para baixo.
OBS : As duas opções só terão
efeito se a opção “Center” estiver
desmarcada.
Width – Define a largura da sua
janela.
Height – Define a altura da sua
janela.
OBS: As opções só terão efeito, se a
opção “Normal” em “WindowState”
estiver selecionada.
Pointer – Define que o ponteiro do
mouse será apresentado quando o
mouse passear pela janela.
O padrão apresentado acima estabelece uma tomada completa do
monitor, padrão 800x600, resolução que aconselho utilizar, devido a
quantidade de informações que o PowerBuilder, assim como outros
Front-End, hoje disponibilizam.
Capítulo 2
PowerBuilder 9.0 Básico
14
CRIANDO UMA WINDOW(JANELA)
Já que começamos 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 padrão o
mesmo do MS Windows.
Clique agora na “aba” ToolBar.
Quando anexamos um menu em nossa
aplicação, podemos definir automaticamente o
seu posicionamento assim como deixá-lo visível,
ou não. Esse procedimento pode ser padrão,
configurando-se a propriedade Toolbar ou em
modo de execução.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 2
15
CRIANDO UMA WINDOW (JANELA)
Note que a maioria das propriedades de uma janela no PowerBuilder, já esta
configurada para a utilização do padrão MS Windows, o que facilita bastante,
você só terá que configurar itens a qual queira personalizar sua aplicação.
Nesta primeira vez, percorremos todos os passos para que pudéssemos
conhecer as características e propriedades de uma janela no POWERBUILDER,
da próxima vez, será muito mais tranqüilo.
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 aplicação
exemplo1.
Capítulo 3
Criando um menu
Escrevendo em PowerScript
Como definir tipos de janelas
Uso dos tipos de janela
Tipos de controle
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 3
16
CRIANDO UM MENU
A criação de objetos no PowerBuilder segue sempre o mesmo padrão. A
diferença recai na particularidade das propriedades de cada objeto que se
queira criar. A criação de um menu segue os passos da criação de uma
WINDOW (JANELA). Clique em
NEW, na “aba” “PB Object” e selecione
.
O Template de criação do MENU se abrirá:
Coloque o mouse sobre o texto “untitled0”, clique no botão direito e
selecione a opção do menu-popup “Insert Submenu Item”.
O Template de “Properties” se abrirá no lado esquerdo. Então deveremos
montar o nosso menu preenchendo os campos a seguir.
PowerBuilder 9.0 Básico
Capítulo 3
17
CRIANDO UM MENU
Clique em “untitled0” e com o botão esquerdo do mouse selecione a opção 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 fácil não?
No final dessa operação o seu quadro de menu ficará assim.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 3
18
CRIANDO UM MENU
Clique em
SAVE e preencha o quadro “Menu” com “m_menu01” e o
quadro “Comments” com “Menu 01 da aplicação”.
Clique em “OK”.
Seu menu já foi criado e salvo na aplicação 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 botão
de seleção
, 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 Básico
Capítulo 3
19
Escrevendo em PowerScript.
Até agora montamos nossa Janela e adicionamos um menu sem
funcionalidade. Agora, vamos escrever nosso primeiro código em
PowerScript, O PowerScript é a linguagem que o PowerBuilder aceita.
Assim poderemos escrever comandos para que o PowerBuilder os execute.
no template TREEVIEW, à esquerda,
Dê um duplo clique em
uma janela de “Script” aparecerá no centro.
A tradução desta tela é : A aplicação é exemplo1, este Script está direcionado
para o evento “open” e este evento não prevê código de retorno.
Agora digite conforme a tela abaixo:
Clique em
SAVE, depois em
Para fechar a aplicação clique em
RUN e veja-a sua aplicação executando.
.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 3
20
Escrevendo em PowerScript.
Para ficar mais fácil, e treinarmos um pouco mais vamos selecionar no
TREEVIEW à esquerda, com um duplo clique, “m_menu01”.
O objeto menu será editado. Clique com o botão esquerdo do mouse sobre o
item “m_menu01” e selecione “Insert Submenu Item”.
Na opção 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 opção “Sair” e então vamos escrever em “PowerScript” o
comando para sair da aplicação.
PowerBuilder 9.0 Básico
Capítulo 3
21
Escrevendo em PowerScript.
Digite : Close(w_001).
Salve a aplicação “Save” e clique em “Run” para executar
fechar a aplicação, clique em “Sair” do menu.
e testar. Para
Analisando :
Até aqui você criou uma aplicação 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 próximos itens, iremos :
!"
!"
!"
!"
Delinear e fazer a distinção entre diferentes tipos de janela;
Definir atributos de janela;
Adicionar e implementar controles de janela;
Implementar a herança 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 3
22
Como definir tipos de janelas
Janelas MDI (Multiple Document Interface).
Dificilmenta sua aplicação não apresentará uma tela principal. Normalmente
utilizamos o padrão 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 opção para exibição de
mensagens resumidas para os usuários do seu aplicativo, MDIhelp tem um
aspecto mais profissional do que as janelas independentes.
Janelas Popup (Instantânea)
As janelas instantâneas são abertas normalmente a partir do interior de outra
janela, Embora esta janela não possa ser encoberta por sua janela superior,
ela pode se estender além daqueles limites da janela superior. Quando a
janela superior é fechada ou minimizada a janela instantânea também é
fechada, ou minimizada.
Janelas Child (filhas)
As janelas filhas também são abertas a partir de outra janela, assim como as
janelas instantâneas elas possuem uma janela superior, mas com alguns
conceitos fundamentais.
!"
!"
!"
!"
Nunca podem existir fora da janela superior;
Nunca são consideradas ativas;
Quando maximizadas, só preenchem o espaço da janela superior;
Não possuem menus.
Janelas Response (Resposta)
As janelas de resposta são um tipo de janela instantânea. Elas diferem das
janelas pelo fato de serem modais à aplicação. Nenhuma outra janela na
aplicação pode ser acessada enquanto a janela de resposta não for fechada.
As janelas de resposta são muitas vezes chamadas de caixa de diálogos. Você
irá utilizar com freqüência essas janelas de resposta.
PowerBuilder 9.0 Básico
Capítulo 3
23
Uso dos tipos de janela
MDI e MDI com microhelp
Um MDI é uma janela(quadro) que contém outras janelas (folhas). Você só
tem um quadro por aplicação mas pode ter muitas folhas dentro do seu
quadro.
Em qualquer aplicação complexa e em geral qualquer aplicação simples do MS
WIndows você deve empregar um quadro MDI. A MDI microhelp funciona bem
como um meio fácil de transmitir uma mensagem para o usuário, sem
interromper a aplicação.
Inclusão de controles de janela
Um controle de janela é qualquer elemento que você insere em uma janela. A
quase totalidade da PainterBar de janelas contém diferentes controles que
você pode colocar na sua janela. Os controles são necessários para toda a
janela. Sem controles uma janela é simplesmente um retângulo sem qualquer
funcionalidade, que é exibido na sua tela.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 3
24
Tipos de controle
Existem diversos tipos diferentes de controles, tais como :
Botão de comandos
O botão de comando é um objeto que tem por finalidade executar processos
quando clicados. Quando são acionados aparecem como se fossem
empurrados enquanto o botão do mouse se encontra pressionado. Para inserir
Command
um botão de comando na sua janela, dê um clique no ícone
Button na barra PowerBar1 e depois clique no local em que deve ficar o botão
de comando no interior da janela que você esta definindo.
Botão de figura
O botão de figura é semelhante ao botão de comando, exceto pelo fato de
terem figuras sobre eles. Para colocar na sua janela um controle botão de
Picture Button e depois clique no local em que o
figura, clique no ícone
botão 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 estático
O Texto estático é uma frase ou descrição exibida na sua janela. Para inserir
Static Text, e depois
um controle de texto na sua janela clique no ícone
um clique no local em que deve aparecer o texto estático. Através 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 Básico
Capítulo 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 prático quando você está tentando unir sua
aplicação a um banco de dados, além disto, são fundamentais para o
desenvolvimento do PowerBuilder. A DataWindow também apresenta vários
recursos avançados de edição.
Edição em várias linhas
Para inserir na sua janela um controle de edição em várias linhas, clique sobre
MultLineEdit , e depois dê um clique no local em que o controle de
edição em várias linhas deve ficar posicionado na janela que você está
definindo.
Diferente dos controles de edição em única linha (veremos a seguir), que só
permitem a introdução ou visualização de uma linha de texto, o controle de
edição em várias linhas é um controle que permite a digitação pelo usuário de
diversas linhas de texto. A edição em várias linhas é usada com freqüência
nos comentários de forma livre. Pelo fato de incorporarem muitos recursos de
edição, as edições em várias linhas são indispensáveis durante a introdução
de grandes quantidades de dados em campos. Entretanto, os controles de
edição em várias linhas não são utilizados com freqüência pois é possível
conseguir maior funcionalidade através de uma coluna DataWindow.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 são controles que fazem referência a mapas de bits que serão
exibidos em uma janela. Da mesma forma que o texto estático, as figuras são
utilizadas apenas para a exibição de informações, a partir da versão 7.0, links
da web podem ser associados através dos Picture HiperLink control que tem
as mesmas propriedades da Picture e mais o HiperLink.
Edição em uma única linha
Para inserir na sua janela um controle de edição em uma única linha, clique
SingleLineEdite Control , e depois clique no local em que edição
sobre
em uma única linha deve ficar posicionado na janela que você esta definindo.
Os controles de edição em uma única linha são 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 edição em uma única linha não são usados
normalmente, porque a maior parte de entrada de dados é realizada em uma
DataWindow.
Máscara de Edição
Para inserir na sua janela um controle de edição em uma única linha, clique
EditMask Control , e depois dê um clique no local em que máscara
sobre
de edição deve ficar posicionada na janela que você esta definindo.
As máscaras de edição constituem um tipo de edição em uma única linha e
permitem você especificar a formatação necessária no momento da entrada.
Essa formatação é definida quando você acrescenta inicialmente o controle
máscara de edição por meio do template “Properties”, “Mask”.
PowerBuilder 9.0 Básico
Capítulo 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 edição em uma única linha e oferece
ao usuário diversas opções para a resposta correta. Podem ser usadas barras
de rolagem caso exista uma quantidade muito grande de opções, como ocorre
com muitos outros controles de janela que se relacionam com entrada de
dados.
Caixa de verificação
Para inserir na sua janela uma controle de caixa de verificação, clique sobre
CheckBox control , e depois clique no local em que a caixa de verificação
deve ficar posicionada na janela que você está definindo.
As caixas de verificação funcionam com questões do tipo sim-não que podem
ser ativadas ou desativadas. Internamente, uma tabela de códigos descreve o
valor de dados retornado quando uma caixa de verificação é ativada ou
desativada.
Botões de rádio e Caixas de grupo
Para inserir na sua janela uma controle de caixa de verificação clique sobre
RadioButton control , e depois clique no local em que o botão de rádio
deve ficar posicionado na janela que você esta definindo.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 botão de rádio é um tipo de caixa de verificação. Vários botões de rádio
são agrupados no interior de uma caixa de grupo. Esses botões de rádio,
assim como as caixas de verificação, podem estar ativos ou inativos. Somente
um botão de rádio no interior de uma caixa de grupo pode ser ativado de
cada vez.
Manipulação de controles e janelas
Muitas vezes você desejará manipular seus controles. Através de um clique
simples sobre um controle será exibido o template de propriedades na lateral
direita. Com um clique com o botão direito do mouse sobre o controle fará
surgir um menu de opções possíveis para essse controle.
Ordem e tabulação
Você pode utilizar o teclado em lugar do mouse. Para se deslocar entre os
controles, o usuário tem de pressionar a tecla “Tab” Entretanto a ordem de
tabulação padrão dos controles de janela é a ordem na qual esses controles
são acrescentados.
Para alterar a ordem de tabulação em uma janela, abra o menu
“Format” e escolha “Tab Order”. Essa opção exibe a ordem de tabulação de
cada controle, incrementada pelo valor de 10. Se quiser mudar a ordem de
tabulação simplesmente altere a numeração dos controles. Em seguida
escolha de novo ‘Format” e “Tab Order”, a fim de desativar a ordem de
tabulação.
Capítulo 4
Implementação da Herança de Janelas
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 4
29
Implementação da Herança de Janelas
A herança é o modo pelo qual usamos nossos protótipos no PowerBuilder.
Através da herança o objeto filho obtém todos os controles, powerscript e
atributos do objeto ancestral. Quaisquer mudanças adicionais efetuadas no
objeto ancestral se refletem automaticamente no objeto filho. O Objeto filho
pode então acrescentar outras características ou modificar as que herdaram.
As janelas e os menus podem ser herdados.
Para entender melhor vamos criar uma janela herança da janela w_001 do
nosso exemplo.
Com o PowerBuilder aberto, no TREEVIEW à esquerda, clique com o botão
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 título do template da window que você acabou de criar:
A janela w_002 foi criada como uma herança da w_001.
Toda mudança que você implementar na w_001 será herdada pela w_002 e
esta poderá ter objetos que só pertençam a ela própria. Essa funcionalidade
de herança, assim como a DataWindow, faz a grande diferença no desenrolar
de um projeto com PowerBuilder.
PowerBuilder 9.0 Básico
Capítulo 4
30
Implementação da Herança 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 então
escreva :
OpenSheet(w_002, w_001, 2, Layered!)
Salve o m_menu01.
Execute a aplicação, clique na opção "Item 01" e veja a janela w_002 abrir
dentro da janela w_001.
Para uma melhor visualização selecione no TREEVIEW à esquerda a
janela w_001, e no template "propriedade" selecione a opção
"ClientEdge". Salve a janela w_001.
Execute a aplicação.
Adquirido por : Fabrício Moreira da Silva
Capítulo 5
Projetando o menu
PowerBuilder 9.0 Básico
Capítulo 5
31
Projetando o menu.
O menu constitui uma parte importante de qualquer aplicação, seja ela
padrão MS Windows!, Linux, Solares, MAC ou outro qualquer. Através do
menu disparamos eventos, emitimos comandos e controlamos o fluxo de uma
aplicação.
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 compreensão dos menus.
Antes de projetar o menu é importante ter uma idéia da aparência que você
deseja para ele. Usando uma planilha eletrônica, 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 aplicações a fim de
examinar as opções que elas apresentam nos seus menus.
Dica : Para manter a coerência dos menus, desenvolva um único com todas
as suas opções em vez de projetar vários menus diferentes. Este menu
“mestre” será usado como layout básico 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 conseqüência ao rodarmos a nossa aplicação 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 própria 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 botão 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 operação, crie um novo quadro e digite “&Sair”. No item “MicroHelp”
digite, “Fechar a aplicação”.
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 aplicação quando então teremos.
PowerBuilder 9.0 Básico
Capítulo 5
33
Projetando o menu.
Selecione o item “Arquivo” :
Clique em Sair ou tecle “Alt” + “S” para sair da aplicação.
Ainda no item “Arquivo” pode-se implementar um pouco mais
e tornar o menu mais agradável 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 coerência 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
marcado indica que a “Toolbar” estará visível.
. Este item
. Este item sem
No Item “ToolbarItemDown” deixe desmarcado
marcação indica que o “ToolbarItemName” selecionado aparecerá sempre,
como se estivesse pressionado.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 5
34
Projetando o menu.
No item “ToolbarItemSpace” mantenha “0” esse item define a quantidade de
espaços 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 opção “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 coerência 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,
indica que a “Toolbar” estará visível.
. Esse item
. Esse item sem
No Item “ToolbarItemDown” deixe desmarcado
marcação indica que o “ToolbarItemName” selecionado aparecerá sempre
como se estivesse pressionado.
PowerBuilder 9.0 Básico
Capítulo 5
35
Projetando o menu
No item “ToolbarItemSpace” mantenha “0”. Esse item define a quantidade de
espaços 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 opção “Menu Cascate” é para o
caso de seu menu ter subItens. Será visto adiante.
Os primeiros passos para montagem do menu principal da aplicação 01 já
foram dados, adiante teremos a necessidade de incluir novos itens no menu,
quando outras técnicas serão apresentadas.
Adquirido por : Fabrício Moreira da Silva
Capítulo 6
A Linguagem PowerScript
Eventos
Ambiente de Script
A Linguagem PowerScript
Fundamentos da Linguagem PowerScript
Variáveis
Tipos de Dados
Escopo de Variáveis
Encapsulamento
Objetos e Controle
Execução de uma função por meio da
notação de ponto
Estruturas
Arrays
Arrays multidimensionais
Arrays variáveis
Dados de objetos
(continua)
Capítulo 6
Operadores
Operadores Aritméticos
Operadores binários
Operadores unários
Operadores de combinação
Operador de string
Operadores lógicos
Operadores relacionais
Operadores de conjunção
Procedência e Parênteses
Comandos do PowerBuilder
O Uso da estrutura IF
Estrutura Choose Case
Estrutura Choose Case
Estrutura de iteração (Loops)
Estrutura de Do Loop
Estrutura For… Next
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
36
A Linguagem PowerScript.
Até aqui foi aplicado o conceito de criação de janelas, janelas com herança e
menu. Para continuarmos com o nosso exemplo teremos que abordar outros
conceitos, como o uso de eventos, funções e da linguagem PowerScript.
A linguagem PowerScript, sendo a linguagem de programação do
PowerBuilder, controla o fluxo de um programa, atualiza banco de dados,
exibe informações 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 :
!"
!"
!"
!"
!"
Ambiente de Script
Compreender os eventos
Tipos de variáveis do PowerScript
Entender as estruturas, objetos e os controles
Escopo das variáveis
Programação a eventos não é um conceito novo no desenvolvimento de
software. A programação mais antiga tem natureza seqüencial onde cada
função pode ser considerada como resultante de uma instrução anterior.
Contudo, no mundo real, a maior parte das funções de negócios são baseadas
em eventos, não sendo seqüenciais.
Funções baseadas em eventos são funções independentes e não obedecem a
uma seqüência lógica. Em vez disso, certos eventos fazem com que as
funções sejam executadas. Como conseqüência, o desenvolvimento de
software se tornava difícil porque se tentava mapear o mundo baseado em
eventos, nos programas de natureza seqüencial.
A codificação 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. Programação de eventos se adapta melhor à maneira pela qual
o usuário final irá utilizar sua aplicação.
Programação de eventos é um dos muitos pontos de destaque do
PowerBuilder.
PowerBuilder 9.0 Básico
Capítulo 6
37
A Linguagem PowerScript.
É importante diferenciar Programação baseada em eventos de Ambiente
de programação baseado em objetos.
Muito poderia ser dito a respeito da programação baseada em objetos (OOP Object-Oriented Programming). Para simplificar, as linguagens baseadas em
objetos consistem em três maneiras principais para realizar a atividade de
programação.
1. Toda função e grupo de funções inter-relacionadas (classes) não devem
afetar os valores de dados em outras funções.A a isto chamamos
"Encapsulamento".
2. A linguagem deve permitir que seja reutilizada grande parte do seu código
antigo e seja efetuada alteração.
3. As funções que herdam características de cada uma das outras devem ter
a possibilidade de se personalizarem, quando necessário. 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
esforço do desenvolvedor, e nele consiste em criar uma pequena parte de sua
aplicação de cada vez. O projeto interativo é um subproduto do
desenvolvimento baseado em objetos, o que permite desenvolver sua
aplicação em blocos, desde o início 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 versão 8.0 do PowerBuilder foi
implantado a “WorkSpace” onde este conceito, antes implícito, agora fica
explicito desde a inicialização do seu projeto.
O PowerBuilder é “visual”, com implementações que não existem em outras
Ferramentas de desenvolvimento "visual". No PowerBuilder você não
programa sua aplicação, mas desenha a aplicação. Quando necessário
qualquer atividade de programação ela é implementada por trás dos objetos
projetados. Isto pode parecer um pouco estranho, mas na construção das
nossas janelas e menus você não programou para que isso acontecesse,
simplesmente você desenhou, utilizando os painter para desenvolver sua
aplicação.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 aplicações são exemplos de
objetos.
Os controles do PowerBuilder são construções que se associam aos objetos.
Botões de comando, Figuras e DataWindow são exemplos de controles.
Nota : Há uma diferença 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 várias "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á disponíveis para o objeto em foco.
Function List: Exibe as funções pré-definidas para o objeto em foco.
Declare Instance Variable : Exibe o template de declaração de variáveis de
Instancia, Compartilhadas e Globais, assim como, declarações de funções
externas Globais e Locais.
PowerBuilder 9.0 Básico
Capítulo 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 código, 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. Serão disponibilizados os objeto(s), o template para
declarações de funções, seja do PB ou qualquer outro que você queira definir
(desenvolver), ou o template para declarações e definições de variáveis e
funções 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 técnicas tradicionais em outros Front-End onde
um código sempre tem que ser escrito para verificar a ocorrência de eventos,
e para reagir a cada evento.
O PowerBuilder predetermina os eventos para os quais você precisará, ou
não, codificar. Entretanto pode ser necessário um evento especial que o
PowerBuilder não tenha previsto. Para definir seus próprios eventos:
No quadro de seleção de eventos, selecione (New Event).
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
40
A Linguagem PowerScript.
E o template para definição do novo evento do usuário será disponibilizado.
Access : Neste caso ele será de acesso "Publico"
Return Type : O tipo de dados que será retornado, Numérico, Caractere ou
Binário, se você quiser que o evento retorne algum dado; quando definido
como None não 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 relação com a ação que
você está definindo.
Argument Type : Indica que tipo de dado será repassado para o evento.
Pode ser tanto um dado de conteúdo, como valores ou textos, quanto
objetos, Windows, botão etc.
Argument Name : O nome definido pelo usuário para o tipo de dado
definido. Ao preencher esse campo ou quando necessitar de mais campos
para definir outras variáveis que o seu evento deverá receber, deve-se
pressionar a tecla "TAB" para que essa linha seja repetida.
Throws : Cria um trigger para uma exceção que ocorra neste evento.
External : Caso esteja criando um evento para controlar um objeto externo.
PowerBuilder 9.0 Básico
Capítulo 6
41
A Linguagem PowerScript.
Event ID : Você poderá selecionar um dos eventos do PB que já estão
definidos mas não disponibilizado para o objeto em foco. Também serve para
selecionar um evento denominado "pbm_customX" onde X está em um
intervalo de 1 a 75, mas neste caso, a passagem de parâmetros é padrão, ou
seja deve-se não selecionar nenhum valor.
Fundamentos da Linguagem PowerScript
Comentário : // Barra dupla, Transforma em comentário o restante da
linha. Também é possível incluir entre /* e */ uma seqüência de texto ou até
mesmo diversas linhas.
Exemplo : X = Y // Isto é comentário
ou /* Isto também
é comentário */
Caracter de continuação : & E comercial, Algumas vezes uma linha de
comando se estende além do limite da janela o que pode tornar difícil à
depuração, a impressão ou a visualização do PowerScript. Digite o caractere
de continuação &, 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" &
+"tinuação"
Espaço em branco : Espaço em branco, ou seja, os espaços vazios entre
variáveis, constantes ou comandos são ignorados em PowerScript. A exceção
acontece quando se está no interior de uma variável string. Você pode inserir
entre os comandos a quantidade de espaços que desejar.
Dica : Lembre-se que a tecla "Enter" não é considerada como espaço em
branco. O retorno do cursor somente são ignorados quando está dentro de
um comentário.
Variáveis
Como qualquer outra linguagem o PowerScript permite que você utilize uma
variável para armazenar valores. Algumas dessas variáveis são declaradas por
você, outras são declaradas pelo próprio PowerBuilder.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
42
A Linguagem PowerScript.
Tipos de Dados
Toda variável tem um tipo de dado que informa ao desenvolvedor que tipo
de informações estão armazenadas na variável, bem como também informa
ao PowerBuilder qual a quantidade de espaços de armazenamento que deverá
ser reservado e ainda como tratar a variável.
Sintaxe: Tipo_de_dado nome_da_variavel
Para declarar uma variável do tipo inteira e numérica, utilizaremos:
Int contador
Onde : int é o tipo de dado Integer (inteiro) no caso e contador é o
nome da variável.
Tipo de dado
Boolean(booleano)
Charater (caráter)
Date (data)
DateTime
Decimal
Integer (inteiro)
Long (longo)
String
Time (hora)
Faixa de variação
TRUE ou FALSE
Observação
Variável lógica
Pode ser abreviado como char
De 01-01-1900 até 12-31- A data esta no formato mm-dd3000
aaaa. Não são permitidos espaços
em branco.
01-01-1900
00:00:00:0000
23:59:59:9999
Até
18
dígitos
(todos O separador pode estar em
significativos)
qualquer lugar entre os 18 dígitos.
O tipo pode ser abreviado como
dec
De -32.768 até +32.767
Pode ser abreviado como int
De
-2.147.483.648
até
+2.147.483.647
Até 60.000 caracteres
Todos os caracteres ASCII
De 00:00:00:0000
A hora é incrementada em
Até 23:59:59:9999
segundos
PowerBuilder 9.0 Básico
Capítulo 6
43
A Linguagem PowerScript.
Tipo de dados
Blob
Double
DragObject
Object
PowerObject
Real
UsingnedInteger
UnsignedLong
LongLong 64 bits
Faixa de variação
Observação
Tipo de dado não vinculado que
significa objeto binário extenso. É
usado geralmente para guardar
figuras.
De 2.23E-308 até 1.78E308 Precisão de 15 dígitos
Contém
o
tipo
de
objeto
arrastado.
Contém
o
tipo
de
dados
enumerado de um objeto do
PowerBuilder.
Qualquer objeto do PowerBuilder,
inclusive estruturas.
De 1.18e-38 até 3.40E+38 Precisão de 6 dígitos
De 0 até 65.535
Pode
ser
abreviado
como
unsignedint ou uint
De 0 até 4.294.967.295
Pode ser abreviado como ulong
De 9223372036854775808 a
9223372036854775807.
Atenção : Todos os tipos de dados numéricos incluem faixas de variação para
cada tipo de dado. Alguns tipos de dados numéricos também incluem dígitos
de precisão (dígitos significativos) .
Se você efetuar um cálculo com perda de dígitos significativos o PowerBuilder
não informará sobre isto. Tenha cuidado !!!
Além disso, se você exceder a faixa de variação do tipo de dado ocorrerá o
rollover. O rollover acontece quando um número excede o limite de uma faixa
de variação, e recomeça em outro extremo de faixa. Por exemplo, se você
armazenasse 32.766 em uma variável inteira e acrescentasse cinco unidades
a variável 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 variável inteira. Nenhuma mensagem de erro irá surgir se
isso acontecer.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
44
A Linguagem PowerScript.
Escopo de Variáveis
Em linguagens mais antigas, como COBOL e BASIC, qualquer variável
poderia ser acessada de qualquer local da aplicação . Atualmente , a
maior parte das linguagens aceita o conceito de escopo de variável. O escopo
de variável descreve onde uma variável pode ser utilizada.
O conceito de escopo de variável é importante. O escopo permite a um
usuário escrever uma função ou um evento sem sobrescrever as variáveis de
outra área da aplicação, mesmo que as variáveis tenham o mesmo nome. Há
quatro níveis de escopo no PowerBuilder.
Escopo local : As variáveis de escopo local (variáveis locais) são variáveis
que você declara dentro do seu script. As variáveis definidas pelo usuário que
você emprega são, em sua maioria, variáveis locais, que só existem no
interior do evento ou da função em que são declaradas.
Exemplo : Você pode declarar uma variável int contador no evento "open"
da janela w_001 e declarar também int contador no evento "close" da mesma
janela w_001. Neste caso você tem duas versões de contador isoladas uma
da outra o que você fizer no contador no evento "open" não influenciará o
contador no evento "close".
Escopo de instancia : As variáveis de escopo de instancia são variáveis às
quais o objeto inteiro tem acesso. Se você declara uma variável como sendo
uma variável de instância de um objeto então qualquer evento, função ou
controle desse objeto terá acesso à variável.
Escopo Compartilhado : Em uma aplicação com janelas MDI você pode
abrir mais de uma janela do mesmo tipo; ou seja, você pode abrir mais de
uma "w_001". Essas versões múltiplas da mesma janela são chamados
instancias da janela. As variáveis compartilhadas são variáveis que podem
ser compartilhadas por todos os objetos, funções ou controles de cada
instancia de um objeto.
Escopo Global : As variáveis globais são acessadas por toda a aplicação. Elas
nunca saem do escopo enquanto a aplicação não é fechada.
Você não deve usar variáveis globais se outro tipo de variável servir. O uso de
uma grande quantidade de variáveis globais viola o princípio do
encapsulamento.
PowerBuilder 9.0 Básico
Capítulo 6
45
A Linguagem PowerScript.
Se você define uma variável global em um evento qualquer outro evento pode
reinicializar a variável sem que aquele evento tome conhecimento do fato.
Encapsulamento
O termo encapsulamento é usado com freqüência na programação baseada
em objetos. Quando uma função ou um evento estiver encapsulado isso
significa que ele é independente. A função encapsulada não pode ter suas
variáveis alteradas a partir do seu exterior. Além disso, a função encapsulada
também não tem acesso a variáveis fora dela própria.
O Encapsulamento é uma questão de grau. Para elevar o encapsulamento de
um sistema ao maior grau possível existem algumas regras, a saber :
1. É desejável que todas as suas declarações de variáveis sejam locais. Essa
é a melhor maneira de encapsular seus dados, evitando que eles sejam
danificados por outras funções e eventos. Nesse nível mais elevado de
encapsulamento uma função ou um evento pode ser inserido em qualquer
objeto e ainda funcionar de maneira apropriada.
2. Quando uma variável local não funciona porque você precisa preservar um
valor ou ter acesso à variável a partir de outras áreas do seu objeto,
experimente usar uma variável de instância caso não resolva dessa forma
use uma variável compartilhada.
3. Como último recurso utilize uma variável global. As variáveis globais
podem ser acessadas e alteradas por qualquer objeto ou função em uma
aplicação.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
46
A Linguagem PowerScript.
Objetos e Controle
Na programação orientada a objetos, freqüentemente você precisa se referir a
um controle do interior de outro controle, necessitará alterar suas
configurações originais (seus atributos) em tempo de execução.
Todo controle e todo objeto possui atributos ou variáveis que
controlam a sua funcionalidade e a sua aparência. Podemos ter acesso
aos atributos de um objeto ou controle por meio da notação de ponto.
controle.atributo
objeto.atributo
Para definir um atributo você referencia o controle ou o objeto em que se
encontra o atributo. Essa referência é seguida por um ponto (.) e pelo nome
do atributo.
A maior parte dos objetos e controles tem um atributo booleano chamado
visible (visível) que estabelece se o objeto ou controle pode ser visto na tela.
Suponha que exista um objeto botão (cb_01) na janela w_001. Para definir o
atributo para o botão cb_01, usaríamos a seguinte notação:
w_001.cb_01.visible = FALSE // botão está invisível
Você também pode verificar a propriedade do botão usando a seguinte
instrução
IF:
IF w_001.cb_01.visible THEN
{executa alguma função}
END IF
Execução de uma função por meio da notação de ponto
Você também utiliza a notação de ponto para executar funções. Todo objeto
bem como todo controle, têm um conjunto de funções que podem ser
executadas em seu interior.
PowerBuilder 9.0 Básico
Capítulo 6
47
A Linguagem PowerScript.
A função Hide é compartilhada pela maioria dos controles e objetos, e
estabelece o atributo visible como FALSE. Para ocultar o botão cb_01 na
janela w_001 através de uma função ao contrário de ocultá-lo por meio de
um atributo, use a função:
w_001.cb_01.Hide ()
No mesmo patamar teremos Show para estabelecer o atributo visible como
TRUE. Para tornar o botão cb_01 visível na janela w_001 através de uma
função use a função 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 notação de ponto é utilizada largamente em linguagens orientada a
objetos. Por ser uma linguagem totalmente estruturada você pode navegar
pela estrutura dos objetos através da notação 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
usuário abriu o menu “Arquivo” e escolheu a opção “Sair”.
Você pode usar a função TriggerEvent no PowerBuilder com a finalidade de
forçar 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
48
A Linguagem PowerScript.
Estruturas
Você usa as estruturas para criar seu próprio tipo de dados. As estruturas
contêm muitas variáveis inter-relacionadas diferentes de diversos tipos
agrupadas sob um nome único. As estruturas permitem que você faça a
movimentação dos dados e usando um único nome, para fazer referência a
eles.
Criando uma estrutura.
Clique em “New”, selecione “PB Object” e clique em “Structure”
O template para a criação da estrutura é bem simples, com um quadro para a
seleção do tipo de dados e um quadro para a definição do nome da variável,
ao final clique em salvar.
Nota : É sempre importante você utilizar a padronização para nomes de
objetos, funções e etc.
Capítulo 6
PowerBuilder 9.0 Básico
49
A Linguagem PowerScript.
Você acabou de criar uma estrutura global. O PowerBuilder também
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 pertença, clique em “Insert” no menu principal e selecione
“Structure”, abrindo o painter de criação de estrutura. Ao salvar essa
estrutura ela só poderá ser acessada dentro da instância 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 não uma variável.
Ainda é preciso declarar variáveis usando a sua estrutura, e depois utilizar a
notação de ponto para obter acesso às variáveis no interior da estrutura.
Para um melhor entendimento vamos criar uma pseudo-estrutura:
Nome da estrutura
Variável 1
string
Variável 2
string
Variável 3
string
:
:
:
:
str_identifica
s_nome
s_sigla
s_senha
Em PowerScript :
// cria a variável identifica_usuario com o modelo de dados da
// estrutura str_identifica
str_identifica identifica_usuario
//criando variáveis locais com o mesmo padrão de dados da estrutura
string nome
string sigla, senha
Adquirido por : Fabrício Moreira da Silva
Capítulo 6
PowerBuilder 9.0 Básico
50
A Linguagem PowerScript.
//atribuindo dados a variáveis 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 são séries de variáveis indexadas do mesmo tipo de dados.
Você declara um array colocando um número entre colchetes logo após uma
declaração de dados.
Ao declarar uma variável inteira de nome “X” criamos uma única célula de
inteiro na memória.
Int x
Acrescentando [5] à declaração 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
número entre colchetes
X[1]
X[2]
X[3]
X[4]
X[5]
Capítulo 6
PowerBuilder 9.0 Básico
51
A Linguagem PowerScript.
Arrays Multidimensionais
Se a declaração de um array tiver mais de um conjunto de números 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]
X[1,4]
X[2,4]
X[3,4]
X[4,4]
X[1,5]
X[2,5]
X[3,5]
X[4,5]
Array Multidimensional int x[4,5]
X[1,1]
X[2,1]
X[3,1]
X[4,1]
X[1,2]
X[2,2]
X[3,2]
X[4,2]
X[1,3]
X[2,3]
X[3,3]
X[4,3]
Onde : Int x[linha, coluna]
Array variáveis
Os arrays variáveis são arrays cujo tamanho não é definido no momento da
declaração. Para declarar um array variável deixe o número 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 posição 35
// com o dado 1234
Int x [35] = 1234
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
52
A Linguagem PowerScript.
Dados de objetos
Os objetos que você declara constituem um tipo de dados. Esses tipos de
dados especiais são chamados de instâncias do seu objeto.
O principal uso das variáveis de instâncias é a abertura de várias versões da
mesma janela em um quadro MDI. Desejando abrir duas janelas w_001 você
poderia usar o seguinte trecho de código:
W_001 janela1 // declara a primeira instância de w_001
W_001 janela2 // declara a segunda instância 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: aritméticos, de strings, lógicos e de
agrupamento.
!"
!"
!"
!"
Operadores aritméticos são usados em cálculos matemáticos;
Operadores lógicos são utilizados para realização de testes de
condições;
Operadores strings executam funções sobre variáveis do tipo string;
Operadores de agrupamento são os parênteses esses afetam a ordem
na qual os outros operadores serão executados;
Operadores Aritméticos.
Os operadores aritméticos podem ser divididos em três categorias :
!"
!"
!"
Operadores binários;
Operadores unários;
Operadores de combinação;
Capítulo 6
PowerBuilder 9.0 Básico
53
A Linguagem PowerScript.
Os operadores binários exigem dois operandos (variáveis ou constantes) Os
operadores binários do PowerBuilder estão relacionados na tabela abaixo:
Símbolo
^
Nome
Exponenciação
Exemplo
a^b
+
*
/
=
Adição
Subtração
Multiplicação
Divisão
Igualdade
a
a
a
a
a
+b
-b
*b
/b
=b
Descrição
Eleva a, à potência
representada pelo expoente b
Soma a + b
Subtrai b de a
Multiplica a por b
Divide a por b
Atribui o valor de b em a
Os operadores unários requerem um único operando. Os operadores
unários do PowerBuilder encontram-se na tabela abaixo.
Símbolo
-
Nome
Negativo
Exemplo
-a
+
Positivo
+a
++
Incremento
a ++
--
Decremento
a --
Descrição
Simboliza o valor negativo
de a
Simboliza o valor positivo
de a
Incrementa uma unidade
ao valor de a
Decrementa uma unidade
ao valor de a
Adquirido por : Fabrício Moreira da Silva
Capítulo 6
PowerBuilder 9.0 Básico
54
A Linguagem PowerScript.
Os operadores de combinação são operadores binários que combinam as
características de dois operadores , o operador de igualdade e o de adição ou
subtração. Como os operadores de combinação são binários, eles exigem dois
operandos.
Símbolo
+=
-=
*=
/=
^=
Nome
Plus Equal
Minus Equal
Times Equal
Divide Equal
Power Equal
Exemplo
a+=b
a-=b
a*=b
a/=b
a^=b
Defina
Define
Define
Define
Define
a,
a,
a,
a,
a,
Descrição
como igual a
como igual a
como igual a
como igual a
como igual a
a
a
a
a
a
+b
-b
*b
/b
^b
O único operador de string do PowerBuilder usa um sinal de adição (+) para
concatenação.
String x1 = “Power”
String x2 = “Builder”
String x3 = x1 + x2
O valor resultante em x3 é : “PowerBuilder”
Os operadores lógicos testam se uma condição é verdadeira ou falsa. Há
dois tipos de operadores lógicos: os operadores relacionais e os operadores
de conjunção.
Capítulo 6
PowerBuilder 9.0 Básico
55
A Linguagem PowerScript.
Os operadores relacionais são sempre binários e, portanto, exigem dois
operandos.
Símbolo
Nome
=
Igual
Exemplo
a=b
>
Maior que
a>b
<
Menor que
a<b
>=
Maior que ou igual a>=b
a
Menor que ou igual a<=b
a
Não igual
a <> b
<=
<>
Descrição
Retorna TRUE se a é igual
ab
Retorna TRUE se a maior
que b
Retorna TRUE se a é
menor que b
Retorna TRUE se a é maior
ou igual a b
Retornar TRUE se a é
menor ou igual a b
Retorna TRUE se a não é
igual a b
Todo operador relacional que não retorna TRUE, retorna FALSE.
Os operadores de conjunção têm expressões relacionais com seus
operandos. Os três operadores de conjunção do PowerBuilder são dois
operadores binários , (AND e OR), e um operador unário, (NOT). Suas
funções podem ser vistas na tabela verdade abaixo:
a
TRUE
TRUE
FALSE
FALSE
b
TRUE
FALSE
TRUE
FALSE
a AND b
TRUE
FALSE
FALSE
FALSE
b OR b
TRUE
TRUE
TRUE
FALSE
Not a
FALSE
FALSE
TRUE
TRUE
A primeira linha pode ser lida como “Se a é TRUE e b é TRUE, então a AND b
é TRUE, a OR b é TRUE e NOT a é FALSE”
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
56
A Linguagem PowerScript.
Procedência e Parênteses
Certas operações têm precedência sobre outras. Por exemplo, 5 + 4 * 3 pode
parecer que resulta em 27, porque 5 + 4 = 9 e 9 * 3 = 27. Na verdade, essa
equação resulta em 17, porque a multiplicação (*) tem precedência sobre a
adição (+). Desse modo 4 * 3 é avaliado primeiro totalizando 12, em seguida
é somado o valor 5 a esse resultado.
Para que o resultado fosse 27, teríamos que escrever :
(5 + 4) * 3
Comandos do PowerBuilder
A linguagem PowerScript contém dois tipos de instruções: funções embutidas
(ou internas) e comandos. Embora existam muitas funções internas há
somente três tipos principais de comando: os comandos de atribuição que
atribuem um valor a uma variável; as estruturas de decisão que consistem
em instruções IF e instruções Choose Case; e as estruturas iterativas (ou
de loops), que consistem em loops Do e loops For...Next.
As estruturas de decisão são comandos que avaliam variáveis. O
PowerBuilder aceita dois tipos de estruturas de decisão: a estrutura
IF..ElseIf..Else...End (ou apenas a estrutura IF) e a estrutura Choose Case.
O Uso da estrutura IF
A instrução IF avalia variável. Com base nessa avaliação a instrução IF realiza
alguma forma de ação.
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
Capítulo 6
PowerBuilder 9.0 Básico
57
A Linguagem PowerScript.
IF a < b THEN
Um comando
ELSEIF a < c THEN
Um comando
ELSEIF a > d THEN
Um comando
ELSE
Um comando
END IF
ou conjuntos de comandos
ou conjuntos de comandos
ou conjuntos de comandos
ou conjuntos de comandos
Você pode ter quantas cláusulas ELSEIF desejar em uma instrução IF. O Uso
de instrução IF é uma forma eficiente de controlar o fluxo do seu programa de
acordo com as informações existentes.
Estrutura Choose Case
A estrutura CHOOSE CASE avalia uma única variável de diversas maneiras
diferentes.
Choose Case variável_a_ser_testada
Case expressão 1
Um comando ou conjuntos
Case expressão 2
Um comando ou conjuntos
Case Expressão 3
Um comando ou conjuntos
Case ESLE
Um comando ou conjuntos
END Choose
de comandos
de comandos
de comandos
de comandos
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 6
58
A Linguagem PowerScript.
Exemplo:
Choose Case salario
Case is > 4000
Um comando ou
Case 2000 to 3000
Um comando ou
Case 2000, 2100,2200
Um comando ou
Case 5000
Um comando ou
Case Else
Um comando ou
END Chosse
conjuntos de comandos
conjuntos de comandos
conjuntos de comandos
conjuntos de comandos
conjuntos de comandos
Estrutura de iteração (Loops)
As estruturas de loops são construções que causam a execução de uma série
de comandos um certo número 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 implementação.
Do While condição 1
Conjunto de comandos 1
Loop
Do Until condição 2
Conjunto de comandos 2
Loop
Do
Conjunto de comandos 3
Loop Until condição 3
Do
Conjunto de comandos 4
Loop While condição 4
Capítulo 6
PowerBuilder 9.0 Básico
59
A Linguagem PowerScript.
Estrutura For… Next
Outro tipo de estrutura de loop é o loop For.. Next que combina a iteração e
o incremento de um contador.
For variável_numérica = inicio TO fim { Step incremento }
Conjunto de comandos
Next
For a = 1 to 10
b=b+a
Next
For a = 100 to 1 Step -1
b=b+a
Next
Adquirido por : Fabrício Moreira da Silva
Capítulo 7
Transações de Bancos de Dados
Definindo uma transação
Montando a transação em PowerScript
O uso do SQL no PowerBuilder
PowerBuilder 9.0 Básico
Capítulo 7
60
A Linguagem PowerScript.
Transações de Bancos de Dados.
Os objetos de transações são 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 transação. Embora você possa definir sua própria
variável de transação o PowerBuilder lhe oferece uma variável padrão,
SQLCA.
Um objeto (ou estrutura) de transação como SQLCA possui quinze campos.
Dez desses campos precisam ser preenchidos pelo desenvolvedor, os outros
cincos são usados para uma área de retorno depois que você efetua a
chamadas de SQL.
Atributo
DBMS
Database
Tipo de dado
String
String
UserId
String
DBParm
DBPass
String
String
Lock
LogId
String
String
LogPass
ServerName
String
String
AutoCommit
Boolean
Descrição
nome do tipo de banco de dados
nome do banco de dados ao qual você esta
se conectando
Identificação do usuário que esta se
conectando ao banco
Específica de um DBMS
senha que será usada para conexão com o
banco de dados.
nível de bloqueio
nome ou identificação do usuário que irá
se conectar ao servidor
senha usada para a conexão ao servidor
nome do servidor no qual reside o banco
de dados
Indicador automático de Commit, (TRUE)
automático.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 7
A Linguagem PowerScript.
Atributo
SQLDBCode
Tipo de dado
Long
SQLDBNRow
s
SQLDBCode
Long
Long
SQLErrText
String
SQLReturnDa String
ta
Descrição
Código de sucesso ou falha da operação de
SQL mais recente:
0
= Sucesso;
100 = Nenhum conjunto de resultados
retornado;
-1 = Erro (Use SQLDBCode ou SQLErrText
para obter os detalhes).
O Número de linhas afetadas.
O código de erro do fornecedor do banco
de dados.
A mensagem de erro do fornecedor do
banco de dados
Dados de retorno específicos do DBMS
Definindo uma transação
Transação
DataBase
Usuário
Senha
CONEXÃO
:
:
:
:
:
SQLCA
TESTE
joao
12345
VIA ODBC
Montando a transação 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;
61
PowerBuilder 9.0 Básico
Capítulo 7
A Linguagem PowerScript.
//Testando a conexão
IF SQLCA.SQLCode <> 0 THEN
Messagebox (“DataBase”, “Erro ao conectar”)
HALT
END IF
Definindo uma transação
Transação
DataBase
Usuário
Senha
CONEXÃO
:
:
:
:
:
SQLCA
TESTE
joao
12345
NATIVA ORACLE
Montando a transação em PowerScript.
sqlca.DBMS
sqlca.database
sqlca.userid
sqlca.dbpass
sqlca.logid
sqlca.logpass
sqlca.servername
sqlca.dbparm
=
=
=
=
=
=
=
=
"O73 Oracle 7.3"
“”
“”
“”
"joao"
"12345"
@ORACLE_PROD
DelimitIdentifier='No',Block=1000
// Conectando
CONNECT USING SQLCA;
//Testando a conexão
IF SQLCA.SQLCode <> 0 THEN
Messagebox(“DataBase”, “Erro ao conectar”)
HALT
END IF
Adquirido por : Fabrício Moreira da Silva
62
PowerBuilder 9.0 Básico
Capítulo 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 método comum para atualização e recuperação 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ê não tenha percebido, mas escrever instruções em SQL
pode ser um trabalho penoso. Você é obrigado a conhecer além da sintaxe de
SQL, as colunas das tabelas que deseja acessar.
O PowerBuilder responde a essa exigência através do seu Painter de SQL.
O ícone “DataBase” fornece acesso ao “DataBase Administration”
um ambiente visual que proporciona um total controle de acesso, edição e
desenvolvimento de bancos de dados.
PowerBuilder 9.0 Básico
Capítulo 7
64
O uso do SQL no PowerBuilder.
No ícone “DB Profile” DataBase Profile você pode criar, modificar e
excluir uma conexão.
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
“bônus”, pressione o botão esquerdo e arraste para o template Object
Layout onde você poderá visualizar a tabela bonus.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 7
65
O uso do SQL no PowerBuilder.
Clicando com o botão direito do mouse sobre a barra de titulo da tabela
aparecerá o menu-popup .
PowerBuilder 9.0 Básico
Capítulo 7
66
O uso do SQL no PowerBuilder.
Close : Fecha a tabela em foco.
New : Habilita a criação de Index, Foreign Key, Primary Key e
a tabela em foco.
Coluna para
Edit Data : Edita a tabela no formato Grid, Tabular ou Livre permitindo
inclusão, alteração e exclusão de dados.
DataPipeline : Ativa o template de PipeLine. O PipeLine é um objeto do
PowerBuilder que auxilia na construção, manutenção, cópia e exportação de
dados.
Alter Table : Habilita o template para a alteração física da tabela, nome da
coluna, tamanho do campo etc.
Drop Table : Exclui fisicamente uma tabela.
Print Definition : Imprime a definição da tabela em foco.
Export Sintaxe : Exporta a sintaxe de criação para o parâmetro de ODBC
selecionado, da tabela em foco.
Properties : Exibe as propriedades da tabela.
Adquirido por : Fabrício Moreira da Silva
Capítulo 8
DataWindow
Objeto DataWindow
Fonte de dados
Interface inteligente
Interface com o usuário
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)
Capítulo 8
Personalizando sua DataWindow
Composite
Crosstab (planilha)
FreeForm (Formulário livre)
Graph (Gráfico)
Grid (Grade)
Group (Grupo)
Label (Etiquetas)
N-up (Múltiplas linhas)
Olé 2.0
RichText
Tabular
Cores e Bodas
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 informações sobre a fonte de dados. Inclui também
informação de formatação que descreve como o dado deve ser apresentado
no controle DataWindow. A informação codificada no objeto DataWindow é
usada pelo núcleo da DataWindow para fornecer uma interface inteligente
entre o cliente e o servidor em tempo de execução. Buffers são associados ao
objeto DataWindow para armazenar os dados. Estes dados são referenciados
como result set.
PowerBuilder 9.0 Básico
Capítulo 8
68
Fonte de dados
Uma das informações encapsuladas no objeto é a fonte de dados. Existem
dois tipos de fontes de dados:
!"
Relacional, que deve executar um comando SELECT em uma
tabela ou view, ou um EXECUTE PROCEDURE
!"
Não relacional, para importar arquivos seqüenciais (nos
formatos TXT, DBF, CSV e XML) ou pela digitação do usuário.
Interface inteligente
O núcleo do objeto administra todo o relacionamento que deve existir entre a
máquina cliente e o servidor de banco de dados. Por exemplo, o núcleo da
DataWindow sabe onde existe um item de dado alterado, quando um item de
dado é obrigatório, qual é o tipo de dado e quando um valor passa pelas
regras de validação. Antes de o processamento iniciar o núcleo da
DataWindow realiza todas essas checagens nos dados assegurando a validade
dos mesmos.
Interface com o usuário
O PowerBuilder fornece uma variedade de features para criação de uma
interface com o usuário atrativa e amigável. Permite que se escolha o estilo
de apresentação dos dados recuperados.
Os estilos possíveis são: tabular, grid, freeform, label, N-up, OLE, rich text,
groups, graphs, crosstabs, e composite.
Exemplo:
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
69
Como criar um objeto DataWindow
O PowerBuilder também fornece outras facilidades para melhorar o formato
padrão de apresentação. Por exemplo, podemos reorganizar e classificar os
itens de dados. Podemos, também, adicionar elementos gráficos como linhas,
círculos e retângulos, botões, figuras, etc.
New.
1. Na PowerBar1 clique em
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 Básico
Capítulo 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.
2.
3.
4.
5.
Quick Select;
SQL Select;
Query;
Store Procedures;
External.
Quick Select.
No PowerBuilder é a forma mais simples de definir a fonte de dados. Você não
escreve nada, apenas desenha com o mouse o tipo de dado. Esta opção
impõe alguns limites pois a navegação entre a tabela só é possível através
dos seus relacionamentos. O Tipo de SELECT utilizado é o mais simples,
apenas a cláusula WHERE é suportada.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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, padrão ANSI (ODBC) e padrão do seu banco, com a conexão nativa.
Query
O mesmo tipo de comando SELECT da opção 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 construção de objetos DataWindow.
Stored Procedure
Esta seleção retorna uma lista de stored procedures gravadas no banco de
dados atualmente conectado. Uma stored procedure é um conjunto de
comandos SQL que executam uma operação no banco de dados. Quando
escolhemos uma stored procedure da lista o objeto DataWindow constrói o
result set da DataWindow em função das colunas recuperadas pela stored
procedure selecionada.
O uso de Stored Procedures pode incrementar a performance pela redução:
!"
!"
do número de passos que a DataWindow percorre para
recuperar dados
do tráfego na rede
O DBMS compila a stored procedure no momento da sua criação.
External
O PowerBuilder possibilita que o desenvolvedor forneça externamente a fonte
de dados para construção da DataWindow. Para isso o padrão EXTERNAL foi
disponibilizado. Tal opção exige que se informe o nome do dado e o formato
para cada coluna.
Capítulo 8
PowerBuilder 9.0 Básico
72
Montando uma DataWindow com SQL Select
Quando selecionado o SQL Select, o template para seleção das tabelas
disponíveis no banco de dados conectado é apresentado. Ao fundo o template
de construção da DataWindow receberá a sua seleção.
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
representa o “Join” entre as tabelas. Um duplo
relacionamentos onde
clique sobre o símbolo do “Join” abrirá o template de possibilidades de junção
da tabela, sempre com a opção definida com foco.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
73
Montando uma DataWindow com SQL Select
A tabela a seguir, descreve as possibilidades de “Join”.
Símbolo
*=
=*
>
<
<=
>=
<>
Descrição
Tabela A = tabela B e linhas da tabela A que não tenham
correspondência em B
Tabela A = tabela B e linhas da tabela B que não tenham
correspondência 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ê também pode especificar um “Join” manualmente. Para isso clique no
Join e selecione a(s) coluna(s) para realização desse “Join”. Ao
ícone
término 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 opção à excluir em seguida
clique no botão “Delete”.
PowerBuilder 9.0 Básico
Capítulo 8
74
Montando uma DataWindow com SQL Select
Template de SQL
Neste template, localizado na parte inferior do template DataWindow, existem
algumas ferramentas de auxílio na construção do seu comando SQL, são elas:
Template SQL
Onde :
Sort
: Seleciona as colunas para a classificação do resultado da
query. A colunas selecionadas farão parte da clausula “Order By”.
Where
: Define o critério de seleção 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
seleção feita pelo desenvolvedor.
Compute
: Cria uma nova coluna, com referência, ou não, 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 relatório é a renda composta pelo salario + gratificação. É
mais lógico trafegar pela rede somente a informação de renda do que as
informações de salário e gratificação que serão somadas na máquina cliente.
Para excluir uma coluna computada basta limpar a sua especificação na pasta
Compute.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
75
Montando uma DataWindow com SQL Select
A cláusula Where, se existir, contém o critério lógico do relacionamento
entre as tabelas escolhidas. Se não desejarmos recuperar todas as
linhas do banco de dados, devemos acrescentar um critério lógico para
seleção das linhas. Normalmente a cláusula Where é formada por colunas do
banco de dados, colunas computadas e argumentos de recuperação,
fornecidos pela aplicação ou pelo usuário.
Argumentos
O PowerBuilder permite que você defina argumentos. Argumentos são
variáveis que serão encaminhadas na chamada de execução da query, com o
propósito de filtrar a seleção.
Selecione no menu principal, item ‘Design “ e sub item” Retrieve Arguments “
para exibir o template de definição”:
Escreva o nome do argumento e o tipo de variável. Ao final clique em “OK”.
Outro método muito interessante é que o PowerBuilder disponibiliza o modo
“Syntax”, da sua query, onde você poderá incluir manualmente (digitando
direto) definições mais elaboradas na sua query. No Menu principal, selecione
“Design” e sub item “Convert to Syntax” para retornar ao modo gráfico.
Então, selecione “Design” e sub item “Convert to Graphics”.
Atenção : Algumas implementações não serão suportadas no modo “Gráfico”
mas funcionarão perfeitamente no modo “Syntax”.
Capítulo 8
PowerBuilder 9.0 Básico
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 padrões de sua
seleção, tanto em estilo quanto em recuperação 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 conteúdo dos “label”, que está em negrito, basta selecioná-los
com um clique.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
77
Montando uma DataWindow com SQL Select
Toda alteração será representada automaticamente no template Preview. Para
atualizar os dados no template preview clique em
Preview.
Personalizando sua DataWindow
O painter DataWindow fornece vários recursos para formatação da interface
com o usuário:
!"
Estilos de apresentação predefinidos.
!"
Funções para geração de relatórios
!"
Funções para ajuste do formato das colunas e seus cabeçalhos.
O PowerBuilder fornece vários estilos de apresentação predefinidos para
auxiliar na formatação dos dados. Cada estilo de apresentação representa um
formato diferente.
PowerBuilder 9.0 Básico
Capítulo 8
78
Personalizando sua DataWindow
Composite
O Estilo composite consiste em um Objeto DataWindow com vários objetos
DataWindow inseridos. Trata-se de uma maneira bem profissional de
apresentar um relatório pequeno com várias informações de estilos e origem,
distintos ou não.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
79
Personalizando sua DataWindow
Crosstab (planilha)
O estilo de apresentação crosstab apresenta os dados de forma sumarizada,
em células subordinadas a uma linha ou coluna.
PowerBuilder 9.0 Básico
Capítulo 8
80
Personalizando sua DataWindow
FreeForm (Formulário livre)
O estilo de apresentação freeform é muito flexível. Com este estilo, as
colunas e seus labels são distribuídos na vertical. É possível organizar as
colunas automaticamente em vários agrupamentos verticais através da
especificação da altura máxima de uma coluna no painter DataWindow. Por
default a DataWindow tem somente um campo em cada linha.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
81
Personalizando sua DataWindow
Graph (Gráfico)
O estilo de apresentação gráfico fornece uma apresentação gráfica do result
set em vários estilos. Podemos escolher entre vários estilos, de duas e três
dimensões, incluindo gráfico de barras, linha, área, pizza, etc.
PowerBuilder 9.0 Básico
Capítulo 8
82
Personalizando sua DataWindow
Grid (Grade)
O estilo de apresentação grid exibe os dados em colunas separadas por linhas
de grid. Em tempo de execução, ou no modo preview, o estilo grid permite
que se arraste o grid vertical de uma coluna para aumentar ou diminuir a sua
largura além de trocar a seqüência das mesmas.
No modo design, não se pode movimentar as colunas. Podemos, no entanto,
trocar a ordem da coluna, executando o modo preview e arrastando as
colunas para a posição desejada.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 8
83
Personalizando sua DataWindow
Group (Grupo)
É parecido com o estilo tabular, mas ele simplifica a construção de um objeto
DataWindow tabular com agrupamentos.
Quando se escolhe o estilo group, o template DataWindow exibe caixas de
diálogo para definir cabeçalho de agrupamentos, gerar subtotal de
agrupamentos e total geral para os campos numéricos .
PowerBuilder 9.0 Básico
Capítulo 8
84
Personalizando sua DataWindow
Label (Etiquetas)
Apresenta os dados na forma de etiquetas. Podemos escolher o estilo da
etiqueta a partir de uma relação ou especificar uma configuração
personalizada.
N-up (Múltiplas linhas)
Suporta a exibição de múltiplas linhas, repetidas horizontalmente. É útil
quando a linha de detalhe é estreita.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 máquina cliente.
RichText
Uma DataWindow com o estilo de apresentação RichText, permite:
!"
Carregar arquivos RTF (RichText Format)
!"
Incluir cabeçalhos e rodapés
!"
Usar várias fontes, cores e tamanhos dentro de um único controle
!"
Fornecer funções de edição ao usuário
PowerBuilder 9.0 Básico
Capítulo 8
86
Personalizando sua DataWindow
Tabular
Exibe as colunas de dados em linhas no controle DataWindow. Formata um
cabeçalho sobre cada coluna. Podem-se movimentar as colunas livremente,
agrupá-las e personalizar cabeçalhos.
Adquirido por : Fabrício Moreira da Silva
Capítulo 8
PowerBuilder 9.0 Básico
87
Personalizando sua DataWindow
Cores e Bodas
Ao término da etapa de criação da DataWindow, surgirá o template para
definição do estilo de borda, cores e distâncias entre as “bands” (faixas).
Aconselha-se manter o default nesta etapa de criação. Tais dados podem ser
alterados facilmente no template da DataWindow e, ainda com uma melhor
visualização dos resultados.
Marque o item “Save
características padrão.
as
default”
para
criar
a
DataWindow
com
Capítulo 9
Recuperação de dados a partir de uma
DataWindow
Funções para o controle DataWindow
Montando um Objeto DataWindow
Aperfeiçoando a visualização da DataWindow
Vinculando duas DataWindow
Vinculando objeto DataWindow a um controle
DataWindow
Incluindo controle DataWindow a Window
Incluindo parâmetros de atualização
Rotina de inclusão
Rotina de alteração
Rotina de Exclusão
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
88
Recuperação de dados a partir de uma DataWindow.
No PowerBuilder basicamente toda recuperação e atualização de dados são
realizadas por controles de DataWindow
associados com objetos de
DataWindow.
O Objeto DataWindow mantém o controle sobre a fonte de dados sua
formatação, validação e atualização.
O Controle DataWindow é usado para exibir os dados selecionados no objeto
DataWindow.
Sendo a interface entre o banco de dados e o usuário é nesse controle que
devemos inserir os códigos PowerScript que se farão necessários para a
manipulação correta da base de dados como; inclusão, alteração, validação e
exclusão. Para tanto o controle DataWindow disponibiliza algumas funções já
programadas que facilitam muito a manipulação de dados na DataWindow.
No controle DataWindow está disponibilizado uma lista de eventos préprogramados, ao contrario de outras linguagens, o PowerScript não precisa de
uma programação para detectar se um evento foi ou não disparado. Os
eventos disponíveis no controle DataWindow sempre são disparados quando a
condição à qual eles foram programados acorrerem, o evento “CLICKED!”
será disparado quando o controle DataWindow sofrer a ação do clique do
mouse, independente, se nesse evento houver uma codificação PowerScript
ou não.
PowerBuilder 9.0 Básico
Capítulo 9
89
Recuperação de dados a partir de uma DataWindow.
O PowerBuilder 9.0, disponibilizou alguns novos eventos, mas ainda não estão
trigados a ações, segundo a Sybase em breve estarão, a saber:
DoDefaultAction
DoHitTest
DoNavigation
DoSelection
GetChildCount
GetDefaultAction
GetDescription
GetFocusObject
GetHelp
GetHelpFile
GetHelpTopic
GetKeyboardShortcut
GetName
GetRole
GetSelection
GetValue
A DataWindow disponibiliza várias funções pré-programadas de manipulação
de dados, na tabela a seguir descreveremos essas funções.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
90
Funções para o controle DataWindow.
Função DataWindow
AcceptText
Retorno
Integer
CanUndo
Boolean
CategoryCount
Integer
CategoryName
String
ClassName
Clear
String
Integer
ClearValues
Integer
Clipboard
Integer
Copy
Integer
CopyRTF
String
Descrição
Aplica o conteúdo da edição de um controle
DataWindow do item corrente ao buffer da
DataWindow.
Retorna TRUE se a última edição pode ser
desfeita para a linha e coluna especifica e
FALSE se a última edição não puder ser
desfeita.
Retorna o número de categorias em um
gráfico especifico do controle DataWindow.
Retorna o nome de uma categoria especifica
de um gráfico em um controle DataWindow.
Retorna o nome do controle DataWindow.
Apaga os textos selecionados em no
controle de edição de um controle
DataWindow, Se o estilo for RichText
apagará
os
textos
selecionados
na
DataWindow.
Apaga todos os itens da lista associada com
a coluna especificada no controle de
DataWindow.
Cópias o gráfico especificado no controle de
DataWindow para o clipboard.
Copia o texto selecionado no controle de
edição para a linha e coluna do controle de
DataWindow para o clipboard. Para uma
apresentação
de
estilo
RichText
DataWindow, copia o texto selecionado no
controle de DataWindow.
Copia o texto selecionado, quadros, e
campos de edição em um controle de
DataWindow como uma linha de texto
formatado com RichText. São incluídos
bitmaps e campos de edição na linha.
PowerBuilder 9.0 Básico
Capítulo 9
91
Funções para o controle DataWindow.
Função DataWindow
Create
Retorno
Integer
CrosstabDialog
Integer
Cut
Integer
DataCount
Long
DBCancel
DBErrorCode
Integer
Long
DBErrorMessage
String
DeletedCount
Long
Descrição
Cria um objeto de DataWindow
usando o código fonte especificado,
substituindo o objeto DataWindow no
controle DataWindow especificado
com o novo objeto de DataWindow.
Exibe a definição Crosstab na caixa
de dialogo, onde o usuário poderá
modificar a definição em tempo de
execução.
Corta o texto selecionado do controle
de edição em uma linha e coluna da
DataWindow e guarda no clipboard.
Para
um estilo de apresentação
RichText
DataWindow, corta o
texto
selecionado
no
controle
DataWindow.
Retorna o número de dados em uma
série, em um gráfico do controle
DataWindow informado.
Cancela o Retrieve em progresso.
Retorna o código de erro gerado pelo
banco de dados. Esta Função esta
obsoleta DBErrorCode é uma e será
descontinuado em uma liberação
futura. Códigos de erro de banco de
dados estão agora disponíveis como
argumentos de evento.
Devolve uma linha que contém o
texto da mensagem de erro gerado
por um erro de banco de dados.
DBErrorMessage
é
uma
função
obsoleta e será descontinuada em
uma liberação futura.
Devolve o número de linhas que
foram
apagadas
do
controle
DataWindow,
mas
não
foram
atualizadas no de banco de dados.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
92
Funções para o controle DataWindow.
Função DataWindow
DeleteRow
Retorno
Integer
Describe
String
Drag
Integer
FilteredCount
Integer
Find
Long
FindCategory
Integer
FindGroupChange
Long
FindNext
Integer
FindRequired
Integer
FindSeries
Integer
GenerateHTMLForm
Integer
Descrição
Apaga a linha especificada no
controle de DataWindow.
Retorna
informações
sobre
a
estrutura do controle DataWindow.
Começos ou fins o arrastamento no
controle de DataWindow.
Devolve o número de linhas que não
são visíveis por causa do filtro atual.
Sintaxe 1: procura a próxima linha
em um controle DataWindow no qual
os dados satisfaçam uma condição
especificada.
Sintaxe 2: Para um
estilo
RichText
acha
o
texto
especificado no controle e realça o
texto se achou. Você pode especificar
a direção de procura e se procura
palavras inteiras ou em partes
Retorna o número da categoria
especificada do gráfico no controle de
DataWindow.
Procura o inicio de uma linha
especificada para a primeira quebra
para o grupo especificado no controle
de DataWindow.
Procura a próxima ocorrência de
texto no controle e realça, enquanto
aplica os critérios em uma chamada
prévia da função de procura (find).
Esta função só se aplica a controles
de DataWindow cujo conteúdo tem o
estilo de apresentação RichText.
Identifica as colunas editáveis que o
usuário não preencheu.
Retorna o número das séries do
gráfico no controle DataWindow.
Cria um formulário HTML que contém
colunas para uma ou mais linhas.
PowerBuilder 9.0 Básico
Capítulo 9
93
Funções para o controle DataWindow.
Função DataWindow
GenerateResultSet
Retorno
Long
GetBandAtPointer
String
GetBorderStyle
Border
(enumerated
)
GetChanges
Long
GetChild
Integer
GetClickedColumn
Integer
GetClickedRow
Long
GetColumn
Integer
GetColumnName
String
GetContextService
Integer
GetData
Double
GetDataPieExplode
Integer
Descrição
Retorna um result set EAServer de
um objeto PowerBuilder rodando
como um componente em EAServer.
Retorna uma string que contém a
faixa na qual o ponteiro fica
atualmente posicionado seguido por
um caráter (~t).
Retorna o tipo de borda da coluna
especificada
no
controle
de
DataWindow.
São:
Box!Lowered!NoBorder!Raised!Resize
Border!ShadowBox!Underline!
Recupera as mudanças feitas a um
DataWindow.
Guarda em uma variável, o nome da
coluna
especificada
da
child
DataWindow .
Retorna o número da coluna no
controle DataWindow que o usuário
clicou ou clicou duas vezes.
Retorna o número da linha no
controle DataWindow que o usuário
clicou ou
clicou duas vezes.
Retorna o número da coluna atual no
controle DataWindow.
Retorna o nome da coluna atual no
controle DataWindow.
Cria uma referência a uma instância
especificada do serviço especificado.
Retorna os valores de dados nas
séries no gráfico do controle de
DataWindow.
Também
veja
GetDataValue.
Informa à porcentagem que uma
fatia é explodida em um gráfico tipo
pie (torta).
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
94
Funções para o controle DataWindow.
Função DataWindow
GetDataStyle
GetDataValue
GetFormat
GetFullState
GetItemDate
GetItemDateTime
GetItemDecimal
GetItemNumber
GetItemStatus
Retorno
Integer
Descrição
Retorna estilos, dependendo do que for
informado para se retornar. Existem 3
sintaxes diferentes.
Integer
Retorna o valor dos dados na série
especificada no gráfico do controle
DataWindow.
String
Retorna qual formato foi usado para
exibição da coluna especificada do
controle DataWindow.
Long
Recupera o estado completo de um
DataWindow/Datastore em uma variável
Blob. Esta função é principalmente
usada em aplicações distribuídas.
Date
Retorna o dado no padrão Date na linha
e coluna especificada do controle
DataWindow.
DateTime Retorna o dado no padrão de DateTime
na linha e coluna especificada do
controle DataWindow.
Decimal
Retorna o dado no padrão decimal na
linha e coluna especificada do controle
DataWindow.
Double
Retorna o dado no padrão Numérico na
linha e coluna especificada do controle
DataWindow.
dwItemSta Retorna o estado do item na linha e
tus
coluna
especificada.
Valores
são:
(enumerat DataModified!New!NewModified!NotModif
ed)
ied!
PowerBuilder 9.0 Básico
Capítulo 9
95
Funções para o controle DataWindow.
Função DataWindow
GetItemString
GetItemTime
GetMessageText
GetNextModified
GetObjectAtPointer
GetParent
GetRow
GetRowFromRowId
GetRowIdFromRow
GetSelectedRow
Retorno
String
Descrição
Retorna os dados no padrão String na
linha e coluna especificada do controle
DataWindow.
Retorna os dados no padrão Time na
Time
linha e coluna especificada do controle
DataWindow.
Retorna o texto de mensagem gerado por
String
uma
DataWindow
CrossTab.
GetMessageText é uma função obsoleta e
será descontinuada em uma liberação
futura. MessageText está agora disponível
como um argumento em um evento
DataWindow que pode ser definido
associado com o pbm_dwnmessagetext.
Retorna o número da primeira linha que
Long
foi modificada no buffer da DataWindow.
Retorna uma string que contém o nome
String
da coluna ou controle de gráfico apontado
no controle DataWindow, separado por
(~t), e o número da linha.
PowerObject Retorna uma referência para o nome do
objeto pai.
Retorna um Inteiro que contém o número
Long
da linha atual no controle DataWindow.
Obtém o número da linha de uma linha
Long
afim em um controle DataWindow,
identificada por uma linha diferente,
associada com aquela linha.
Obtém um identificador único da linha em
Long
um controle de DataWindow do número
da linha associado com aquela linha.
Retorna o número da primeira linha
Integer
selecionada depois do número da linha
especificada no controle DataWindow.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
96
Funções para o controle DataWindow.
Função DataWindow
GetSeriesStyle
Retorno
Integer
GetSQLPreview
String
GetSQLSelect
String
GetStateStatus
Long
GetText
String
GetTrans
Integer
GetUpdateStatus
Integer
GetValidate
String
GetValue
String
GroupCalc
Integer
Hide
Integer
Descrição
Procura externamente o aparecimento de
umas séries em um gráfico. Há várias
sintaxes, enquanto dependendo de que
colocações você queira.
Retorna a declaração de SQL atual que o
controle
de
DataWindow
está
submetendo
ao
banco
de
dados.
GetSQLPreview é uma função obsoleta e
será descontinuada em uma liberação
futura. Sintaxe de SQL está agora
disponível como um argumento de
evento.
Retorna a declaração SELECT atual para o
controle DataWindow.
Retorna o estado atual das flags de status
internas do objeto DataWindow e as
guarda em uma variável Blob. Esta
função é principalmente usada em
aplicações distribuídas.
Retorna o texto no controle de edição na
linha e coluna atual do controle
DataWindow.
Retorna os valores da transação do
objeto DataWindow.
Guarda o número da linha que será
atualizada no dwBuffer e o datatype que
a identifica. GetUpdateStatus é uma
função obsoleta e será descontinuada em
uma liberação futura. GetUpdateStatus
está
agora
disponível
como
um
argumento no controle DataWindow
DBError e eventos de SQLPreview.
Retorna que a regra de validação usada
na coluna especificada do controle
DataWindow.
Retorna um item especificado na lista de
valores para a coluna especificada.
Recalcula as quebras nos grupos no
controle DataWindow.
Faz o controle invisível.
PowerBuilder 9.0 Básico
Capítulo 9
97
Funções para o controle DataWindow.
Função DataWindow
ImportClipboard
Retorno
Long
ImportFile
Long
ImportString
Long
InsertDocument
Integer
InsertRow
Long
IsSelected
Boolean
LineCount
Integer
ModifiedCount
Long
Modify
String
Move
Integer
Descrição
Copia dados do clipboard para o
controle DataWindow.
Copia dados de um arquivo para o
controle DataWindow.
Copia dados de uma string para o
controle de DataWindow.
Inserir um formato de richtext ou
arquivo de texto em um controle
DataWindow. Você usa um parâmetro
de função para especificar como o
conteúdo novo é adicionado, pode ser
inserido a um ponto de inserção, ou
pode substituir todo um conteúdo
existente. Esta função aplica-se a
controles DataWindow cujo conteúdo
tem um estilo RichText.
Insere uma nova linha antes da linha
especificada no controle DataWindow.
Retorna TRUE se a linha especificada
na DataWindow foi selecionada;
Retorna FALSE se a linha não esta
selecionada ou é maior que o número
de linhas no controle DataWindow.
Determina o número de linhas dentro
um controle de edição que permite
linhas múltiplas.
Retorna o número de linhas que
foram
modificadas
no
controle
DataWindow mas não foram contudo
atualizadas no banco de dados.
Usada especificamente para modificar
um controle DataWindow com seu
conteúdo string.
Move o controle DataWindow para
uma localização especificada.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
98
Funções para o controle DataWindow.
Função DataWindow
ObjectAtPointer
Retorno
Descrição
grObjectType Retorna o ObjectType e o nome da séria
OLEActivate
Integer
Paste
Integer
PasteRTF
Long
PointerX
Integer
PointerY
Integer
Position
Integer
PostEvent
Boolean
Print
Integer
PrintCancel
Integer
ReplaceText
Integer
de qualquer ponto clicado do gráfico .
Ativa o OLE para o objeto OLE da linha e
coluna
especificada
no
controle
DataWindow
Insere o conteúdo do clipboard em cima
da linha e coluna atual
controle
DataWindow.
Cola dados de um controle RichText de
uma linha em um controle DataWindow
com estilo RichText.
Retorna a distância que o objeto esta da
extremidade à esquerda do controle
DataWindow.
Retorna a distância que o objeto esta do
topo do controle DataWindow.
Sintaxe 1: Retorna a posição do ponto de
inserção no controle de edição em cima
da
linha
e
coluna
do
controle
DataWindow. Sintaxe 2: Retorna a linha
e coluna do ponto de inserção ou o
começo e fim de texto selecionado em
um controle DataWindow cujo conteúdo
tem o estilo RichText.
Acrescenta um evento ao fim da fila de
mensagem para o controle DataWindow.
Envia
o
conteúdo
do
controle
DataWindow à impressora atual. Esta
função tem várias sintaxes.
Cancela o trabalho de impressão e apaga
o arquivo de spool (se existir) quando o
conteúdo do controle DataWindow é
enviado pela função de print.
Substitui o texto selecionado dentro do
controle edição pela string especificada.
PowerBuilder 9.0 Básico
Capítulo 9
99
Funções para o controle DataWindow.
Função DataWindow
ReselectRow
Retorno
Integer
Reset
Integer
ResetDataColors
Integer
ResetTransObject
Integer
ResetUpdate
Integer
Resize
Integer
Retrieve
Long
RowCount
Long
RowsCopy
Integer
RowsDiscard
Integer
RowsMove
Integer
Descrição
Acessa o banco de dados para recuperar
todas as colunas que podem ser
atualizadas a recuperação pode ser
pontual.
apaga todos os dados de um controle
DataWindow.
Apaga os dados, as categorias, ou as
séries de um gráfico dentro de um objeto
DataWindow com uma fonte de dados
externa.
Reajusta a cor de um ponto de dados à
cor especificada para as séries.
Faz com que controle DataWindow pare
de usar um objeto de Transação.
Reajusta e atualiza as flags do controle
DataWindow.
Muda a largura e altura do controle
DataWindow.
Recupera as linhas do banco de dados
para o controle DataWindow.
retorna o número de linhas atualmente
disponível no controle de DataWindow
(todas as linhas recuperadas menos as
excluídas e as filtradas) e acrescenta as
que foram incluídas.
Cópias uma gama de linhas de um
controle DataWindow para outro ou de
um buffer para outro dentro de um único
controle de DataWindow.
Descartes uma gama de linhas. As linhas
não podem ser restabelecidas sem serem
recuperadas do banco de dados.
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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
100
Funções para o controle DataWindow.
Função DataWindow
SaveAs
Retorno
Integer
SaveAs
Integer
SaveAsAscii
Long
Scroll
Integer
ScrollNextPage
Long
ScrollNextRow
Long
ScrollPriorPage
Long
ScrollPriorRow
Long
ScrollToRow
Integer
SelectedLength
Integer
SelectedLine
Integer
Descrição
Envia os dados representados no
gráfico especificado no controle
DataWindow
para
o
arquivo
especificado,
no
formato
especificado.
Envia o conteúdo do controle
DataWindow ao arquivo especificado,
no formato especificado, com ou sem
títulos de coluna.
Envia o conteúdo de um DataWindow
em um arquivo texto padrão ASCII.
Avança o um controle DataWindow à
direção
especificada
o
número
especificado de linhas.
Avança para a próxima página do
controle DataWindow.
Avança para aproxima linha do
controle DataWindow. ScrollNextRow
muda a linha atual mas não muda a
coluna atual.
Retorna para a primeira pagina do
controle DataWindow.
Retorna para a primeira linha, muda
a linha atual mas não muda a coluna
atual.
Avança ou retrocede para a linha
especificada, muda a linha atual mas
não muda a coluna atual.
Retorna o número total de caráter e
espaços (comprimento) no texto
selecionado no controle de edição em
cima da linha atual e coluna.
Retorna o número da linha no
controle de edição em cima da linha
atual e coluna.
PowerBuilder 9.0 Básico
Capítulo 9
101
Funções para o controle DataWindow.
Função DataWindow
SelectedStart
Retorno
Integer
SelectedText
String
SelectText
Integer
SelectTextAll
Integer
SelectTextLine
Integer
SelectTextWord
Integer
SeriesCount
Integer
SeriesName
String
SetActionCode
Integer
SetBorderStyle
Integer
SetChanges
Long
SetColumn
Integer
Descrição
Retorna a posição começando no controle
editado em cima da linha atual e coluna.
Retorna qualquer texto se selecionado
para a linha atual e coluna do controle
DataWindow.
Seleciona texto dentro de um controle
DataWindow. Você especifica onde a
seleção começa e quanto caractere irá
selecionar.
Seleciona todo o conteúdo de um controle
DataWindow com o estilo RichText .
Seleciona a linha que contém o ponto de
inserção em um controle DataWindow
com o estilo.
Seleciona a palavra que contém o ponto
de inserção em um controle DataWindow
com o estilo RichText.
Retorna o número de séries no gráfico
especificado no controle DataWindow
Retorna o nome das séries especificadas
no gráfico especificado no controle de
DataWindow.
Define a ação um controle DataWindow
disparando um evento. SetActionCode é
uma
função
obsoleta
e
será
descontinuado em uma liberação futura.
Atribui o estilo de borda da coluna
especificada no controle DataWindow.
Aplica
mudanças
capturadas
com
GetChanges a um DataWindow. Esta
função é principalmente usada em
aplicações distribuídas.
Salta para a coluna especificada da
coluna atual no controle de DataWindow.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
102
Funções para o controle DataWindow.
Função DataWindow
SetDataPieExplode
Retorno
Integer
SetDataStyle
Integer
SetDetailHeight
Integer
SetFilter
Integer
SetFocus
Integer
SetFormat
Integer
SetFullState
Long
SetHTMLAction
Integer
SetItem
Integer
SetItemStatus
Integer
Descrição
Explode uma fatia do gráfico PIE em
um gráfico de PIE
Para o dado especifico apontado na
série especifica no gráfico 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.
Mudar a altura de cada linha em uma
faixa especificada
Define os critérios de filtro para o
controle de DataWindow.
Move o foco para o controle
DataWindow.
Move o formato de exibição para a
coluna
especificada
do
controle
DataWindow.
Aplica o conteúdo de uma variável
Blob de DataWindow recebido por
GetFullState a um DataWindow. Esta
função é principalmente usada em
aplicações distribuídas.
Aceita ação e informação de contexto
sobre interação de usuário com o
controle Web DataWindow em um
browser
de
forma
que
HTML
recentemente gerado possa refletir
qualquer mudança.
Move o valor da linha especificada e
coluna do controle DataWindow.
Atribui o status de uma linha e uma
coluna
especificada
do
controle
DataWindow no buffer.
PowerBuilder 9.0 Básico
Capítulo 9
103
Funções para o controle DataWindow.
Função DataWindow
SetPosition
Retorno
Integer
Descrição
SetRedraw
Integer
SetRow
Integer
SetRowFocusIndicator
Integer
Especifica o foco na linha atual para o
controle DataWindow.
SetSeriesStyle
Integer
SetSort
Integer
SetSQLPreview
Integer
SetSQLSelect
Integer
Especifica para a série do gráfico do
controle DataWindow:
Sintaxe 1: seta a cor das séries.
Sintaxe 2: seta o estilo de linha e largura.
Sintaxe 3: seta o padrão de
preenchimento ou símbolo para
marcadores de dados nas séries.
Define os critérios de sort para o controle
de DataWindow. A escolha atual é
executada pela função de sort.
Especifica a declaração de SQL atual para
o controle DataWindow.
Muda declaração SELECT atual para o
controle DataWindow.
SetTabOrder
Integer
SetText
Integer
SetTrans
Integer
Sintaxe 1: Especifica se o controle
DataWindow sempre exibe On TOP na
ordem de frente-para-parte de trás
dentro da window.
Syntaxe 2: Movimenta um objeto dentro
da DataWindow para outra faixa ou muda
a ordem de frente-para-parte de trás de
objetos dentro de uma faixa.
Controla automaticamente novo desenho
do controle DataWindow depois de cada
mudança em suas propriedades ou
conteúdos.
Especifica que a linha especificada é a
linha atual do controle DataWindow.
Muda o valor do TabOrder da coluna
especificada no controle de DataWindow
Substitui o texto para a linha atual e
coluna do controle DataWindow com o
texto especificado.
Especifica os valores no objeto de
Transação
interno
do
controle
DataWindow.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
104
Funções para o controle DataWindow.
Função DataWindow
SetTransObject
Retorno
Integer
SetValidate
Integer
SetValue
Integer
ShareData
Integer
ShareDataOff
Integer
Show
ShowHeadFoot
Integer
Integer
Sort
Integer
TextLine
String
TriggerEvent
Integer
TypeOf
Undo
Object
Integer
Update
Integer
Descrição
Especifica o objeto de Transação para a
DataWindow e provê controle em cima da
transação, inclusive a habilita o commit.
Muda a regra de validação para a coluna
especificada do controle DataWindow.
Especifica o valor do item em uma lista
valida ou na tabela de código da coluna
especificada do controle DataWindow.
Compartilham dados entre o buffer
Primário do controle DataWindow e um
buffer
secundário
do
controle
DataWindow.
Cancela o compartilhamento do buffer
primário para o controle de DataWindow.
Todos
os
controles
DataWindow
secundários
serão
desconectados
e
perderão seus dados.
Faz o controle DataWindow visível.
Em uma DataWindow estilo RichText,
exibe os painéis para editar o cabeçalho e
rodapé ou esconde os painéis e retorna a
edição do texto principal.
Classifica
as
linhas
do
controle
DataWindow baseado em seus critérios
de classificação (sort) atuais.
Exibe Informações sobre o controle
editado em cima da linha e coluna
corrente.
Chama um evento especificado no
controle de DataWindow e executa o
script para o evento.
Retorna o tipo do controle.
Cancela as últimas modificações em um o
controle de edição para a linha e coluna
corrente.
Envia ao banco de dados todos os
Inserts, Deletes, e Updates do controle
DataWindow.
PowerBuilder 9.0 Básico
Capítulo 9
105
Montando um Objeto DataWindow
Nesta etapa, iremos nos aprofundar dos conceitos da DataWindow, iremos:
!"
!"
!"
!"
Criar e visualizar um objeto DataWindow;
Aperfeiçoar a visualização da DataWindow;
Vincular duas DataWindow;
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 fixação.
NEW, no template selecione DataWindow e selecione o
Clique em
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 verificação 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 não aconteça, 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 disponíveis da tabela será disponibilizada para seleção.
Selecione as colunas: id, fname, lname. Mantenha a ordem de seleção 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
106
Montando um Objeto DataWindow
Na figura abaixo mostramos o template Quick Select.
Quando se seleciona as colunas, automaticamente elas são inseridas no
template de colunas, disponibilizados abaixo do template de seleção, o
template de colunas disponibiliza as linhas de : Column, Sort, Criteria e Or.
Onde :
Column
Sort
Criteria
OR
: Indica o nome da coluna selecionada;
: Define como os dados recuperados serão apresentados,
Ascendentes ou Descendente;
: Realiza um filtro no momento da seleção dos dados,
aceita todos os modelos do padrão SQL;
: Operador para combinações lógicas.
PowerBuilder 9.0 Básico
Montando um Objeto DataWindow
Os operadores lógicos aceitáveis :
Operadores
=
>
<
<>
>=
<=
LIKE
NOT LIKE
IN
NOT IN
Descrição
Igual a
Maior que
Menor que
Diferente de
Maior ou Igual a
Menor ou Igual a
Contém
Não Contém
São iguais a
São diferentes de
Exemplos :
Adquirido por : Fabrício Moreira da Silva
Capítulo 9
107
PowerBuilder 9.0 Básico
Capítulo 9
108
Montando um Objeto DataWindow
Rolando a VerticalScrollbar à esquerda,
permitindo múltiplos critérios de filtragem.
o
template
interno
rolará,
Para continuar a construção do objeto DataWindow, clique em OK, Next e
Finish.
O objeto DataWindow será gerado, no template de DataWindow.
Do mesmo modo, teremos a visão da seleção definida, no template Preview
da DataWindow.
Agora salve a
posteriormente.
DataWindow
gerada
para
que
tenhamos
acesso
à
PowerBuilder 9.0 Básico
Capítulo 9
Montando um Objeto DataWindow
Clique em
Save, e salve com o nome de d_lista01, em nossa
aplicação exemplo_1.
Adquirido por : Fabrício Moreira da Silva
109
PowerBuilder 9.0 Básico
Capítulo 9
110
Aperfeiçoando a visualização da DataWindow
No PowerBuilder 9.0 podemos modelar a DataWindow para uma visualização
mais apropriada ao negocio desenvolvido. Sempre que se cria um objeto
DataWindow ele seguirá uma apresentação padrão, mas nem sempre a
apresentação padrão é a melhor forma de visualizarmos os dados, utilizando
os recursos de edição do painter de DataWindow, com facilidade poderemos
maquiar o objeto DataWindow.
Abra o objeto DataWindow: d_lista01
Note que, o cabeçalho não 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 células estarão marcadas com selecionadas.
Agora
na
Painterbar2,
Alinhamentos, o ícone
as colunas se alinharão.
selecione
no
ícone
Alinhar pela direita,
Clique em qualquer parte branca do objeto DataWindow para
remover a seleção.
PowerBuilder 9.0 Básico
Capítulo 9
111
Aperfeiçoando a visualização 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.
Então teremos:
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
112
Aperfeiçoando a visualização da DataWindow
Ajuste as colunas se baseando no Preview DataWindow, até conseguir uma
formatação mas bem definida entre as colunas.
Utilize os botões de ajustes para auxiliar na formatação, são eles:
Conteúdo da coluna
Justifica o texto.
Alinha a direita
Centraliza
Alinha a esquerda
OBJETOS
Alinha objetos à
esquerda
Alinha
direita
Centraliza
os
objetos
selecionados
horizontalmente
Alinha os objetos
selecionados pelo
topo
Padroniza
os
espaços
horizontalmente
entre os objetos
selecionados
Padroniza
os
objetos
selecionados
quanto
a
sua
largura
Padroniza
os
objetos
selecionados
quanto
a
sua
largura e altura
objetos
à
Centraliza
os
objetos
selecionados
verticalmente
Alinha os objetos
selecionados
pela
base
Padroniza
os
espaços
verticalmente entre
os
objetos
selecionados
Padroniza
os
objetos
selecionados
quanto a sua altura
PowerBuilder 9.0 Básico
Capítulo 9
113
Aperfeiçoando a visualização da DataWindow
Com o botão
Selection, podemos selecionar objetos para incluir no
LINE para incluir uma
objeto DataWindow, selecione
cabeçalho(Header), clique no ponto onde você quer incluir a linha.
linha
no
Para modificar seu tamanho, clique no objeto linha inserido e com a tecla
Shift pressionada, clique nas setas do teclado para realizar a operação.
Você também poderá clicar no objeto linha e passar o mouse sobre o objeto,
quando o ícone do mouse mudar para uma cruz, clique no botão direito do
mouse continue pressionando e arraste até o tamanho desejado.
No final seu objeto DataWindow deverá ficar com a aparência da figura
abaixo.
Clique em
configurações.
Save para salvar o objeto DataWindow com as novas
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
114
Vinculando duas DataWindow
Na montagem do primeiro objeto DataWindow, selecionamos algumas colunas
para visualização. Nessa etapa, vincularemos outro objeto DataWindow e
trabalharemos com seleção de dados, para tal, teremos que utilizar o
Retrieval Argument e a clausula WHERE como critério de seleção para o
segundo objeto DataWindow, que será passado em tempo de execução.
Para isso teremos que seguir os seguintes passos:
1.
2.
3.
4.
5.
6.
Selecionar o Data Source e o estilo de apresentação;
Selecionar a tabela e as colunas;
Definir o Retrieval Argument;
Especificar a clausula WHERE;
Conferir no template Preview se esta tudo certo;
Salvar o objeto DataWindow
NEW selecione DataWindow, selecione o estilo Freeform.
Clique em
Clique em OK.
No template Wizard que irá se abrir, selecione SQL Select para o Data
Source e certifique-se que a caixa de verificação Retrieve on Preview
esteja marcada. Clique em Next.
A caixa de dialogo Select Table aparecerá, selecione a tabela customer.
Clique em Open.
Você também pode selecionar a tabela com um duplo clique.
PowerBuilder 9.0 Básico
Capítulo 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 botão 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 definição 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 definições no objeto
DataWindow, associado a esse nome, o tipo de variável, se String,
Numérica, Date, Time, Integer etc. Disponíveis na caixa de seleção.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 variável string, o tipo de
dado do Retrieval Argument deverá ser uma variável do tipo string.
Defina como a figura abaixo. Clique em OK, para continuar.
Name
Type
: pass_id
: 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,
estarão disponíveis para a seleção, selecione "customer"."id".
PowerBuilder 9.0 Básico
Capítulo 9
117
Vinculando duas DataWindow
No quadro Operator, selecione = (igual).
No Quadro Value, clique com o botão direito do mouse e no menu-popup
selecione Argument e na caixa de dialogo, selecione a variável 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 noção das ações 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
118
Vinculando duas DataWindow
Aparecerá a caixa de dialogo para se especificar o Retrieval Argument, isto
se dá pelo fato da opção Retrieve On Preview estar ligada, então digite 101
e poderá ver a recuperação dos dados relativos a customer"."id" = 101,
definidos na clausula WHERE.
Visão do objeto DataWindow.
PowerBuilder 9.0 Básico
Capítulo 9
119
Vinculando duas DataWindow
Visão dos dados selecionados, DataWindow Preview.
Para selecionar outros dados no painter de construção do objeto DataWindow,
Retrive, e informe um outro valor na caixa de dialogo do
clique em
Retrieval Argument.
Clique em
exemplo1.
Save e salve com o nome de d_lista02, na aplicação
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
120
Vinculando duas DataWindow
Com a criação do segundo objeto DataWindow para a tabela customers,
temos que pensar que esses dois objetos serão incluídos 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 poluída e de difícil
navegação.
O que podemos fazer para esta melhora?
1. Rearrumar as colunas e labels;
2. Alinhar as colunas e labels;
3. Facilitar a visualização 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 visão inicial do objeto que criamos é :
PowerBuilder 9.0 Básico
Capítulo 9
121
Vinculando duas DataWindow
Com base na edição e seguindo o caminho da alteração do objeto
DataWindow d_lista01, altere o objeto d_lista02 para que ele tenha a
aparência abaixo.
OBS: Os campos da DataWindow que aparecem em negrito chamamos de
Label.
Label é uma descrição que identifica a coluna.
A novidade em relação a d_lista01 é a coluna State, que apresenta uma
visualização 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 botão 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
122
Vinculando duas DataWindow
Veja o exemplo:
Quando terminar de arrumar o objeto DataWindow d_lista02, clique em
Save para salvar as alterações.
Dicas: Para trabalhar com as colunas e label´s, utilize os botões de ajustes
que descrevemos.
Clicando em uma parte branca do objeto DataWindow com o botão esquerdo
do mouse e mantendo-o pressionado, arraste o mouse sobre várias células,
(colunas e label´s) uma caixa de seleção surgirá, selecionando todas as
células a qual a caixa de seleção estiver envolvendo. Veja figura.
Neste caso serão selecionados todos os campos a qual a caixa de seleção esta
envolvendo.
PowerBuilder 9.0 Básico
Vinculando
objeto
DataWindow
Capítulo 9
DataWindow
a
um
123
controle
Após criar e salvar os objetos DataWindow esses objetos já estão 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 aplicação.
Assim teremos uma janela com uma funcionalidade de recuperação de dados
de uma base de dados. Para isso seguiremos os seguintes passos:
1.
2.
3.
4.
Incluir o controle DataWindow a Window (janela);
Incluir os objetos DataWindow ao controle DataWindow;
Vincular a janela a aplicação;
Executar e depurar a aplicação.
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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
124
Incluindo controle DataWindow a Window (janela)
No template propriedades à direita no item DataObject. Clique no botão de
seleção mais à direita e selecione o objeto DataWindow, d_lista01.
Note que não foi possível visualizar todo o objeto d_lista01 agora iremos
redimensionar o controle para se poder visualizar todo o objeto. Clique com o
botão 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 botão 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
também pode dar a eles o nome que desejar, mas sempre que possível, siga
as regras já vistas para identificação de controles e objetos.
Agora repetiremos toda a operação anterior, para incluirmos o objeto
DataWindow d_list02, em um novo controle DataWindow abaixo do controle
dw_1.
PowerBuilder 9.0 Básico
Capítulo 9
125
Incluindo controle DataWindow a Window (janela)
Veja como ficou:
Você pode executar a sua aplicação e visualizar como o controle DataWindow
será apresentado na janela.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
126
Incluindo controle DataWindow a Window (janela)
Mas notará que nenhum dado foi recuperado da base de dados porque ainda
não 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, através da tabela customers.
Usaremos a transação padrão, a SQLCA, como já vimos em capítulos
anteriores.
Os parâmetros necessários para serem informados são:
sqlca.dbms
: Recebe o tipo de conexão nesse caso ODBC.
sqlca.dbparm
: Recebe os parâmetros de conexão como Nome do
profile definido, o nome do usuário do banco e a senha
de acesso para o usuário que esta pedindo a conexão.
// Aplica os parâmetros do DBMS de teste, a transação SQLCA
sqlca.dbms
sqlca.dbparm
="ODBC"
="ConnectString='DSN=EAS Demo DB
V9;UID=dba;PWD=sql'"
Após a definição dos parâmetros, conectamos ao banco.
// Conecta com o banco
Connect;
O banco será ativado e estará disponível para acesso, para testarmos
usamos:
//Testando a conexão
If sqlca.sqlcode < 0 Then
MessageBox ("Erro:
dados", &
Impossivel conectar com o banco de
sqlca.sqlerrtext, Exclamation!)
HALT
End If
PowerBuilder 9.0 Básico
Capítulo 9
127
Incluindo controle DataWindow a Window (janela)
//Se tudo estiver OK
//associamos o controle DataWindow a transação SQLCA
//e recuperamos os dados
dw_1.settransobject(SQLCA)
dw_1.Retrieve()
Nesse ponto, associamos o primeiro controle DataWindow a transação do
banco agora associamos o segundo controle a mesma transação.
dw_2.settransobject(SQLCA)
Note que não faremos a recuperação dos dados neste momento porque os
dados para este controle deverão ser recuperados a partir da seleção no
controle DataWindow dw_1.
Para que o controle DataWindow dw_1 execute a seleção para o controle
DataWindow dw_2 dê um duplo clique no controle dw_1, procure na dropdown de eventos, o evento “clicked” e escreva em PowerScript o código a
seguir.
//Cria a variável numérica que recebera o código para a
//recuperação em dw_2
integer wk_id
//Recupera a seleção
wk_id = dw_1.GetItemNumber(row, "id")
//Recupera os dados segundo a seleção em dw_1
dw_2.Retrieve(wk_id)
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
128
Incluindo controle DataWindow a Window (janela)
Clique em
executar.
Save e salve a sua aplicação e em
Run
para
Teremos então:
Essa janela só tem a funcionalidade de consulta a partir de um pequeno dado
se pode acessar uma gama maior de informações pertinentes ao dado
selecionado.
PowerBuilder 9.0 Básico
Capítulo 9
129
Incluindo controle DataWindow a Window (janela)
O próximo passo será o desenvolvimento de rotinas de inclusão, atualização e
alteração. Com esses procedimentos teremos uma visão bem ampla de como
se pode manipular dados através de controles DataWindow e de como é
simples e seguro faze-lo.
A manipulação de dados com controles DataWindow, embora seja uma tarefa
simples pode se tornar complexa assim como, tão complexa for a sua
aplicação 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 não se limita às caixas de
diálogos e wizards disponibilizados pelo PowerBuilder 9.0. Através 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,
além disso, você também poderá trabalhar com CURSOR e PROCEDURE
para recuperar dados em um objeto DataWindow.
Uma outra forma de se trabalhar com um objeto DataWindow é a utilização
de DataStore, o DataStore é um controle DataWindow não visual, ou seja, é
um controle DataWindow invisível, Quase todas as funcionalidades de um
controle DataWindow estão disponibilizados, menos as funcionalidades visuais
que não caberiam ao DataStore, tendo em vista que ele não permite
visualizar dados e só e somente só, recuperar e manipular dados.
Se você entendeu o que é um controle DataWindow, tenha certeza que
também entendeu o que é um DataStore. No decorrer desse capítulo iremos
exemplificar as diversas técnicas de se trabalhar com o objeto DataWindow.
Para que o exemplo comece a ficar mais completo iremos incluir a rotina de
inclusão de dados. Utilizaremos alguns conceitos interessantes que já foram
explicados, mas não exemplificados, como criar um evento de usuário,
chamar estes eventos e incluir objetos na janela.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
130
Incluindo parâmetros de atualização
Em nosso exemplo, incluiremos agora três rotinas: de inclusão, de exclusão e
de atualização dos dados no banco, para isto, incluiremos três controles de
botão de comando, e em cada controle adicionaremos sua programação
PowerScript correspondente.
Clique em
CommandButton e clique do lado direito do controle
DataWindow dw_1, assim será incluído o controle CommandButton na janela
w_001.
Como iremos incluir três controles, clique com o botão direito mouse sobre o
controle CommandButton que acabou de incluir na janela e no menu-popup
que aparecerá, selecione a opção Duplicate. Assim o controle será
automaticamente inserido na janela.
PowerBuilder 9.0 Básico
Capítulo 9
131
Incluindo parâmetros de atualização
Repita a operação e teremos os três controles na janela w_001.
Agora incluiremos a programação correspondentes à cada controle, para que
esse exerça a função a qual se vez necessária a sua inclusão na janela.
Rotina de inclusão
Clique no primeiro controle de botão de controle e selecione suas
propriedades, no template que surgira à direita preencha os atributos para
esse controle, conforme a figura abaixo.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
132
Rotina de inclusão
A rotina de inclusão 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 função InsertRow (linha). Essa
função 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 número da linha que você quer incluir
long
: retorna a linha que será incluída ou -1 se houver erro
na tentativa de inclusão da linha no controle
DataWindow.
Dê um duplo clique no controle cb_incluir e selecione o evento “Clicked” e
escreva o código PowerScript abaixo:
Praticando:
No template em branco, clique com o botão do mouse direito selecionando
Paste Special, e depois Object, na lista que surgirá selecione dw_2.
Agora coloque um ponto (.) após dw_2, clique com o botão direito do mouse
e selecione Function e Built-in. Na lista que surgirá procure por InsertRow.
Com um duplo clique selecione a função.
Agora coloque o zero(0) entre os parênteses. Pronto o PowerBuilder 9.0
montou para você a função InsertRow, o parâmetro zero(0) irá inserir uma
linha no final do Buffer do controle DataWindow fazendo desta linha, a linha
corrente.
PowerBuilder 9.0 Básico
Capítulo 9
133
Rotina de inclusão
Você poderia ter digitado direto, mas o PowerBuilder 9.0 disponibiliza o
autoscript para facilitar a edição e evitar erros de sintaxe provenientes de
esquecimentos de detalhes da função.
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 conteúdo desse controle.
Caso você não o faça, a função InsertRow (0), irá incluir uma linha após a
linha que estiver ativa, caso exista uma em dw_2, se não existir nenhuma
linha ativa irá mostrar diretamente, então 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 usuário. Então
sempre é aconselhável limpar o controle DataWindow, antes de uma inclusão,
para este tipo de visualização que estamos utilizando existem outros modos
de se exibir os dados que não se aplicaria esta regra.
Para limpar o controle DataWindow utilizaremos a função Reset ().
Sintaxe: integer dwcontrole.Reset ( )
Onde: dwcontrole : é o nome do controle DataWindow ou DataStore.
Integer
: Retorna 1, se a execução foi bem sucedida e -1 se
houver erro.
Então agora digite antes do comando dw_2.InsertRow (0), dw_2.Reset ().
Clique em
executar.
Save e salve a sua aplicação em
Adquirido por : Fabrício Moreira da Silva
Run
para
PowerBuilder 9.0 Básico
Rotina de inclusão
Clique no botão Incluir e teste.
Capítulo 9
134
PowerBuilder 9.0 Básico
Capítulo 9
135
Rotina de inclusão
Navegue pela dw_2 com a ajuda da tecla Tab note que agora podemos incluir
uma nova linha na dw_2, mas ainda não podemos incluir esta linha nova na
base de dados. Então teremos que montar uma rotina para executar esta
função.
Clique na aba Layout selecione com um duplo clique o último controle
CommandButton. No template propriedade à direita, preencha:
Após preencher as propriedate para o botão Gravar agora teremos que
colocar o código PowerScript para ser executado quando o botão for
pressionado e esta ação deve ser de gravação na base de dados. Para tal,
utilizaremos a função UpDate().
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
136
Rotina de inclusão
Sintaxe:
integer dwcontrole.Update ({ boolean accept {,boolean resetflag} })
Onde: dwcontrole : é o nome do controle DataWindow ou DataStore.
Integer
: Retorna 1, se a execução foi bem sucedida e -1 se
houver erro.
Accept
: variável booleana que informa ao PowerBuilder 9.0
se ele deve proceder aos testes de validação
antes de gravar na base.
!" TRUE: (Default) procede ao teste e retorna se
houver erro.
!" FALSE: grava na base.
Resetflag
: variável booleana que informa ao PowerBuilder se ele
deve resetar as flags de controle após o update ou
não.
!" TRUE: (Default) Reseta as flags.
!" FALSE: Não reseta as flags.
Dê um duplo clique no controle cb_gravar, selecione o evento Clicked, e
escreva o código PowerScript abaixo:
Clique em
executar.
Save e salve a sua aplicação e
em Run para
PowerBuilder 9.0 Básico
Capítulo 9
137
Rotina de alteração
A rotina de alteração já esta pronta é a combinação da rotina de consulta com
a rotina de gravação. Então você pode clicar na dw_1, editar o item
selecionado, alterar este item e clicar em Gravar.
A novidade é o terceiro botão, 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 botão Ler Dados (retrieve).
Clique no CommandButton que esta no meio e preencha suas propriedades.
Clique na aba “Clicked” e digite os comandos para recuperação dos dados.
Usaremos o Retrieve() igual para a recuperação no evento Open da
aplicação.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
138
Rotina de alteração
Clique em
executar.
Save e salve a sua aplicação e em
Run
para
Poderíamos também automatizar a recuperação dos dados sem precisar
incluir um botão para isto. Umas das soluções seria incluir a rotina do botão
Ler Dados na linha de IF após o comando Commit.
Outra solução seria atualizar a dw_1 sem precisar usar o comando Retrieve
(), assim não estaríamos contribuindo para o trafego na rede e a aplicação
ficaria muito mais rápida.
Vamos demonstrar as duas embora, a segunda seja uma solução mais
profissional. A primeira não esta errada depende do enfoque do seu negócio.
Por exemplo: imagine uma grande rede com grande volume de dados, e o
usuário precise acessar vários dados. E esses dados estão sempre sofrendo
alteração. Então se faz necessário o uso do Retrieve, para cada atualização ou
grupos de atualização.
PowerBuilder 9.0 Básico
Capítulo 9
139
Rotina de alteração
Primeira solução:
Para o segundo método usaremos a aplicação da rotina de alteração do
controle DataWindow dw_1. Através do uso do evento já disponibilizado pelo
PowerBuilder 9.0 para controles DataWindow, UpdateEnd. Esse evento
sempre é disparado ao final de uma atualização através 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 seleção de script ao centro da parte superior, selecione o
evento UpdateEnd.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
140
Rotina de alteração
Segunda solução:
Para se incluir ou substituir dados em um controle DataWindow, utiliza-se à
função SetItem. Para se recuperar dados de um controle DataWindow se
utiliza à função GetItemNumber, GetItemString, GetItemDate,
GetItemDateTime e GetItemTime. Cada função 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
Row
: é o nome do controle DataWindow/DataStore.
: Dado numérico que representa a linha do dado
no objeto DataWindow.
Column
: Nome ou a posição (numérica) da coluna.
Dwbuffer(opcional) : Identifica qual buffer o dado será recuperado na
DataWindow.
Originalvalue(optional):Variável booleana, que indica se a
recuperação 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 Básico
Capítulo 9
141
Rotina de alteração
Segunda solução:
Sintaxe:
integer dwcontrole.SetItem ( long row, integer column, any value )
integer dwcontrole.SetItem ( long row, string column, any value )
Onde:
dwcontrole
row
column
value
: é o nome do controle DataWindow/DataStore.
: Dado numérico que representa a linha do dado
no objeto DataWindow.
: Nome ou a posição (numérica) da coluna.
: Valor que deverá ser incluído na DataWindow.
Notando a sintaxe da função SetItem verifica-se a necessidade de se informar
que linha deve ser alterada. Essa informação só é possível se obter através do
evento “Clicked!” da dw_1. Onde montamos a rotina de recuperação de
dados para a dw_2.
Para que se passe esse valor para um outro evento de um outro objeto,
podemos criar uma variável do tipo Instance, como definido anteriormente.
Clique caixa de seleção de script a esquerda da parte superior, selecione
Declare Instance Variable. Defina a variável long wk_linha conforme a
figura abaixo.
Agora clique na aba “Clicked” e atribua o valor da linha clicada (row) a
variável de instacia wk_linha.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
142
Rotina de alteração
Segunda solução:
Clique na aba Layout e de um duplo clique no controle DataWindow dw_2
combinando a função SetItem com a função GetItemNumber e GetItem
String. teremos:
Para uma melhor documentação, é sempre melhor utilizar o nome da coluna
na sintaxe, mas pode-se utilizar o número (posição) que ela ocupa no banco
de dados. Onde : id seria posição 1 e fname posição 2.
Caso tenha implementado a primeira opção coloque as linhas dw_Reset( ) e
dw_Retrieve( ) como comentário para testar a segunda opção.
PowerBuilder 9.0 Básico
Capítulo 9
143
Rotina de alteração
Segunda solução:
Clique em
executar.
Save e salve a sua aplicação e em
Run
para
Para completar este exemplo de manipulação de dados em um controle
DataWindow. Inclua um botão de exclusão de dados.
Rotina de Exclusão
CommandButton e depois na posição da janela que você
Clique em
quer incluir o botão(coloque logo abaixo do botão Gravar). E no template
Propriedade preencha:
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
144
Rotina de Exclusão
Agora de um duplo clique no botão cb_excluir. No evento “clicked”,
programe a rotina para exclusão usando a função DeleteRow.
Sintaxe : integer dwcontrole.DeleteRow ( long row )
Onde : dwcontrole
: é o nome do controle DataWindow/DataStore.
row
: Dado numérico 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 inclusão, a variável
wk_linha guardará a linha em que se clicou. Então podemos utilizar esta
mesma variável para pegar a linha clicada. Note, que desta vez programamos
o botão no modo Enable para desabilitado e este só estará habilitado caso
se selecione uma linha à excluir.
A exclusão em uma base de dados é uma transação que deve ser cautelosa.
Pôs, não tem retorno. Então devemos sempre pedir uma confirmação para
executarmos esta tarefa. Para isto utilizaremos a função 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 atenção.
!" Information! (Default)
!" StopSign!
!" Exclamation!
!" Question!
!" None!
button: (opcional) Que tipo de botão se queira mostrar dependendo
do tipo de questionamento que se faça.
!" OK!
— (Default) OK
!" OKCancel!
— OK e Cancelar
!" YesNo!
— Sim e Não
!" YesNoCancel!
— Sim, Não, e Cancelar
!" RetryCancel!
— Repetir e Cancelar
!" AbortRetryIgnore! — Abortar, Repetir e Ignora
PowerBuilder 9.0 Básico
Capítulo 9
145
Rotina de Exclusão
Programando o botão.
Dê um duplo clique no objeto DataWindow dw_1 no evento “Clicked”
adicione o código abaixo:
Agora de um duplo clique no botão Excluir e programe a rotina de exclusão.
Note que a função DeleteRow apaga o dado selecionado do controle
DataWindow. Para se ter o efeito refletido na base de dados precisamos
atualizar a base. Utilizaremos a função Update.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 9
146
Rotina de Exclusão
Então teremos:
Nesse nosso exemplo poderemos notar a exibição de uma mensagem de erro
após 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
função UpDate poderemos ver a funcionalidade da função DeleteRow,
apagando o item selecionado no controle DataWindow que é nosso foco.
Manipular dados em um controle DataWindow.
Capítulo 10
DataWindow : Técnicas avançadas
Buffers Internos
Detectar a validação
Detectar o Tipo de dado
Detectar regras de validação
Detectar mudanças no item
Usando Filtros
Classificando
Cláusula Where para Update e Delete
Modify e Describe
Função Evaluate( )
Propriedade Object
Parametrizando com a cláusula DATA
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
147
DataWindow : Técnicas avançadas
Neste capítulo veremos algumas expressões utilizadas no controle
DataWindow para acessar os dados de um objeto DataWindow, tais
expressões permitem acessar um dado específico ou retornar um grande
volume de dado.
Para isso teremos que entender um pouco mais sobre o controle
DataWindow. Esse controle é responsável pela recuperação, manipulação e
atualização de dados no banco de dados, dados quando recuperados, serão
armazenados em buffers internos do objeto DataWindow.
Buffers Internos.
Buffer
Original
Primary
Delete
Filter
Descrição
Dados recuperados do BD que não se alteram.
É a primeira imagem do original, aceita alteração e inserção.
Itens que foram apagados do buffer primário.
Dados que não serão mostrados, devido ao filtro de seleção
definido no objeto DataWindow.
Esses buffers sempre serão criados na máquina cliente e lá permanecerão até
a atualização UPDATE() ou descarte dos dados pela aplicação que os solicitou.
Toda manipulação de dado através de um controle DataWindow segue
algumas regras para a sua transferência entre o controle DataWindow e
o buffer primário. São elas:
!"
!"
!"
!"
Detectar
Detectar
Detectar
Detectar
a validação;
o tipo de dado;
regras de validação;
mudanças no item.
Após essas regras retornarem todas como verdade ou zero, o dado do
item selecionado é então transferido para o buffer primário.
Capítulo 10
PowerBuilder 9.0 Básico
148
DataWindow : Técnicas avançadas
Detectar a validação.
O controle DataWindow dispara a validação quando:
1. Quando a coluna que foi alterada perde o foco;
2. Quando a tecla Enter é pressionada;
3. Ou a função AcceptText( ) é executada.
Detectar o Tipo de dado.
Todos os controles de edição são 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 não for compatível o
evento ItemError é disparado.
Detectar regras de validação
Nessa etapa o dado é submetido a regras de validação para a coluna. Estas
regras são definidas no banco de dados ou na criação da DataWindow para
cada coluna.
Detectar mudanças no item
O dado digitado é comparado com o dado no buffer primário da DataWindow.
Se o dado não foi alterado, esta etapa termina, caso contrário, o evento
ItemChanged é disparado possibilitando a execução de alguma validação de
usuário no evento ItemChanged. Após a execução da validação de usuário,
se existir, o dado é transferido para o buffer primário.
A execução de um script do evento ItenError será determinada pelos
códigos de retorno, são eles:
Código de
retorno
0
1
2
3
Ação
(Default) Rejeita o dado e exibe uma tela de mensagem de erro.
Rejeita o dado sem exibir uma tela de mensagem de erro.
Aceita o dado.
Aceita o dado, sem alterar o buffer primário e permite que o foco
mude de coluna.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
149
DataWindow : Técnicas avançadas
Se o evento ItenChanged for disparado, a seqüência de execução será
determinada pelos códigos de retorno, são eles:
Código de
Ação
retorno
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 estarão sempre disponíveis caso
disparados, são eles :
ROW
DWO
DATA
Contém o número da linha do item que esta sendo alterado.
Referência para a coluna que disparou o evento.
O conteúdo da coluna que disparou o evento.
Exemplo:
dwo.Type
dwo.Name
: Retorna o tipo de controle que disparou o evento.
: Retorna o nome da coluna que disparou o evento.
PowerBuilder 9.0 Básico
Capítulo 10
150
DataWindow : Técnicas avançadas
Usando Filtros.
O desenvolvedor poderá limitar o acesso que o controle DataWindow tem aos
dados seja por segurança ou para facilitar o tratamento pelo usuário. Assim
poderá com apenas um acesso a base de dados, disponibilizar os dados de
várias maneiras diferentes (filtrados).
Como funciona: Depois que o objeto DataWindow recupera os dados, aplicase o filtro no buffer primário gerando assim o buffer Filter com todas as
linhas que não atenderam as condições determinadas pelo filtro.
A função utilizada é a SetFilter (condição), para definir e aplicar o filtro
utiliza-se a função Filter ().
É sempre aconselhável utilizar a função SetRedraw ( boolean redraw ) em
conjunto com a função Filter( ) essa função tem como parâmetro TRUE ou
FALSE.
False - interrompe a montagem em tempo de execução de um controle
DataWindow. O que faz a aplicação do filtro ser mais rápido para grandes
grades de dados.
True - Ativa a montagem em tempo de execução de um controle
DataWindow.
Exemplo:
String s_filtro
s_filtro = “salario>1000 and departamento=’Informática’ ”
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
necessário executar a função GroupCalc( ) para se recalcular os
agrupamentos.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
151
DataWindow : Técnicas avançadas
Classificando.
Pode-se ordenara a recuperação de dados tanto no servidor quando no
cliente. No servidor usamos o ORDER BY no comando SELECT. Em tempo de
execução utilizamos SetSort (). Para definir ou modificar a classificação
corrente. Este método possibilita a pesquisa pelo usuário por dados
específicos.
Sintaxe : integer dwcontrole.SetSort ( string format )
Exemplo :
//Classifica dw_1, ascendente por nome e descendente por salário
dw_1.SetSort(“nome A, salario D”)
Pode-se usar o número da coluna, com parâmetro.
dw_1.SetSort(“#1 A, #10 D”)
Onde : #
1
A
10
D
:
:
:
:
:
É obrigatório antes do número da coluna;
Posição da coluna;
Ascendente;
Posição da coluna;
Descendente.
A função SetSort( ) apenas define os critério de classificação. Para efetivar a
classificação na DataWindow, utilize a função Sort( ).
dw_1.Sort( )
Para uma base com grande volume de dados, utilize a função
SetRedraw( ).
Ao se classificar uma DataWindow com agrupamentos, faz-se
necessário executar a função GroupCalc( ) para se recalcular os
agrupamentos.
PowerBuilder 9.0 Básico
Capítulo 10
152
DataWindow : Técnicas avançadas
Conhecendo a função UpDate ().
Quando se utiliza a função UpDate internamente o PowerBuilder executa
vários comandos de SQL. São eles:
DELETE
UPDATE
INSERT
: Um para cada linha antiga do buffer delete;
: Um para cada linha antiga modificada nos buffers, Primary e
Filter;
: Um para cada linha nos buffers, Primary ou Filter.
Sempre que se chama a função UpDate um comando de atualização de
banco é enviado por vez. Se algum erro for retornado todo o processo de
atualização será interrompido e o evento DBError do controle DataWindow
que chamou a atualização será disparado. E a função UpDate retornará -1.
Para visualizar os comandos SQL gerados para atualização dos dados
no banco de dados acesse os argumentos do evento SQLPreview no
controle DataWindow que chamou a atualização.
O PowerBuilder 9.0 controla as atualizações 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 técnica de analisar as características
definidas pelo desenvolvedor na criação do objeto DataWindow.
Estas características são definidas no painter DataWindow. Selecione na
PowerBar1, Rows e UpDate Properties.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
153
DataWindow : Técnicas avançadas
O Wizard “Specify UpDate Properties” se abrirá e as propriedades para as
atualizações estarão disponíveis para seleção. São eles:
Cláusula Where para Update e Delete.
!" Key Columns;
!" Key and Update Columns;
!" Key and Modified Columns.
Key Columns : Somente a chave primária da tabela selecionada é
utilizada na cláusula Where.
Vários usuários podem alterar o dado ao mesmo tempo.
Key and UpDate Columns : A chave primária e as colunas
atualizáveis da DataWindow serão usadas na cláusula WHERE.
Esta opção pode notificar a outro usuário, que o item foi
alterado.
Key and Modified Columns : A chave primária e todas as colunas
alteradas da DataWindow serão usadas na cláusula WHERE.
Esta opção permite que usuários alterem itens distintos.
Allow Update : Habilita o update para a tabela. Se desligada a
DataWindow é apenas de leitura, normalmente utilizada para relatórios.
UpDateTable Columns : Seleciona as colunas que serão atualizáveis
as colunas não selecionadas não serão atualizadas com a função
UpDate.
Table to Update : Especifica a tabela que será atualizada apenas uma
tabela. Se existir junções na query da DataWindow apenas uma delas
poderá ser atualizada.
PowerBuilder 9.0 Básico
Capítulo 10
154
DataWindow : Técnicas avançadas
Key Modification : Define o modo de alteração da chave primária.
Pode ser definida como: Apaga o item e inclui um novo item na
base ou Atualiza o item corrente alterando a chave primária.
Essa opção 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” serão excluídos todos os
itens nas tabelas relacionadas.
Unique Key Columns: Especifica as colunas que fazem parte da
chave primária.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
155
DataWindow : Técnicas avançadas
Modify e Describe, obtendo o máximo da DataWindow
Sem dúvida a DataWindow é o mais poderoso recurso do PowerBuilder 9.0
para acesso a bases de dados possibilitando a criação de uma interface
eficiente e de fácil utilização.
No PowerBuilder 9.0 podemos manipular um controle DataWindow e objetos
DataWindow através das funções Modify e Describe. Sempre ouço que estas
funções são as mais difíceis de se utilizar das funções disponibilizadas pelo
PowerBuilder 9.0. Até concordo que em alguns casos seja um emaranhado de
linhas de código tornando bastante complexa a sua depuração, mas por outro
lado, seguindo-se algumas regras veremos que não é um bicho de sete
cabeças.
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.
Através do Modify pode-se alterar todos os atributos de um objeto ou controle
DataWindow. Suponha que em tempo de execução 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 também alterar os atributos do Painter de
DataWindow contornando o problema de a DataWindow só deixar se
especificar uma tabela para atualização.
PowerBuilder 9.0 Básico
Capítulo 10
156
DataWindow : Técnicas avançadas
Suponha uma DataWindow com colunas exibidas de várias tabelas e se queira
atualizar dados em todas as tabelas.
Tabelas do processo: empregado e salário
Passo 1:
!"
Aplique o UpDate padrão.
//Atualiza a tabela definida no painter DataWindow(empregado)
Integer i_ret
I_ret = dw_1.Update(TRUE,FALSE)
FALSE – Marca como não reiniciar as flags.
IF i_ret = 1 THEN
//desativa a atualização 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 salário aceitar UpDate
dw_1.Modify(“DataWindow.Table.UpdateTable = ~’salario~’ ”)
//Faz as colunas da tabela salario aceitarem Update
dw_1.Modify(“salario_número_empregado.UpDate = Yes”)
dw_1.Modify(“salario_salario.UpDate = Yes”)
Adquirido por : Fabrício Moreira da Silva
Capítulo 10
PowerBuilder 9.0 Básico
157
DataWindow : Técnicas avançadas
//Atualiza a tabela salário 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 - salário”)
RollBack;
END IF
ELSE
Messagebox(“ERRO”,”Erro no UpDate da tabela – empregado”)
RollBack;
END IF
//Desativa a tabela salário
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
dw_1.Modify(“empregado_nome.UpDate
dw_1.Modify(“empregado_endereco.UpDate
dw_1.Modify(“empregado_telefone.UpDate
= Yes”)
= Yes”)
= Yes”)
= Yes”)
//Faz a tabela "empregado" aceitar UpDate
dw_1.Modify(“DataWindow.Table.UpDateTable = ~´empregado~´”)
Não foi tão complicado. Apenas uma seqüência até os sinais (~) til, (~r) til +
r e (~t) til + t, seguem uma seqüência.
!"
!"
Para se incorporar uma string dentro de outra string, apóstrofos(aspas
simples) são reconhecidos como diferentes de aspas (duplas).
Um apóstrofo (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 Básico
Capítulo 10
158
DataWindow : Técnicas avançadas
Alguns atributos do objeto DataWindow disponibilizam a utilização de
expressões. Você pode nota-los com este botão
ao lado do atributo.
É o caso do atributo VISIBLE. Você poderá passar uma
expressão através da função Modify.
Coluna : salário
Expressão IF - dentro do painter DataWindow :
If ( boolean, truevalue, falsevalue )
string s_mod
s_mod = “salário.visible = ´0~tIF (salário > 1000,0,1)´”
dw_1.Modify(s_mod)
Neste exemplo, sempre que o salário for maior que 1000 não ficará visível.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
DataWindow : Técnicas avançadas
Todos os atributos estão disponíveis no HELP do PowerBuilder 9.0.
159
PowerBuilder 9.0 Básico
Capítulo 10
DataWindow : Técnicas avançadas
Função Evaluate()
A função Evaluate( ) deve ser utilizada com a função Describe. A função
Evaluate, permite a avaliação de expressões na DataWindow.
Sintaxe : "evaluate('expressão', linha)"
Onde : expressão : expressão que se deseja avaliar
linha
: número da linha que se deseja avaliar a expressão
Exemplo :
O exemplo abaixo retorna a linha corrente da página atual e coloca como
título da janela w_1.
string s_mod, s_linha
s_linha
= string(dw_1.GetRow())
s_mod
= “Evaluate(´Page()´.” + s_linha +”)”
w_1.Title
= "Página " + dw_1.describe(s_mod)
Evaluate com expressões condicionais
Sintaxe : defaultvalue ~t expressão
Onde : defaultvalue: Valor padrão da propriedade.
~t
: separador obrigatório.
expressão : expressão aplicada à função 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 : Fabrício Moreira da Silva
160
PowerBuilder 9.0 Básico
Capítulo 10
161
DataWindow : Técnicas avançadas
Assim como a função Modify atribui a DataWindow existe a função Describe
que recupera as informações 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")
Faça este teste no evento OPEN do exemplo1.
Messagebox("Atributos da DataWindow", & +
dw_1.Describe("DataWindow.Attributes"))
!"
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 funções Modify e Describe são muitos úteis quando se trata
de trabalhar mais profissionalmente com as DataWindow por
esse motivo tente sempre que possível utilizar estas funções.
Seu projeto ficará sempre mais dinâmico e o limite das suas
funcionalidades esta no limite da sua criação.
PowerBuilder 9.0 Básico
Capítulo 10
162
DataWindow : Técnicas avançadas
Propriedade Object.
Podemos utilizar a propriedade Object para acessar dados em um objeto
DataWindow em forma de expressões. Essas expressões podem se referenciar
ao nome da coluna, número 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
: Número 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 conteúdo da coluna salario no objeto DataWindow e guarda
na variável 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 10
DataWindow : Técnicas avançadas
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
: Cláusula de acesso as linhas selecionadas na
DataWindow.
Retorna um ARRAY do mesmo tipo de dado definido para a
coluna.
163
PowerBuilder 9.0 Básico
Capítulo 10
164
DataWindow : Técnicas avançadas
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
: Número da primeira linha a ser recuperada.
endRowNum
: Número 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 : Fabrício Moreira da Silva
Capítulo 10
PowerBuilder 9.0 Básico
DataWindow : Técnicas avançadas
Parametrizando com a cláusula DATA.
Caso o nome da coluna seja desconhecido podemos parametrizar o acesso
através do número 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
: Número da primeira linha a ser recuperada.
startColNum
: Número da coluna.
Sempre retorna um único valor do buffer primário.
//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
columnName
startRowNum
startColNum
sndColNum
: Nome do controle DataWindow que se irá
recuperar ou inserir dados.
: Nome da coluna no objeto DataWindow.
: Número da primeira linha a ser recuperada.
: Número da coluna inicial.
: Número da coluna final.
Retorna um ARRAY de estrutura do mesmo tipo de dados
definido para a coluna e os limites informados.
165
PowerBuilder 9.0 Básico
Capítulo 10
DataWindow : Técnicas avançadas
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 cláusula Data possibilita combinações para manipulação 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 primário 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 : Fabrício Moreira da Silva
166
Capítulo 11
PipeLine de dados
PowerBuilder 9.0 Básico
Capítulo 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 distribuídos.
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 transferência de dados, opções:
!"
!"
!"
!"
!"
Create-Add Table - Cria uma nova tabela, ela não pode existir na
base destino.
Replace-Drop/Add Table - Apaga a tabela se ela existir no banco
destino e cria uma nova tabela.
Refresh-Delete/Insert Rows - Mantém o banco destino, mas faz
com que as linhas se correspondam ao banco origem.
Append-Insert Rows - Insere apenas as linhas novas no banco
destino, linhas repetidas serão apontadas através de mensagens de
erro.
Update-Update/Insert Rows - Insere linhas novas no banco
destino e atualiza as linhas já existentes se alguma informação
sofreu alteração.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 11
168
PipeLine de dados
Key : O nome da chave primária da tabela destino, normalmente é a usada
à mesma chave na tabela do banco origem.
Max Errors : A quantidade de erros que sua transferência pode receber até
ser suspensa.
Commit
de Commit.
: A quantidade de instruções SQL executadas antes da instrução
No template de definição de dados pode-se definir como os dados serão
recebidos pelo banco de destino. Source Name e Source Type não
permitem alteração, os itens com fundo em branco, permitem alteração.
!"
Destination Name
- Altera o nome da coluna no banco destino.
!"
Type
- Altera o tipo de dado na tabela destino.
!"
Key
!"
Width
- Indica que itens farão parte da chave primária
na tabela destino.
- Altera o tamanho do item no banco destino.
!"
Dec
!"
Nulls
!"
Initial Value
- Altera o número de casas decimais no banco
destino
- Indica que valores podem ter valores NULL.
- Indica o novo valor padrão para o banco
destino.
PowerBuilder 9.0 Básico
Capítulo 11
169
PipeLine de dados
Após completar a definição 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
Clique em
Execute e será iniciada a transferência dos dados.
Save para salvar a sua definição do pipeline para
ser executada posteriormente. De o nome de U_COPIA_TABELA.
O método que acabamos de ver executa o Pipeline no ambiente de
desenvolvimento. Pode-se usar o Pipeline em tempo de execução para isso
teremos que criar um objeto Pipeline e anexarmos a aplicação.
Clique em
New selecione PB Object e Standart Class.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 11
170
PipeLine de dados
A caixa de dialogo para seleção do tipo de classe a ser usada se abrirá. Então
selecione Pipeline.
O template de definição da pipeline se abrirá :
PowerBuilder 9.0 Básico
Capítulo 11
171
PipeLine de dados
Clique em Declare Instance Variables.
Então defina os objetos:
statictext st_lidos,st_gravados,st_erros
Agora clique em Event List e escreva o código abaixo.
Agora clique em
Save e salve o objeto do usuário como
uo_pipeline01 em nossa aplicação exemplo1.
Para executar o pipeline em tempo de execução você pode criar uma
dropdown com uma lista de objetos e ao selecionar o objeto execute o código
abaixo ou crie um botão para isto.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 11
172
PipeLine de dados
O código abaixo executa o PipeLine. Nesse exemplo teremos como padrão de
execução um botão.
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 não existe"
erros[5] = "-5 Sem conexão inexistente"
erros[6] = "-6 Erro nos parâmetros"
erros[7] = "-7 Colunas incompatíveis"
erros[8] = "-8 Erro fatal no SQL de origem"
erros[9] = "-9 Erro fatal no SQL de destino"
erros[10] = "-10 Maximo número de erros excedidos"
erros[12] = "-12 Erro na sintaxe do Pipeline"
erros[13] = "-13 chave requerido não 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 Básico
Capítulo 11
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 = "Execução abortada"
End if
Commit;
DESTROY lp_Create
Disconnect Using lt_origem;
DESTROY lt_origem
This.Enabled = True
cb_executa.Enabled = FALSE
Adquirido por : Fabrício Moreira da Silva
173
PowerBuilder 9.0 Básico
Capítulo 11
174
PipeLine de dados
If li_RC = 1 Then
st_men.text = "Execusão 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 Básico.
Capítulo 12
Criando Relatórios
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
175
Criando Relatórios
A criação de relatórios com o PowerBuilder 9.0 é muito simples quanto
simples é o seu relatório, no PowerBuilder 9.0 a criação de um relatório segue
os mesmos critérios da criação de uma DataWindow.
O Relatório assim como a DataWindow é o resultado de uma consulta (query)
ao banco de dados. A grande diferença é que o relatório não pode ser editado
pelo usuário a sua ordem de tabulação é igual a zero. Em um relatório não
existe validação de dados nem atualização dos mesmos.
As opções de relatórios quanto a estilo de apresentação e origem de dados,
são as mesmas disponibilizadas para a DataWindow.
Veja as definições no capítulo 9, sobre DataWindow.
Para se produzir um relatório devemos seguir alguns passos:
1.
2.
3.
4.
Determinar o tipo de relatório que se irá produzir;
Criar o objeto DataWindow que irá recuperar e exibir os dados;
Anexar o objeto DataWindow a um controle DataWindow;
Adicionar no controle DataWindow os processos para recuperar os dados e
imprimir.
Os tipos:
!"
!"
!"
!"
!"
!"
!"
!"
!"
!"
!"
Tabular
Freeform
Grid
Label
N-Up
Group
Composite
Graph
Crosstab
OLE 2.0
RichText
PowerBuilder 9.0 Básico
Capítulo 12
176
Criando Relatórios
Em um relatório podem-se agregar todas as funcionalidades da DataWindow
exceto as funcionalidades de atualização, por uma questão lógica e não por
limitação. Então criar um relatório com o PowerBuilder é muito simples.
Seguiremos alguns passos criando um relatório em cima da base de dados
exemplo EAS Demo DB V9 e descrevendo passo a passo seus eventos,
funções e propriedades.
Clique em
New selecione DataWindow e o estilo Freeform. Selecione
no estilo de recuperação de dados Quick Select marque Retrieve on
Preview. Clique em Next.
Selecione a tabela Department, selecione todas as colunas clicando no botão
à 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 criação 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
relatório disponibilize as informações de modo satisfatório e coerente para
uma boa visualização e customização de recursos.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
177
Criando Relatórios
Teremos então no template de edição o quadro abaixo:
Neste exemplo que iremos criar de relatório utilizaremos os recursos
mais comuns para um relatório gerencial. Com cabeçalho, informações
de página, data da impressão, hora da impressão e a utilização de expressões
na DataWindow de relatório.
O Primeiro passo é maximizar o template de edição para uma melhor
visualização dos dados. Com esse procedimento podemos melhor visualizar as
bandas disponíveis para manipulação.
!"
!"
!"
!"
Header
Datail
Summary
Footer
-
Onde colocaremos nosso cabeçalho.
Onde colocaremos as linhas de dados.
Onde colocaremos os dados sumarizados.
Detalhes de rodapé do relatório.
PowerBuilder 9.0 Básico
Capítulo 12
178
Criando Relatórios
A figura acima mostra o template de edição maximizado coloque o mouse
sobra à banda Header. Na mudança do ponteiro do mouse, clique com o
botão direito e mantenha-o pressionado, arrastando para baixo abrindo assim
um espaço entre o limite do template e a banda Header.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
179
Criando Relatórios
Criando cabeçalho.
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
começaremos a montar nosso cabeçalho.
Para o objeto texto criado digite: “Demonstrativo : Salário
Departamento”. Centralize o texto na parte superior da banda Header.
X
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 proporção, coloque o mouse sobre a figura e clique
com o botão 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
identificação da coluna conforme segue :
PowerBuilder 9.0 Básico
Capítulo 12
180
Criando Relatórios
Algumas colunas estarão agrupadas formando assim uma única informação.
Para se quebrar uma linha do objeto Text, digite logo após o texto que se
deseja quebrar (~r) Til mais a letra erre.
Coloque o mouse sobre cada banda e na mudança do ponteiro do mouse
clique com o botão direito mantenha-o pressionado e alinhe cada banda para
que o relatório tenha uma proporcionalidade adequada para cada linha que
será exibida. Veja figura abaixo.
Note que algumas colunas terão um alinhamento à esquerda e outras à
direita podendo até ter colunas que deverão estar centralizadas. Esses
ajustes serão necessários para adequar o tipo de dado a visualização
que se queira dar ao relatório. Não existe uma regra definida neste caso vale
sempre o bom senso. Lembrando que sempre se deve procurar mostrar o
máximo de informações possíveis sem se poluir o relatório. Fazendo-se assim
um relatório de fácil leitura e identificação dos dados.
Adquirido por : Fabrício Moreira da Silva
Capítulo 12
PowerBuilder 9.0 Básico
181
Criando Relatórios
Agora vamos incluir algumas funções disponíveis no PowerBuilder 9.0.
Função
Today()
Now()
Page()
PageCount()
Retorna
Retorna
Retorna
Retorna
a
a
a
o
Descrição
data corrente
hora corrente
página corrente
total de páginas
Incluindo a data corrente
Clique em
Today´s Date e clique ao lado do título à direita para incluir o
objeto Text com a expressão Today().
Note que a expressão 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
botão de seleção para abrir a caixa de dialogo “Modify Expression” e digite
ou selecione na caixa de seleção na parte inferior à esquerda String(x,s), no
lugar do “x”, escreva Today() e ignore o “s”.
Então teremos: string( today() )
PowerBuilder 9.0 Básico
Capítulo 12
182
Criando Relatórios
Clique em “Ok”. Aumente a célula até que esta disponibilize a data e a hora.
Então teremos no relatório :
Coloque o mouse sobre a banda “Summary” e na mudança do ponteiro do
mouse clique com o botão esquerdo mantenha-o pressionado e arraste
abrindo assim um espaço entre a banda “Datail” e “Summary”.
para criar uma
Clique na coluna “salary” da banda “Datail” e clique em
coluna com a média dos valores recuperados do banco de dados.
Agora clique na parte branca da banda “Summary” e o campo computado
com a expressão, “avg(employee_salary for all)” será adicionado a
e crie um novo objeto de texto e digite “Média
DataWindow. Clique em
Salarial :”. Alinhe o campo computado com a coluna salário e coloque o
objeto texto à frente do campo computado.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
183
Criando Relatórios
Com estes procedimentos montamos uma coluna com a média
salarial de todos os departamentos.
Agora incluiremos um controle de página no rodapé do relatório.
Coloque o mouse sobre a banda “Footer” e na mudança do ponteiro do
mouse clique com o botão esquerdo mantenha-o pressionado e arraste.
Abrindo assim um espaço entre a banda “Summary” e “Footer”.
para criar um campo computado com a expressão: 'Page ' +
Clique em
page() + ' of ' + pageCount(). No template propriedade à direita na
propriedade “Compute Expression” clique no botão de seleção na caixa de
dialogo que se abrirá e substitua :
1. “Page” por “Página”
2. “of” por “de”
Então teremos : 'Página ' + page() + ' de ' + pageCount()
E como resultado:
PowerBuilder 9.0 Básico
Capítulo 12
184
Criando Relatórios
Criamos controle e total para o relatório geral. Criaremos agora estes
controles para um determinado grupo. Assim devemos criar um
grupo para dividirmos o relatório e dar e ele uma aparência mais profissional.
Na PowerBar clique em “Rows” e selecione no menu que se abrirá “Create
Group”.
Na caixa de dialogo “Specify Group Columns” que se abrirá clique e arraste
a coluna “department_dept_id” da caixa Source Data para a caixa Columns.
Conforme a figura abaixo.
Clique em “Ok”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
185
Criando Relatórios
Note que novas bandas foram disponibilizadas a partir da inclusão de um
grupo. São elas :
Header group department_dept_id
: Cabeçalho específico para o grupo.
Trailer group department_dept_id
: Rodapé específico do grupo
Coloque o mouse sobre a banda “Trailer group” e na mudança do ponteiro
do mouse clique com o botão esquerdo mantenha-o pressionado e arraste.
Abrindo assim um espaço entre a banda “Trailer group” e “Detail”.
Mova os itens da banda “Summary” Média Salarial. O computed Field com
o valor da média 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 padrão, já para a banda de
grupo existem algumas particularidades.
Capítulo 12
PowerBuilder 9.0 Básico
186
Criando Relatórios
Coloque o ponteiro do mouse sobre a banda “Header group” e clique com o
botão direito. As propriedades da banda aparecerão à direita.
Color : Define a cor de fundo da
banda.
Height : Define o tamanho (altura)
que a banda vai ter.
Group Definition : Definição dos
itens que compõe o grupo.
Group Sort : O tipo de classificação
que o grupo terá.
Reset Page Count : Inicia o contador
para cada quebra de grupo.
New Page on Group Break : Quebra
a página a cada quebra de grupo.
Clique no botão de seleção 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
187
Criando Relatórios
No template propriedade selecione “New Page on Group Break”. Essa
seleção fará com se quebre a página a cada novo grupo.
Veja no Template Preview como ficou o relatório.
Note que automaticamente uma barra foi
incluída 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 Básico
Capítulo 12
188
Criando Relatórios
Para uma apresentação mais profissional, coloque o mouse sobre a
banda “Header group” e na mudança do ponteiro do mouse clique com
o botão esquerdo mantenha-o pressionado e arraste abrindo assim um espaço
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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
189
Criando Relatórios
Save salve o relatório com o nome “d_rel01”, feche o
Clique em
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 botão “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 teríamos somente que acertar o
cabeçalho e dimensionar melhor as colunas.
PowerBuilder 9.0 Básico
Capítulo 12
190
Criando Relatórios
Entendendo o estilo Composite.
O Estilo denominado “composite” designa-se a apresentar uma DataWindow
cujo seu conteúdo é a inserção de várias DataWindow independentes ou não
entre si com estilos de apresentação diferentes.
Normalmente este estilo é utilizado para relatórios condensados e complexos.
A DataWindow principal receberá a denominação “Composite” (que recebe as
outras DataWindow), as DataWindow internas recebem a denominação
“Nested Reports” (que compõe a DataWindow de estilo composite).
Clique em
New selecione DataWindow e o estilo Grid. Selecione no
estilo de recuperação de dados Quick Select. Marque Retrieve on
Preview. Clique em Next.
Selecione a tabela Department. Selecione todas as colunas clicando no botão
à direita Add All.
Clique em “OK”, e marque o Save as Default. Clique em Next e em Finish
para finalizar a criação da DataWindow.
Teremos :
Clique em
Save e salve a DataWindow como “d_relatorio_1”. Feche
o template de DataWindow.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
191
Criando Relatórios
Vamos criar a segunda DataWindow que será inserida em nosso relatório
composite.
Clique
em
New selecione DataWindow e o estilo Tabular.
Selecione no estilo de recuperação 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”.
Então 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 relatório
composite.
Clique em
New selecione DataWindow e o estilo Graph. Selecione no
estilo de recuperação de dados Quick Select. Marque Retrieve on
Preview. Clique em Next.
PowerBuilder 9.0 Básico
Capítulo 12
192
Criando Relatórios
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 “Salário X
Sexo” e em “Graph Type” selecione “Column”. Clique em “Next” e
“Finish”.
Então teremos :
Agora falta descriminar as variáveis do nosso gráfico nesse exemplo não
iremos exemplificar todas as propriedades do objeto gráfico, veremos isto
mais adiante.
Na propriedade à direita selecione “General” e em “Title” digite; “Sálario 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 “Salário”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
193
Criando Relatórios
Então teremos:
Clique em
Save e salve a DataWindow como “d_relatorio_gr_3”.
Feche o template de DataWindow.
PowerBuilder 9.0 Básico
Capítulo 12
194
Criando Relatórios
Com os relatórios gerados iniciaremos a construção da DataWindow estilo
composite.
Clique em
New selecione DataWindow e o estilo Composite. Na
caixa de dialogo “Choose Nested DataWindows for Composite” selecione
os relatórios “d_relatório_1”, “d_relatorio_2” e d_relatorio_gr_3”. Clique
em Next e Finish.
Então teremos:
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 12
195
Criando Relatórios
A disposição física dos relatórios é as mesmas efetuadas durante a seleção,
podemos modificar esta disposição para uma melhor visualização.
O estilo Composite como todos os outros estilos também disponibiliza
algumas propriedades que podem ser configuradas para uma melhor
visualização. São:
Em General :
Name
: Nome dado ao relatório e que define o acesso a este Nested.
HideSnaked : Faz com que o controle só aparece uma vez por página
quando você imprimir a DataWindow caso esta utilize o formato de colunas de
jornal.
Visible
: Habilita ou inibe a visualização do relatório.
Border
: Define o tipo de contorno que o relatório deve exibir.
PowerBuilder 9.0 Básico
Capítulo 12
196
Criando Relatórios
Report
: Seleciona ou altera o relatório em foco.
New Page
(Nested).
:Quebra a página antes da exibição do próximo relatório
Trail Footer : Força a banda footer a aparecer depois da última linha de
dados do relatório.
Em Pointer :
Pointer
: Seleciona o tipo de ponteiro do mouse será exibido.
Em Criteria :
A condição de filtro da cláusula Where para o relatório. A propriedade de
Critérios define a conexão entre o relatório e o DataWindow.
Exemplo : emp_id=:id_emp
Adquirido por : Fabrício Moreira da Silva
Capítulo 13
Gráficos
PowerBuilder 9.0 Básico
Capítulo 13
197
Gráficos
Um gráfico em linhas gerais é igual a qualquer outro objeto DataWindow.
Exceto pelo fato de revelar os dados em forma de gráfico ao invés de
apresentar os dados em forma de números.
Para se criar um gráfico precisaremos entender alguns padrões. Em um
gráfico existem as categorias, os valores e as séries. Onde :
Categoria
: Os dados independentes, tipo: meses, anos e bimestres.
Valor
: Os dados dependentes, esta informação normalmente sofre
alteração por categoria, tipo : Vendas (por mês) , Vendas (por ano) e Vendas
(por bimestre).
Série
: Os conjuntos de pontos de dados do gráfico.
Para se criar um gráfico deve-se definir as categorias e os valores. As
séries estarão presentes no gráfico de acordo com as categorias e os
valores. Normalmente as categorias correspondem a uma coluna da tabela.
Os valores também podem provir de uma coluna, mas normalmente provém
de agregações, somatórias ou média de uma coluna.
Criando um gráfico
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 seleção “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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
198
Gráficos
Então teremos:
Com esta primeira visão podemos notar que praticamente o gráfico já está
montado. Precisamos alterar algumas configurações para uma melhor
precisão dos dados e compreensão do mesmo por qualquer pessoa que o
analise.
Para isto, existem as propriedades do objeto gráfico. São:
Propriedade
BackColor
Border
BorderStyle
Tipo de dado
Descrição
Long
Especifica o valor numérico da cor de
fundo: -2 a 16,777,215
Border
Especifica se o controle tem uma borda
BorderStyle
Especifica o estilo da borda do controle.
(Descrita)
Seus valores são:
StyleBox!
StyleLowered!
StyleRaised!
StyleShadowBox!
PowerBuilder 9.0 Básico
Capítulo 13
199
Gráficos
Propriedade
BringToTop
Category
CategorySort
ClassDefinition
Depth
DragAuto
DragIcon
Elevation
Enabled
Tipo de dado
Descrição
Boolean
Especifica se PowerBuilder 9.0 moverá o
controle front-to-back na janela ou controle
de DataWindow.
grAxis
Especifica as propriedades do eixo de
categoria do gráfico.
grSortType
Especifica
como
as
categorias
são
ordenadas.
PowerObject
Um objeto de tipo PowerObject que contém
informação sobre a definição de classe do
objeto ou controle.
Integer
Especifica o percentual de profundidade da
largura do gráfico.
Boolean
Especifica se PowerBuilder porá o gráfico
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 não está
automaticamente dentro do modo arrastar
e solta.
String
Especifica o nome do ícone ou o arquivo
que contêm o ícone que você quer exibir
quando o usuário arrastar um controle .
Integer
Especifica o ângulo de elevação de frente
para a parte de trás.
Boolean
Especifica se o controle é habilitado (pode
ser selecionado).True : Habilitado / False :
Não habilitado
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
200
Gráficos
Propriedade
GraphType
Height
Legend
Legend DispAttr
OverlapPercent
Perspective
PieDispAttr
Pointer
Tipo de dado
Descrição
grGraphType
Especifica o tipo do gráfico, os valores são:
(Decrita)
Area3D!
AreaGraph!
Bar3DGraph!
Bar3DObjGraph!
BarGraph!
BarStack3DObjGraph!
BarStackGraph!
Col3DGraph!
Col3DObjGraph!
ColGraph!
ColStack3DObjGraph!
ColStackGraph!
Line3D!LineGraph!
Pie3D!
PieGraph!
ScatterGraph!
Integer
Especifica a altura do controle, em
unidades do PowerBuilder.
grLegendType Especifica o alinhamento da legenda do
(descrita)
gráfico, os valores são:
AtBottom!
AtLeft!
AtRight!
AtTop!NoLegend!
grDispAttr
Especificam o estilo para o tipo de texto da
legenda do gráfico, inclusive tamanho, cor,
e rotação.
Integer
Especifica o percentual da largura dos
marcadores de dados para séries diferentes
em um gráfico.
Integer
Especifica a distância que o gráfico é da
frente da janela.
grDispAttr
Especificam as propriedades do texto em
gráfico de torta com label, inclusive
tamanho, cor, e rotação.
String
Contém o nome do ponteiro ou o arquivo
que contêm o ponteiro usado para o
gráfico.
PowerBuilder 9.0 Básico
Capítulo 13
201
Gráficos
Propriedade
Rotation
Series
SeriesSort
ShadeColor
Spacing
TabOrder
Tag
TextColor
Title
TitleDispAttr
Values
Visible
Width
X
Y
Tipo de dado
Descrição
Integer
Especifica quanto girar o gráfico da
esquerda para direita.
grAxis
Especifica as séries no gráfico.
grSortType
Especifica como as séries são ordenadas.
Long
Especifica
a
cor
usada
para
o
preenchimento no gráfico.
Integer
Especifica o espaço entre marcadores de
dados no gráfico em percentual.
Integer
Especifica o valor do controle TAB na
seqüência da tecla TAB.
String
Especifica o valor de etiqueta do controle.
Long
Especifica a cor a ser usada para o texto no
controle.
String
Especifica o texto do título para o gráfico.
grDispAttr
Especificam o estilo para o texto na
legenda do gráfico, inclusive
estilo de
texto, tamanho, cor e rotação.
grAxis
Especifica os valores do eixo de valor do
gráfico.
Boolean
Especifica se o controle é visível. Se TRUE
- Controle é visível. Se FALSE - Controle
não é visível.
Integer
Especifica o modo de texto no controle; por
exemplo, 400 para normal ou 700 para tipo
negrito.
Integer
Especifica o posicionamento X (à distância
da extremidade esquerda da janela
principal), em unidades do PowerBuilder.
Integer
Especifica o posicionamento Y (à distância
do topo da janela principal), em unidades
do PowerBuilder.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
202
Gráficos
Em todas as propriedades disponibilizadas pelo PowerBuilder 9.0, pode-se
usar a notação por pontos através do PowerScript facilitando a interação com
o usuário em tempo de execução.
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 gráfico no painter DataWindow.
No template “propriedade” à direita clique na aba “General”. Para saber cada
propriedade consulte a tabela acima.
Title
: digite “Salário X Sexo”.
Units
: selecione PowerBuilder (0)
Timer Interval
: Selecione (0)
Color
: Selecione “Black”
BackColor
: Selecione “White”
Name
: o padrão sempre é gr_1.
Depth
: Não estará disponível.
Elevation
: Não estará disponível.
PowerBuilder 9.0 Básico
Capítulo 13
203
Gráficos
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 “Salário”.
Na propriedade “Axix” selecione “Series” em “Label”, digite “Descrição”.
Na propriedade “Scale” marque a caixa “AutoScale”.
Então teremos :
Clique em
Save salve o modelo do gráfico como “d_grafico”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
204
Gráficos
Explore as propriedades do objeto gráfico. Normalmente se aplica sua
variação em tempo de execução. Os padrões 3D disponibilizam as
propriedades “Perspective”, “Elevation” e “Rotation” que oferecem um bom
recurso para visualização. Através das instruções de notação de ponto se
pode disponibilizar suas definições para o usuário.
Até aqui conceituamos funções, objetos e aplicamos suas funcionalidades. O
mesmo será feito para o objeto gráfico. Para isto, utilizando o aprendizado até
agora iremos alterar o projeto proposto. Adequando-o a novas inserções de
objetos e funções.
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
criação 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
criação de um novo objeto menu se abrirá. Clique no item “untitle0”
com o botão direito do mouse e selecione no menu-popup que se abrirá
“Insert Submenu item”.
Na propriedade “Text” digite “Gráfico”. Com um duplo clique no item
“Gráfico” selecione o evento “Clicked” e escreva o código 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 Básico
Capítulo 13
205
Gráficos
Incluindo o objeto gráfico 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 gráfico “d_gráfico”. Ajuste o controle DataWindow
para que se visualize todo o objeto DataWindow.
Então teremos:
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
206
Gráficos
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 parâmetros do DBMS de teste a transação SQLCA
sqlca.dbms
="ODBC"
sqlca.dbparm
="ConnectString='DSN=EAS Demo DB
V9;UID=dba;PWD=sql'"
// Conecta com o banco
connect;
//Testa a conexão
If sqlca.sqlcode < 0 Then
MessageBox ("Erro: Impossível conectar com o banco de
dados", sqlca.sqlerrtext, Exclamation!)
HALT
End If
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
PowerBuilder 9.0 Básico
Capítulo 13
207
Gráficos
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 gráfico.
Então teremos :
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
208
Gráficos
Em tempo de execução podemos alterar o modelo do gráfico. para tal usamos
notação 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
“VscrollBar”.
“Visible”,
“Enabled”,
“AllowEdit”
e
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 gráficos disponíveis no PowerBuilder 9.0.
Salve sua aplicação. Essa é uma forma de nunca perdermos um
trabalho, a cada etapa ou de tempos em tempos no nosso trabalho,
salve sua aplicação.
PowerBuilder 9.0 Básico
Capítulo 13
209
Gráficos
Clique em
HtrackBar e clique na janela para incluir o objeto
HtrackBar. Inclua este objeto na parte superior do controle DataWindow.
Repita a operação para a inclusão 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.
Então teremos:
Agora para que os controles tenham sua funcionalidade iremos escrever
através de notação de pontos, sua programação.
OBS : Inclua quatro “StaticText”. No primeiro escreva; “Elevação”, no
segundo; “Perspectiva” no terceiro; “Rotação” e no quarto; “Tipo do
Gráfico” e distribua conforme a figura acima.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 13
210
Gráficos
Selecione com um duplo clique o objeto “HtrackBar” definido como “htb_1”
que será utilizado para “Elevação”. Selecione o evento “Moved” esse evento
sempre será disparado se a barra do controle HtrackBar for movimentada.
Escreva o código 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 “Rotação”. Selecione o evento “Moved” esse
evento sempre será disparado se a barra do controle HTrackBar for
movimentada.
Escreva o código 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 código 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 conteúdo da ddlb for alterado. Como resultado desta alteração a
variável “index” será preenchida com a posição física da seleção formando
assim um indexador. Como o texto na tabela segue uma numeração uniforme
podemos utilizar o conteúdo da variável “index” como um parâmetro para
seleção.
Escreva o código PowerScript:
integer l_index
l_index = index
dw_1.Object.gr_1.GraphType = l_index
PowerBuilder 9.0 Básico
Gráficos
Salve a aplicação e execute. Então teremos:
Adquirido por : Fabrício Moreira da Silva
Capítulo 13
211
PowerBuilder 9.0 Básico
Capítulo 13
212
Gráficos
Para que as barras HtrackBar e VtrackBar tenham funcionalidade escolha na
“DropDownListBox” um tipo de gráfico com padrão 3D. Tipo : Bar3D
Agora movimente as barras e veja os efeitos que se pode proporcionar.
Capítulo 14
XML
Conceito
Exportando DataWindow
(DataWindow Export)
Importando um padrão XML para a
DataWindow
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
213
XML
Conceito
A XML (eXtensible Markup Language, ou Linguagem de Marcação Estendida)
é um subconjunto da SGML (Standard Generalized Markup Language, ou
Linguagem de Marcação Padrão Generalizada) que permite que uma
marcação específica seja criada para especificar idéias e compartilhá-las na
rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitações
óbvias.
Pontos fortes da XML
Inteligência: a XML é inteligente para qualquer nível de complexidade. A
marcação pode ser alterada de uma marcação mais geral como:
<função> Desenvolvedor </função>
para uma mais detalhista, como:
<função>
<Diretoria de Informática>
<Informática> Desenvolvedor </Informática>
</Diretoria de Informática>
</função>
As idéias são bem marcadas para que :
<Informática> Desenvolvedor </Informática> e,
<Jurídico> Adv. Junior </Jurídico> sejam sempre valores diferentes.
A informação conhece a si mesma. Não é necessária mais nenhuma idéia
indesejável;
Manutenção: a XML é fácil de manutenção. Ela contém somente idéias e
marcações. Folhas de estilos e links, vêm em separado, e não escondidas no
documento. Cada um pode ser alterado separadamente quando preciso com
fácil acesso e fáceis mudanças;
PowerBuilder 9.0 Básico
Capítulo 14
214
XML
Ligação: a XML possui uma maneira de ligar que inclui todas as formas de
ligação. Não só isso; ela liga de maneira que a HTML não pode. A HTML pode
fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz
isso, mas também pode ligar dois ou mais pontos a uma idéia. Existem ainda
links gêmeos que ligam todas as idéias dentro de uma mesma. Qualquer link
entre uma idéia pode ser manipulado de uma única maneira;
Portabilidade: a XML é de fácil portabilidade. A razão da sua existência é
força e portabilidade. A SGML tem força. A HTML tem portabilidade. A XML
têm ambas. A XML pode ser navegada com ou sem o seu DTD (Document
Type Definition, ou Definição de Tipo de Documento - as normas que definem
como as tags são estruturas nos documentos XML), tornando o download
mais rápido. Tudo que um navegador precisa para ver XML é ter a noção que
ela própria e a folha de estilos, controlam a aparência. Se uma validação
restrita é necessária, o seu DTD pode acompanhá-lo e fornecer detalhes
exatos da sua marcação.
Como a XML é definida
A XML é definida pelas seguintes especificações:
Extensible Markup Language (XML) 1.0: define a sintaxe da XML;
XML Pointer Language (XPointer) e XML Linking Language (XLink):
define um padrão para representar os links entre os recursos. Além dos links
simples, como a tag <A> da HTML, a XML possui mecanismos para ligar
recursos múltiplos e diferentes. A XPointer descreve como endereçar um
recurso, e a XLink descreve como associar dois ou mais recursos;
Extensible Style Language (XSL): define a linguagem de folhas de estilos
padrão para a XML.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 serão utilizadas para que o analisador sintático
verifique se o documento está correto ou não.
A DTD pode estar definida dentro do próprio arquivo XML ou em um arquivo à
parte com extensão .dtd, que deve ser incluído no código XML. A DTD pode
ser usada para padronizar um documento XML e torná-lo bastante coerente
com as necessidades do desenvolvedor, porém sua criação não é obrigatória.
DTDs Externas: Quando temos um documento XML muito extenso, é melhor
utilizarmos um DTD externo, o que traz boa qualidade com super organização
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 vários aspectos como por
exemplo: Tipos de dados que o arquivo XML irá conter etc.
Criando uma DTD Interna.
Abaixo esta uma pequena demonstração 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 REUNIÃO</ASSUNTO>
</NOTA>
PowerBuilder 9.0 Básico
Capítulo 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 contém todos os outros.
<! ELEMENT NOTA (PARA,DE,ASSUNTO)
Isto define a tag <NOTA>. Os parênteses dizem que estes dois outros
conjuntos de tags devem aparecer dentro das tags <NOTA>, naquela ordem
específica.
<! ELEMENT PARA (#PCDATA)>
#PCDATA, significa Parsed Character Data ou dados de caractere analisados
(isto é, qualquer coisa que não seja dados binários, como uma imagem).
Neste caso, o #PCDATA será texto por exemplo, "PEDRO".
Criando uma DTD Externa.
O Código desta demonstração será o mesmo do que da DTD interna acima
somente iremos dividir o DTD e XML em dois arquivos com as extensões .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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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">
Validação
Existem duas categorias de documentos XML: bem formatados e válidos.
Documentos Bem Formatados
Um documento somente pode ser bem formatado se ele obedece à sintaxe da
XML. Um documento que inclui seqüências de caracteres de marcação que
não podem ser analisadas ou são inválidas não podem ser bem formatados.
Além disso, o documento deve atender a todas as seguintes condições
(subentendendo-se que algumas destas condições podem exigir experiência
com SGML):
!"
A instância do documento deve estar conforme a gramática dos
documentos XML. Em particular, algumas construções de marcações
(referências a entidades parâmetro, por exemplo) são somente permitidas
em locais específicos. O documento não é bem formatado se tais
ocorrerem em outros locais, ainda que o documento esteja bem formatado
nos outros casos.
!"
O texto de substituição para todas as entidades parâmetro referenciadas
dentro de uma declaração de marcação consiste em zero ou mais
declarações de marcações completas. (Nenhuma entidade usada no
documento pode consistir de somente uma parte de uma declaração de
marcação.)
!"
Nenhum atributo pode aparecer mais do que uma vez na mesma marca de
início.
!"
Valores de atributos cadeias de caracteres não podem conter referências a
entidades externas.
!"
Marcas não-vazias devem ser apropriadamente aninhadas.
PowerBuilder 9.0 Básico
Capítulo 14
218
XML
!"
Entidades parâmetro devem ser declaradas antes de serem usadas.
!"
Todas as entidades devem ser declaradas, exceto as seguintes: amp, lt,
gt, apos e quot.
!"
Uma entidade binária não pode ser referenciada no fluxo do conteúdo; ela
pode ser usada somente em um atributo declarado como ENTITY ou
ENTITIES.
Documentos
Um documento bem formatado é válido somente se ele contém uma
declaração de tipo de documento e se o documento obedece às restrições da
declaração.
Documentos com DTD
Definição
Na XML as regras que definem um documento são ditadas por DTDs
(Document Type Definitions), as quais ajudam a validar os dados quando a
aplicação que os recebe não possui internamente uma descrição do dado que
está recebendo. Mas os DTDs são opcionais e os dados enviados com um DTD
são conhecidos como dados XML válidos. 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 são conhecidos como dados bem formatados. Nesse caso, o documento
pode ser usado para implicitamente se autodescrever.
Com os dados XML válidos e com os bem-formatados, o documento XML se
torna autodescritivo porque as tags dão idéia de conteúdo e estão misturadas
com os dados. Devido ao formato do documento ser aberto e flexível, ele
pode ser usado em qualquer lugar onde a troca ou transferência de
informação é necessária. Desta forma, podemos usar o XML para descrever
informações sobre páginas HTML, ou descrever dados contidos em objetos ou
regras de negócios, ou transações eletrônicas comerciais.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 múltiplas formas de visualização quando se faz uso da informação
de semântica contida no XML.
O que define formalmente quais elementos e quais combinações possíveis é
permitida dentro de um documento XML é o "schema", ou seja, esquema.
Existem novos esquemas propostos ao W3C, dentre eles estão o DCD
(Document Content Description), que provêm à mesma funcionalidade dos
DTDs, e que, pelo fato de linguagens esquema serem extensíveis, os
desenvolvedores podem aumentá-los com informações adicionais, tais como
regras de apresentação, tornando essas novas linguagens esquema mais
poderosas que os DTDs.
Resumo
As DTDs são formas de se descrever classes de documentos XML (como
gramáticas para outras linguagens).
Problemas com DTDs:
!"
!"
se muito simples não tem poder expressivo de descrição.
se for muito complexa terá uma sintaxe horrível.
A solução para as DTDs: usar linguagens de esquemas (schema languages)
tais como DSD,XML Schema, etc…
Os documentos, para serem validados, têm que ser bem formatados e
também estarem em conformidade com a DTD dada.
PowerBuilder 9.0 Básico
Capítulo 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 não interpreta
estes tipos de dados, se uma coluna não contém dados deve ser representada
por; <dado></dado> ou <dado/>, onde a tag dado não disponibiliza um
conteúdo.
Após conceituarmos a XML, aplicaremos este conceito ao PowerBuilder
9.0, utilizando as novas propriedades de importação e exportação 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
exportação e importação de dados utilizando XML.
O exemplo abaixo, é um XML simplificado que contém a declaração do
documento XML, seguida pela TAG que descreve o elemento denominado raiz,
<d_dept_list>, a definição da linha <d_dept_list_row>, a definição da
coluna <dept_id>, <dept_name> e <dept_head_id>, os dados e a tag
de finalização 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
XML
Modelo XML DOM em árvore.
<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE menu SYSTEM menu.dtd>
<menu>
<refeição nome=“Café da manhã”>
<descrição>
Ovos mexidos
</descrição>
<descrição>
Queijo quente
</descrição>
<bebidas>
Suco de laranja
</bebidas>
</refeição>
<refeição nome=“lanche”>
<descrição>
Frios fatiados
</descrição>
</refeição>
</menu>
Capítulo 14
221
PowerBuilder 9.0 Básico
Capítulo 14
222
XML
A partir da versão 9.0 do PowerBuilder, foram incorporadas novas
características para XML, como exportação e importação de DataWindow /
DataStores. A essas novas características se denominou “Serviços 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 padrão XML.
O modelo de exportação 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
exportação.
•
•
•
•
•
Column
Computed Column
Text Control
Computed Field
Nested Report
Um template de exportação é uma parte da definição da DataWindow. Uma
DataWindow pode conter vários template de exportação. São 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 operação de exportação.
Esta propriedade pode ser fixada em runtime e designtime.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
XML
Exemplo de um template de exportação XML.
export.xml(
usetemplate="t_lista01"
metadatatype=2 savemetadata=1
template=(
comment="Lista de funcionários saída 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 exportação utilizando a interface gráfica.
223
PowerBuilder 9.0 Básico
Capítulo 14
224
XML
Na painter DataWindow do PowerBuilder 9.0 foi incluído um novo template,
onde se permite; definir, editar e exportar a DataWindow em um padrão 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 visão 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 exportação pode ser editado.
Ícones usados no template de Export/Import.
Ícone
Descrição
Declaração de XML ou declaração de tipo de documento.
Raiz ou elemento descendente.
Elemento do Group header.
Referência da coluna da DataWindow.
Referência de controle Static text.
Referência Computed field.
Referência de expressão DataWindow.
Texto.
Comentário
Instrução de processamento
Seção CDATA
Nested report
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
225
XML
Explorando o template “Export / Import Template - XML”
Clique com o botão direito do mouse em qualquer área de fundo do template para ter
acesso ao menu popup de edição do template.
Item
New
New Default
Open
Save
Save As
Delete
Descrição
Cria um modelo novo de XML com a raiz e
elementos de linha de detalhe vazio.
Cria um modelo novo de XML com a raiz e
elementos de linhas de detalhes para cada
elemento
mapeado,
colunas
e
campos
computados.
Abre um modelo de XML previamente salvo
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 comentários
"opcional".
Salva o modelo de XML atual como uma cópia
debaixo de um novo nome, será aberta uma
caixa de dialogo solicitando um nome e
comentários "opcional".
Apaga o modelo de XML atual. Uma caixa de
dialogo solicitando confirmação será exibida
antes desta ação, permitindo o usuário cancelar
ou não.
A seleção 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 Básico
Capítulo 14
226
XML
Pressionando o botão direito do mouse em cima de qualquer elemento do template,
disponibilizará o menu popup correspondente, por exemplo : Clicando-se na
“Declaração de XML ou declaração de tipo de documento”, teremos :
Item
Edit
Delete
Descrição
Exibe uma caixa de diálogo para edição da
versão da XML, disponibiliza codificar se haverá
remarcações
externas
no
documento
standalone = Yes, caso contrário standalone =
No (default)
Apaga a declaração de XML
Pressionando o botão direito do mouse em cima da “Referência da coluna da
DataWindow” disponibilizará o menu popup com as opções :
Item
Edit
Insert Before
Delete
Descrição
Exiba caixa de diálogo de edição do nome do
DOCTYPE e seu identificador.
abre o menu popup tipo cascata listando todos
os modos disponíveis para construção do
contexto da XML.
Apaga a declaração contexto do Documento
O menu popup para uma “Raiz ou elemento descendente”, exibe :
Item
Edit
Edit/Add
Attribute
Add Child
Descrição
Permite adicionar um rótulo à raiz ou elemento
descendente.
Se
a
raiz
ou
elemento
descendente tem um ou mais atributos,
selecione Edit para habilitar a caixa de diálogo
para editar o nome da raiz ou elemento
descendente ou acrescentar um atributo.
Abre a caixa de diálogo para editar o nome da
raiz ou elemento descendente permitindo a
definição de um atributo.
abre o menu popup tipo cascata listando todos
os modos disponíveis que podem ser
adicionados
a
uma
raiz
ou
elemento
descendente de um XML.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
227
XML
Insert Before
Schema
Option
abre o menu popup tipo cascata listando todos
os modos disponíveis que podem ser
adicionados antes da definição de uma raiz ou
elemento descendente.
Abre uma caixa de diálogo para editar o nome
da raiz do documento
gerado no esquema da XML
Template Export - Detalhes
Descrição :
Seção de detalhe : Esta seção é separada graficamente por uma barra cinza
separando a seção de cabeçalho da seção de detalhe. Esta marcação poderá
ser alterada pelo desenvolvedor através da opção “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 Básico
Capítulo 14
228
XML
Exportando uma DataWindow.
Pode-se exportar uma DataWindow utilizando a mesma função utilizada para
exportar para HTML ou PSR, a função “SaveAs” ;
dw_1.SaveAs( "c:\minha_aplicação\d_lista01.xml", XML!, TRUE )
Assim como notação de pontos;
dw_sua_datawindow.object.datawindow.data.xml
Ou a função Describe;
dw_sua_datawindow.Describe( "datawindow.data.xml" )
O PowerBuilder 9.0 disponibiliza em suas novas propriedades para exportação
XML funções que permitem ajustes de seleção de modos, tanto em “Design
Time” quanto em “RunTime”, São elas:
Sintaxe : Export.XML.UseTemplate – Utilizada para informar o modelo que
será usado para exportação. Esse modelo deverá estar criado.
Onde: valor = Uma string que especifica o nome do template xml de
exportação 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
229
XML
Sintaxe: Export.XML.MetaDataType - É usado para especificar que
“metadato” será associado ao XML gerado na exportação da DataWindow.
Essa propriedade pode ser utilizada em “DesignTime” ou em “RunTime”.
valor
=
Uma
string
que
especifica
um
valor
para
Onde:
Export.XML.MetaDataType, dado descrito ou codificado.(veja a tabela abaixo
para os valores possíveis para a utilização da sintaxe de exportação).
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 execução (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 Básico
Capítulo 14
230
XML
Sintaxe : Export.XML.HeadGroups - É usado para especificar como serão
geradas as linhas de cabeçalho do XML, em tempo de desenho (DisignTime),
selecione na tabela de propriedades (Data Export) o item “Interate Header
for Group”, aplicando-se expressões condicionais. Em tempo de execução
(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
espaço 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” aplicandose expressões condicionais. Ou em Tempo de execução (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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
231
XML
Os valores possíveis para a utilização da sintaxe de exportação são :
Valor descrito
XMLNone!
Valor
numérico
0
XMLSchema!
1
XMLDTD!
2
MetaDataInternal! 0
MetaDataExternal! 1
Descrição
O esquema do XML ou DTD, não serão
gerados na exportação do documento
XML .
O esquema do XML será gerado junto
com a produção documento de XML.
DTD será gerado junto com a produção
documento de XML.
O metadato será gerado na seção de
DOCTYPE no momento da geração do
XML.
O metadado será salvo como um arquivo
externo com
o mesmo nome do
documento de XML, com a extensão ".
dtd" (para XMLDTD! ).
A produção do documento XML incluirá
um DOCTYPE se referenciando para o
arquivo de metadata.
PowerBuilder 9.0 Básico
Capítulo 14
232
XML
Visão da propriedade de exportação do template DataWindow XML.
Modificando e testando cada propriedade. Veja a seguir os resultados obtidos.
Adquirido por : Fabrício Moreira da Silva
Capítulo 14
PowerBuilder 9.0 Básico
XML
Exemplo 1.
Template
Meta Data Type
Save Meta Data Type
Include White Space
Head Group
Resultado exemplo 1:
:
:
:
:
:
t_lista01
XMLNone!
MetaDataInternal!
Marcado
Não marcado
233
Capítulo 14
PowerBuilder 9.0 Básico
XML
Exemplo 2:
Template
Meta Data Type
Save Meta Data Type
Include White Space
Head Group
:
:
:
:
:
t_lista01
XMLDTD!
MetaDataInternal!
Marcado
Não marcado
Resultado exemplo 2:
Adquirido por : Fabrício Moreira da Silva
234
Capítulo 14
PowerBuilder 9.0 Básico
XML
Exemplo 3:
Template
Meta Data Type
Save Meta Data Type
Include White Space
Head Group
:
:
:
:
:
t_lista01
XMLSchema!
MetaDataExternal!
Marcado
Não marcado
Resultado exemplo 3:
Conteúdo do arquivo exportado exemplo3.xml
235
PowerBuilder 9.0 Básico
XML
Conteúdo do arquivo exportado exemplo3.xsd
Adquirido por : Fabrício Moreira da Silva
Capítulo 14
236
Capítulo 14
PowerBuilder 9.0 Básico
XML
Exemplo 4:
Template
Meta Data Type
Save Meta Data Type
Include White Space
Head Group
Resultado exemplo 4:
:
:
:
:
:
t_lista01
XMLSchema!
MetaDataExternal!
Marcado
Não marcado
237
PowerBuilder 9.0 Básico
XML
Conteúdo do arquivo exportado exemplo4.xsd
Adquirido por : Fabrício Moreira da Silva
Capítulo 14
238
PowerBuilder 9.0 Básico
Capítulo 14
239
XML
Importando um padrão XML para a DataWindow.
Você pode importar o conteúdo de um documento XML para uma
DataWindow ou DataStore usando técnicas semelhantes usadas para
importar outros formatos de dados estruturados.
!"
!"
!"
!"
Para isto o template XML deverá existir.
modelo do template deve ser bem formatado.
Composite, Gráfico, objetos OLE DataWindow Composite,
Gráfico e OLE não podem ser importados usando um template.
Você tem que usar o formato default.
As declarações abaixo são equivalentes. Ambas importarão os conteúdos do
arquivo padrão XML de nome exemplo1.xml.
dw_1.ImportFile(exemplo1.xml)
dw_1.ImportFile(XML!, exemplo1)
Visão da propriedade de importação do template DataWindow XML.
PowerBuilder 9.0 Básico
Capítulo 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
importação executou a contento. O conteúdo deste arquivo mostra o que foi
importado; como o modelo, os elementos e as linhas.
Para criar esta “log”, basta selecionar a opção do template de importação
“Trace XML Import” e em “Trace File Name” definir o caminho e o nome do
arquivo que receberá as informações. Tipo: C:\LOGS\TRACE01.LOG.
Modelo de um arquivo “Tracer log”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
241
XML
Nesse capítulo, mudou-se a forma de apresentação, devido a aparente
complexidade desta nova funcionalidade, a de Exportação e Importação de
dados em padrão XML do PowerBuilder 9.0, mas como foi visto, o
PowerBuilder 9.0, minimiza em muito desenvolvimento desta tarefa.
Aplicações clientes bem como aplicações com componentes de servidor
ganharam características mais robustas que permitem uma melhor
inteligibilidade com outras aplicações e componentes.
Para uma melhor fixação dos conceitos até agora vistos, realizaremos um
pequeno modelo demonstrando os conceitos vistos.
Em nossa aplicação exemplo denominada exemplo1. Edite a DataWindow
d_lista01.
Então teremos:
PowerBuilder 9.0 Básico
Capítulo 14
242
XML
No template “Export / Import Template - XML” clique na área em branco com
o botão direito do mouse e selecione no menu popup que surgirá, a opção
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 botão direito do mouse no item “m_menu02” do template de
edição 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 edição 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
DataObject
Title
: dw_1
: d_lista01
: Janela 04 – XML
PowerBuilder 9.0 Básico
Capítulo 14
244
XML
Selecione a aba “Other” e defina:
Salve a nova janela como w_004.
Volte ao painter de edição 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 Exportação e a Importação dos
dados da DataWindow para o padrão 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 botão clique com o botão direito do mouse e no
menu popup que aparecerá selecione “Duplicate”. Repita esta operação 3
vezes. Assim teremos 4 Objetos CommandButton na janela w_004.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 14
245
XML
Com um duplo clique no primeiro botão 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 botão 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 Básico
Capítulo 14
246
XML
Com um duplo clique no terceiro botão 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 botão 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 à transação SQLCA
sqlca.dbms
="ODBC"
sqlca.dbparm
="ConnectString='DSN=EASDemoDB
V9;UID=dba;PWD=sql'"
// Conecta com o banco
connect;
//Testa a conexão
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 Básico
Capítulo 14
248
XML
Salve a janela w_004. Teremos:
Execute a aplicação. Clique nos botões para gerar os arquivos. Edite os
arquivos gerados e analise.
Adquirido por : Fabrício Moreira da Silva
Capítulo 15
Preparando sua aplicação final
Criando o objeto “Project”
Criando o arquivo executável
PowerBuilder 9.0 Básico
Capítulo 15
249
Criando o objeto “Project”
O PowerBuilder 9.0 disponibiliza um “Wizard” para criação do executável da
sua aplicação. Você pode gerar dois tipos de executável: PseudoCódigo ou
Código de máquina. (só na versão Enterprise)
Código de máquina (machine code) : Esta opção poderá ser selecionada
no template de geração do executável. Se em sua aplicação, você utilizou a
expressão Try-Catch não utilize como opção o código de máquina. Essa
seleção lhe retornará um erro de compilação.
Se a sua aplicação precisa de velocidade de processamento o código de
máquina é uma boa opção embora o tempo de compilação seja muito
maior. Se sua aplicação não necessita de uma grande velocidade de
processamento o mais aconselhável é a compilação em Pcode, é mais
rápida a compilação e consome menos memória em tempo de
execução pôs os objetos não estarão todos na memória e sim só os
objetos necessários para o processamento naquele momento.
Bibliotecas dinâmicas: Você pode criar também bibliotecas dinâmicas para
sua aplicação. Podem ser usadas bibliotecas dinâmicas para armazenar os
objetos da aplicação. Usando bibliotecas dinâmicas você pode quebrar a
aplicação em unidades menores que são mais fácil de administrar e também
reduzir o tamanho do arquivo executável.
Para aplicações de pequeno porte você não precisa utilizar bibliotecas
dinâmicas.
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á incluído. 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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” não existe. Então deixe em branco e
clique em “Next”.
Na caixa de dialogo “Specify Build Option” serão disponibilizados quatro
opções:
“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 exibição para o modelo
Windows XP. Só terá funcionalidade se você utiliza o MS Windows XP.
PowerBuilder 9.0 Básico
Capítulo 15
251
Criando o objeto “Project”
“Full Build” – Verifica e pré-compila toda a aplicação
“Incremental Build” – Verifica e pré-compila só as pbl´s que sofreram
alteração.
Para o nosso exemplo marque as opções conforme a figura acima.
Clique em “Next”.
Na caixa de dialogo “Generate Machine Code” você poderá escolher que tipo
de compilação deseja realizar. Para o nossa exemplo selecione a primeira
opção conforme a figura abaixo.
Clique em “Next”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 15
252
Criando o objeto “Project”
Na caixa de dialogo “Specify Dynamic Options” selecione a opção
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 opção.
Clique em “Next”.
PowerBuilder 9.0 Básico
Capítulo 15
253
Criando o objeto “Project”
Na caixa de dialogo “Specify Version Information” os campos disponibilizados
já estarão previamente preenchidos, mas você poderá alterar estas
informações para melhor compor o seu projeto.
Clique em “Next”.
Na caixa de dialogo “Ready to Create Application” clique em “Finish”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 15
254
Criando o objeto “Project”
Então teremos:
O seu objeto “Project” já esta configurado e pronto para compilar a sua
aplicação.
Clique em
Deploy para compilar.
Note que ao final, foram gerados os arquivos exemplo1.exe e o arquivo
exemplo1.pbd.
Faça um teste gerando seu executável em código de máquina. Assinale
“Machine Code” e clique em Deploy. Compare os arquivos.
PowerBuilder 9.0 Básico
Capítulo 15
255
Criando o objeto “Project”
Os arquivos da primeira compilação têm um “.exe” reduzido e uma biblioteca
“.pbd” maior. Já o arquivo gerado na segunda compilação (machine code) tem
um tamanho maior para o “.exe” e para a “.dll” gerada. Além de a compilação
demorar um pouco mais.
Adquirido por : Fabrício Moreira da Silva
Capítulo 16
Criando uma aplicação WEB
Criando um sítio WEB com
PowerDynamo
PowerBuilder 9.0 Básico
Capítulo 16
256
Criando um sítio WEB com PowerDynamo
Os capítulos a seguir descrevem as funcionalidades do PowerBuilder 9.0
voltado para a WEB. Para estas funcionalidades alguns softwares da Sybase
deverão estar instalados. São :
!"
PowerDynamo 3.6 ou maior
!"
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 sítio Web com PowerDynamo são arquivos ou repositórios de banco de
dados onde você pode; criar, armazenar e administrar o acesso de
documentos HTML e de dados. O PowerDynamo permite embutir instruções
de server-side em uma página Web. Possibilitando o processamento destas
instruções quando uma chamada cliente é efetuada na página.
O PowerDynamo é um servidor de aplicação que gera conteúdo de Web
dinâmico. Possibilita recuperar informações de seus bancos de dados
retornando os resultados para o servidor Web. O PowerDynamo também
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
aplicação definir suas configurações. O PowerBuilder 9.0 disponibiliza um
Wizard bem simples para esse processo onde automaticamente se poderá
mapear todos os objetos utilizados em sua aplicação WEB.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 16
257
Criando um sítio WEB com PowerDynamo
Utilizando passo a passo o Wizard do PowerBuilder 9.0 criaremos um sítio
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 aplicação
WEB.
Para o nosso exemplo digite conforme a figura abaixo. Não é necessário
digitar todos os campos apenas na linha “Web Target” digite ex1.pbt os
demais campos serão automaticamente preenchidos.
Clique em “Next”.
PowerBuilder 9.0 Básico
Capítulo 16
258
Criando um sítio WEB com PowerDynamo
Na caixa de dialogo “Create Url Prefix Mapping” no item “URL Prefix
Mapping” confirme “/exemplo” e clique em “Next”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 16
259
Criando um sítio WEB com PowerDynamo
Na caixa de dialogo, “Create or Select ODBC Data Source” escreva ou
confirme “exemplo” e clique em “Next”.
PowerBuilder 9.0 Básico
Capítulo 16
260
Criando um sítio 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 16
261
Criando um sítio WEB com PowerDynamo
Na caixa de dialogo “Specify Login Information” informe a identificação de
usuário. Por default é dba e a senha de acesso que por default é sql.
Clique em “Next”.
PowerBuilder 9.0 Básico
Capítulo 16
262
Criando um sítio 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 configuração ou assuma o default.
Clique em “Next”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 16
263
Criando um sítio 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 Básico
Capítulo 16
264
Criando um sítio WEB com PowerDynamo
Na caixa dialogo “Select Object Model” assuma “default Object Model”
clique em “Next”.
Adquirido por : Fabrício Moreira da Silva
e
PowerBuilder 9.0 Básico
Capítulo 16
265
Criando um sítio WEB com PowerDynamo
Na caixa de dialogo “Choose File Deployment Options” assuma o default e
clique em “Next”.
PowerBuilder 9.0 Básico
Capítulo 16
266
Criando um sítio 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 16
267
Criando um sítio WEB com PowerDynamo
Na caixa de dialogo “Specify Local Copy Folder” assuma o default e clique
em “Next”.
Então teremos em “Ready to Create PowerDynamo Web Site” todas as
especificações para criação. Clique em “Finish”.
PowerBuilder 9.0 Básico
Capítulo 16
268
Criando um sítio WEB com PowerDynamo
Em nossa aplicação:
Após a criação do ambiente agora podemos criar nossa primeira página no
sítio “ex_1”.
Adquirido por : Fabrício Moreira da Silva
Capítulo 17
Criando a primeira página Web
Utilizando 4GL Web/JSP Page wizard
PowerBuilder 9.0 Básico
Capítulo 17
269
Criando a primeira página Web.
Utilizando o Wizard 4GL Web / JSP page você cria páginas no seu ambiente
PowerDynamo muito facilmente. Nesse capítulo vamos criar uma página 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 : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
270
Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo, “Specify New HTML File” digite o título para a abertura
da página 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 Básico
Capítulo 17
271
Utilizando o Wizard 4GL Web / JSP Page
Se a sua aplicação Web utilizará estilos de apresentação padronizados tipo
arquivos “.css”, nessa caixa de dialogo você poderá identifica-los. Caso
contrário deixe em branco a opção “Style Sheet” e clique em “Next”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 Básico
Capítulo 17
273
Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo “Specify Page Context” pode-se definir um cabeçalho e
um rodapé para a página em construção. Nesse caso o cabeçalho será
preenchido pelo título da página e o rodapé com a data atual. Ambos os dados
poderão ser alterados posteriormente. Marque as duas caixas e clique em
“Next”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 serão
apresentados no rodapé da página. Para desenvolvimento é uma boa opção,
mas não muito apresentável quando em produção. Portanto ao selecionar
este modo lembre-se que essa opção pode ser alterada para se inibir a
exibição das mensagens de erro. O “Trace” é uma boa opção se deixar
ativado.
Clique em “Next”.
PowerBuilder 9.0 Básico
Capítulo 17
275
Utilizando o Wizard 4GL Web / JSP Page
Na caixa de dialogo “Define Page Parameters” você pode definir variáveis e
atribuir-lhes escopo se for necessário. Automaticamente estas variáveis serão
adicionadas a variáveis globais para serem usadas do lado servidor de sua
aplicação. No nosso exemplo defina em “Parameter Name”, “ID” e em
“Default Value”, deixe em branco.
Clique em “Next”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 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 aplicação. poderia ser selecionado aqui, mas no caso do exemplo que
estamos desenvolvendo ainda não criamos nenhum componente.
PowerBuilder 9.0 Básico
Capítulo 17
277
Utilizando o Wizard 4GL Web / JSP Page
Então teremos a caixa de dialogo final do 4GL Web / JSP Page. Clique em
“Finish” para gerar a primeira página da aplicação ex_1.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
278
Utilizando o Wizard 4GL Web / JSP Page
Visão da página gerada.
Nesse ponto já estamos com a primeira página html criada através do 4GL
Web / JSP Page para o ambiente PowerDynamo “ex_1”. O PowerBuilder 9.0
ainda disponibiliza o painter de edição e visualização html possibilitando a
manutenção e melhoramento da página html gerada.
PowerBuilder 9.0 Básico
Capítulo 17
279
Conhecendo o painter de edição html
No painter de edição html do PowerBuilder 9.0 esta disponibilizada uma nova
barra de ferramentas.
Alguns objetos do PowerBuilder estão disponíveis para inclusão em
seu projeto Web. Não entraremos nestes detalhes considerados
avançados. Alguns desses controles precisam de configurações mais
detalhadas para o EAServer. O que não é o propósito deste livro.
Descrevendo a barra de ferramenta PainterBar3.
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
linha Horizontal
fim de linha(Line Break)
tabela
figura
HiperLink
Ancora
Caixa de marcação
botão de rádio
campo de linha simples
área de texto
ListBox
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
Inserir
botão
botão com imagem
texto estático
DataWindow
objeto
Applet
plug-in
Após estar familiarizado com a barra de ferramenta procederemos à
familiarização do painter de edição. Para isto modificaremos a página
Bem-vindo.htm.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
280
Alterando a página Bem-vindo.htm
Com a página editada coloque o cursor no final do texto “Bem-vindo” e tecle
“Enter”.
Marque o texto “Bem-vindo” e clique com o botão 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 rádio “Inline” e no botão “Edit”.
Esta opção disponibiliza as opções de edição de texto como fontes, fundo,
margens e etc.
PowerBuilder 9.0 Básico
Capítulo 17
281
Alterando a página “Bem-vindo.htm”
Selecione a fonte “Arial Black” clique no botão com a seta para direita para
transferir a fonte.
No grupo “Font Size” clique no botão de rádio 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 botão de rádio “Relative” e selecione
“center” para horizontal e vertical.
Selecione “White” para “BackGround” Color.
Clique em “Ok”. E teremos :
Clique em “Ok” para aceitar a seleção dos dados e permitir ao PowerBuilder
9.0 alterar a página Bem-vindo.htm.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
Alterando a página “Bem-vindo.htm”
A figura abaixo representa a alteração realizada na página Bem-vindo.htm.
Clique em “Save” para guardar as alterações.
282
PowerBuilder 9.0 Básico
Capítulo 17
283
Incluindo uma imagem na página “Bem-vindo.htm”
Clique como o botão 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 botão 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 diretório
“PowerBuilder 9\Tutorial” selecione a imagem “tshirtw.jpg”. A imagens será
copiada para a pasta “Imagens”.
Clique na página Bem-vindo.htm. Coloque o cursor no final da linha “Bemvindo”. Tecle “Enter” para incluir uma nova linha.
Coloque o cursor nesta nova linha e clique no menu (PowerBar3) em
Incluir figura. Clique no botão (...) para procurar a figura a ser inserida.
Abra a pasta Imagens e selecione a imagem “tshirtw.jpg”.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
Incluindo uma imagem na página “Bem-vindo.htm”
Teremos :
Clique em “OK”. E Em “OK” outra vez.
284
PowerBuilder 9.0 Básico
Capítulo 17
285
Incluindo uma imagem na página “Bem-vindo.htm”
Teremos :
Melhorando :
Clique na imagem como botão direito do mouse e selecione “Position” e “Use
Absolute Positioning”. Mova a imagem conforme sua preferência.
Clique em “Save” para guardar as alterações.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
286
Criando uma página Inicial
Para o projeto ficar um pouco mais profissional e treinarmos um pouco mais,
criaremos uma página inicial utilizando o mesmo processo da criação da
página Bem-vindo.htm.
No template TreeView clique com o botão 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 título para a abertura
da página 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 opção “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 cabeçalho e
um rodapé para a página em construção. Nesse caso o cabeçalho será
preenchido pelo título da página e o rodapé com a data atual. Ambos os dados
poderão 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 Básico
Capítulo 17
287
Criando uma página Inicial
Na caixa de dialogo “Define Page Parameters” você pode definir variáveis e
atribuir-lhes escopo se for necessário. Automaticamente estas variáveis serão
adicionadas a variáveis globais para serem usadas do lado servidor de sua
aplicação. 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”.
Então teremos a caixa de dialogo final do 4GL Web / JSP Page clique em
“Finish” para gerar a segunda página da aplicação ex_1.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
288
Criando uma página Inicial
Então teremos:
Marque o texto “Put your data here” e troque o texto por : “Clique para
entrar”.
Clique em “Save” para guardar as alterações.
Então teremos:
PowerBuilder 9.0 Básico
Capítulo 17
289
Criando uma página 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 alterações.
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Capítulo 17
290
Depurando e executando sua aplicação Web.
Coloque o mouse sobre a aplicação Web “ex_1” clique no botão direito do
mouse e selecione “Deploy”.
Acompanhe no template “Output” a depuração da aplicação Web “ex_1”. Ao
final, se tudo estiver correto a mensagem “Finished Deploy of Target
ex_1” será exibida.
Para executar a sua aplicação você precisa estar com o “PowerDynamo
Personal Web Server” ativo.
Clique em “Iniciar” e procure no seu diretório 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
na Taskbar do MS Windows!.
Então selecione no menu principal “Run” e “Select and Run”.
Selecione ex_1. E clique em “OK”.
será visualizado
PowerBuilder 9.0 Básico
Capítulo 17
Depurando e executando sua aplicação Web.
Então teremos:
Adquirido por : Fabrício Moreira da Silva
291
PowerBuilder 9.0 Básico
Capítulo 17
292
Finalizando
Seu projeto agora já possui uma ligação Web. O PowerBuilder 9.0 pode
disponibilizar dados via DataWindow direto pelo browser, possibilitando uma
interação ambiente cliente/servidor e Web, mas para que isto seja possível é
necessária à utilização EAServer. Este livro, conforme nos referenciamos no
inicio é uma literatura básica, cujo objetivo é possibilitar aos iniciantes ter
uma referência, 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 técnicas avançadas do Sybase PowerBuilder 9.0.
Até Breve.
Paz e prosperidade a todos.
PowerBuilder 9.0 Básico
Guia de Referência : Nomenclaturas
Guia de Referência
Nomenclaturas
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Nomenclaturas
Nomenclatura dos Tipos de Objetos
Nome do Objeto
Objeto de DataWindow
Função (global)
Menu
Estrutura
Consulta
Convenção
d_
f_
m_
s_
q_
Objeto do usuário
Janela
u_
w_
Exemplo
d_cliente
f_exibir _ erro
m_cliente
s_empregado
q_
clientes_para_agentes
u _ pedido
w_ ancestral
Nomenclatura dos Controles da Janelas
Nome do Controle
ChekBox
CommandButton
DataWindowControle
DropDowListBox
EditMask
WindowsFunction
Graph
GrupBox
HscrollBar
Line
ListBox
MultiLineEdit
Oval
Picture
PictureButton
RadioButton
Rectangle
RoundRectangle
SingleLineEdit
StatleText
UserObject
VscrollBar
Convenção
cbx_
cb_
dw_
ddlb_
em_
wf_
gr_
gb_
hsb_
ln_
lb_
mle_
oval_
p_
pb_
rb_
r_
rr_
sle_
st_
uo_
vsb_
Exemplo
cbx_rascunho
cb_ok
dw_dados
ddlb_agentes
em_telefone
wf_errosql
gr_chegadas_por_agentes
gb_opção_de_saida
hsb_vermelho
ln_linhacurta
lb_agentes
mle_comentários
oval_equipe
p_empregado
pb_atualizar
rb_construção
r_ret
rr_tela
sle_nome_do_cliente
st_prompt_do_cliente
uo_pedido
vsb_percentual_feito
293
PowerBuilder 9.0 Básico
Guia de Referência : Nomenclaturas
Nomenclatura por Espaço
Escopo da Variável
Local
Global
Instância
Compartilhada
Argumento
Convenção
lx_ ou nada (o prefixo é opcional nas variáveis
locais)
gx_
ix_
sx_
ax_
Nomenclatura por Tipo de Dados
Tipo de Dados
Janela (Window)
Item de Menu (MenuItem)
Controle de DataWindow
Estrutura(structure)
Objeto do usuário (User Object)
Inteiro (Integer)
Inteiro sem Sinal (Unsigned Integer)
Longo (Long)
Longo sem Sinal (Unsigned Long)
Booleano (Boolean)
String (String)
Duplo (Double)
Real (Real)
Decimal (Decimal)
Data (Date)
Hora (Time)
DataHora (DateTime)
Convenção
w
m
dw
str
uo
i
ui
l
ul
b
s
db
r
dc
d
t
dt ou st (TtimeStamp)
294
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Nomenclaturas
Exemplos de Nomenclaturas de Variáveis
Nome da Variável
sstr_pontos_de_dados []
Descrição do Tipo de Dados
Array de Shared Structure (estrutura
compartilhada)
Instância de um Unsigned Long
(inteiro longo sem sinal)
Shared String (string compartilhada)
Instância de um inteiro
Variável Local (prefixo não
obrigatório)
Inteiro Local (prefixo opcional
acrescentado)
Instância Local de uma variável de
janela
String de argumento (passado|)
iul_id_do_cliente
ss_nome
ii_contagem
contagem_de_loops
li_contagem_de_loops
lw_inst_de_janela
as_erro
Nomenclatura das Funções de Objetos.
Tipo de Objeto da Função
Função Global
Função de Menu
Função de Objeto do
Usuário
Função de Janela
Convenção
f_
mf_
uf_
Exemplo
f_erro_sql
mf_sair
uf_pedido
wf_
wf_atualizar
295
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Guia de Referência
Atributos e Eventos
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Aplicações
Atributos
AppName
DDETimeOut
Valores
String
Integer
DwMessageTitle
String
MicroHelpDefault
String
ToolbarText
Boolean
ToolbarFrameTitle String
ToolbarSheefTitle
String
Descrição
Uma string contendo o nome da aplicação
Um inteiro especificando, em segundo, o
intervalo de tempo reservado para uma
conversação DDE
Uma string contendo o título das caixas de
mensagens de datawindow exibidas durante
a execução
Uma string contendo o texto básico para o
MicroHelp
Um valor TRUE ou FALSE indicando se o
texto da barra de ferramentas deve ou não
ser exibido: Este atributo só tem efeito em
uma janela de quadro MDI
Uma string indicando o título da barra de
ferramentas do quadro, quando ela é uma
barra de ferramentas flutuante. Este atributo
só tem efeito em uma janela de quadro MDI
Uma string indicando o título 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 Aplicações
Evento
Close
Idle
Open
SystemError
Descrição
Executado no fechamento da execução
Executado quando ocorre o número
especificado de segundos sem qualquer
atividade durante a execução da aplicação
Executado na abertura da aplicação
Executado durante um erro do sistema em
qualquer local da aplicação
296
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Janelas
Atributos
BackColor
Border
Valores
Long
Boolean
BringToTop
Boolean
ColumnsPerPage
Integer
Controle []
Array de
objetos
ControlMenu
Boslean
Enabled
Boolean
Height
HscrollBar
Integer
Boolean
Icon
String
LinesPer|Page
Integer
Descrição
Um indicador da cor de fundo
Um valor TRUE ou FALSE
indicando se a janela possui ou
não uma borda
Um valor TRUE ou FALSE
indicando a suposição de que a
janela deve estar no primeiro
plano
Um inteiro indicando o número de
unidades a rolar quando há um
clique sobre a barra de rolagem
Um array relacionando os
controles. Você não pode alterar
os valores desta variável
Um valor TRUE ou FALSE
indicando a presença da caixa de
controle e do menu da caixa de
controle
O valor TRUE permite à janela
transmitir e receber mensagens
Indica à altura da janela
Um valor TRUE ou FALSE
indicando a presença de uma
barra de rolagem horizontal
O ícone associado com uma janela
quando a janela se encontra
minimizada
Um inteiro indicando o número de
unidades a rolar quando há um
clique sobre a barra de rolagem
para baixo
297
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Janelas
Atributos
MaxBox
MenuID
MenuName
MinBox
Pointer
Resizable
Tag
Title
TitleBar
ToolbarAlignment
ToolbarHeight
ToolbarVisible
Valores
Boolean
Descrição
Um valor TRUE ou FALSE indicando a
presença de uma caixa de maximizar
na barra de titulo da janela
String
O item do menu associado a janela
String
O nome do menu associado com a
identificação de menu
Boolean
Um valor TRUE ou FALSE indicando a
presença de uma caixa de minimizar
na barra de titulo da janela
String
Uma string contendo o nome do
arquivo que guarda o ponteiro para o
objeto ou controle
Boolean
Um valor TRUE ou FALSE indicando se
a janela é ou não redimensionável
String
Uma string contendo o valor da tag
da janela
String
Uma string contendo o título da janela
Boolean
Um valor TRUE ou FALSE indicando a
presença de uma barra de titulo na
sua janela. A modificação deste
atributo em um script pode provocar
um erro durante a execução
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
Integer
Estabelece a altura da barra de
ferramentas. Este atributo só tem
efeito em quadros MDI e folhas
Boolean
Torna a barra de ferramentas visível
ou invisível (TRUE ou FALSE). Este
atributo só tem efeito em quadros
MDI e folhas
298
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Janelas
Atributos
ToolbarWidth
ToolbarX
ToolbarY
UnitsPercolumn
UnitsPerLine
Visible
VscrollBar
Width
Valores Descrição
Integer Especifica a largura de uma barra de
ferramentas flutuante. Este atributo só
tem efeito em quadros MDI e folhas
Integer A coordenada X de uma barra de
ferramentas flutuante. Este atributo só
tem efeito em quadros MDI folhas
Integer A coordenada Y de uma barra de
ferramentas flutuante. Este atributo só
tem efeito em quadros MDI e folhas
Integer Indica o número de unidades de rolagem
do PowerBuilder quando o usuário efetua
a rolagem através de um clique á
esquerda ou á direita da caixa de rolagem
Integer Indica o número de unidades de rolagem
do PowerBuilder quando o usuário efetua
a rolagem através de um clique acima ou
abaixo da caixa de rolagem
Boolean Torna a janela visível ou invisível
Boolean Um valor TRUE ou FALSE indicando a
presença de uma barra de rolagem
Integer Indica a largura da janela
299
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Janelas
Atributos
WindowState
Valores
Enumerated
WindowType
Enumerated
X
Integer
Y
Integer
Descrição
Indica o estado (maximizada, minimizada ou
normal) em que a janela esta sendo exibida
no momento.
Indica o tipo de janela (principal,
instantânea, MDI< Frame, etc).
Indica a coordenada X do canto superior
esquerdo da janela
Indica a coordenada Y do canto esquerdo da
janela
Eventos de Janelas
Eventos
Activate
Clicked
Close
CloseQuery
Deactivate
DoubleClicked
DragDrop
DragEnter
DragLeave
DragWithin
Hide
HotLinkAlarm
Key
Mouse Down
MouseMove
Descrição
A janela recebeu o foco
O usuário deu clique na janela
A janela esta sendo fechada
A janela esta sendo fechada através da caixa de
controle
A janela esta perdendo o foco
O usuário de um clique duplo na janela
Um objeto arrastado foi solto na janela
Um objeto arrastado entrou na janela
Um objeto arrastado deixou a janela
Um objeto esta sendo arrastado no interior da janela
A janela se torna oculta
Uma aplicação servidora transmitiu novos dados (ou
dados alterados) através de DDE
Uma tecla foi pressionada (exceto alt)
Um botão do mouse foi pressionado em uma área
vazia da janela
O mouse esta sendo movimentado
300
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Eventos de Janelas
Eventos
MouseUp
Open
Other
RbuttonDown
RemoteExec
RemoteHotLinkStar
RemoteHotLinkStop
RemoteSend
Resize
Show
SystemKey
Timer
Descrição
O botão do mouse foi liberado em uma área vazia da
janela.
A janela se abre.
Ocorreu um evento do Windows que não foi definido
pelo PowerBuilder.
O usuário está mantendo pressionado o botão direito
do mouse na janela
Uma aplicação, cliente transmitiu uma solicitação
através da DDE
Uma aplicação, cliente quer iniciar um vinculo ativo
através da DDE.
Uma aplicação, cliente quer encerrar um vinculo ativo
através da DDE.
Uma aplicação, cliente transmitiu dados através da
DDE.
O usuário esta redimensionando a janela.
A janela estava oculta e agora esta sendo exibida.
A tecla Alt ou Alt+outra foi pressionada.
O evento foi disparado pela função Timer em algum
intervalo de tempo determinado.
Atributos de Itens de Menus
Atributos
Checked
Valores
Boolean
Enabled
Boolean
Item[]
MicroHelp
Array de menus
String
ParentWindow
Window
Descrição
Um valor TRUE ou FALSE
indicando se item de menu esta
assinalado.
Um valor de TRUE ou FALSE
indicando se o item de menu é
capaz de transmitir é receber
mensagens.
Uma lista de itens de menu
A Microhelp associada a esse
menu.
A janela que contém o menu.
301
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Itens de Menus
Atributos
Tag
Valores
String
Text
ToolbarItemDown
String
Boolean
ToolbarItemDownName
String
ToolbarItemName
String
ToolbarItemOrder
Integer
ToolbaritemVisible
Boolean
Visible
Boolean
Descrição
Uma string contendo o valor da tag do
item de menu.
O texto associado a esse item de menu
Um valor TRUE ou FALSE indicando se o
item da barra de ferramentas esta
embaixo como padrão.
O nome da figura exibida quando há um
clique sobre um item de uma barra de
ferramentas.
O nome da figura exibida no item
correspondente da barra de
ferramentas.
Um inteiro especificando a ordem dos
itens na barra de ferramentas.
Um valor TRUE ou FALSE indicando se o
item da barra de ferramentas esta ou
não visível.
Um Valor TRUE ou FALSE indicando se o
item do menu esta ou não visível.
302
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
Accelerator
Valores
Integer
Alignment
Enumerated
AutoHScroll
Boolean
AutoSkip
Boolean
AutoVScroll
Boolean
AllowEdit
Boolean
Automatic
Boolean
BackColor
Long
BeginX
Integer
Descrição
Um inteiro contendo o valor ASC II que
indica a tecla que você quer atribuir como
aceleradora para um controle
Um tipo de dados enumerados,
especificando o alinhamento do texto em
um controle MultiLineEdit, StaticText ou
PictureButton. Os valores válidos são;
Center!, Left! ou Right!.
Um valor TRUE ou FALSE indicando se você
quer que a rolagem de um campo no
sentido horizontal seja automática.
Um atributo da máscara Edit indicando se
você quer ou não saltar automaticamente
esse campo e passar para o campo
seguinte na ordem de tabulação.
Um valor TRUE ou FALSE indicando se você
quer que a rolagem de um campo no
sentido vertical seja automática.
Um valor TRUE ou FALSE permitindo ou não
a entrada de um valor na tabela de código
em uma DrogDownListBox.
Um valor TRUE ou FALSE indicando se o
controle CheckBox ou RadioButton deve ser
assinalado ou desmarcado
automaticamente por um clique do mouse.
Um recurso que utiliza a função RGB para
determinar a cor do segundo plano de um
controle de janelas, por exemplo: para
definir a cor do fundo de uma edição em
várias linhas como púrpura você digitaria,
mle_field.backcolor = RGB(255,0,255) .
O ponto X inicial de um controle de linha
em uma janela em relação ao canto
superior esquerdo.
303
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
BeginY
Valores
Integer
Descrição
O ponto Y inicial de um controle de linha
em uma janela em relação ao canto
superior esquerdo.
Border
Boolean
Um valor TRUE ou FALSE indicando se o
controle da janela tem ou não uma borda
BorderStyle
Enumerated
Uma variável enumerada descrevendo o
estilo da borda.
BringToTop
Boolean
Um valor TRUE ou FALSE indicando se o
controle da janela deve ser levado ou não
para frente dos outros controles.
Cancel
Boolean
Um valor TRUE ou FALSE indicando se este
CommandButton ou PictureButton deve ou
não ser usado como um botão de
cancelamento.
Category
ObjetogrAxis Define os atributos do eixo das categorias
em um controle gráfico.
Checked
Boolean
Um valor TRUE ou FALSE indicando se uma
CheckBox (caixa de verificação, esta
selecionada com um X ou se um
RadioButton (Botão de rádio) esta
preenchida).
ClassName
String
Uma string contendo o nome do controle da
janela.
Columns PerPage Integer
Um inteiro indicando o número de unidades
a serem roladas quando houver um clique
acima da caixa de rolagem.
Controle[]
WindowObject Um array relacionando os controles. Você
não pode alterar os valores pela variável.
ControMenu
Boolean
Um valor TRUE ou FALSE indicando a
presença 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.
304
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
CornerWidth
Valores
Integer
DateObject
String
Default
Boolean
Depth
Integer
Disabledname
String
DisplayDate
String
DisplayOnly
Boolean
DragAuto
Boolean
DragLcon
Dtring
Elevation
Integer
Enabled
Boolean
Descrição
A largura do canto arredondado em um
RoundRectangle.
Uma string indicando o objeto de DataWindow
associado com o controle de DataWindow.
Um valor TRUE ou FALSE denotando se esta
CommandButton ou PictureButton deve ou
não ser usado como botão padrão.
Um inteiro indicando a porcentagem da
profundidade em relação a largura do gráfico,
por exemplo, se o valor da profundidade é 75,
a profundidade do gráfico corresponde a 75%
da sua largura.
O nome da figura a ser exibida quando um
PictureButton estiver inativo.
Uma string contendo os dados que aparecem
inicialmente em uma EditMask.
Um valor TRUE ou FALSE indicando se este
campo pode ou não ser alterado pelo usuário.
Um valor TRUE ou FALSE indicando se um
clique coloca automaticamente o controle de
janela no modo Drag (Quando DragAuto e não
um evento Clicked).
O icone aparece quando o usuário arrasta o
controle da janela.
Um inteiro especificando o ângulo de alteração
da parte frontal para a posterior em um gráfico
Um valor TRUE ou FALSE indicando se o
controle de janela pode ou não transmitir e
receber mensagens.
305
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
EndX
Valores
Integer
FaceName
String
FiLLColor
Long
FillPatt5ern
Enumerated
FocusRectangle
Boolean
FontCharSet
Enumerated
(CharSet)
FontFamily
Enumareted
(Family!)
FontPitch
Enumerated
(Pitch!)
GraphType
Enumerated
Height
Integer
Descrição
O ponto X final de um controle de linha em
uma janela em relação ao canto superior
esquerdo.
Uma string contendo o nome da face de
tipo (por exemplo, Arial) para o texto de
um controle de janela.
A cor de preenchimento em um controle
oval retângulo ou retângulo arredondado
O padrão para preenchimento em um
controle de texto estático, oval, retângulo
ou retângulo arredondado.
Um valor TRUE ou FALSE indicando se deve
ou não ser exibido um retângulo em torno
do controle
Especifica o conjunto de caracteres da
fonte. Os valores validos são: ANSI!,
ChineseBigA!, DefaultCharSet!, HangEul!,
Shiftjis!, OEM e Symbol
Especifica um grupo de faces de tipos com
caracteristicas semelhantes para o texto.
Os valores válidos são: AnyFont!,
Decorative!, Modern!, Roman!, Scripte
Swiss.
Especifica o esoaçamento horizontal (pitch)
do texto. Os valores válidos são: Default! –
utiliza o espaçamento padrão
correspondente a fonte (fixo ou variável );
Fixed – usa espaçamento fixo; Variable –
usa espaçamento variável.
Um tipo de dados enumerado grGraphType
especificando o tipo de um gráfico.
Um número indicando a altura do controle
da janela.
306
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
HscrollBar
HscrollBar
HsplitScrol
HtextAlign
Icon
Increment
Invert
Italic
Item[]
LeftText
Valores
Boolean
Descrição
Um valor TRUE ou FALSE indicando se o
controle de janela tem ou não uma barra de
rolagem horizontal.
Boolean
Um valor TRUE ou FALSE indicando se o
controle de janela tem ou não uma barra de
rolagem horizontal.
Boolean
Um valor TRUE ou FALSE indicando se o
controle de janela permite ou não dividir a
rolagem.
Enumerated Um recurso que especifica o alinhamento do
texto em um controle PictureButton. Os
valores válidos são Center, Left e Right.
String
Uma string indicando o icone (arquivo ICON)
exibido se o controle de janela estiver
minimizado.
Double
Um recurso que especifica um incremento
usado em uma máscara Edit numérica com
controle de rotação.
Boolean
Um valor TRUE ou FALSE indicando se um
controle de figura esta ou não invertido
Boolean
Um valor TRUE ou FALSE especificando e o
texto em um controle esta ou não itálico.
Array de
Um array de strings de exibição em uma
String
tabela de código de ListBox ou
DropDownListBox.
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 verificação ou de um botão de rádio.
307
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
Limit
Valores
Integer
Legend
Enumerated
( gr Legend
Type )
LegenDispAttr
LibraryName
Gráfico de
objeto
grDispAttr
String
LineColor
Integer
LinesPerPage
Integer
LineStyle
Enumerated
(Style)
LineTrickness
Integer
LiveScroll
Boolean
Mask
String
Descrição
Um inteiro contendo o número máximo de
caracteres (de 0 até 32767) que o usuário
pode digitar em um controle. O valor 0
indica um número ilimitado de caracteres.
Um número indicando a localização da
legenda de um gráfico. Os valores válidos
são: 0 – None, 1 – Left, 2 – Right, 3 –
Top, 4 – Botton.
Define como você deseja que a legenda
apareça.
O nome da biblioteca de vínculos dinâmicos
(DLL) que contém uma classe de objetos
personalizados do usuário.
A cor para desenho de linhas em um
controle Line, Oval, Rectangle ou
RoundRectangle.
Um inteiro indicando o número de unidades
a serem roladas quando houver um clique
na parte inferior da barra de rolagem.
Um tipo de dados enumerados Style!
Especificando o estilo da linha de um
controle, Line Oval, Rectangle ou
RoundRectangle.
Um inteiro determinando a espessura da
linha em um controle Line, Oval, Rectangle
ou RoundRectangle.
Um valor TRUE ou FALSE indicando se o
acionamento das barras de rolagem
possibilita a rolagem DataWindow.
Uma string contendo um formato de um
controle de máscara de edição.
308
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
MaskdataType
MaxBox
MaxPosition
MicroHelpHeight
MinBox
MinPosition
MinMax
MultiSelect
Valores
Descrição
Enumerated Uma variável enumerada atribuindo um
formato predefinido a um controle de
máscara de edição.
Boolean
Um valor TRUE ou FALSE indicando a
presença de uma caixa de maximizar na
DataWindow.
Integer
Um inteiro contendo o valor do atributo da
posição 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.
Integer
Um inteiro no controle MDIClient (MDI_1)
determinando a altura da MicroHelp
Boolean
Um valor TRUE ou FALSE indicando a
presença de uma caixa de minimizar na
DataWindow.
Integer
Um inteiro contendo o valor do atributo de
posição quando uma barra de rolagem
horizontal esta na extremidade esquerda ou
uma barra de rolagem vertical se encontra na
extremidade superior.
String
Uma string contando os valores mínimo e
máximo para um controle de rtotação em
uma máscara de edição. Os valores mínimo e
máximo são separados por uma tabulação
(por exemplo, em_campo.minmax= “1000
5000”).
Boolean
Um valor TRUE ou FALSE indicando se o
usuário pode ou não selecionar diversos
valores em uma ListBox.
309
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
ObjectType
Valores
Enumerated
OriginalSize
Boolean
OverlapPerce Integer
nt
Password
Boolean
Perspective
Integer
PictureName
String
Pointer
String
Position
Integer
Resizable
Boolena
Rotation
Integer
Descrição
Um tipo de dados enumerado especificando o
tipo de objeto do usuário.
Um valor TRUE ou FALSE indicando se devem
ou não ser ignorados os atributos Height e
Midth em um controle PictureButton sendo
exibida em seu tamanho original a figura
associada com o controle.
Um inteiro especificando a porcentagem da
largura dos indicadores de dados (por
exemplo) barras ou colunas de diferentes
séries que se sobreoõem em um gráfico.
Um valor TRUE ou FALSE indicando se uma
Single Line Edit deve ser criada como campo
de senha.
Um valor inteiro (de 1 a 100), indicando a
distância do gráfico até a parte frontal da
janela. Quanto maior o número maior a
distância e menor o tamanho do gráfico.
Uma string contendo o nome do mapa de bits
em um controle Pictyre ou PictureButton.
Uma string contendo o ponteiro do mouse
para este objeto.
A posição atual de uma barra de rolagem.
Somente para uso nos atributos HscrollBar e
VscrollBar.
Um valor TRUE ou FALSE indicando se o
DataWindow é ou não redimensionável.
Um valor inteiro indicando o quanto você
deseja girar um gráfico da esquerda para a
direita.
310
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
Series
Valores
Objeto GrAxis
ShadeColor
Integer
ShowList
Boolean
Sorted
Boolean
Spacing
Integer
Spin
Boolean
StdHeight
Boolean
StdWicth
Boolean
Style
TabOrder
Long
Integer
TabStop []
Array de
inteiros
Descrição
Define os atributos do eixo das séries em um
controle de gráfico.
Um inteiro determinando a cor do sombreado
de um gráfico.
Um valor TRUE ou FALSE indicando se a lista
de uma DroDowmListBox deixa ou não ser
sempre exibida.
Um valor TRUE ou FALSE indicando se os
elementos em uma ListBox ou
DropDowmListBox devem ou não ser
classificados de acordo com seu valor de
exibição.
Um inteiro determinando o espaço entre as
categorias.
Um valor TRUE ou FALSE indicando se uma
máscara de edição tem ou não controle de
rotação.
Um valor TRUE ou FALSE indicando deve ser
usado a altura da barra de rolagem
horizontal padrão (TRUE) ou a altura da
barra de rolagem horizontal do sistema
(FALSE).
Um valor TRUE ou FALSE indicando se deve
ser usada a largura da barra de rolagem
vertical padrão (TRUE ou a largura da barra
de rolagem vertical do sistema (FALSE)).
Controla a aparência do objeto do usuário.
Um inteiro que descreve a ordem de
tabulação do controle de janela em relação a
outros controles.
Um array de inteiros com sinais, contendo a
posição das paredes de tabulação em uma
máscara Edit, ListBox ou Line Edit.
311
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
Tag
Valores
String
Text
TextCase
TextColor
String
Enumerated
(case)
Long
TextSize
Integer
ThirdState
Boolean
ThreeState
Boolean
Title
String
TitleBar
Boolean
TitleDispAttr
Objeto gr
DispAttr
Boolean
Underline
UnitsPerColu
mn
Integer
Descrição
Uma string contendo o valor da tag do
controle de janela.
O texto associado a um controle de janela
Uma variável enumerada Case! Denotando a
altura dos caracteres em um campo texto.
Um inteiro longo indicando a cor do texto em
um campo.
Um inteiro indicando o tamanho do texto em
um campo texto.
Um valor TRUE ou FALSE indicando se uma
caixa de verificação encontra-se ou não no
seu terceiro estado.
Um valor TRUE ou FALSE indicando se uma
caixa de verificação tem três estados, (TRUE)
ou somente dois estados (FALSE).
Uma string contendo o título da DataWindow
ou do gráfico.
Um valor TRUE ou FALSE indicando se a
DataWindow tem ou não uma barra de titulo.
Um objeto DispAttr definindo o estilo de um
titulo em um gráfico.
Um valor TRUE ou FALSE especificando se o
texto em um controle deve ou não estar
sublinhado.
Um recurso que indica o número de unidades
do PowerBuilder na rolagem efetuada pelo
usuário ao dar um clique no lado esquerdo ou
direito da barra de rolagem.
312
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Atributos de Controles de Janelas
Atributos
UnitsPerLine
Valores
Integer
UseCodeTable Boolean
Values
Objeto gr Axis
Visible
Boolean
VscrollBar
Boolean
VtextAlign
Enumerated
Weight
Integer
Width
Integer
X
Integer
Y
Integer
Descrição
Um recurso que indica o número de
unidades do PowerBuilder na rolagem
efetuada pelo usuário ao dar um clique na
parte superior ou inferior da barra de
rolagem.
Um valor TRUE ou FALSE indicando se
uma máscara Edit irá utilizar tabelas de
códigos. Esse atributo útil em controles
de rotação de campos não-numéricos.
Um recurso que estabelece os atributos
dos valores em um controle de gráfico.
Um valor TRUE ou FALSE indicando se
controle de janela esta ou não visível.
Um valor TRUE ou FALSE indicando se
controle de janela possui ou não uma
barra de rolagem vertical.
Um tipo de dados enumerado
especificando o alinhamento do texto em
um controle PictureButton. Os valores
válidos são: Bottom, MultiLine, Top! E
Vcenter! .
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.
Um número indicando a largura do
controle de janela.
A coordenada X do controle de janela em
relação à janela.
A coordenada Y do controle de janela em
relação à janela.
313
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Eventos de Controles de DataWindows
Eventos
Clicked
Constructor
Descrição
O usuário deu um clique sobre um controle de janela.
A janela foi aberta e o controle da janela esta sendo
construído.
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 destruído com ela.
DoubleClicked
O usuário de um clique duplo sobre o controle.
DragDrop
O usuário 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 usuário esta arrastando um objeto no interior da área
do controle de janela.
EditChanged
O usuário esta digitando em um controle de edição.
GetFocus
O controle de janela recebeu o foco.
ItemChanged
Um item mudou de valor no controle DataWindow.
ItemError
Um item não passou em seu teste de validação.
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.
314
PowerBuilder 9.0 Básico
Guia de Referência: Atributos e Eventos
Eventos de Controles de DataWindows
Eventos
LoseFocus
Modifed
Descrição
O controle de janela esta a ponto de perder o foco.
Um controle de edição em várias linhas de edição 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 não é especifico
do PowerBuilder .
PageLeft
Uma HscrollBar acabou de se deslocar uma página para
a esquerda.
PageRight
Uma HscrollBar acabou de se deslocar uma página para
a direita.
PageUp
Uma VScrollBar acabou de se deslocar uma página para
cima.
PageDown
Uma VScrollBar acabou de se deslocar uma página para
baixo.
PrintEnd
O controle de DataWindow terminou sua impressão.
PrintPage
Uma nova página esta a ponto de iniciar sua impressão.
PrintStart
O controle de DataWindow esta a ponto de ser impresso.
RbuttonDown
O botão direito do mouse é acionado sobre o controle de
janela.
Resize
O controle de DataWindow esta sendo redimensionado.
RetrieveEnd
Uma recuperação acabou de ser completada.
RetrieveRow
Uma linha foi recuperada.
RetrieveStart
Uma recuperação 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 seleção foi alterada em uma caixa de listagem ou caixa
de listagem DropDown.
SQLPreview
Acabou de ser emitida uma chamada a função Retrieve,
UpDate, ou ReselectRow, mais a função ainda não foi
executada.
UpDateEnd
Uma atualização acaba de ser completada.
UpdateStart
Uma atualização esta a ponto de se iniciar.
315
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Guia de Referência
Dados Enumerados
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
ArrangeOpen
ArrangeType
Border
BorderStyle
Button
ConvertType
DragModes
DwBuffer
Valores
Casacaded!
Layered!
Original!
Cascade!
Icons!
Layer!
Tile!
TileHorizontal!
Box!
Lowered!
BoBorder!
Raised!
ResizeBorder!
ShadowBorder!
Underline!
StyleBox!
StyleLowered!
StyleRaised!
StyleShadowBox!
OK!
OKCancel!
RetryCancel!
YesNo!
YesNoCancel!
XpixelsToUnits!
XunitsToPixels!
YpixelsToUnits!
YunitsToPixels!
Begin!
Cancel!
End!
Delete!
Fitter!
Primary!
Comentários
Como as folhas MDI estão
organizadas quando são abertas.
Como as folhas MDI abertas são
organizadas.
O tipo da borda.
O estilo da borda.
Message Box Button.
De que maneira você quer
converter unidades ou pixels nas
funções PixelsToUnit e
UnitsToPixels.
O modo Drag para um objeto.
O buffer da DataWindow.
316
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
Dwltemstatus
FileAcess
FileLock
FileMode
FillPatern
FontCharSet
FontFamily
FontPitch
Valores
DataModifed!
New!
NewModifed!
NotModifed!
Read!
Write!
LockReady!
LockReadyWrite!
LockWrite!
Shared!
LineModel!
StreamModel!
Bdiagonal!
Diamond!
FDiagonal!
Horizontal!
Solid!
Square!
Vertical!
Ans!
ChineseBigS!
DefaultCharSet!
HangEu!Shiftjis!
OEM!
Symbol!
AnyFont!
Decorative!
Modern!
Roman!
Script!
Swiss!
Default!
Fixed!
Variable!
Comentários
O status de um item DataWindow.
O acesso permitido ao arquivo.
O bloqueio do arquivo para outro
usuário.
O modo File para leitura e
gravação.
O padrão de preenchimento usado
para preencher um desenho ou um
objeto gráfico.
O conjunto de caracteres da fonte.
A família das fontes.
O pitch da fonte.
317
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
GrColorType
GrDataType
GrGraphType
GrLegend Type
Valores
Background!
Foreground!
LineColor!
Shade!
Xvalue!
Yvalue!
Area3d!
AreaGraph!
Bar3dGraph!
Bar3dObjGraph!
BarGraph!
BarStack3dObjGraph
!
BarStackGraph!
Col3dGraph!
Col3dObjGraph!
ColGraph!
Colstack3dObjGraph!
ColStackGraph!
Line3d!
LineGraph!
Pie3d!
PieGrapha!
ScatterGraph!
Comentários
Um tipo de cor em um gráfico.
AtBottom!
AtLeft!
AtRight!
AtTop!
NoLegend!
A localização da legenda do
gráfico.
O valor de um ponto de dados em
um gráfico.
O tipo de Gráfico.
318
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
GrObjectType
GrResetType
GrScaleType
GrScaleValue
Valores
TypeCategory!
TypeCategoryAxis!
TypeCategoryLabel!
TypeData!
TypeGraph!
TypeLegend!
TypeSeries!
TypeSeriesAxis!
TypeSeriesLabel!
TypeTitle!
TypeValueAxis!
TypeValueLabel!
All!
Category!
Data!
Series!
Linear!
Log10!
LogE!
Actual!
Cumulative!
CumulativePercent!
Percentage!
Comentários
O tipo de objeto do gráfico.
Os dados que você deseja
reinicializar em um gráfico.
O tipo de escala em um gráfico.
O valor da escala em um gráfico.
319
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
GrSimbolType
GrTicType
HelpCommand
Icon
Valores
NoSymbol!
SymbolHollowBox!
SymbolHollowCircle!
SymbolHolloWDiamo
nd!
SymbolHollowDownA
rrow!
SymbolHollowUpArro
w!
SymbolPlus!
SymbolSolidBox!
SymbolSolidCircle!
SymbolSolidDiamond
!
SymbolSolidDownArr
ow!
SybolSolidArrow!
SymbolStar!
SymbolX!
Inside!
NoTic!
Outside!
Straddle!
Index!
Keyword!
Topic!
Exclamation!
Informações!
None!
Question!
StopSign!
Comentários
O símbolo que você deseja usar
para uma série em um gráfico.
O tipo de marcas de escala de um
gráfico.
O tipo de comando da função
Showl Help.
O ícone de Message Box (Caixa de
Mensagem).
320
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
KeyCode
Valores
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!numérico!
KeyDowmArrow!
KeyE!
KeyEnd!
KeyEnter!
KeyEqual!
KeyEscape!
KeyF1!
KeyF10!
KeyF11!
KeyF12!
KeyF2!
KeyF3!
Comentários
O argumento do código de
tecla(KeyCode) na
função(KeyDowm).
Tecla + no teclado numérico.
TeclaBackspace
Teclas e –
Teclas(e)
Teclas <
Teclas – e
Tecla . no teclado numérico
quando NumLock esta ativa
No teclado
Teclas = e +
321
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
KeyCode
Valores
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!
Comentários
322
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
KeyCode
Valores
KeyPrintscreen!
KeyQ!
KeyQuote!
KeyR!
KeyRightArrow!
KeyRightBracket!
KeyS
KeyscrollLock!
KeySemiColon!
KeyShift!
KeySlash!
KeySpaceBar!
KeySubtract!
KeyT!
KeyTab!
KeyU!
KeyUpArrow!
KeyV!
KeyW!
KeyX!
KeyY!
KeyZ!
Comentários
323
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
LibDirType
LibExportType
LibImportType
LineStyle
mailFileType
mailLogonOption
Valores
DirAll!
DirApplication!
DirdataWindow!
DirFunctin!
DirMenu!
DirStructure!
DirUserObject!
DirWindow!
ExportAplicattion!
ExportDataWindow!
ExportFunction!
ExportMenu!
ExportStructure!
ExportUserObjet!
ExportWindow!
ImpotDataWindow
Continuous!
Dash!
DashDot!
DashDotDot!
Dot!
Transparent!
mailAttach!
mailOLE!
mailOLEStatic!
mailDownLoad!
mailNewSession!
mailNewSessionWith
DowmLoad!
mailReadOption!
mailBodyAsFile!
mailEntireMessage!
mailEnvelopeOnly!
mailSuppressAttach!
Comentários
O tipo dos objetos a serem
incluídos na lista de diretórios.
O tipo de objeto a ser exportado.
O tipo de objeto a ser importado.
O estilo da linha.
Tipos de arquivos de correio.
Opções de logon de correio.
Opções de leitura de correio.
324
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
Valores
mailRecipeientType mailBCC!
mailCC!
mailOriginator!
mailTo!
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
!
Comentários
Tipos de destinatários de correio.
Código de retorno das funções de
correio.
325
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
MaskdataType
MajorTic
MinorTic
Valores
DataMask!
DataTimeMask!
DecimalMask!
NumericMask!
StringMask!
TimeMask!
Inside!
NoTic!
Outside
Stradde!
Inside!
Notic!
Outside!
Stadde!
Comentários
O tipo de dados de EditMask.
O tipo das marcas de escalas
principais na escala do gráfico.
O tipo de das marcas da escala
secundárias na escala de gráficos.
326
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
Object
ParmType
Valores
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!
TypeBoolean!
TypeDate!
TypeDataTime!
TypeDecimal!
TypeDouble!
TypeInterger!
TypeLong!
TypeReal!
TypeString!
TypeTime!
TypeUlnt!
TypeULong!
Unknown!.
Comentários
O tipo do objeto.
O tipo de dados do parâmetro.
327
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
Pointer
RowFocuslnd
SaveAsType
SeekType
SetPosType
TextCase
Valores
Arrow!
Beam!
Cross!
HourGlass!
SizeNESW!
SizeNS!
SizeNWSE!
SizeWE!
UpArrow!
FocusRect!
Hand!
Off!
Csv!
ClipBoard!
DBase2!
DBase3!
Dif!
Excel!
SQLInsert!
Sylk!
Text!
Wk1!
Wks!
FromBeginning!
FromCurrent!
FromEnd!
Behind!
NoTopMost!
TopBottom!
TopMost!
ToTop!
AnyCase!
Lower!
Upper!
Comentários
A forma do ponteiro
correspondente a função
SetPointer
O método que será usado para
indicar que uma determinada linha
de uma DataWindow detém o
foco.
O tipo de arquivo a ser criado
quando forem gravadas as linhas
de uma DataWindow.
A posição na qual você quer iniciar
uma busca em FileSeek.
Define a ordem de exibição em
controle de janela.
A altura dos caracteres do texto.
328
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
ToolbarAlignment!
TrigEvent
Valores
AlignAtBottom!
AlignAtLeft!
AlignAtRight!
AlignAtTop!
Roating!
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!
Comentários
O alinhamento da barra de
ferramentas.
O tipo de evento a ser disparado
pela função TriggerEvent.
329
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
Valores
Comentários
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!
330
Adquirido por : Fabrício Moreira da Silva
PowerBuilder 9.0 Básico
Guia de Referência : Dados Enumerados
Tipos de dados Enumerados
Categorias
VtextAlign
UserObjects!
WindowState
WindowType
WriteMode
Valores
Bottom!
MultiLine!
Top!
VCEnter!
CustomVisual!
ExternaVisual!
Maximized!
Minimized!
Normal!
Child!
Main!
MD!
MDHelp!
Popud!
Response!
Aqppend!
Replace!
Comentários
O alinhamento do texto.
O tipo de objeto do usuário.
O estado no qual a janela ou o
programa estará em execução.
Tipo da janela.
O modo correspondente a função
FileOpen.
331
Adquirido por : Fabrício Moreira da Silva