Pensamentos
Este livro foi escrito com a finalidade de poder compartilhar alguns conhecimentos sobre o Sybase PowerBuilder adquiridos ao longo da minha vida profissional. Uns, com grande investimento financeiro, de estudos e pacincia; outros, repassados por grandes profissionais que compartilham da mesma filosofia de vida.
O que importa nesta vida, mais do que ganhar sozinho, ajudar os outros a vencer, mesmo que isso signifique diminuir os nossos passos...
Celso S. Crtes.
Morder o fruto amargo e no cuspir mas avisar aos outros quanto amargo, cumprir o trato injusto e no falhar mas avisar aos outros quanto injusto, sofrer o esquema falso e no ceder mas avisar aos outros quanto falso; dizer tambm que so coisas mutveis... E quando em muitos a noo pulsar do amargo e injusto e falso por mudar ento confiar gente exausta o plano de um mundo novo e muito mais humano.
Geir Campos
"Procure ser uma pessoa de valor, em vez de procurar ser algum de sucesso"
Albert Einstein Celso S. Crtes brasileiro, carioca de Vila Isabel e atualmente reside na cidade de Niteri-RJ, onde, em todos os sentidos, se apaixonou.
... Niteri! Niteri! como s formosa! Eu me glorio de dever-te o brao! Montanhas, vrzeas, lagos, mares, ilhas, Prolfica Natura, cu ridente, Lguas e lguas de prodgios tantos....
Sybase PowerBuilder marca registrada da Sybase, Inc. Copyright Todos os direitos reservados.
Bibliografia : Getting Started PowerBuilder 9 DOCUMENT ID: 37772-01-0900-01 LAST REVISED: March 2003 Copyright 1989-2003 by Sybase, Inc. All rights reserved. Capa : Gilberto Santana lvvg@ig.com.br Projeto Grfico e Composio: Celso S. Crtes Reviso do texto: Eduardo Olimpio Mota Fialho Endereo eletrnico : http://www.pb9basico.net Email : pb9basico@pb9basico.net Autor : Celso S. Crtes Analista de Sistemas Snior IBGE/DI/COADS Supervisor de Pesquisas, Sistema Pesquisas Continuas Agropecurias www.pca.ibge.gov.br Usurio do Sybase PowerBuilder PB4,PB5,PB6,PB7,PB8 e PB9. Enterprise desde 1993, verses
Desenvolvedor Java,JavaScript,VBScript,ASP,PHP Criador e mantenedor do stio na internet sobre Sybase PowerBuilder www.celso.cortes.nom.br, desde 1996. Email: celso.cortes@celso.cortes.nom.br
Agradecimentos
Pessoas inovadoras que chamam a si a misso de desbravar novas tecnologias enfrentam sempre dois grandes desafios. O primeiro intrnseco ao pioneirismo. Elas tm que acreditar em seus propsitos e correr os riscos e as incertezas que acompanham todas as inovaes. O segundo desafio est em disseminar, nas suas reas de atuao, uma nova cultura tecnolgica que venha a se constituir no ambiente propcio para a evoluo profissional. Em conseqncia, cria-se um processo sinrgico onde h um crescimento cultural tanto das Empresas como das Comunidades com as quais elas interagem. Foi dentro deste esprito que surgiu a iniciativa de oferecer aos desenvolvedores brasileiros um livro em portugus para iniciantes sobre a ferramenta de desenvolvimento para MS Windows, o Sybase PowerBuilder 9.0. Com esta edio, mais que simplesmente preencher uma lacuna existente na bibliografia em portugus de informtica, est sendo dado um forte impulso para que se evolua no esforo comum de criar outras publicaes sobre esta tima ferramenta de desenvolvimento. Agradeo ao meu amigo, Maycon J. Oleczinski que muito tem me auxiliado tanto neste trabalho, quanto na hospedagem do stio na internet, dirigido comunidade de PowerBuilder no Brasil, www.celso.cortes.nom.br. Agradeo tambm a todos os participantes do nosso frum http://groups.yahoo.com/group/powerbuilder-br/ que esto sempre a disposio com valorosos textos. Aos meus filhos, Daniel e Thiago, pela pacincia que me dispensaram enquanto eu escrevia este livro. Aos meus amigos de trabalho Jos de Souza Pinto Guedes, Analista de Sistemas e Paulo Sergio da Silva, Desenvolvedor (Supervisor do Sistema de Coleta das Pesquisas Contnuas Agropecurias IBGE/DI/COADS) pelo companheirismo, incentivo e profissionalismo que compartilhamos nestes onze anos de convvio e trabalho. E, em especial, a Eduardo Olimpio Mota Fialho, Analista de Sistemas (Sistema Pesquisas Contnuas Agropecurias - IBGE/DI/COADS), Estatstico, Mestre em Estudos Populacionais e Pesquisas Sociais, um grande amigo, pelo interminvel incentivo e reviso desta obra. Celso S. Crtes.
Apresentao
Sobre o livro Este livro tem o objetivo de ajudar os iniciantes desta tima ferramenta de desenvolvimento o PowerBuilder 9.0 em portugus. O roteiro de desenvolvimento para essa ajuda se dar de modo aplicado. Alguns conceitos bsicos sero explicados para em seguida desenvolvermos uma aplicao modelo, utilizando os mdulos bsicos do PowerBuilder, visando uma maior fixao dos seus conceitos. Sobre o Sybase PowerBuilder 9.0 O PowerBuilder 9.0 uma ferramenta de desenvolvimento padro MS Windows , orientada a objetos, que permite desenvolver aplicaes cliente, cliente/ servidor e para internet. Em verses anteriores do PowerBuilder voc poderia trabalhar s nos objetos da sua aplicao . A partir do PowerBuilder 8.0 foi introduzido a WorkSpace no qual voc pode trabalhar em vrias aplicaes ou objetos. Para trabalhar com objetos, voc tem que ter uma WorkSpace aberta. Voc s pode ter uma nica WorkSpace aberta, mas, voc incluir vrios objetos. H dois tipos de objetos: PowerScript cliente e Objetos de Rede. Um objeto de PowerScript pode ser qualquer aplicao que voc trabalha, como uma aplicao cliente. Um objeto de Rede pode conter todos os elementos que voc precisa para construir um sitio (HTML) , cdigos, imagens, componentes, bem como definies para conexes de banco de dados. Para trabalhos corporativos, sem dvida, ser um grande ganho no desenvolvimento, pois se podero compartilhar cdigos, objetos sem ter que inclu-los a sua aplicao. Alm disso, o workspace possibilita a incluso de vrios diretrios que podem ser abertos e linkados sua aplicao.
Sumrio
Sumrio
Captulo 1 Barras de Ferramentas Conhecendo as suas funes Criando a WORKSPACE Criando uma aplicao Captulo 2 Criando uma WINDOW (janela) Configurando as barras de menu Template Properties Salvando a WINDOW Captulo 3 Criando um menu Escrevendo em PowerScript Como definir tipos de janelas Uso dos tipos de janela Tipos de controle Captulo 4 Implementao da Herana de Janelas Captulo 5 Projetando o menu 31 29 16 19 22 23 24 6 8 9 15 1 1 4 5
i
Adquirido por : Fabrcio Moreira da Silva
Sumrio
Sumrio
Captulo 6 A Linguagem PowerScript Eventos Ambiente de Script A Linguagem PowerScript Fundamentos da Linguagem PowerScript Variveis Tipos de Dados Escopo de Variveis Encapsulamento Objetos e Controle Execuo de uma funo por meio da notao de ponto Estruturas Arrays Arrays multidimensionais Arrays variveis Dados de objetos Operadores Operadores Aritmticos Operadores binrios Operadores unrios Operadores de combinao Operador de string Operadores lgicos Operadores relacionais Operadores de conjuno Procedncia e Parnteses Comandos do PowerBuilder O Uso da estrutura IF Estrutura Choose Case Estrutura de iterao(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
Sumrio
Sumrio
Captulo 7 Transaes de Bancos de Dados Definindo uma transao Montando a transao em PowerScript O uso do SQL no PowerBuilder Captulo 8 DataWindow Objeto DataWindow Fonte de dados Interface inteligente Interface com o usurio Como criar um objeto DataWindow Fontes de dados SQL Select Query Stored Procedure External Montando uma DataWindow com SQL Select Template de SQL Argumentos Personalizando sua DataWindow Composite Crosstab (planilha) FreeForm (Formulrio livre) Graph (Grfico) Grid (Grade) Group(Grupo) Label (Etiquetas) N-up (Mltiplas linhas) Ol 2.0 RichText Tabular Cores e Bodas 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 60 61 61 63
iii
Adquirido por : Fabrcio Moreira da Silva
Sumrio
Sumrio
Captulo 9 Recuperao de dados a partir de uma DataWindow Funes para o controle DataWindow Montando um Objeto DataWindow Aperfeioando a visualizao da DataWindow Vinculando duas DataWindow Vinculando objeto DataWindow a um controle DataWindow Incluindo controle DataWindow a Window (janela) Incluindo parmetros de atualizao Rotina de incluso Rotina de alterao Rotina de Excluso Captulo 10 DataWindow : Tcnicas avanadas Buffers Internos Detectar a validao Detectar o Tipo de dado Detectar regras de validao Detectar mudanas no item Usando Filtros Classificando Clusula Where para Update e Delete Modify e Describe Funo Evaluate( ) Propriedade Object Parametrizando com a clusula DATA Captulo 11 PipeLine de dados Captulo 12 Criando Relatrios 175 167 88 90 105 110 114 123 123 130 131 137 144
147 148 148 148 148 150 151 153 155 160 162 165
iv
Sumrio
Sumrio
Captulo 13 Grficos Captulo 14 XML Conceito Exportando DataWindow (DataWindow Export) Importando um padro XML para a DataWindow Captulo 15 Preparando sua aplicao final Criando o objeto Project Criando o arquivo executvel Captulo 16 Criando uma aplicao Web Criando um stio WEB com PowerDynamo Captulo 17 Criando a primeira pgina Web Utilizando 4GL Web/JSP Page wizard Guia de Referncia Nomenclaturas Atributos e Eventos Dados Enumerados 293 296 316 269 270 256 256 249 249 254 197
v
Adquirido por : Fabrcio Moreira da Silva
Captulo 1
Barras de Ferramentas Conhecendo as suas funes Criando a WORKSPACE Criando uma aplicao
Captulo 1
Barras de Ferramentas: PowerBar1
A barra de ferramenta PowerBar1 a barra principal do PowerBuilder.Nessa barra podemos definir e selecionar os tipos de objetos da nossa aplicao. Em qualquer local da PowerBar1, clicando-se com o boto esquerdo do mouse pode-se customizar suas funes, incluindo ou inibindo seus mdulos. A barra acima um padro que aparecer na primeira vez que voc iniciar o PowerBuilder e caso seja customizada as alteraes sero mantidas. Conhecendo as suas funes
SEARCH - Ativa o tpico AJUDA no modo SEARCH (pesquisa) HELP - Ativa o tpico AJUDA no modo padro. NEW - Ativa o template de habilitao dos objetos do PowerBuilder, como WorkSpace, Target, PB Object, Web, DataWindow, DataBase, Project e Tool. Iremos estudar cada um desses modulo descrito acima. OPEN Abre um objeto previamente salvo, como uma DataWindow, Menu ou aplicao.
SYTEM TREE Mostra ou esconde a janela de descrio do seu projeto. OUTPUT Mostra ou esconde a janela de informaes de sada do seu projeto.
Captulo 1
Conhecendo as suas funes
SYSTEM OPTION Ativa o template de configurao pessoal da sua mscara de trabalho. TO-DO-LIST Monta uma lista de pendncias BROWSER Ativa o template de viso dos objetos da WorkSpace, com suas propriedades. CLIP WINDOW Abre o template CLIP. Serve como um bloco de notas para sua aplicao possibilitando copiar e colar. LIBRARY Abre o template tipo EXPLORER para seleo de aplicao ou objetos.
DB PROFILE Abre o template que possibilita configurar o tipo de conexo e a base de dados qual seu projeto estar associado. EASERVER PROFILE Abre o template que possibilita configurar o tipo de conexo com o servidor de aplicao EASERVER. DATA BASE Abre o template de consulta, edio e alterao das bases de dados associadas ao DB PROFILE.
Captulo 1
Conhecendo as suas funes
FILE EDITOR Abre o template de edio de arquivo. Com esse editor possvel criar qualquer funo ou objetos para serem utilizados pelo POWERBUILDER. DEBUG Abre o template para auxilio a depurao de sua aplicao. RUN Ao clicar neste boto o POWERBUILDER ir aplicao em modo interpretado. executar sua
SELECT and RUN Executa a aplicao selecionada, em modo interpretado. EXIT Sair do POWERBUILDER. Conhecendo as funes bsicas da POWERBAR1 podemos iniciar a nossa primeira aplicao. Desse modo iremos, passo a passo conhecendo o PowerBuilder 9.0.
Captulo 1
Criando a WORKSPACE
Clique no boto NEW e selecione WORKSPACE. Clique em OK. Selecione o diretrio onde voc ira salvar a WorkSpace e d um nome para ela (para acompanhar corretamente a aplicao neste livro atribua o nome exemplo_01 e clique em salvar). Se tudo deu certo no template Sytem Tree aparecer :
Captulo 1
Criando uma aplicao.
Aparecer a tela de definio da sua aplicao. Em Application Name digite : exemplo1. Em Library selecione o diretrio onde voc salvou a WorkSpace. Em Target repita o procedimento anterior. Clique em Finish OBS: No necessariamente voc precisa atribuir os mesmos diretrios na criao de uma aplicao. Neste caso fizemos isso, para facilitar o exemplo. Se tudo deu certo voc visualizar :
Agora que estamos com a WorkSpace e a Aplicao criada. Vamos criar nosso primeiro objeto.
Captulo 2
Criando uma WINDOW (janela) Configurando as barras de menu Template Properties Salvando a WINDOW (janela)
Captulo 2
CRIANDO UMA WINDOW(JANELA)
Clique em NEW selecione PB Object, selecione o cone Window conforme figura abaixo:
E clique em OK. Com este procedimento, voc acaba de criar sua primeira Window (janela) e poder notar que trs novas barras de trabalho surgiram assim como um novo template denominado Properties direita. Note que, ao centro, est a window que voc criou, e logo abaixo existem cinco abas de tabela com as descries: Layout, Open, Event List, Function List e Declare Instance Variables. Open : Abre o template dos eventos padro do objeto assim como o quadro de funes e de declarao de variveis e funes compartilhadas. Event List : Como o prprio nome diz, lista os eventos padro da window. Function List :Abre o template das funes padro da window. Declare Instance Variables : Abre o template para as declaraes das variveis e funes compartilhadas que podem ser de instncia ou global. Instancia Pertence ao objeto e s estar disponvel se o objeto estiver ATIVO. Global Pertence APLICAO
Captulo 2
CRIANDO UMA WINDOW (JANELA)
Para uma visualizao mais limpa, clique em template de OUTPUT e clique em template de trabalho.
Captulo 2
CRIANDO UMA WINDOW (JANELA) Configurando as barras de menu Coloque o mouse sobre uma barra de menu e clique no boto esquerdo. Um menu-popup aparecer conforme a figura abaixo:
A PowerBar1 a barra de trabalho do POWERBUIDER. As barras PainterBarX so as barras de trabalho do objeto que voc selecionou para trabalhar - neste caso, o objeto WINDOW. Clique em cada opo do menupopup para conhecer as barras. Voc pode tambm definir o seu posicionamento, colocando o mouse sobre a barra e clicando nas opes de posicionamento: Left, Top, Right, Botton ou Floating. O PowerBuilder possibilita personalizar a sua barra, incluindo ou excluindo itens que sero exibidos. Posicione o mouse na barra, clique no boto esquerdo, selecione Customize e utilize o processo de arrastar e soltar.
Captulo 2
CRIANDO UMA WINDOW (JANELA) Template Properties Desvendando as Propriedades da janela que acabamos de criar.
Title : O ttulo que aparecer no topo da janela que voc est criando. Tag : Uma descrio para a sua janela ou um alerta ao utiliz-la. Poder conter qualquer texto e poder ser acessada em tempo de execuo atravs, por exemplo, da funo do PowerBuilder SetMicroHelp que veremos mais adiante. MenuName : O PowerBuilder disponibiliza 6 (seis) tipos de janela, a saber: Child, Main, MDI, MDIHelp, Popup e Response. Somente as janelas Main, MDI, MDIHelp e Popup podem possuir barras de menus associados. Para atribuir uma barra de menu a uma janela primeiro voc ter que cri-la. Os checkbox a seguir definem o estado da sua janela assim como os itens que voc quer exibir na mesma. Visible: Define se a sua janela ter o status de estar visvel ou invisvel ao usurio. Enable: Define se a sua janela estar ativa ou inativa para o usurio. Titlebar: Define se a sua janela ter uma barra de titulo. Controlmenu: Define se a sua janela ter os itens direita da janela. MaxBox: Define se a sua janela ter MinBox : Define se a sua janela ter no controlmenu. no controlmenu. na lateral
Captulo 2
10
CRIANDO UMA WINDOW (JANELA) Center : Centraliza automaticamente a sua janela. Resizable: Ativa a permisso de redimensionar a janela em modo de execuso. WindowType: Define o tipo da janela. Template Properties WindowState: Define o modo de apresentao em modo de execuo: Normal desenvolvimento. do mesmo tamanho que foi definido no
Maximized Ser redimensionada para o tamanho mximo da resoluo do monitor em modo de execuo. Minimized Ativar a janela minimizada, colocando-a na barra de ferramenta do MS Windows. BackColor: Define a cor de fundo da sua janela. Icon: Define o cone(imagem) que voc quer associar a sua janela o cone padro. Voc pode associar qualquer imagem padro .ICO. O PowerBuilder disponibiliza vrios cones. NOTA : Alguns itens no foram descritos, devido a sua complexidade, sero vistos mais frente.
Captulo 2
11
CRIANDO UMA WINDOW (JANELA)
Com a janela aberta, e agora que conhecemos algumas de suas propriedades, vamos configurar-la. Assim comearemos nosso projeto, exemplo1. No template properties, na aba GENERAL digite : Tiltle Tag MenuName : Exemplo 01 : Janela principal do exemplo 01 : Deixe em branco
Captulo 2
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 na janela que voc criou.
Podemos notar que o tamanho da janela no est no padro. Para uma janela que ser a principal do nosso primeiro projeto voc pode redimensiona-la manualmente. Para isto, na barra de rolagem da janela procurar o seu vrtice, verificar a mudana do cone do mouse, pressionar o boto direito do mouse e arrastar para o tamanho que lhe satisfizer. Veja a figura abaixo:
ou se voc sabe o tamanho que sua janela dever ficar, clique na aba Other do template Properties. Se a aba Other no estiver visvel clique na barra de rolagem (parte superior direita do template Properties
Captulo 2
13
CRIANDO UMA WINDOW (JANELA) Ao selecionar o item Other nos deparamos com novos itens a serem configurados. Ento vamos entend-los para poder configur-los com segurana. X Posio inicial na esquerda do seu monitor. margem
Y Posio inicial que sua janela ocupar de cima para baixo. OBS : As duas opes s tero efeito se a opo Center estiver desmarcada. Width Define a largura da sua janela. Height Define a altura da sua janela. OBS: As opes s tero efeito, se a opo Normal em WindowState estiver selecionada. Pointer Define que o ponteiro do mouse ser apresentado quando o mouse passear pela janela.
O padro apresentado acima estabelece uma tomada completa do monitor, padro 800x600, resoluo que aconselho utilizar, devido a quantidade de informaes que o PowerBuilder, assim como outros Front-End, hoje disponibilizam.
Captulo 2
14
CRIANDO UMA WINDOW(JANELA) J que comeamos a navegar no template Properties, iremos ver as suas outras propriedades. Clique na aba Scroll. HscrollBar- Ativa a barra de rolagem horizontal na sua janela. VscrollBar Ativa a barra de rolagem vertical na sua janela. UnitsPerLine, ColunmPerPage, LinesPerPage Definem o modo de como sua janela ira deslizar, 0 define como padro o mesmo do MS Windows.
Clique agora na aba ToolBar. Quando anexamos um menu em nossa aplicao, podemos definir automaticamente o seu posicionamento assim como deix-lo visvel, ou no. Esse procedimento pode ser padro, configurando-se a propriedade Toolbar ou em modo de execuo.
Captulo 2
15
CRIANDO UMA WINDOW (JANELA) Note que a maioria das propriedades de uma janela no PowerBuilder, j esta configurada para a utilizao do padro MS Windows, o que facilita bastante, voc s ter que configurar itens a qual queira personalizar sua aplicao. Nesta primeira vez, percorremos todos os passos para que pudssemos conhecer as caractersticas e propriedades de uma janela no POWERBUILDER, da prxima vez, ser muito mais tranqilo. SALVANDO A WINDOW (JANELA) Clique em SAVE e preencha :
Windows : w_001 Comments: Janela principal do exemplo 1 Clique em OK e sua Janela j estar criada e anexada a aplicao exemplo1.
Captulo 3
Criando um menu Escrevendo em PowerScript Como definir tipos de janelas Uso dos tipos de janela Tipos de controle
Captulo 3
16
CRIANDO UM MENU A criao de objetos no PowerBuilder segue sempre o mesmo padro. A diferena recai na particularidade das propriedades de cada objeto que se queira criar. A criao de um menu segue os passos da criao de uma WINDOW (JANELA). Clique em NEW, na aba PB Object e selecione
Coloque o mouse sobre o texto untitled0, clique no boto direito e selecione a opo do menu-popup Insert Submenu Item. O Template de Properties se abrir no lado esquerdo. Ento deveremos montar o nosso menu preenchendo os campos a seguir.
Captulo 3
17
CRIANDO UM MENU
Clique em untitled0 e com o boto esquerdo do mouse selecione a opo do menu-popup Insert Submenu Item para inserir outro item no menu. Troque em Name para m_item02, Text para Item 02, MicroHelp para Item 01 esta em foco e Tag para item 01. Ficou fcil no? No final dessa operao o seu quadro de menu ficar assim.
Captulo 3
18
CRIANDO UM MENU Clique em SAVE e preencha o quadro Menu com m_menu01 e o quadro Comments com Menu 01 da aplicao. Clique em OK. Seu menu j foi criado e salvo na aplicao exemplo1.
D um duplo clique no item w_001 no template TREEVIEW esquerda. Sua Janela w_001 se abrir. No template Properties direita, no item MenuName, clique no boto
de seleo
Agora clique em
PREVIEW e teste.
Captulo 3
19
Escrevendo em PowerScript. At agora montamos nossa Janela e adicionamos um menu sem funcionalidade. Agora, vamos escrever nosso primeiro cdigo em PowerScript, O PowerScript a linguagem que o PowerBuilder aceita. Assim poderemos escrever comandos para que o PowerBuilder os execute. no template TREEVIEW, esquerda, D um duplo clique em uma janela de Script aparecer no centro.
A traduo desta tela : A aplicao exemplo1, este Script est direcionado para o evento open e este evento no prev cdigo de retorno. Agora digite conforme a tela abaixo:
Clique em
SAVE, depois em
Captulo 3
20
Escrevendo em PowerScript. Para ficar mais fcil, e treinarmos um pouco mais vamos selecionar no TREEVIEW esquerda, com um duplo clique, m_menu01. O objeto menu ser editado. Clique com o boto esquerdo do mouse sobre o item m_menu01 e selecione Insert Submenu Item. Na opo que se abriu ao final da lista de itens digite Sair.
No template Properties a direita, no item MicroHelp, digite Sair do exemplo 01 e repita o texto para o item Tag.
D um duplo clique no item Sair no painter Script logo abaixo. Repare que j esta selecionado o evento clicked. Este evento ser sempre ativado quando se clicar na opo Sair e ento vamos escrever em PowerScript o comando para sair da aplicao.
Captulo 3
21
Escrevendo em PowerScript. Digite : Close(w_001).
Salve a aplicao Save e clique em Run para executar fechar a aplicao, clique em Sair do menu. Analisando :
e testar. Para
At aqui voc criou uma aplicao e incluiu uma window. A esta window, acrescentou um objeto menu e a este objeto menu, incluiu itens e viu como programar esses itens de modo que possa executar procedimentos diversos ao ser selecionado. Por enquanto s executamos o comando closed. Outros comandos veremos adiante. Para continuar com o nosso exemplo, precisaremos entender um pouco mais sobre a window, que a partir de agora iremos chamar de janela. Nos prximos itens, iremos : x x x x Delinear e fazer a distino entre diferentes tipos de janela; Definir atributos de janela; Adicionar e implementar controles de janela; Implementar a herana de janelas.
J vimos um pouco dos atributos de janela quando w_001 foi definida. Agora, veremos outros tipos de janela e o motivo pelo qual voc deve utiliz-las.
Captulo 3
22
Como definir tipos de janelas Janelas MDI (Multiple Document Interface). Dificilmenta sua aplicao no apresentar uma tela principal. Normalmente utilizamos o padro MDI como tela principal que apresenta dos modelos MDI e MDIhelp. A MDIhelp normalmente mais utilizada pois o microhelp, aquela barra na inferior da janela, uma excelente opo para exibio de mensagens resumidas para os usurios do seu aplicativo, MDIhelp tem um aspecto mais profissional do que as janelas independentes. Janelas Popup (Instantnea) As janelas instantneas so abertas normalmente a partir do interior de outra janela, Embora esta janela no possa ser encoberta por sua janela superior, ela pode se estender alm daqueles limites da janela superior. Quando a janela superior fechada ou minimizada a janela instantnea tambm fechada, ou minimizada. Janelas Child (filhas) As janelas filhas tambm so abertas a partir de outra janela, assim como as janelas instantneas elas possuem uma janela superior, mas com alguns conceitos fundamentais. x x x x Nunca podem existir fora da janela superior; Nunca so consideradas ativas; Quando maximizadas, s preenchem o espao da janela superior; No possuem menus.
Janelas Response (Resposta) As janelas de resposta so um tipo de janela instantnea. Elas diferem das janelas pelo fato de serem modais aplicao. Nenhuma outra janela na aplicao pode ser acessada enquanto a janela de resposta no for fechada. As janelas de resposta so muitas vezes chamadas de caixa de dilogos. Voc ir utilizar com freqncia essas janelas de resposta.
Captulo 3
23
Uso dos tipos de janela MDI e MDI com microhelp Um MDI uma janela(quadro) que contm outras janelas (folhas). Voc s tem um quadro por aplicao mas pode ter muitas folhas dentro do seu quadro. Em qualquer aplicao complexa e em geral qualquer aplicao simples do MS WIndows voc deve empregar um quadro MDI. A MDI microhelp funciona bem como um meio fcil de transmitir uma mensagem para o usurio, sem interromper a aplicao. Incluso de controles de janela Um controle de janela qualquer elemento que voc insere em uma janela. A quase totalidade da PainterBar de janelas contm diferentes controles que voc pode colocar na sua janela. Os controles so necessrios para toda a janela. Sem controles uma janela simplesmente um retngulo sem qualquer funcionalidade, que exibido na sua tela.
Captulo 3
24
Tipos de controle Existem diversos tipos diferentes de controles, tais como : Boto de comandos O boto de comando um objeto que tem por finalidade executar processos quando clicados. Quando so acionados aparecem como se fossem empurrados enquanto o boto do mouse se encontra pressionado. Para inserir Command um boto de comando na sua janela, d um clique no cone Button na barra PowerBar1 e depois clique no local em que deve ficar o boto de comando no interior da janela que voc esta definindo. Boto de figura O boto de figura semelhante ao boto de comando, exceto pelo fato de terem figuras sobre eles. Para colocar na sua janela um controle boto de Picture Button e depois clique no local em que o figura, clique no cone boto de figura deve estar posicionado na janela que voc esta definindo. Nas suas propriedades, direita, no item PictureName, voc pode selecionar a figura que ele dever exibir. Texto esttico O Texto esttico uma frase ou descrio exibida na sua janela. Para inserir Static Text, e depois um controle de texto na sua janela clique no cone um clique no local em que deve aparecer o texto esttico. Atravs do template propriedades direita no item Text voc tem a possibilidade de digitar o texto que dever ser exibido na janela que est sendo definida.
Captulo 3
25
Tipos de controle DataWindow
Para acrescentar um controle DataWindow sua janela, clique no cone DataWindows control e em seguida, clique no local em que a DataWindow deve aparecer no interior da janela que voc esta definindo. A DataWindow a resposta do PowerBuilder s telas de entrada de dados. A DataWindow de uso muito prtico quando voc est tentando unir sua aplicao a um banco de dados, alm disto, so fundamentais para o desenvolvimento do PowerBuilder. A DataWindow tambm apresenta vrios recursos avanados de edio. Edio em vrias linhas
Para inserir na sua janela um controle de edio em vrias linhas, clique sobre MultLineEdit , e depois d um clique no local em que o controle de edio em vrias linhas deve ficar posicionado na janela que voc est definindo. Diferente dos controles de edio em nica linha (veremos a seguir), que s permitem a introduo ou visualizao de uma linha de texto, o controle de edio em vrias linhas um controle que permite a digitao pelo usurio de diversas linhas de texto. A edio em vrias linhas usada com freqncia nos comentrios de forma livre. Pelo fato de incorporarem muitos recursos de edio, as edies em vrias linhas so indispensveis durante a introduo de grandes quantidades de dados em campos. Entretanto, os controles de edio em vrias linhas no so utilizados com freqncia pois possvel conseguir maior funcionalidade atravs de uma coluna DataWindow.
Captulo 3
26
Tipos de controle Figuras
Para inserir na sua janela um controle de figura, clique sobre Picture Control , e depois d um clique no local em que a figura deve ficar posicionado na janela que voc esta definindo. As Figuras so controles que fazem referncia a mapas de bits que sero exibidos em uma janela. Da mesma forma que o texto esttico, as figuras so utilizadas apenas para a exibio de informaes, a partir da verso 7.0, links da web podem ser associados atravs dos Picture HiperLink control que tem as mesmas propriedades da Picture e mais o HiperLink. Edio em uma nica linha Para inserir na sua janela um controle de edio em uma nica linha, clique SingleLineEdite Control , e depois clique no local em que edio sobre em uma nica linha deve ficar posicionado na janela que voc esta definindo. Os controles de edio em uma nica linha so campos de entrada de dados que voc pode inserir em uma janela com o objetivo de digitar uma linha de texto isolada. Os controles de edio em uma nica linha no so usados normalmente, porque a maior parte de entrada de dados realizada em uma DataWindow. Mscara de Edio
Para inserir na sua janela um controle de edio em uma nica linha, clique EditMask Control , e depois d um clique no local em que mscara sobre de edio deve ficar posicionada na janela que voc esta definindo. As mscaras de edio constituem um tipo de edio em uma nica linha e permitem voc especificar a formatao necessria no momento da entrada. Essa formatao definida quando voc acrescenta inicialmente o controle mscara de edio por meio do template Properties, Mask.
Captulo 3
27
Tipos de controle Caixa de listagem Para inserir na sua janela uma controle de caixa de listagem, clique sobre ListBox control , e depois clique no local em que a caixa de listagem deve ficar posicionada na janela que voc est definindo. A caixa de listagem constitui um tipo de edio em uma nica linha e oferece ao usurio diversas opes para a resposta correta. Podem ser usadas barras de rolagem caso exista uma quantidade muito grande de opes, como ocorre com muitos outros controles de janela que se relacionam com entrada de dados. Caixa de verificao Para inserir na sua janela uma controle de caixa de verificao, clique sobre CheckBox control , e depois clique no local em que a caixa de verificao deve ficar posicionada na janela que voc est definindo. As caixas de verificao funcionam com questes do tipo sim-no que podem ser ativadas ou desativadas. Internamente, uma tabela de cdigos descreve o valor de dados retornado quando uma caixa de verificao ativada ou desativada. Botes de rdio e Caixas de grupo Para inserir na sua janela uma controle de caixa de verificao clique sobre RadioButton control , e depois clique no local em que o boto de rdio deve ficar posicionado na janela que voc esta definindo.
Captulo 3
28
Tipos de controle Para inserir na sua janela um controle caixa de grupo, clique sobre o cone GroupBox Control e, em seguida, um clique no local em que a caixa de grupo deve ser colocado no interior da janela que esta sendo definida. Um boto de rdio um tipo de caixa de verificao. Vrios botes de rdio so agrupados no interior de uma caixa de grupo. Esses botes de rdio, assim como as caixas de verificao, podem estar ativos ou inativos. Somente um boto de rdio no interior de uma caixa de grupo pode ser ativado de cada vez. Manipulao de controles e janelas Muitas vezes voc desejar manipular seus controles. Atravs de um clique simples sobre um controle ser exibido o template de propriedades na lateral direita. Com um clique com o boto direito do mouse sobre o controle far surgir um menu de opes possveis para essse controle. Ordem e tabulao Voc pode utilizar o teclado em lugar do mouse. Para se deslocar entre os controles, o usurio tem de pressionar a tecla Tab Entretanto a ordem de tabulao padro dos controles de janela a ordem na qual esses controles so acrescentados. Para alterar a ordem de tabulao em uma janela, abra o menu Format e escolha Tab Order. Essa opo exibe a ordem de tabulao de cada controle, incrementada pelo valor de 10. Se quiser mudar a ordem de tabulao simplesmente altere a numerao dos controles. Em seguida escolha de novo Format e Tab Order, a fim de desativar a ordem de tabulao.
Captulo 4
29
Implementao da Herana de Janelas A herana o modo pelo qual usamos nossos prottipos no PowerBuilder. Atravs da herana o objeto filho obtm todos os controles, powerscript e atributos do objeto ancestral. Quaisquer mudanas adicionais efetuadas no objeto ancestral se refletem automaticamente no objeto filho. O Objeto filho pode ento acrescentar outras caractersticas ou modificar as que herdaram. As janelas e os menus podem ser herdados. Para entender melhor vamos criar uma janela herana da janela w_001 do nosso exemplo. Com o PowerBuilder aberto, no TREEVIEW esquerda, clique com o boto esquerdo do mouse sobre o objeto Window w_001. No menu-popup que se abrir, selecione Inherit e uma nova janela se abrir. Clique em Save e d como nome w_002. Repare no ttulo do template da window que voc acabou de criar:
A janela w_002 foi criada como uma herana da w_001. Toda mudana que voc implementar na w_001 ser herdada pela w_002 e esta poder ter objetos que s pertenam a ela prpria. Essa funcionalidade de herana, assim como a DataWindow, faz a grande diferena no desenrolar de um projeto com PowerBuilder.
Captulo 4
30
Implementao da Herana de Janelas Para o nosso exemplo ficar mais claro, vamos agora abrir a nova janela do nosso projeto exemplo, chamado exemplo1. No TREEVIEW esquerda d um duplo clique no objeto w_001, template "propriedade" item "WindowType" e selecione "mdihelp!". Salve a w_001. No TREEVIEW esquerda d um duplo clique no objeto w_002, template "propriedade" item "WindowType" e selecione "main!", no item "MenuName". Apague o "m_menu01" e salve a w_002. No TREEVIEW esquerda d um duplo clique no objeto menu m_menu01. Selecione com um clique o item do objeto menu Item 01 no template "Script". Note que j se encontra selecionado o evento "Clicked", e ento escreva : OpenSheet(w_002, w_001, 2, Layered!) Salve o m_menu01. Execute a aplicao, clique na opo "Item 01" e veja a janela w_002 abrir dentro da janela w_001. Para uma melhor visualizao selecione no TREEVIEW esquerda a janela w_001, e no template "propriedade" selecione a opo "ClientEdge". Salve a janela w_001. Execute a aplicao.
Captulo 5
Projetando o menu
Captulo 5
31
Projetando o menu.
O menu constitui uma parte importante de qualquer aplicao, seja ela padro MS Windows, Linux, Solares, MAC ou outro qualquer. Atravs do menu disparamos eventos, emitimos comandos e controlamos o fluxo de uma aplicao. Voc j foi apresentado aos menus, quando m_menu01 foi criado na parte 03 deste manual. Agora voc ter a possibilidade de aumentar seus conhecimentos e compreenso dos menus. Antes de projetar o menu importante ter uma idia da aparncia que voc deseja para ele. Usando uma planilha eletrnica, uma tabela de processador de texto, ou uma folha de papel esquematize aquilo que dever estar contido em todos os menus. Pode ser til observar outras aplicaes a fim de examinar as opes que elas apresentam nos seus menus. Dica : Para manter a coerncia dos menus, desenvolva um nico com todas as suas opes em vez de projetar vrios menus diferentes. Este menu mestre ser usado como layout bsico para outros menus. No menu m_menu01 desenvolvido at agora implementamos os itens: Item 01, Item 02 e Sair. Para prosseguir com o nosso exemplo devemos implementar esse menu.
Captulo 5
32
Projetando o menu.
Edite o menu m_menu01 e selecione com um duplo clique Item 01, as propriedades. Selecione Text e digite no lugar de Item 01 &Arquivo. O caractere & na frente de um caractere qualquer no campo Text das propriedades do menu incluir automaticamente um atalho para esse item no menu, Como conseqncia ao rodarmos a nossa aplicao e pressionarmos a tecla ALT junto com a letra A de Arquivo, teremos acesso imediato aos itens desse item do menu. Cada item deve ter a sua prpria tecla de atalho. Definindo A para o item Arquivo e a mesma letra A para um outro item qualquer, sempre ir ser acionado o primeiro item encontrado. Note que a palavra Arquivo esta com a letra A sublinhada, informando que essa letra o atalho para esse item. Caso queira trocar para uma outra letra do item, basta colocar o caractere & na frente da letra que voc quer que seja o atalho. Apague nesse novo item Arquivo o item MicroHelp. Coloque o mouse sobre esse novo item Arquivo e com o boto direito do mouse selecione, no menu-popup, Insert Submenu Item. Nesse novo quadro digite &Fechar e no Item MicroHelp digite Fecha a janela corrente. Repita a operao, crie um novo quadro e digite &Sair. No item MicroHelp digite, Fechar a aplicao. D um duplo clique nesse item e no template de eventos digite, no evento Clicked : Close (w_001) Agora apague o item Sair, o ltimo item do nosso antigo menu. D um duplo clique no item Arquivo e apague o comando PowerScript do evento clicked. Salve o menu e execute a aplicao quando ento teremos.
Captulo 5
33
Projetando o menu.
Selecione o item Arquivo : Clique em Sair ou tecle Alt + S para sair da aplicao. Ainda no item Arquivo pode-se implementar um pouco mais e tornar o menu mais agradvel visualmente acrescentando uma barra de ferramentas, ToolBar, com figuras.
D um clique em Fechar, e no template propriedades selecione a aba ToolBar. Em ToolBarItemText digite Fechar. No Item ToolbarItemName selecione CheckBox!. Voc pode selecionar qualquer cone, mas para que tenhamos uma coerncia no nosso projeto aconselho que siga o parametrizado. No Item ToolbarItemDownName voc pode selecionar o cone que ir ser exibido quando a figura estiver sendo pressionada com o mouse. No nosso exemplo deixe em branco. No Item ToolbarItemVisible verifique se esta marcado marcado indica que a Toolbar estar visvel. . Este item
. Este item sem No Item ToolbarItemDown deixe desmarcado marcao indica que o ToolbarItemName selecionado aparecer sempre, como se estivesse pressionado.
Captulo 5
34
Projetando o menu.
No item ToolbarItemSpace mantenha 0 esse item define a quantidade de espaos que dever existir entre os cones. No item ToolbarItemOrder mantenha 0 esse item define a ordem que o cone dever aparecer na janela. O Item ToolbarItemBarIndex define a ordem que a Toolbar ir aparecer quando no seu projeto existir mais de uma Toolbar. No Item Object Type selecione Menu. A opo Menu Cascate para o caso de seu menu ter subItens. Ser visto adiante.
D um clique em Sair e no template propriedades selecione a aba ToolBar. Em ToolBarItemText digite Sair. No Item ToolbarItemName selecione Exit!. Voc pode selecionar qualquer cone, mas para que tenhamos uma coerncia no nosso projeto aconselho que siga o parametrizado. No Item ToolbarItemDownName, voc pode selecionar o cone que ir ser exibido quando a figura estiver sendo pressionada com o mouse. No nosso exemplo, deixe em branco.
No Item ToolbarItemVisible, verifique se est marcado, indica que a Toolbar estar visvel.
. Esse item
. Esse item sem No Item ToolbarItemDown deixe desmarcado marcao indica que o ToolbarItemName selecionado aparecer sempre como se estivesse pressionado.
Captulo 5
35
Projetando o menu
No item ToolbarItemSpace mantenha 0. Esse item define a quantidade de espaos que dever existir entre os cones. No item ToolbarItemOrder mantenha 0. Esse item define a ordem que o cone dever aparecer na janela. No Item ToolbarItemBarIndex define a ordem que a Toolbar ir aparecer quando no seu projeto existir mais de uma Toolbar. No Item Object Type, selecione Menu, a opo Menu Cascate para o caso de seu menu ter subItens. Ser visto adiante. Os primeiros passos para montagem do menu principal da aplicao 01 j foram dados, adiante teremos a necessidade de incluir novos itens no menu, quando outras tcnicas sero apresentadas.
Captulo 6
A Linguagem PowerScript Eventos Ambiente de Script A Linguagem PowerScript Fundamentos da Linguagem PowerScript Variveis Tipos de Dados Escopo de Variveis Encapsulamento Objetos e Controle Execuo de uma funo por meio da notao de ponto Estruturas Arrays Arrays multidimensionais Arrays variveis Dados de objetos
(continua)
Captulo 6
Operadores Operadores Aritmticos Operadores binrios Operadores unrios Operadores de combinao Operador de string Operadores lgicos Operadores relacionais Operadores de conjuno Procedncia e Parnteses Comandos do PowerBuilder O Uso da estrutura IF Estrutura Choose Case Estrutura Choose Case Estrutura de iterao (Loops) Estrutura de Do Loop Estrutura For Next
Captulo 6
36
Programao a eventos no um conceito novo no desenvolvimento de software. A programao mais antiga tem natureza seqencial onde cada funo pode ser considerada como resultante de uma instruo anterior. Contudo, no mundo real, a maior parte das funes de negcios so baseadas em eventos, no sendo seqenciais. Funes baseadas em eventos so funes independentes e no obedecem a uma seqncia lgica. Em vez disso, certos eventos fazem com que as funes sejam executadas. Como conseqncia, o desenvolvimento de software se tornava difcil porque se tentava mapear o mundo baseado em eventos, nos programas de natureza seqencial. A codificao no PowerBuilder se baseia em eventos. Se voc d um clique sobre um cone executado um certo PowerScript em um evento. Se uma janela perde o foco logo surge outra, e executado outro PowerScript em outro evento. Programao de eventos se adapta melhor maneira pela qual o usurio final ir utilizar sua aplicao. Programao de eventos um dos muitos pontos de destaque do PowerBuilder.
Captulo 6
37
A Linguagem PowerScript.
importante diferenciar Programao baseada em eventos de Ambiente de programao baseado em objetos. Muito poderia ser dito a respeito da programao baseada em objetos (OOP Object-Oriented Programming). Para simplificar, as linguagens baseadas em objetos consistem em trs maneiras principais para realizar a atividade de programao. 1. Toda funo e grupo de funes inter-relacionadas (classes) no devem afetar os valores de dados em outras funes.A a isto chamamos "Encapsulamento". 2. A linguagem deve permitir que seja reutilizada grande parte do seu cdigo antigo e seja efetuada alterao. 3. As funes que herdam caractersticas de cada uma das outras devem ter a possibilidade de se personalizarem, quando necessrio. A isso chamamos "Polimorfismo". Uma vez implementado, o OOP facilita bastante o projeto interativo. O projeto interativo um projeto que pode ser ampliado posteriormente com pouco esforo do desenvolvedor, e nele consiste em criar uma pequena parte de sua aplicao de cada vez. O projeto interativo um subproduto do desenvolvimento baseado em objetos, o que permite desenvolver sua aplicao em blocos, desde o incio at o fim. Enquanto um bloco est sendo avaliado e testado voc pode ampliar facilmente seu trabalho anterior. Partindo desta filosofia de OOP, desde a verso 8.0 do PowerBuilder foi implantado a WorkSpace onde este conceito, antes implcito, agora fica explicito desde a inicializao do seu projeto. O PowerBuilder visual, com implementaes que no existem em outras Ferramentas de desenvolvimento "visual". No PowerBuilder voc no programa sua aplicao, mas desenha a aplicao. Quando necessrio qualquer atividade de programao ela implementada por trs dos objetos projetados. Isto pode parecer um pouco estranho, mas na construo das nossas janelas e menus voc no programou para que isso acontecesse, simplesmente voc desenhou, utilizando os painter para desenvolver sua aplicao.
Captulo 6
38
Open : o template dos eventos relacionados ao objeto em foco, no caso a sua janela, quando selecionar outro evento do seu objeto, seu nome ser exibido nessa "aba". Event List : Exibe os eventos j disponveis para o objeto em foco.
Function List: Exibe as funes pr-definidas para o objeto em foco. Declare Instance Variable : Exibe o template de declarao de variveis de Instancia, Compartilhadas e Globais, assim como, declaraes de funes externas Globais e Locais.
Captulo 6
39
O template de script sempre se abre automaticamente pela primeira vez no evento "open". Ele se abrir sempre no ltimo evento que voc codificou. Neste template que voc dever escrever seu cdigo, caso necessite, para ser executado quando a janela "w_001" se abrir. No quadro onde foi desenhado um circulo mais claro esquerda, voc poder selecionar o que definir. Sero disponibilizados os objeto(s), o template para declaraes de funes, seja do PB ou qualquer outro que voc queira definir (desenvolver), ou o template para declaraes e definies de variveis e funes externas. No quadro direita voc poder selecionar eventos pr-definidos ou definir um novo evento. Sempre que for disparado um evento ser executado o script contido nesse evento, Isto diferente das tcnicas tradicionais em outros Front-End onde um cdigo sempre tem que ser escrito para verificar a ocorrncia de eventos, e para reagir a cada evento. O PowerBuilder predetermina os eventos para os quais voc precisar, ou no, codificar. Entretanto pode ser necessrio um evento especial que o PowerBuilder no tenha previsto. Para definir seus prprios eventos: No quadro de seleo de eventos, selecione (New Event).
Captulo 6
40
Access : Neste caso ele ser de acesso "Publico" Return Type : O tipo de dados que ser retornado, Numrico, Caractere ou Binrio, se voc quiser que o evento retorne algum dado; quando definido como None no haver retorno de dados. Event Name : O nome que voc definir para o seu evento. Pode ser qualquer nome, mas o ideal que tenha sempre uma relao com a ao que voc est definindo. Argument Type : Indica que tipo de dado ser repassado para o evento. Pode ser tanto um dado de contedo, como valores ou textos, quanto objetos, Windows, boto etc. Argument Name : O nome definido pelo usurio para o tipo de dado definido. Ao preencher esse campo ou quando necessitar de mais campos para definir outras variveis que o seu evento dever receber, deve-se pressionar a tecla "TAB" para que essa linha seja repetida. Throws : Cria um trigger para uma exceo que ocorra neste evento. External : Caso esteja criando um evento para controlar um objeto externo.
Captulo 6
41
Captulo 6
42
Faixa de variao
TRUE ou FALSE
Observao
Varivel lgica Pode ser abreviado como char De 01-01-1900 at 12-31- A data esta no formato mm-dd3000 aaaa. No so permitidos espaos em branco. 01-01-1900 00:00:00:0000 23:59:59:9999 At 18 dgitos (todos O separador pode estar em significativos) qualquer lugar entre os 18 dgitos. 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
Captulo 6
43
Faixa de variao
Observao
Tipo de dado no vinculado que significa objeto binrio extenso. usado geralmente para guardar figuras. De 2.23E-308 at 1.78E308 Preciso de 15 dgitos Contm o tipo de objeto arrastado. Contm o tipo de dados enumerado de um objeto do PowerBuilder. Qualquer objeto do PowerBuilder, inclusive estruturas. De 1.18e-38 at 3.40E+38 Preciso de 6 dgitos 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.
Ateno : Todos os tipos de dados numricos incluem faixas de variao para cada tipo de dado. Alguns tipos de dados numricos tambm incluem dgitos de preciso (dgitos significativos) . Se voc efetuar um clculo com perda de dgitos significativos o PowerBuilder no informar sobre isto. Tenha cuidado !!! Alm disso, se voc exceder a faixa de variao do tipo de dado ocorrer o rollover. O rollover acontece quando um nmero excede o limite de uma faixa de variao, e recomea em outro extremo de faixa. Por exemplo, se voc armazenasse 32.766 em uma varivel inteira e acrescentasse cinco unidades a varivel inteira conteria o valor -32.765 no campo. Em outras palavras foi efetuado o rollover de quatro unidades e agora voc tem um valor incorreto guardado na sua varivel inteira. Nenhuma mensagem de erro ir surgir se isso acontecer.
Captulo 6
44
Captulo 6
45
Captulo 6
46
Captulo 6
47
Captulo 6
48
O template para a criao da estrutura bem simples, com um quadro para a seleo do tipo de dados e um quadro para a definio do nome da varivel, ao final clique em salvar. Nota : sempre importante voc utilizar a padronizao para nomes de objetos, funes e etc.
Captulo 6
49
Captulo 6
50
Captulo 6
51
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] X[1,4] X[2,4] X[3,4] X[4,4] X[1,5] X[2,5] X[3,5] X[4,5]
Onde : Int x[linha, coluna] Array variveis Os arrays variveis so arrays cujo tamanho no definido no momento da declarao. Para declarar um array varivel deixe o nmero fora dos colchetes quando declarar o array. O tamanho ser estabelecido com o primeiro acesso a esse array. Int x [] // Define o limite superior do array como 35 e preenche a posio 35 // com o dado 1234 Int x [35] = 1234
Captulo 6
52
Operadores Aritmticos. Os operadores aritmticos podem ser divididos em trs categorias : x x x Operadores binrios; Operadores unrios; Operadores de combinao;
Captulo 6
53
Smbolo ^ + * / =
Exemplo a^b a a a a a +b -b *b /b =b
Descrio Eleva a, potncia 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 unrios requerem um nico operando. Os operadores unrios do PowerBuilder encontram-se na tabela abaixo.
Smbolo + ++ --
Exemplo -a +a a ++ a --
Descrio 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
Captulo 6
54
a, a, a, a, a,
a a a a a
+b -b *b /b ^b
O nico operador de string do PowerBuilder usa um sinal de adio (+) para concatenao. String x1 = Power String x2 = Builder String x3 = x1 + x2 O valor resultante em x3 : PowerBuilder Os operadores lgicos testam se uma condio verdadeira ou falsa. H dois tipos de operadores lgicos: os operadores relacionais e os operadores de conjuno.
Captulo 6
55
Maior que ou igual a>=b a Menor que ou igual a<=b a No igual a <> b
Todo operador relacional que no retorna TRUE, retorna FALSE. Os operadores de conjuno tm expresses relacionais com seus operandos. Os trs operadores de conjuno do PowerBuilder so dois operadores binrios , (AND e OR), e um operador unrio, (NOT). Suas funes podem ser vistas na tabela verdade abaixo:
A primeira linha pode ser lida como Se a TRUE e b TRUE, ento a AND b TRUE, a OR b TRUE e NOT a FALSE
Captulo 6
56
Captulo 6
57
Voc pode ter quantas clusulas ELSEIF desejar em uma instruo IF. O Uso de instruo IF uma forma eficiente de controlar o fluxo do seu programa de acordo com as informaes existentes. Estrutura Choose Case A estrutura CHOOSE CASE avalia uma nica varivel de diversas maneiras diferentes. Choose Case varivel_a_ser_testada Case expresso 1 Um comando ou conjuntos Case expresso 2 Um comando ou conjuntos Case Expresso 3 Um comando ou conjuntos Case ESLE Um comando ou conjuntos END Choose
Captulo 6
58
Captulo 6
59
Captulo 7
Transaes de Bancos de Dados Definindo uma transao Montando a transao em PowerScript O uso do SQL no PowerBuilder
Captulo 7
60
Captulo 7
61
SQLReturnDa String ta Definindo uma transao Transao DataBase Usurio Senha CONEXO : : : : : SQLCA TESTE joao 12345 VIA ODBC
Montando a transao em PowerScript. SQLCA.DBMS = ODBC SQLCA.Database = TESTE SQLCA.USERID = joao SQLCA.DBPass = 12345 SQLCA.DBParm = ConnectString=DSN=TESTE;UID=DBA;PWD=SQL // Conectando CONNECT USING SQLCA;
Captulo 7
62
Montando a transao em PowerScript. sqlca.DBMS sqlca.database sqlca.userid sqlca.dbpass sqlca.logid sqlca.logpass sqlca.servername sqlca.dbparm // Conectando CONNECT USING SQLCA; //Testando a conexo IF SQLCA.SQLCode <> 0 THEN Messagebox(DataBase, Erro ao conectar) HALT END IF = = = = = = = = "O73 Oracle 7.3" "joao" "12345" @ORACLE_PROD DelimitIdentifier='No',Block=1000
Captulo 7
63
O cone DataBase fornece acesso ao DataBase Administration um ambiente visual que proporciona um total controle de acesso, edio e desenvolvimento de bancos de dados.
Captulo 7
64
No cone DB Profile DataBase Profile voc pode criar, modificar e excluir uma conexo.
Se voc instalou o PB 9 e o SQL AnyWhere Studio poder ter acesso ao banco EAS Demo Db V9 que acompanha o PB 9.0 e verificar a potencialidade deste painter. Na figura anterior, no template Object Layout, voc pode visualizar graficamente todo o seu banco assim como seus relacionamentos. Clique em para expandir o item ODB ODBC , em seguida clique em Table para listar as tabelas do banco EAS Demo Db V9. Coloque o mouse sobre a tabela bnus, pressione o boto esquerdo e arraste para o template Object Layout onde voc poder visualizar a tabela bonus.
Captulo 7
65
Clicando com o boto direito do mouse sobre a barra de titulo da tabela aparecer o menu-popup .
Captulo 7
66
Edit Data : Edita a tabela no formato Grid, Tabular ou Livre permitindo incluso, alterao e excluso de dados. DataPipeline : Ativa o template de PipeLine. O PipeLine um objeto do PowerBuilder que auxilia na construo, manuteno, cpia e exportao de dados. Alter Table : Habilita o template para a alterao fsica da tabela, nome da coluna, tamanho do campo etc. Drop Table : Exclui fisicamente uma tabela. Print Definition : Imprime a definio da tabela em foco. Export Sintaxe : Exporta a sintaxe de criao para o parmetro de ODBC selecionado, da tabela em foco. Properties : Exibe as propriedades da tabela.
Captulo 8
DataWindow Objeto DataWindow Fonte de dados Interface inteligente Interface com o usurio Como criar um objeto DataWindow Fontes de dados SQL Select Query Stored Procedure External Montando uma DataWindow com SQL Select Template de SQL Argumentos
(continua)
Captulo 8
Personalizando sua DataWindow Composite Crosstab (planilha) FreeForm (Formulrio livre) Graph (Grfico) Grid (Grade) Group (Grupo) Label (Etiquetas) N-up (Mltiplas linhas) Ol 2.0 RichText Tabular Cores e Bodas
Captulo 8
67
DataWindow
Objeto DataWindow O objeto DataWindow um objeto exclusivo do PowerBuilder. usado para recuperar, apresentar, manipular e atualizar dados de uma base de dados relacional ou de outras fontes de dados. Esse objeto encapsula as informaes sobre a fonte de dados. Inclui tambm informao de formatao que descreve como o dado deve ser apresentado no controle DataWindow. A informao codificada no objeto DataWindow usada pelo ncleo da DataWindow para fornecer uma interface inteligente entre o cliente e o servidor em tempo de execuo. Buffers so associados ao objeto DataWindow para armazenar os dados. Estes dados so referenciados como result set.
Captulo 8
68
Interface inteligente O ncleo do objeto administra todo o relacionamento que deve existir entre a mquina cliente e o servidor de banco de dados. Por exemplo, o ncleo da DataWindow sabe onde existe um item de dado alterado, quando um item de dado obrigatrio, qual o tipo de dado e quando um valor passa pelas regras de validao. Antes de o processamento iniciar o ncleo da DataWindow realiza todas essas checagens nos dados assegurando a validade dos mesmos. Interface com o usurio O PowerBuilder fornece uma variedade de features para criao de uma interface com o usurio atrativa e amigvel. Permite que se escolha o estilo de apresentao dos dados recuperados. Os estilos possveis so: tabular, grid, freeform, label, N-up, OLE, rich text, groups, graphs, crosstabs, e composite. Exemplo:
Captulo 8
69
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
Captulo 8
70
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 no escreve nada, apenas desenha com o mouse o tipo de dado. Esta opo impe alguns limites pois a navegao entre a tabela s possvel atravs dos seus relacionamentos. O Tipo de SELECT utilizado o mais simples, apenas a clusula WHERE suportada.
Captulo 8
71
SQL Select. Permite que o desenvolvedor selecione livremente o conjunto de tabelas do banco de dados. Suporta todas as clausulas pertencentes ao comando SELECT, padro ANSI (ODBC) e padro do seu banco, com a conexo nativa. Query O mesmo tipo de comando SELECT da opo SQL Select pode ser obtido usando o template Query. Este comando, uma vez salvo na biblioteca PowerBuilder como um objeto do tipo Query, pode ser utilizado como base para a construo de objetos DataWindow. Stored Procedure Esta seleo retorna uma lista de stored procedures gravadas no banco de dados atualmente conectado. Uma stored procedure um conjunto de comandos SQL que executam uma operao no banco de dados. Quando escolhemos uma stored procedure da lista o objeto DataWindow constri o result set da DataWindow em funo das colunas recuperadas pela stored procedure selecionada. O uso de Stored Procedures pode incrementar a performance pela reduo: do nmero de passos que a DataWindow percorre para recuperar dados do trfego na rede
x x
O DBMS compila a stored procedure no momento da sua criao. External O PowerBuilder possibilita que o desenvolvedor fornea externamente a fonte de dados para construo da DataWindow. Para isso o padro EXTERNAL foi disponibilizado. Tal opo exige que se informe o nome do dado e o formato para cada coluna.
Captulo 8
72
Neste
exemplo,
escolhemos
um
conjunto
de
tabelas
que
possuem
representa o Join entre as tabelas. Um duplo relacionamentos onde clique sobre o smbolo do Join abrir o template de possibilidades de juno da tabela, sempre com a opo definida com foco.
Captulo 8
73
Descrio Tabela A = tabela B e linhas da tabela A que no tenham correspondncia em B Tabela A = tabela B e linhas da tabela B que no tenham correspondncia em A Tabela A > que tabela B Tabela A < tabela B Tabela A menor ou igual tabela B Tabela a maior ou igual tabela B Tabela a diferente da tabela B
Voc tambm pode especificar um Join manualmente. Para isso clique no Join e selecione a(s) coluna(s) para realizao desse Join. Ao cone trmino clique no cone Join outra vez. Assim como podemos criar, podemos excluir um Join. D um duplo clique no cone no template Join e selecione a opo excluir em seguida clique no boto Delete.
Captulo 8
74
Onde : Sort : Seleciona as colunas para a classificao do resultado da query. A colunas selecionadas faro parte da clausula Order By. Where : Define o critrio de seleo de dados na query.
Group : Agrupa logicamente o resultado da query criando um grupo definido pelo desenvolvedor para sumarizar os dados da(s) coluna(s) selecionada(s). Having : Restringe os dados recuperados pela query, baseado na seleo feita pelo desenvolvedor. Compute : Cria uma nova coluna, com referncia, ou no, a outras colunas da tabela selecionada. Syntax : Exibe a query montada.
Nota : Muitas vezes poder ser interessante manipularmos os dados da tabela. Por exemplo, na tabela existem as colunas salario e gratificacao. S o que interessa no relatrio a renda composta pelo salario + gratificao. mais lgico trafegar pela rede somente a informao de renda do que as informaes de salrio e gratificao que sero somadas na mquina cliente. Para excluir uma coluna computada basta limpar a sua especificao na pasta Compute.
Captulo 8
75
Escreva o nome do argumento e o tipo de varivel. Ao final clique em OK. Outro mtodo muito interessante que o PowerBuilder disponibiliza o modo Syntax, da sua query, onde voc poder incluir manualmente (digitando direto) definies mais elaboradas na sua query. No Menu principal, selecione Design e sub item Convert to Syntax para retornar ao modo grfico. Ento, selecione Design e sub item Convert to Graphics. Ateno : Algumas implementaes no sero suportadas no modo Grfico mas funcionaro perfeitamente no modo Syntax.
Captulo 8
76
Return, e o PowerBuilder montar sua DataWindow nos padres de sua seleo, tanto em estilo quanto em recuperao de dados. Para retornar ao template do SQL clique em Entendendo o template da DataWindow. Data Source.
No painter Design da DataWindow voc pode movimentar os objetos a vontade at que melhor lhe sirva o Layout. Para Alterar o contedo dos label, que est em negrito, basta selecion-los com um clique.
Captulo 8
77
O PowerBuilder fornece vrios estilos de apresentao predefinidos para auxiliar na formatao dos dados. Cada estilo de apresentao representa um formato diferente.
Captulo 8
78
Captulo 8
79
Captulo 8
80
Captulo 8
81
Captulo 8
82
Captulo 8
83
Captulo 8
84
N-up (Mltiplas linhas) Suporta a exibio de mltiplas linhas, repetidas horizontalmente. til quando a linha de detalhe estreita.
Captulo 8
85
RichText Uma DataWindow com o estilo de apresentao RichText, permite: x x x x Carregar arquivos RTF (RichText Format) Incluir cabealhos e rodaps Usar vrias fontes, cores e tamanhos dentro de um nico controle Fornecer funes de edio ao usurio
Captulo 8
86
Captulo 8
87
as
default
para
criar
DataWindow
com
Captulo 9
Recuperao de dados a partir de uma DataWindow Funes para o controle DataWindow Montando um Objeto DataWindow Aperfeioando a visualizao da DataWindow Vinculando duas DataWindow Vinculando objeto DataWindow a um controle DataWindow Incluindo controle DataWindow a Window Incluindo parmetros de atualizao Rotina de incluso Rotina de alterao Rotina de Excluso
Captulo 9
88
Captulo 9
89
A DataWindow disponibiliza vrias funes pr-programadas de manipulao de dados, na tabela a seguir descreveremos essas funes.
Captulo 9
90
CopyRTF
String
Captulo 9
91
CrosstabDialog
Integer
Cut
Integer
DataCount
Long
DBCancel DBErrorCode
Integer Long
DBErrorMessage
String
DeletedCount
Long
Captulo 9
92
FindCategory
Integer
FindGroupChange
Long
FindNext
Integer
Captulo 9
93
GetBorderStyle
GetDataPieExplode
Integer
Captulo 9
94
GetDataValue
GetFormat
GetFullState
GetItemDate
GetItemDateTime
GetItemDecimal
GetItemNumber
GetItemStatus
Captulo 9
95
Retorno String
Descrio
GetNextModified GetObjectAtPointer
GetRowIdFromRow GetSelectedRow
Captulo 9
96
GetSQLPreview
String
GetSQLSelect GetStateStatus
String Long
Captulo 9
97
InsertRow IsSelected
Long Boolean
LineCount
Integer
ModifiedCount
Long
Modify
String
Move
Integer
Captulo 9
98
ReplaceText
Integer
Captulo 9
99
Reset
Integer
RowsCopy
Integer
RowsDiscard RowsMove
Integer Integer
Captulo 9
100
SaveAs
Integer
SaveAsAscii Scroll
Long Integer
ScrollNextPage ScrollNextRow
Long Long
ScrollPriorPage ScrollPriorRow
Long Long
ScrollToRow
Integer
SelectedLength
Integer
SelectedLine
Integer
Captulo 9
101
SetBorderStyle SetChanges
Integer Long
SetColumn
Integer
Captulo 9
102
SetFullState
Long
SetHTMLAction
Integer
SetItem SetItemStatus
Integer Integer
Captulo 9
103
SetRedraw
Integer
Captulo 9
104
ShareDataOff
Integer
Show ShowHeadFoot
Integer Integer
Captulo 9
105
O Primeiro passo criar a DataWindow, como j foi visto anteriormente, a receita nica, mas vamos repeti-la para uma melhor fixao.
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 verificao Retrieve on Preview esteja marcada. Clique em Next. Neste momento o PB 9.0, dever conectar com o banco de dados EAS Demo DB, caso isto no acontea, siga os passos de como conectar a uma base de dados. No template Quick Select selecione a tabela customer com um clique, a lista de colunas disponveis da tabela ser disponibilizada para seleo. Selecione as colunas: id, fname, lname. Mantenha a ordem de seleo para que nosso exemplo possa ficar coerente com o que voc esta desenvolvendo. Clique na verticalscrollbar, da lista de colunas para selecionar a coluna company_name.
Captulo 9
106
Quando se seleciona as colunas, automaticamente elas so inseridas no template de colunas, disponibilizados abaixo do template de seleo, o template de colunas disponibiliza as linhas de : Column, Sort, Criteria e Or.
Onde : Column Sort Criteria OR : Indica o nome da coluna selecionada; : Define como os dados recuperados sero apresentados, Ascendentes ou Descendente; : Realiza um filtro no momento da seleo dos dados, aceita todos os modelos do padro SQL; : Operador para combinaes lgicas.
Captulo 9
107
Captulo 9
108
O objeto DataWindow ser gerado, no template de DataWindow. Do mesmo modo, teremos a viso da seleo definida, no template Preview da DataWindow.
DataWindow
gerada
para
que
tenhamos
acesso
Captulo 9
109
aplicao exemplo_1.
Captulo 9
110
Note que, o cabealho no esta alinhado com a linha de detalhe(Customer ID) com ( ID ), vamos alinhar. Clique em cima de Customer ID", mantendo pressionada a tecla Ctrl, clique em id, note que as duas clulas estaro marcadas com selecionadas. Agora na Painterbar2, selecione no cone
Captulo 9
111
Captulo 9
112
OBJETOS Alinha objetos esquerda Centraliza os objetos selecionados horizontalmente Alinha os objetos selecionados pelo topo Padroniza os espaos horizontalmente entre os objetos selecionados Padroniza os objetos selecionados quanto a sua largura Padroniza os objetos selecionados quanto a sua largura e altura
Alinha direita
objetos
Centraliza os objetos selecionados verticalmente Alinha os objetos selecionados pela base Padroniza os espaos verticalmente entre os objetos selecionados Padroniza os objetos selecionados quanto a sua altura
Captulo 9
113
Com o boto
LINE para incluir uma objeto DataWindow, selecione cabealho(Header), clique no ponto onde voc quer incluir a linha.
Para modificar seu tamanho, clique no objeto linha inserido e com a tecla Shift pressionada, clique nas setas do teclado para realizar a operao. Voc tambm poder clicar no objeto linha e passar o mouse sobre o objeto, quando o cone do mouse mudar para uma cruz, clique no boto direito do mouse continue pressionando e arraste at o tamanho desejado. No final seu objeto DataWindow dever ficar com a aparncia da figura abaixo.
Clique em configuraes.
Captulo 9
114
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 verificao Retrieve on Preview esteja marcada. Clique em Next. A caixa de dialogo Select Table aparecer, selecione a tabela customer. Clique em Open. Voc tambm pode selecionar a tabela com um duplo clique.
Captulo 9
115
Neste momento estamos com todas as colunas selecionadas no template Table Layout e automaticamente o PowerBuilder 9.0 escreveu o Select para as colunas que foram selecionas na tabela. Agora temos que definir o Retrieval Argument. Para isto clique na PainterBar1 em Design selecione Retrieval Argument.
A caixa de dialogo para definio do tipo de argumento que ser repassado para o objeto DataWindow aparecer, para definirmos o tipo de argumento, teremos que informar um nome, que ser utilizado nas definies no objeto DataWindow, associado a esse nome, o tipo de varivel, se String, Numrica, Date, Time, Integer etc. Disponveis na caixa de seleo.
Captulo 9
116
O Template WHERE se abrir, nele voc ira visualizar os quadros; Column, Operator, Value e Logical. Clique sobre o quadro Column e todas as colunas da tabela selecionada, estaro disponveis para a seleo, selecione "customer"."id".
Captulo 9
117
Para uma maior noo das aes realizadas, clique na aba Syntax, e visualize a query montada.
Clique em
Captulo 9
118
Captulo 9
119
Para selecionar outros dados no painter de construo do objeto DataWindow, Retrive, e informe um outro valor na caixa de dialogo do clique em Retrieval Argument.
Clique em exemplo1.
Captulo 9
120
Captulo 9
121
A novidade em relao a d_lista01 a coluna State, que apresenta uma visualizao com estilo drop-down DataWindow. Para fazer esta coluna receber este estilo, siga os passos seguir: 1. D um clique sobre a coluna; 2. Com o mouse sobre a coluna, clique o boto direito do mouse e selecione properties (propriedades); 3. Na tabela selecione a aba, Edit; 4. No item Style Type, selecione DropDownDW; 5. Marque a caixa Always Show Arrow; 6. Marque a caixa VscrollBar.
Captulo 9
122
Quando terminar de arrumar o objeto DataWindow d_lista02, clique em Save para salvar as alteraes. Dicas: Para trabalhar com as colunas e labels, utilize os botes de ajustes que descrevemos. Clicando em uma parte branca do objeto DataWindow com o boto esquerdo do mouse e mantendo-o pressionado, arraste o mouse sobre vrias clulas, (colunas e labels) uma caixa de seleo surgir, selecionando todas as clulas a qual a caixa de seleo estiver envolvendo. Veja figura.
Neste caso sero selecionados todos os campos a qual a caixa de seleo esta envolvendo.
Captulo 9
123
Aps criar e salvar os objetos DataWindow esses objetos j esto aptos a serem vinculados a um controle DataWindow esse controle DataWindow estar associado a um objeto Window (janela) e esse objeto Window (janela) a sua aplicao. Assim teremos uma janela com uma funcionalidade de recuperao de dados de uma base de dados. Para isso seguiremos os seguintes passos: 1. 2. 3. 4. Incluir o controle DataWindow a Window (janela); Incluir os objetos DataWindow ao controle DataWindow; Vincular a janela a aplicao; Executar e depurar a aplicao.
Captulo 9
124
Com estes procedimentos, j podemos visualizar os labels do objeto DataWindow, d_lista01. Note que o PowerBuilder 9.0 automaticamente atribuiu a esse controle DataWindow o nome de dw_1, veja o atributo Name na figura. Voc pode deixar sempre o PowerBuilder 9.0, atribuir nomes seus controles, como tambm pode dar a eles o nome que desejar, mas sempre que possvel, siga as regras j vistas para identificao de controles e objetos. Agora repetiremos toda a operao anterior, para incluirmos o objeto DataWindow d_list02, em um novo controle DataWindow abaixo do controle dw_1.
Captulo 9
125
Voc pode executar a sua aplicao e visualizar como o controle DataWindow ser apresentado na janela.
Captulo 9
126
// Aplica os parmetros do DBMS de teste, a transao SQLCA sqlca.dbms sqlca.dbparm ="ODBC" ="ConnectString='DSN=EAS Demo DB V9;UID=dba;PWD=sql'"
Aps a definio dos parmetros, conectamos ao banco. // Conecta com o banco Connect; O banco ser ativado e estar disponvel para acesso, para testarmos usamos: //Testando a conexo If sqlca.sqlcode < 0 Then MessageBox ("Erro: dados", & HALT End If Impossivel conectar com o banco de sqlca.sqlerrtext, Exclamation!)
Captulo 9
127
Captulo 9
128
Essa janela s tem a funcionalidade de consulta a partir de um pequeno dado se pode acessar uma gama maior de informaes pertinentes ao dado selecionado.
Captulo 9
129
Captulo 9
130
Como iremos incluir trs controles, clique com o boto direito mouse sobre o controle CommandButton que acabou de incluir na janela e no menu-popup que aparecer, selecione a opo Duplicate. Assim o controle ser automaticamente inserido na janela.
Captulo 9
131
Agora incluiremos a programao correspondentes cada controle, para que esse exera a funo a qual se vez necessria a sua incluso na janela.
Rotina de incluso
Clique no primeiro controle de boto de controle e selecione suas propriedades, no template que surgira direita preencha os atributos para esse controle, conforme a figura abaixo.
Captulo 9
132
Praticando: No template em branco, clique com o boto do mouse direito selecionando Paste Special, e depois Object, na lista que surgir selecione dw_2. Agora coloque um ponto (.) aps dw_2, clique com o boto direito do mouse e selecione Function e Built-in. Na lista que surgir procure por InsertRow. Com um duplo clique selecione a funo. Agora coloque o zero(0) entre os parnteses. Pronto o PowerBuilder 9.0 montou para voc a funo InsertRow, o parmetro zero(0) ir inserir uma linha no final do Buffer do controle DataWindow fazendo desta linha, a linha corrente.
Captulo 9
133
Clique em executar.
Run
para
Captulo 9
134
Captulo 9
135
Aps preencher as propriedate para o boto Gravar agora teremos que colocar o cdigo PowerScript para ser executado quando o boto for pressionado e esta ao deve ser de gravao na base de dados. Para tal, utilizaremos a funo UpDate().
Captulo 9
136
D um duplo clique no controle cb_gravar, selecione o evento Clicked, e escreva o cdigo PowerScript abaixo:
Clique em executar.
em Run para
Captulo 9
137
Clique na aba Clicked e digite os comandos para recuperao dos dados. Usaremos o Retrieve() igual para a recuperao no evento Open da aplicao.
Captulo 9
138
Poderamos tambm automatizar a recuperao dos dados sem precisar incluir um boto para isto. Umas das solues seria incluir a rotina do boto Ler Dados na linha de IF aps o comando Commit. Outra soluo seria atualizar a dw_1 sem precisar usar o comando Retrieve (), assim no estaramos contribuindo para o trafego na rede e a aplicao ficaria muito mais rpida. Vamos demonstrar as duas embora, a segunda seja uma soluo mais profissional. A primeira no esta errada depende do enfoque do seu negcio. Por exemplo: imagine uma grande rede com grande volume de dados, e o usurio precise acessar vrios dados. E esses dados esto sempre sofrendo alterao. Ento se faz necessrio o uso do Retrieve, para cada atualizao ou grupos de atualizao.
Captulo 9
139
Para o segundo mtodo usaremos a aplicao da rotina de alterao do controle DataWindow dw_1. Atravs do uso do evento j disponibilizado pelo PowerBuilder 9.0 para controles DataWindow, UpdateEnd. Esse evento sempre disparado ao final de uma atualizao atravs do controle DataWindow, seja um Insert, Delete ou Update. Com um duplo clique no controle DataWindow dw_2 o template de script se abrir. Na caixa de seleo de script ao centro da parte superior, selecione o evento UpdateEnd.
Captulo 9
140
Para se incluir ou substituir dados em um controle DataWindow, utiliza-se funo SetItem. Para se recuperar dados de um controle DataWindow se utiliza funo GetItemNumber, GetItemString, GetItemDate, GetItemDateTime e GetItemTime. Cada funo recupera o seu dado correspondente ao tipo de coluna definido no objeto DataWindow. Sintaxe : numeric dwcontrole.GetItemNumber ( long row, string column {, DWBuffer dwbuffer, boolean originalvalue } ) numeric dwcontrole.GetItemNumber ( long row, integer column {, DWBuffer dwbuffer, boolean originalvalue } ) Onde: dwcontrole Row : o nome do controle DataWindow/DataStore. : Dado numrico que representa a linha do dado no objeto DataWindow. Column : Nome ou a posio (numrica) da coluna. Dwbuffer(opcional) : Identifica qual buffer o dado ser recuperado na DataWindow. Originalvalue(optional):Varivel booleana, que indica se a recuperao ser da linha corrente ou dos dados originais no buffer. True: Retorna os valores originais (os mesmos do Retrieve na base de dados). False: (Default) Retorna os valores correntes.
Captulo 9
141
Notando a sintaxe da funo SetItem verifica-se a necessidade de se informar que linha deve ser alterada. Essa informao s possvel se obter atravs do evento Clicked! da dw_1. Onde montamos a rotina de recuperao de dados para a dw_2. Para que se passe esse valor para um outro evento de um outro objeto, podemos criar uma varivel do tipo Instance, como definido anteriormente. Clique caixa de seleo de script a esquerda da parte superior, selecione Declare Instance Variable. Defina a varivel long wk_linha conforme a figura abaixo.
Agora clique na aba Clicked e atribua o valor da linha clicada (row) a varivel de instacia wk_linha.
Captulo 9
142
Clique na aba Layout e de um duplo clique no controle DataWindow dw_2 combinando a funo SetItem com a funo GetItemNumber e GetItem String. teremos:
Para uma melhor documentao, sempre melhor utilizar o nome da coluna na sintaxe, mas pode-se utilizar o nmero (posio) que ela ocupa no banco de dados. Onde : id seria posio 1 e fname posio 2. Caso tenha implementado a primeira opo coloque as linhas dw_Reset( ) e dw_Retrieve( ) como comentrio para testar a segunda opo.
Captulo 9
143
Clique em executar.
Run
para
Para completar este exemplo de manipulao de dados em um controle DataWindow. Inclua um boto de excluso de dados.
Rotina de Excluso
CommandButton e depois na posio da janela que voc Clique em quer incluir o boto(coloque logo abaixo do boto Gravar). E no template Propriedade preencha:
Captulo 9
144
Captulo 9
145
Note que a funo DeleteRow apaga o dado selecionado do controle DataWindow. Para se ter o efeito refletido na base de dados precisamos atualizar a base. Utilizaremos a funo Update.
Captulo 9
146
Nesse nosso exemplo poderemos notar a exibio de uma mensagem de erro aps se optar por excluir na base de dados. Isso se deve ao fato da tabela customer ter a sua Primary Key apontada para a Foreign Key 'ky_so_customer' na tabela sales_order ou seja, para excluir este item devemos excluir em cascata como vimos no item, Uso do SQL no PowerBuilder. Veremos este processo mais adiante, mas se for retirado ou comentado a funo UpDate poderemos ver a funcionalidade da funo DeleteRow, apagando o item selecionado no controle DataWindow que nosso foco. Manipular dados em um controle DataWindow.
Captulo 10
DataWindow : Tcnicas avanadas Buffers Internos Detectar a validao Detectar o Tipo de dado Detectar regras de validao Detectar mudanas no item Usando Filtros Classificando Clusula Where para Update e Delete Modify e Describe Funo Evaluate( ) Propriedade Object Parametrizando com a clusula DATA
Captulo 10
147
Esses buffers sempre sero criados na mquina cliente e l permanecero at a atualizao UPDATE() ou descarte dos dados pela aplicao que os solicitou. Toda manipulao de dado atravs de um controle DataWindow segue algumas regras para a sua transferncia entre o controle DataWindow e o buffer primrio. So elas: x x x x Detectar Detectar Detectar Detectar a validao; o tipo de dado; regras de validao; mudanas no item.
Aps essas regras retornarem todas como verdade ou zero, o dado do item selecionado ento transferido para o buffer primrio.
Captulo 10
148
Captulo 10
149
Captulo 10
150
Captulo 10
151
A funo SetSort( ) apenas define os critrio de classificao. Para efetivar a classificao na DataWindow, utilize a funo Sort( ). dw_1.Sort( ) Para uma base com grande volume de dados, utilize a funo SetRedraw( ).
Ao se classificar uma DataWindow com agrupamentos, faz-se necessrio executar a funo GroupCalc( ) para se recalcular os agrupamentos.
Captulo 10
152
Sempre que se chama a funo UpDate um comando de atualizao de banco enviado por vez. Se algum erro for retornado todo o processo de atualizao ser interrompido e o evento DBError do controle DataWindow que chamou a atualizao ser disparado. E a funo UpDate retornar -1. Para visualizar os comandos SQL gerados para atualizao dos dados no banco de dados acesse os argumentos do evento SQLPreview no controle DataWindow que chamou a atualizao. O PowerBuilder 9.0 controla as atualizaes processadas no banco de dados montando o comando SQL mais apropriado para cada DML de INSERT, DELETE e UPDATE. Voc pode dar um lock na linha editada internamente o PowerBuilder 9.0 responde a este problema com a tcnica de analisar as caractersticas definidas pelo desenvolvedor na criao do objeto DataWindow. Estas caractersticas so definidas no painter DataWindow. Selecione na PowerBar1, Rows e UpDate Properties.
Captulo 10
153
x x x
Key Columns; Key and Update Columns; Key and Modified Columns.
Key Columns : Somente a chave primria da tabela selecionada utilizada na clusula Where. Vrios usurios podem alterar o dado ao mesmo tempo. Key and UpDate Columns : A chave primria e as colunas atualizveis da DataWindow sero usadas na clusula WHERE. Esta opo pode notificar a outro usurio, que o item foi alterado. Key and Modified Columns : A chave primria e todas as colunas alteradas da DataWindow sero usadas na clusula WHERE. Esta opo permite que usurios alterem itens distintos. Allow Update : Habilita o update para a tabela. Se desligada a DataWindow apenas de leitura, normalmente utilizada para relatrios. UpDateTable Columns : Seleciona as colunas que sero atualizveis as colunas no selecionadas no sero atualizadas com a funo UpDate. Table to Update : Especifica a tabela que ser atualizada apenas uma tabela. Se existir junes na query da DataWindow apenas uma delas poder ser atualizada.
Captulo 10
154
Captulo 10
155
Captulo 10
156
//Atualiza a tabela definida no painter DataWindow(empregado) Integer i_ret I_ret = dw_1.Update(TRUE,FALSE) FALSE Marca como no reiniciar as flags. IF i_ret = 1 THEN //desativa a atualizao para as colunas da tabela, empregado dw_1.Modify(empregado_numero.UpDate = No) dw_1.Modify(empregado_nome.UpDate = No) dw_1.Modify(empregado_endereco.UpDate = No) dw_1.Modify(empregado_telefone.UpDate = No) //Faz a tabela salrio aceitar UpDate dw_1.Modify(DataWindow.Table.UpdateTable = ~salario~ ) //Faz as colunas da tabela salario aceitarem Update dw_1.Modify(salario_nmero_empregado.UpDate = Yes) dw_1.Modify(salario_salario.UpDate = Yes)
Captulo 10
157
//Faz a tabela "empregado" aceitar UpDate dw_1.Modify(DataWindow.Table.UpDateTable = ~empregado~) No foi to complicado. Apenas uma seqncia at os sinais (~) til, (~r) til + r e (~t) til + t, seguem uma seqncia. x x Para se incorporar uma string dentro de outra string, apstrofos(aspas simples) so reconhecidos como diferentes de aspas (duplas). Um apstrofo (aspa simples) representa ~`.
O PowerBuilder 9.0 incorpora um analisador de strings, que usado para validar os strings submetidos. O til usado para informar ao analisador que o caractere seguinte deve ser usado como literal.
Captulo 10
158
o caso do atributo VISIBLE. Voc poder passar uma expresso atravs da funo Modify.
Coluna : salrio Expresso IF - dentro do painter DataWindow : If ( boolean, truevalue, falsevalue ) string s_mod s_mod = salrio.visible = 0~tIF (salrio > 1000,0,1) dw_1.Modify(s_mod) Neste exemplo, sempre que o salrio for maior que 1000 no ficar visvel.
Captulo 10
159
Captulo 10
160
Captulo 10
161
Voc poder ter acesso a esses atributos e ver muitos exemplos no HELP do PowerBuilder 9.0. Procure por Describe DataWindow expression function e selecione Controls in a DataWindow and their properties.
As funes Modify e Describe so muitos teis quando se trata de trabalhar mais profissionalmente com as DataWindow por esse motivo tente sempre que possvel utilizar estas funes. Seu projeto ficar sempre mais dinmico e o limite das suas funcionalidades esta no limite da sua criao.
Captulo 10
162
Captulo 10
163
Captulo 10
164
Captulo 10
165
Onde :
: Nome do controle DataWindow que se ir recuperar ou inserir dados. : Nome da coluna no objeto DataWindow. : Nmero da primeira linha a ser recuperada. : Nmero da coluna inicial. : Nmero da coluna final.
Retorna um ARRAY de estrutura do mesmo tipo de dados definido para a coluna e os limites informados.
Captulo 10
166
Captulo 11
PipeLine de dados
Captulo 11
167
No
painter
Table : Nome da tabela que ser criada no banco destino. Options: O tipo de transferncia de dados, opes: x x x x Create-Add Table - Cria uma nova tabela, ela no 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 - Mantm 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 sero apontadas atravs de mensagens de erro. Update-Update/Insert Rows - Insere linhas novas no banco destino e atualiza as linhas j existentes se alguma informao sofreu alterao.
Captulo 11
168
No template de definio de dados pode-se definir como os dados sero recebidos pelo banco de destino. Source Name e Source Type no permitem alterao, os itens com fundo em branco, permitem alterao. x x x x x x x Destination Name Type Key Width Dec Nulls Initial Value - Altera o nome da coluna no banco destino. - Altera o tipo de dado na tabela destino. - Indica que itens faro parte da chave primria na tabela destino. - Altera o tamanho do item no banco destino. - Altera o nmero de casas decimais no banco destino - Indica que valores podem ter valores NULL. - Indica o novo valor padro para o banco destino.
Captulo 11
169
Clique em
ser executada posteriormente. De o nome de U_COPIA_TABELA. O mtodo que acabamos de ver executa o Pipeline no ambiente de desenvolvimento. Pode-se usar o Pipeline em tempo de execuo para isso teremos que criar um objeto Pipeline e anexarmos a aplicao. Clique em New selecione PB Object e Standart Class.
Captulo 11
170
Captulo 11
171
Agora clique em
uo_pipeline01 em nossa aplicao exemplo1. Para executar o pipeline em tempo de execuo voc pode criar uma dropdown com uma lista de objetos e ao selecionar o objeto execute o cdigo abaixo ou crie um boto para isto.
Captulo 11
172
Captulo 11
173
Captulo 11
174
Captulo 12
Criando Relatrios
Captulo 12
175
Os tipos:
x x x x x x x x x x x
Tabular Freeform Grid Label N-Up Group Composite Graph Crosstab OLE 2.0 RichText
Captulo 12
176
Captulo 12
177
Neste exemplo que iremos criar de relatrio utilizaremos os recursos mais comuns para um relatrio gerencial. Com cabealho, informaes de pgina, data da impresso, hora da impresso e a utilizao de expresses na DataWindow de relatrio. O Primeiro passo maximizar o template de edio para uma melhor visualizao dos dados. Com esse procedimento podemos melhor visualizar as bandas disponveis para manipulao. x x x x Header Datail Summary Footer Onde colocaremos nosso cabealho. Onde colocaremos as linhas de dados. Onde colocaremos os dados sumarizados. Detalhes de rodap do relatrio.
Captulo 12
178
A figura acima mostra o template de edio maximizado coloque o mouse sobra banda Header. Na mudana do ponteiro do mouse, clique com o boto direito e mantenha-o pressionado, arrastando para baixo abrindo assim um espao entre o limite do template e a banda Header.
Captulo 12
179
Para o objeto texto criado digite: Demonstrativo : Salrio Departamento. Centralize o texto na parte superior da banda Header.
Agora selecione o objeto Picture e clique na parte esquerda da banda Header. A caixa de dialogo para se selecionar a figura a inserir no objeto se abrir. Selecione:C:\Arquivosdeprogramas\Sybase\PowerBuilder9.0\Code\ Examples\ExampleApp\nautilus.bmp Caso a figura fique fora de proporo, coloque o mouse sobre a figura e clique com o boto direito no menu popup que se abrir. Selecione, Original Size.
Selecione outro objeto Text e inclua-o na banda Header. Para cada coluna selecionada na base iremos incluir um objeto texto com a identificao da coluna conforme segue :
Captulo 12
180
Note que algumas colunas tero um alinhamento esquerda e outras direita podendo at ter colunas que devero estar centralizadas. Esses ajustes sero necessrios para adequar o tipo de dado a visualizao que se queira dar ao relatrio. No existe uma regra definida neste caso vale sempre o bom senso. Lembrando que sempre se deve procurar mostrar o mximo de informaes possveis sem se poluir o relatrio. Fazendo-se assim um relatrio de fcil leitura e identificao dos dados.
Captulo 12
181
a a a o
Note que a expresso Today() retorna a data atual no modelo a qual ela esta definida no painel de controle do MS Windows.
direita no template propriedades, em Compute Expression. clique no boto de seleo para abrir a caixa de dialogo Modify Expression e digite ou selecione na caixa de seleo na parte inferior esquerda String(x,s), no lugar do x, escreva Today() e ignore o s. Ento teremos: string( today() )
Captulo 12
182
Coloque o mouse sobre a banda Summary e na mudana do ponteiro do mouse clique com o boto esquerdo mantenha-o pressionado e arraste abrindo assim um espao entre a banda Datail e Summary. para criar uma Clique na coluna salary da banda Datail e clique em coluna com a mdia dos valores recuperados do banco de dados. Agora clique na parte branca da banda Summary e o campo computado com a expresso, avg(employee_salary for all) ser adicionado a e crie um novo objeto de texto e digite Mdia DataWindow. Clique em Salarial :. Alinhe o campo computado com a coluna salrio e coloque o objeto texto frente do campo computado.
Captulo 12
183
Captulo 12
184
Clique em Ok.
Captulo 12
185
Coloque o mouse sobre a banda Trailer group e na mudana do ponteiro do mouse clique com o boto esquerdo mantenha-o pressionado e arraste. Abrindo assim um espao entre a banda Trailer group e Detail. Mova os itens da banda Summary Mdia Salarial. O computed Field com o valor da mdia salarial e a linha para a banda Trailer Group. Para continuarmos teremos que entender sobre as propriedades da banda de grupo. As outras bandas exibem propriedades padro, j para a banda de grupo existem algumas particularidades.
Captulo 12
186
Clique no boto de seleo de Group Sort e clique e arraste a coluna department_dept_id de Source Data para Columns. Conforme a figura.
Clique em Ok.
Captulo 12
187
Clique na parte branca da banda Trailer gruop para acessar as propriedades. Selecione Hide Gray Line on Group Break. Se deseja inibir esta barra.
Captulo 12
188
Captulo 12
189
O Resultado que teremos se aproxima e muito da DataWindow criada anteriormente com a vantagem que s clicamos, o PowerBuilder 9.0 construiu tudo automaticamente nesse caso teramos somente que acertar o cabealho e dimensionar melhor as colunas.
Captulo 12
190
Captulo 12
191
Clique em Save e salve a DataWindow como d_relatorio_2. Feche o template de DataWindow. Vamos criar a terceira DataWindow que ser inserida em nosso relatrio composite. Clique em New selecione DataWindow e o estilo Graph. Selecione no estilo de recuperao de dados Quick Select. Marque Retrieve on Preview. Clique em Next.
Captulo 12
192
Agora falta descriminar as variveis do nosso grfico nesse exemplo no iremos exemplificar todas as propriedades do objeto grfico, veremos isto mais adiante. Na propriedade direita selecione General e em Title digite; Slario X Sexo. Agora selecione a aba Axis e selecione na propriedade Axis o item Category em Label digite Sexo. Retorne na propriedade Axis e selecione Value e em Label digite Salrio.
Captulo 12
193
Captulo 12
194
Captulo 12
195
O estilo Composite como todos os outros estilos tambm disponibiliza algumas propriedades que podem ser configuradas para uma melhor visualizao. So: Em General : Name : Nome dado ao relatrio e que define o acesso a este Nested.
HideSnaked : Faz com que o controle s aparece uma vez por pgina quando voc imprimir a DataWindow caso esta utilize o formato de colunas de jornal. Visible Border : Habilita ou inibe a visualizao do relatrio. : Define o tipo de contorno que o relatrio deve exibir.
Captulo 12
196
Trail Footer : Fora a banda footer a aparecer depois da ltima linha de dados do relatrio. Em Pointer : Pointer Em Criteria : A condio de filtro da clusula Where para o relatrio. A propriedade de Critrios define a conexo entre o relatrio e o DataWindow. Exemplo : emp_id=:id_emp : Seleciona o tipo de ponteiro do mouse ser exibido.
Captulo 13
Grficos
Captulo 13
197
Grficos
Um grfico em linhas gerais igual a qualquer outro objeto DataWindow. Exceto pelo fato de revelar os dados em forma de grfico ao invs de apresentar os dados em forma de nmeros. Para se criar um grfico precisaremos entender alguns padres. Em um grfico existem as categorias, os valores e as sries. Onde : Categoria : Os dados independentes, tipo: meses, anos e bimestres.
Valor : Os dados dependentes, esta informao normalmente sofre alterao por categoria, tipo : Vendas (por ms) , Vendas (por ano) e Vendas (por bimestre). Srie : Os conjuntos de pontos de dados do grfico.
Para se criar um grfico deve-se definir as categorias e os valores. As sries estaro presentes no grfico de acordo com as categorias e os valores. Normalmente as categorias correspondem a uma coluna da tabela. Os valores tambm podem provir de uma coluna, mas normalmente provm de agregaes, somatrias ou mdia de uma coluna. Criando um grfico
Clique em New selecione DataWindow e escolha o estilo Graph em Choose Data Source for Graph DataWindow selecione Quick Select e marque a caixa de seleo Retrieve on Preview e tecle Next. Na caixa de dialogo Quick Select selecione employee. No quadro Columns selecione salary e sex e clique em Ok Na caixa de dialogo Define Graph Data selecione para Category; sex. Para Values; sum(salary for graph) e para Series; sex. Clique em Next. Na caixa de dialogo Define Graph Style selecione SolidBar e clique em Finish.
Captulo 13
198
Grficos
Ento teremos:
Com esta primeira viso podemos notar que praticamente o grfico j est montado. Precisamos alterar algumas configuraes para uma melhor preciso dos dados e compreenso do mesmo por qualquer pessoa que o analise. Para isto, existem as propriedades do objeto grfico. So: Propriedade BackColor Border BorderStyle Tipo de dado Descrio Long Especifica o valor numrico 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 so: StyleBox! StyleLowered! StyleRaised! StyleShadowBox!
Captulo 13
199
Grficos
Propriedade BringToTop Tipo de dado Descrio 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 grfico. grSortType Especifica como as categorias so ordenadas. PowerObject Um objeto de tipo PowerObject que contm informao sobre a definio de classe do objeto ou controle. Integer Especifica o percentual de profundidade da largura do grfico. Boolean Especifica se PowerBuilder por o grfico automaticamente em modo de arrastar e soltar. TRUE - Quando o controle clicado ou, o controle est automaticamente dentro do modo arrastar e soltar. FALSE - Quando o controle clicado, o controle no est automaticamente dentro do modo arrastar e solta. String Especifica o nome do cone ou o arquivo que contm o cone que voc quer exibir quando o usurio arrastar um controle . Integer Especifica o ngulo de elevao de frente para a parte de trs. Boolean Especifica se o controle habilitado (pode ser selecionado).True : Habilitado / False : No habilitado
Depth DragAuto
DragIcon
Elevation Enabled
Captulo 13
200
Grficos
Propriedade GraphType Tipo de dado Descrio grGraphType Especifica o tipo do grfico, os valores so: (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) grfico, os valores so: AtBottom! AtLeft! AtRight! AtTop!NoLegend! grDispAttr Especificam o estilo para o tipo de texto da legenda do grfico, inclusive tamanho, cor, e rotao. Integer Especifica o percentual da largura dos marcadores de dados para sries diferentes em um grfico. Integer Especifica a distncia que o grfico da frente da janela. grDispAttr Especificam as propriedades do texto em grfico de torta com label, inclusive tamanho, cor, e rotao. String Contm o nome do ponteiro ou o arquivo que contm o ponteiro usado para o grfico.
Height Legend
Legend DispAttr
OverlapPercent
Perspective PieDispAttr
Pointer
Captulo 13
201
Grficos
Propriedade Rotation Series SeriesSort ShadeColor Spacing TabOrder Tag TextColor Title TitleDispAttr Tipo de dado Descrio Integer Especifica quanto girar o grfico da esquerda para direita. grAxis Especifica as sries no grfico. grSortType Especifica como as sries so ordenadas. Long Especifica a cor usada para o preenchimento no grfico. Integer Especifica o espao entre marcadores de dados no grfico em percentual. Integer Especifica o valor do controle TAB na seqncia 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 ttulo para o grfico. grDispAttr Especificam o estilo para o texto na legenda do grfico, inclusive estilo de texto, tamanho, cor e rotao. grAxis Especifica os valores do eixo de valor do grfico. Boolean Especifica se o controle visvel. Se TRUE - Controle visvel. Se FALSE - Controle no visvel. Integer Especifica o modo de texto no controle; por exemplo, 400 para normal ou 700 para tipo negrito. Integer Especifica o posicionamento X ( distncia da extremidade esquerda da janela principal), em unidades do PowerBuilder. Integer Especifica o posicionamento Y ( distncia do topo da janela principal), em unidades do PowerBuilder.
Values Visible
Width
Captulo 13
202
Grficos
Em todas as propriedades disponibilizadas pelo PowerBuilder 9.0, pode-se usar a notao por pontos atravs do PowerScript facilitando a interao com o usurio em tempo de execuo. Exemplo: gr_1.BackColor = RGB(255, 255, 0) ou gr_1.Category.LabelDispAttr.BackColor = RGB(0, 128, 255) ou gr_1.Category.Label = "Tipos X Produtos" ou gr_1.Depth = 50
Alterando as propriedades do grfico no painter DataWindow. No template propriedade direita clique na aba General. Para saber cada propriedade consulte a tabela acima. Title Units Timer Interval Color BackColor Name Depth Elevation : digite Salrio X Sexo. : selecione PowerBuilder (0) : Selecione (0) : Selecione Black : Selecione White : o padro sempre gr_1. : No estar disponvel. : No estar disponvel.
Captulo 13
203
Grficos
No template propriedade direita clique na aba Axix. Para saber cada propriedade consulte a tabela acima. Na propriedade Axix selecione Category em Label, digite Sexo. Na propriedade Axix selecione Label em Label, digite Salrio. Na propriedade Axix selecione Series em Label, digite Descrio. Na propriedade Scale marque a caixa AutoScale. Ento teremos :
Clique em
Captulo 13
204
Grficos
Explore as propriedades do objeto grfico. Normalmente se aplica sua variao em tempo de execuo. Os padres 3D disponibilizam as propriedades Perspective, Elevation e Rotation que oferecem um bom recurso para visualizao. Atravs das instrues de notao de ponto se pode disponibilizar suas definies para o usurio. At aqui conceituamos funes, objetos e aplicamos suas funcionalidades. O mesmo ser feito para o objeto grfico. Para isto, utilizando o aprendizado at agora iremos alterar o projeto proposto. Adequando-o a novas inseres de objetos e funes. Edite a janela w_000 altere a propriedade Window Type para mdihelp!. Salve a janela. Clique em New selecione PB Object e Window. O template para criao de um novo objeto Window aparecer. Altere a propriedade Window Type para child!. Selecione a aba Other e altere a propriedade Width para o valor 3666 e Height para 2284. Salve a janela como w_003. Clique em New selecione PB Object e Menu. O template para criao de um novo objeto menu se abrir. Clique no item untitle0 com o boto direito do mouse e selecione no menu-popup que se abrir Insert Submenu item. Na propriedade Text digite Grfico. Com um duplo clique no item Grfico selecione o evento Clicked e escreva o cdigo PowerScript: OpenSheet(w_003, w_000, 2, Layered! ). Salve como m_menu02. Edit a janela w_000 no template propriedade substitua propriedade MenuName pelo novo menu m_menu02. Salve a janela w_000.
Captulo 13
205
Grficos
Incluindo o objeto grfico na janela principal. Edite a janela w_003 clique em Select Control e selecione Create DataWindow control. Clique na janela para incluir o objeto DataWindow. No template propriedade do controle DataWindow inclua na propriedade DataObject o objeto grfico d_grfico. Ajuste o controle DataWindow para que se visualize todo o objeto DataWindow. Ento teremos:
Captulo 13
206
Grficos
Habilitando a DataWindow. Clique em Select Control e selecione Create CommandButton control. Clique na janela para incluir o objeto CommandButton. No template propriedade na propriedade Text digite Retrieve. D um duplo clique no objeto CommandButton. Selecione o evento Clicked e digite: // Desconecta o DBMS Disconnect; // Aplica os parmetros do DBMS de teste a transao SQLCA sqlca.dbms ="ODBC" sqlca.dbparm ="ConnectString='DSN=EAS Demo DB V9;UID=dba;PWD=sql'" // Conecta com o banco connect; //Testa a conexo If sqlca.sqlcode < 0 Then MessageBox ("Erro: Impossvel conectar com o banco de dados", sqlca.sqlerrtext, Exclamation!) HALT End If dw_1.SetTransObject(SQLCA) dw_1.Retrieve()
Captulo 13
207
Grficos
Clique em Select Control e selecione Create CommandButton control. Clique na janela para incluir o objeto CommandButton. No template propriedade na propriedade Text digite Fechar. D um duplo clique no objeto CommandButton selecione o evento Clicked e digite: // Desconecta do DBMS Disconnect; // Apaga todos os dados de um controle DataWindow dw_1.Reset() Clique em Ento teremos : Save. Salve o modelo do grfico.
Captulo 13
208
Grficos
Em tempo de execuo podemos alterar o modelo do grfico. para tal usamos notao de pontos. Clique em DropDownListBox. Clique na janela para incluir o objeto DropDownListBox. No template propriedades direita na propriedade Text digite; 4 Bar3Dobj. Marque nas propriedades 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 grficos disponveis no PowerBuilder 9.0. Salve sua aplicao. Essa uma forma de nunca perdermos um trabalho, a cada etapa ou de tempos em tempos no nosso trabalho, salve sua aplicao.
Captulo 13
209
Grficos
Clique em HtrackBar e clique na janela para incluir o objeto HtrackBar. Inclua este objeto na parte superior do controle DataWindow. Repita a operao para a incluso de mais um objeto HtrackBar. Posicione esse objeto na parte inferior do controle DataWindow. Clique em VtrackBar e clique na janela para incluir o objeto VtrackBar. Inclua este objeto na lateral direita do controle DataWindow. Ento teremos: Agora para que os controles tenham sua funcionalidade iremos escrever atravs de notao de pontos, sua programao.
OBS : Inclua quatro StaticText. No primeiro escreva; Elevao, no segundo; Perspectiva no terceiro; Rotao e no quarto; Tipo do Grfico e distribua conforme a figura acima.
Captulo 13
210
Grficos
Selecione com um duplo clique o objeto HtrackBar definido como htb_1 que ser utilizado para Elevao. Selecione o evento Moved esse evento sempre ser disparado se a barra do controle HtrackBar for movimentada. Escreva o cdigo PowerScript : dw_1.Object.gr_1.Elevation = This.Position Selecione com um duplo clique o segundo objeto HTrackBar definido como htb_2 que ser utilizado para Rotao. Selecione o evento Moved esse evento sempre ser disparado se a barra do controle HTrackBar for movimentada. Escreva o cdigo PowerScript : dw_1.Object.gr_1.Rotation=This.Position Selecione com um duplo clique o terceiro objeto VTrackBar definido como vtb_1 que ser utilizado para Perspectiva. Selecione o evento Moved ess evento sempre ser disparado se a barra do controle VTrackBar for movimentada. Escreva o cdigo PowerScript : dw_1.Object.gr_1.Perspective = This.Position Selecione com um duplo clique a DropDownListBox definido como ddlb_1. Selecione o evento selectionchanged ess evento sempre ser disparado quando o contedo da ddlb for alterado. Como resultado desta alterao a varivel index ser preenchida com a posio fsica da seleo formando assim um indexador. Como o texto na tabela segue uma numerao uniforme podemos utilizar o contedo da varivel index como um parmetro para seleo. Escreva o cdigo PowerScript: integer l_index l_index = index dw_1.Object.gr_1.GraphType = l_index
Captulo 13
211
Grficos
Salve a aplicao e execute. Ento teremos:
Captulo 13
212
Grficos
Para que as barras HtrackBar e VtrackBar tenham funcionalidade escolha na DropDownListBox um tipo de grfico com padro 3D. Tipo : Bar3D Agora movimente as barras e veja os efeitos que se pode proporcionar.
Captulo 14
XML Conceito Exportando DataWindow (DataWindow Export) Importando um padro XML para a DataWindow
Captulo 14
213
Captulo 14
214
XML
Ligao: a XML possui uma maneira de ligar que inclui todas as formas de ligao. No s isso; ela liga de maneira que a HTML no pode. A HTML pode fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz isso, mas tambm pode ligar dois ou mais pontos a uma idia. Existem ainda links gmeos que ligam todas as idias dentro de uma mesma. Qualquer link entre uma idia pode ser manipulado de uma nica maneira; Portabilidade: a XML de fcil portabilidade. A razo da sua existncia fora e portabilidade. A SGML tem fora. A HTML tem portabilidade. A XML tm ambas. A XML pode ser navegada com ou sem o seu DTD (Document Type Definition, ou Definio de Tipo de Documento - as normas que definem como as tags so estruturas nos documentos XML), tornando o download mais rpido. Tudo que um navegador precisa para ver XML ter a noo que ela prpria e a folha de estilos, controlam a aparncia. Se uma validao restrita necessria, o seu DTD pode acompanh-lo e fornecer detalhes exatos da sua marcao. Como a XML definida A XML definida pelas seguintes especificaes: Extensible Markup Language (XML) 1.0: define a sintaxe da XML; XML Pointer Language (XPointer) e XML Linking Language (XLink): define um padro para representar os links entre os recursos. Alm dos links simples, como a tag <A> da HTML, a XML possui mecanismos para ligar recursos mltiplos e diferentes. A XPointer descreve como enderear um recurso, e a XLink descreve como associar dois ou mais recursos; Extensible Style Language (XSL): define a linguagem de folhas de estilos padro para a XML.
Captulo 14
215
XML
Uma DTD (Document Type Definition) pode ser definida como um conjunto de regras que define quais tipos de dados e entidades far parte de um documento XML. Estas regras sero utilizadas para que o analisador sinttico verifique se o documento est correto ou no. A DTD pode estar definida dentro do prprio arquivo XML ou em um arquivo parte com extenso .dtd, que deve ser includo no cdigo XML. A DTD pode ser usada para padronizar um documento XML e torn-lo bastante coerente com as necessidades do desenvolvedor, porm sua criao no obrigatria. DTDs Externas: Quando temos um documento XML muito extenso, melhor utilizarmos um DTD externo, o que traz boa qualidade com super organizao dos dados. DTDs Internas: A DTD interna melhor trabalharmos quando usamos pequenos documentos XML. Como criar uma DTD Para criarmos um arquivo DTD devemos analisar vrios aspectos como por exemplo: Tipos de dados que o arquivo XML ir conter etc. Criando uma DTD Interna. Abaixo esta uma pequena demonstrao de dados de uma DTD interna. <?xml version='1.0' encoding="iso-8859-1" ?> <! DOCTYPE NOTA [ <! ELEMENT NOTA (PARA,DE,ASSUNTO) <! ELEMENT PARA (#PCDATA)> <! ELEMENT DE (#PCDATA)> <! ELEMENT ASSUNTO (#PCDATA)> <! ENTITY NOME "JOS DA SILVA"> ]> <NOTA> <PARA>PEDRO XAVIER</PARA> <DE>&NOME;</DE> <ASSUNTO>HORARIO DA REUNIO</ASSUNTO> </NOTA>
Captulo 14
216
XML
Onde : <!DOCTYPE NOTA [ Esta linha diz que tudo o que estiver entre os colchetes ser o DTD de um documento cujo elemento raiz <NOTA>. Como mencionado anteriormente, o elemento raiz contm todos os outros. <! ELEMENT NOTA (PARA,DE,ASSUNTO) Isto define a tag <NOTA>. Os parnteses dizem que estes dois outros conjuntos de tags devem aparecer dentro das tags <NOTA>, naquela ordem especfica. <! ELEMENT PARA (#PCDATA)> #PCDATA, significa Parsed Character Data ou dados de caractere analisados (isto , qualquer coisa que no seja dados binrios, como uma imagem). Neste caso, o #PCDATA ser texto por exemplo, "PEDRO". Criando uma DTD Externa. O Cdigo desta demonstrao ser o mesmo do que da DTD interna acima somente iremos dividir o DTD e XML em dois arquivos com as extenses .xml e .dtd. Abaixo o arquivo .xml <?xml version='1.0' encoding="iso-8859-1" ?> <! DOCTYPE NOTA SYSTEM "dtdexterna.dtd"> <NOTA> <PARA>PEDRO</PARA> <DE>&NOME;</DE> <ASSUNTO>CARTA DO USUARIO</ASSUNTO> </NOTA> Note que no arquivo .xml, adicionamos uma linha para chamar o arquivo .dtd
Captulo 14
217
XML
Agora abaixo o arquivo .dtd <?xml version='1.0' encoding="iso-8859-1" ?> <! ELEMENT NOTA (PARA,DE,ASSUNTO) <! ELEMENT PARA (#PCDATA)> <! ELEMENT DE (#PCDATA)> <! ELEMENT ASSUNTO (#PCDATA)> <! ENTITY NOME "JOSE DA SILVA">
Validao
Existem duas categorias de documentos XML: bem formatados e vlidos. Documentos Bem Formatados Um documento somente pode ser bem formatado se ele obedece sintaxe da XML. Um documento que inclui seqncias de caracteres de marcao que no podem ser analisadas ou so invlidas no podem ser bem formatados. Alm disso, o documento deve atender a todas as seguintes condies (subentendendo-se que algumas destas condies podem exigir experincia com SGML): x A instncia do documento deve estar conforme a gramtica dos documentos XML. Em particular, algumas construes de marcaes (referncias a entidades parmetro, por exemplo) so somente permitidas em locais especficos. O documento no bem formatado se tais ocorrerem em outros locais, ainda que o documento esteja bem formatado nos outros casos. O texto de substituio para todas as entidades parmetro referenciadas dentro de uma declarao de marcao consiste em zero ou mais declaraes de marcaes completas. (Nenhuma entidade usada no documento pode consistir de somente uma parte de uma declarao de marcao.) Nenhum atributo pode aparecer mais do que uma vez na mesma marca de incio. Valores de atributos cadeias de caracteres no podem conter referncias a entidades externas. Marcas no-vazias devem ser apropriadamente aninhadas.
Captulo 14
218
XML
x x
Entidades parmetro devem ser declaradas antes de serem usadas. Todas as entidades devem ser declaradas, exceto as seguintes: amp, lt, gt, apos e quot. Uma entidade binria no pode ser referenciada no fluxo do contedo; ela pode ser usada somente em um atributo declarado como ENTITY ou ENTITIES.
Documentos Um documento bem formatado vlido somente se ele contm uma declarao de tipo de documento e se o documento obedece s restries da declarao. Documentos com DTD Definio Na XML as regras que definem um documento so ditadas por DTDs (Document Type Definitions), as quais ajudam a validar os dados quando a aplicao que os recebe no possui internamente uma descrio do dado que est recebendo. Mas os DTDs so opcionais e os dados enviados com um DTD so conhecidos como dados XML vlidos. Um analisador de documentos pode checar os dados que chegam analisando as regras contidas no DTD para ter certeza de que o dado foi estruturado corretamente. Os dados enviados sem DTD so conhecidos como dados bem formatados. Nesse caso, o documento pode ser usado para implicitamente se autodescrever. Com os dados XML vlidos e com os bem-formatados, o documento XML se torna autodescritivo porque as tags do idia de contedo e esto misturadas com os dados. Devido ao formato do documento ser aberto e flexvel, ele pode ser usado em qualquer lugar onde a troca ou transferncia de informao necessria. Desta forma, podemos usar o XML para descrever informaes sobre pginas HTML, ou descrever dados contidos em objetos ou regras de negcios, ou transaes eletrnicas comerciais.
Captulo 14
219
XML
O XML pode ser inserido dentro de documentos HTML, o que foi definido pelo W3C como "data-islands". Esse recurso permite que um documento HTML possa ter mltiplas formas de visualizao quando se faz uso da informao de semntica contida no XML. O que define formalmente quais elementos e quais combinaes possveis permitida dentro de um documento XML o "schema", ou seja, esquema. Existem novos esquemas propostos ao W3C, dentre eles esto o DCD (Document Content Description), que provm mesma funcionalidade dos DTDs, e que, pelo fato de linguagens esquema serem extensveis, os desenvolvedores podem aument-los com informaes adicionais, tais como regras de apresentao, tornando essas novas linguagens esquema mais poderosas que os DTDs. Resumo As DTDs so formas de se descrever classes de documentos XML (como gramticas para outras linguagens). Problemas com DTDs: x x se muito simples no tem poder expressivo de descrio. se for muito complexa ter uma sintaxe horrvel.
A soluo para as DTDs: usar linguagens de esquemas (schema languages) tais como DSD,XML Schema, etc Os documentos, para serem validados, tm que ser bem formatados e tambm estarem em conformidade com a DTD dada.
Captulo 14
220
XML
XML case sensitive. XML case sensitive <MinhaTag> diferente de </ Minhatag>, pertence a dois elementos diferentes. Nulo ou Branco. Colunas com branco ou nulo devem ser representadas, a XML no interpreta estes tipos de dados, se uma coluna no contm dados deve ser representada por; <dado></dado> ou <dado/>, onde a tag dado no disponibiliza um contedo. Aps conceituarmos a XML, aplicaremos este conceito ao PowerBuilder 9.0, utilizando as novas propriedades de importao e exportao de dados de uma DataWindow para XML. As linhas de uma DataWindow podem ser exportadas e importadas utilizando eXtensible Markup Language (XML), neste capitulo vamos abordar a exportao e importao de dados utilizando XML. O exemplo abaixo, um XML simplificado que contm a declarao do documento XML, seguida pela TAG que descreve o elemento denominado raiz, <d_dept_list>, a definio da linha <d_dept_list_row>, a definio da coluna <dept_id>, <dept_name> e <dept_head_id>, os dados e a tag de finalizao de cada coluna </dept_id>, </dept_name> e </dept_head_id>. Finalizando o bloco </d_dept_list_row>. Teremos : <?xml version="1.0"> <d_dept_list> <d_dept_list_row> <dept_id>100</dept_id> <dept_name>R &D</dept_name> <dept_head_id>501</dept_head_id> </d_dept_list_row> ... </d_dept_list>
Captulo 14
221
XML
Modelo XML DOM em rvore. <?xml version=1.0 encoding=UTF-8?> <!DOCTYPE menu SYSTEM menu.dtd> <menu> <refeio nome=Caf da manh> <descrio> Ovos mexidos </descrio> <descrio> Queijo quente </descrio> <bebidas> Suco de laranja </bebidas> </refeio> <refeio nome=lanche> <descrio> Frios fatiados </descrio> </refeio> </menu>
Captulo 14
222
XML
A partir da verso 9.0 do PowerBuilder, foram incorporadas novas caractersticas para XML, como exportao e importao de DataWindow / DataStores. A essas novas caractersticas se denominou Servios de XML Nativos e XML Parser interface. Exportando DataWindow (DataWindow Export) DataWindow Export, um componente novo da DataWindow, possibilita exportar linhas da DataWindow em uma estrutura de dados padro XML. O modelo de exportao de uma DataWindow mapeia os elementos da DataWindow ao gerar o XML correspondente. Os seguintes objetos de uma DataWindow podem ser usados em modelos de exportao. Column Computed Column Text Control Computed Field Nested Report
Um template de exportao uma parte da definio da DataWindow. Uma DataWindow pode conter vrios template de exportao. So permitidos template em formato PBL e SRD de uma DataWindow. A propriedade DataWindow , Export.XML.UseTemplate, usada para especificar um objeto (template) para uso em uma determinada operao de exportao. Esta propriedade pode ser fixada em runtime e designtime.
Captulo 14
223
XML
Exemplo de um template de exportao XML. export.xml( usetemplate="t_lista01" metadatatype=2 savemetadata=1 template=( comment="Lista de funcionrios sada DTD" name="t_lista01" publicid="c:\dwxml\lista01.dtd" xml="<?xml version=~"1.0~" encoding=~"UTF-8~" standalone=~"no~"?> <!DOCTYPE Lista> <Orders><!-- ....... --></Orders>" )
)
Captulo 14
224
XML
Na painter DataWindow do PowerBuilder 9.0 foi includo um novo template, onde se permite; definir, editar e exportar a DataWindow em um padro XML. Este template, visualizado em modo default do layout do painter DataWindow, se localiza na parte inferior esquerda e se intitula Export / Import Template XML . A viso deste novo template no painter DataWindow caracteriza-se por um controle TreeView representando a estrutura XML. Nesta estrutura fica explicito; as Entidades, os Marcadores e os Dados. Diferentes cones e fontes diferem os tipos de dados e seus elementos. Apenas um modelo de exportao pode ser editado. cones usados no template de Export/Import.
cone Descrio Declarao de XML ou declarao de tipo de documento. Raiz ou elemento descendente. Elemento do Group header. Referncia da coluna da DataWindow. Referncia de controle Static text. Referncia Computed field. Referncia de expresso DataWindow. Texto. Comentrio Instruo de processamento Seo CDATA Nested report
Captulo 14
225
XML
Explorando o template Export / Import Template - XML Clique com o boto direito do mouse em qualquer rea de fundo do template para ter acesso ao menu popup de edio do template. Item New New Default Descrio 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 comentrios "opcional". Salva o modelo de XML atual como uma cpia debaixo de um novo nome, ser aberta uma caixa de dialogo solicitando um nome e comentrios "opcional". Apaga o modelo de XML atual. Uma caixa de dialogo solicitando confirmao ser exibida antes desta ao, permitindo o usurio cancelar ou no.
Open Save
Save As
Delete
A seleo no menu popup do item Delete apaga o template atual, para apagar itens do template, simplesmente o marque e pressione a tecla Del.
Captulo 14
226
XML
Pressionando o boto direito do mouse em cima de qualquer elemento do template, disponibilizar o menu popup correspondente, por exemplo : Clicando-se na Declarao de XML ou declarao de tipo de documento, teremos : Item Edit Descrio Exibe uma caixa de dilogo para edio da verso da XML, disponibiliza codificar se haver remarcaes externas no documento standalone = Yes, caso contrrio standalone = No (default) Apaga a declarao de XML
Delete
Pressionando o boto direito do mouse em cima da Referncia da coluna da DataWindow disponibilizar o menu popup com as opes : Item Edit Insert Before Delete Descrio Exiba caixa de dilogo de edio do nome do DOCTYPE e seu identificador. abre o menu popup tipo cascata listando todos os modos disponveis para construo do contexto da XML. Apaga a declarao contexto do Documento
O menu popup para uma Raiz ou elemento descendente, exibe : Item Edit Descrio Permite adicionar um rtulo raiz ou elemento descendente. Se a raiz ou elemento descendente tem um ou mais atributos, selecione Edit para habilitar a caixa de dilogo para editar o nome da raiz ou elemento descendente ou acrescentar um atributo. Abre a caixa de dilogo para editar o nome da raiz ou elemento descendente permitindo a definio de um atributo. abre o menu popup tipo cascata listando todos os modos disponveis que podem ser adicionados a uma raiz ou elemento descendente de um XML.
Captulo 14
227
XML
Insert Before abre o menu popup tipo cascata listando todos os modos disponveis que podem ser adicionados antes da definio de uma raiz ou elemento descendente. Abre uma caixa de dilogo para editar o nome da raiz do documento gerado no esquema da XML
Schema Option
Descrio : Seo de detalhe : Esta seo separada graficamente por uma barra cinza separando a seo de cabealho da seo de detalhe. Esta marcao poder ser alterada pelo desenvolvedor atravs da opo Starts Detail no menu popup dos elementos da rvore de dados. S um elemento pode ser marcado como elemento de Inicio de detalhe (Starts Detail).
Captulo 14
228
XML
Exportando uma DataWindow. Pode-se exportar uma DataWindow utilizando a mesma funo utilizada para exportar para HTML ou PSR, a funo SaveAs ; dw_1.SaveAs( "c:\minha_aplicao\d_lista01.xml", XML!, TRUE ) Assim como notao de pontos; dw_sua_datawindow.object.datawindow.data.xml Ou a funo Describe; dw_sua_datawindow.Describe( "datawindow.data.xml" ) O PowerBuilder 9.0 disponibiliza em suas novas propriedades para exportao XML funes que permitem ajustes de seleo de modos, tanto em Design Time quanto em RunTime, So elas: Sintaxe : Export.XML.UseTemplate Utilizada para informar o modelo que ser usado para exportao. Esse modelo dever estar criado. Onde: valor = Uma string que especifica o nome do template xml de exportao previamente criado no painter do objeto DataWindow. PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.UseTemplate = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.UseTemplate {= valor }" )
Captulo 14
229
XML
Sintaxe: Export.XML.MetaDataType - usado para especificar que metadato ser associado ao XML gerado na exportao da DataWindow. Essa propriedade pode ser utilizada em DesignTime ou em RunTime. valor = Uma string que especifica um valor para Onde: Export.XML.MetaDataType, dado descrito ou codificado.(veja a tabela abaixo para os valores possveis para a utilizao da sintaxe de exportao). dw_sua_datawindow.Object.DataWindow.Export.XML.MetaDataType = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.MetaDataType {= valor}" ) Sintaxe : Export.XML.SaveMetaData - usado para especificar o metadado que ser gerado em tempo de execuo (RunTime) ou em tempo de desenho (Design Time). Onde valor = Uma string que especifica um valor para Export.XML. SaveMetaData, dado descrito ou codificado. PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.SaveMetaData = " valor " Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.SaveMetaData {= valor}" )
Captulo 14
230
XML
Sintaxe : Export.XML.HeadGroups - usado para especificar como sero geradas as linhas de cabealho do XML, em tempo de desenho (DisignTime), selecione na tabela de propriedades (Data Export) o item Interate Header for Group, aplicando-se expresses condicionais. Em tempo de execuo (RunTime) usa-se a sintaxe : Onde: valor = Pode assumir, Yes, No, TRUE, FALSE, O ou 1 dw_sua_datawindow.Object.DataWindow.Export.XML.HeadGroups = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.HeadGroups {= valor}" ) Sintaxe : Export.XML.IncludeWhiteSpace - usada para especificar se espao em branco deve ser preservado no XML gerado. Essa propriedade pode ser selecionada em Tempo de desenho (DesignTime) selecionando na tabela de propriedades (Data Export) o item Include WhiteSpace aplicandose expresses condicionais. Ou em Tempo de execuo (RunTime) usa-se a sintaxe : Onde: valor = Pode assumir, Yes, No, TRUE, FALSE, O ou 1 PowerScript; dw_sua_datawindow.Object.DataWindow.Export.XML.IncludeWhiteSp ace = "valor" Modify; dw_sua_datawindow.Modify( "DataWindow.Export.XML.IncludeWhiteSpace {= valor}" )
Captulo 14
231
XML
Os valores possveis para a utilizao da sintaxe de exportao so : Valor descrito XMLNone! XMLSchema! XMLDTD! Valor numrico 0 1 2 Descrio O esquema do XML ou DTD, no sero gerados na exportao do documento XML . O esquema do XML ser gerado junto com a produo documento de XML. DTD ser gerado junto com a produo documento de XML. O metadato ser gerado na seo de DOCTYPE no momento da gerao do XML. O metadado ser salvo como um arquivo externo com o mesmo nome do documento de XML, com a extenso ". dtd" (para XMLDTD! ). A produo do documento XML incluir um DOCTYPE se referenciando para o arquivo de metadata.
MetaDataInternal! 0 MetaDataExternal! 1
Captulo 14
232
XML
Viso da propriedade de exportao do template DataWindow XML.
Captulo 14
233
XML
Exemplo 1. Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 1: : : : : : t_lista01 XMLNone! MetaDataInternal! Marcado No marcado
Captulo 14
234
XML
Exemplo 2: Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 2: : : : : : t_lista01 XMLDTD! MetaDataInternal! Marcado No marcado
Captulo 14
235
XML
Exemplo 3: Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 3: Contedo do arquivo exportado exemplo3.xml : : : : : t_lista01 XMLSchema! MetaDataExternal! Marcado No marcado
Captulo 14
236
XML
Contedo do arquivo exportado exemplo3.xsd
Captulo 14
237
XML
Exemplo 4: Template Meta Data Type Save Meta Data Type Include White Space Head Group Resultado exemplo 4: : : : : : t_lista01 XMLSchema! MetaDataExternal! Marcado No marcado
Captulo 14
238
XML
Contedo do arquivo exportado exemplo4.xsd
Captulo 14
239
XML
Importando um padro XML para a DataWindow. Voc pode importar o contedo de um documento XML para uma DataWindow ou DataStore usando tcnicas semelhantes usadas para importar outros formatos de dados estruturados. x x x x Para isto o template XML dever existir. modelo do template deve ser bem formatado. Composite, Grfico, objetos OLE DataWindow Composite, Grfico e OLE no podem ser importados usando um template. Voc tem que usar o formato default.
As declaraes abaixo so equivalentes. Ambas importaro os contedos do arquivo padro XML de nome exemplo1.xml. dw_1.ImportFile(exemplo1.xml) dw_1.ImportFile(XML!, exemplo1)
Captulo 14
240
XML
Quando voc importa dados de um arquivo XML com ou sem um modelo, voc pode criar um arquivo de log para verificar se o processo de importao executou a contento. O contedo deste arquivo mostra o que foi importado; como o modelo, os elementos e as linhas. Para criar esta log, basta selecionar a opo do template de importao Trace XML Import e em Trace File Name definir o caminho e o nome do arquivo que receber as informaes. Tipo: C:\LOGS\TRACE01.LOG. Modelo de um arquivo Tracer log.
Captulo 14
241
XML
Nesse captulo, mudou-se a forma de apresentao, devido a aparente complexidade desta nova funcionalidade, a de Exportao e Importao de dados em padro XML do PowerBuilder 9.0, mas como foi visto, o PowerBuilder 9.0, minimiza em muito desenvolvimento desta tarefa. Aplicaes clientes bem como aplicaes com componentes de servidor ganharam caractersticas mais robustas que permitem uma melhor inteligibilidade com outras aplicaes e componentes. Para uma melhor fixao dos conceitos at agora vistos, realizaremos um pequeno modelo demonstrando os conceitos vistos. Em nossa aplicao exemplo denominada exemplo1. Edite a DataWindow d_lista01. Ento teremos:
Captulo 14
242
XML
No template Export / Import Template - XML clique na rea em branco com o boto direito do mouse e selecione no menu popup que surgir, a opo Save.
Na caixa de dialogo que se abrir. Digite um nome para este template XML. Digite t_lista01 clique em Ok. O template XML denominado t_lista01 foi criado. Agora edite o objeto menu denominado m_menu02. Clique com o boto direito do mouse no item m_menu02 do template de edio do menu e selecione no menu popup que se abrir Insert Submenu Item. No novo item que se disponibilizar. Digite XML e tecle Enter. Selecione com um duplo clique o item XML disponibilizando assim o template de eventos para este item do m_menu02. Selecione o evento Clicked.
Captulo 14
243
XML
Digite no evento Clicked: OpenSheet(w_004,w_000, 2, Layered! ) Clique em New e selecione PB Object e Window. No painter de edio da Window no template "Propriedades" direita. Selecione Other. Na propriedade Width escreva 3666 e em Height escreva 2284. Clique em Select Control e selecione o objeto DataWindow. Clique na janela que acabou de criar e inclua o objeto DataWindow. No template propriedade do objeto DataWindow que acabou de incluir defina: Name DataObject Title : dw_1 : d_lista01 : Janela 04 XML
Captulo 14
244
XML
Selecione a aba Other e defina:
Salve a nova janela como w_004. Volte ao painter de edio do menu e salve o menu m_menu02. At este ponto; criamos um novo item para o menu(m_menu02) e uma nova janela com um novo objeto DataWindow associado ao controle DataWindow d_lista01. Agora vamos montar a Exportao e a Importao dos dados da DataWindow para o padro XML. Clique em Select Control e selecione o objeto CommandButton. Clique na janela que acabou de criar e inclua o objeto CommandButton. Com o mouse em cima do boto clique com o boto direito do mouse e no menu popup que aparecer selecione Duplicate. Repita esta operao 3 vezes. Assim teremos 4 Objetos CommandButton na janela w_004.
Captulo 14
245
XML
Com um duplo clique no primeiro boto selecione o evento Clicked. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "No" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes" dw_1.SaveAs( "c:\exemplo1.xml", XML!, TRUE ) Com um duplo clique no segundo boto selecione o evento Clicked. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "No" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes" dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'") dw_1.Modify("DataWindow.Export.XML.MetaDataType = 2") dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 2") dw_1.SaveAs( "c:\exemplo2.xml", XML!, FALSE )
Captulo 14
246
XML
Com um duplo clique no terceiro boto selecione o evento Clicked. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "No" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes" dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'") dw_1.Modify("DataWindow.Export.XML.MetaDataType = 1") dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 1") dw_1.SaveAs( "c:\exemplo3.xml", XML!, FALSE ) Com um duplo clique no quarto boto selecione o evento Clicked. Digite : dw_1.Object.DataWindow.Export.XML.HeadGroups = "Yes" dw_1.Object.DataWindow.Export.XML.IncludeWhitespace = "Yes" dw_1.Modify("DataWindow.Export.XML.UseTemplate = 't_schema'") dw_1.Modify("DataWindow.Export.XML.MetaDataType = 1") dw_1.Modify("DataWindow.Export.XML.SaveMetaData = 1") dw_1.Modify("Export.XML.SaveMetaData = MetaDataExternal!") dw_1.SaveAs( "c:\exemplo4.xml", XML!, FALSE )
Captulo 14
247
XML
Clique na janela w_004 e selecione o evento OPEN. Digite : // Desconecta o DBMS Disconnect; // Aplica os parametros do DBMS de teste transao SQLCA sqlca.dbms ="ODBC" sqlca.dbparm ="ConnectString='DSN=EASDemoDB V9;UID=dba;PWD=sql'" // Conecta com o banco connect; //Testa a conexo If sqlca.sqlcode < 0 Then MessageBox ("Erro: Impossivel conectar com o banco de dados", sqlca.sqlerrtext, Exclamation!) HALT End If dw_1.SetTransObject(SQLCA) dw_1.Retrieve()
Captulo 14
248
XML
Salve a janela w_004. Teremos:
Execute a aplicao. Clique nos botes para gerar os arquivos. Edite os arquivos gerados e analise.
Captulo 15
Preparando sua aplicao final Criando o objeto Project Criando o arquivo executvel
Captulo 15
249
Captulo 15
250
Prompt for Overwrite Abre uma tela de dialogo perguntando se regrava o arquivo se este j existir. New Visual Style Controls Ativa o estilo de exibio para o modelo Windows XP. S ter funcionalidade se voc utiliza o MS Windows XP.
Captulo 15
251
Para o nosso exemplo marque as opes conforme a figura acima. Clique em Next. Na caixa de dialogo Generate Machine Code voc poder escolher que tipo de compilao deseja realizar. Para o nossa exemplo selecione a primeira opo conforme a figura abaixo.
Clique em Next.
Captulo 15
252
Captulo 15
253
Captulo 15
254
O seu objeto Project j esta configurado e pronto para compilar a sua aplicao. Clique em Deploy para compilar.
Note que ao final, foram gerados os arquivos exemplo1.exe e o arquivo exemplo1.pbd. Faa um teste gerando seu executvel em cdigo de mquina. Assinale Machine Code e clique em Deploy. Compare os arquivos.
Captulo 15
255
Captulo 16
Criando uma aplicao WEB Criando um stio WEB com PowerDynamo
Captulo 16
256
Embora voc possa executar o PowerDynamo em baixo do EAServer esse e-book estar se referenciando ao PowerDynamo Personal Web Server. Um stio Web com PowerDynamo so arquivos ou repositrios de banco de dados onde voc pode; criar, armazenar e administrar o acesso de documentos HTML e de dados. O PowerDynamo permite embutir instrues de server-side em uma pgina Web. Possibilitando o processamento destas instrues quando uma chamada cliente efetuada na pgina. O PowerDynamo um servidor de aplicao que gera contedo de Web dinmico. Possibilita recuperar informaes de seus bancos de dados retornando os resultados para o servidor Web. O PowerDynamo tambm disponibiliza um servidor da Web Pessoal (PowerDynamo Personal Web Server) para uso durante o desenvolvimento. Para se desenvolver em PowerDynamo deve-se como em todo servidor de aplicao definir suas configuraes. O PowerBuilder 9.0 disponibiliza um Wizard bem simples para esse processo onde automaticamente se poder mapear todos os objetos utilizados em sua aplicao WEB.
Captulo 16
257
Captulo 16
258
Captulo 16
259
Captulo 16
260
Clique em Next.
Captulo 16
261
Clique em Next.
Captulo 16
262
Clique em Next.
Captulo 16
263
Clique em Next.
Captulo 16
264
Captulo 16
265
Captulo 16
266
Captulo 16
267
Captulo 16
268
Aps a criao do ambiente agora podemos criar nossa primeira pgina no stio ex_1.
Captulo 17
Criando a primeira pgina Web Utilizando 4GL Web/JSP Page wizard
Captulo 17
269
Captulo 17
270
Clique em Next.
Captulo 17
271
Captulo 17
272
Clique em Next.
Captulo 17
273
Captulo 17
274
Clique em Next.
Captulo 17
275
Clique em Next.
Captulo 17
276
Captulo 17
277
Captulo 17
278
Nesse ponto j estamos com a primeira pgina html criada atravs do 4GL Web / JSP Page para o ambiente PowerDynamo ex_1. O PowerBuilder 9.0 ainda disponibiliza o painter de edio e visualizao html possibilitando a manuteno e melhoramento da pgina html gerada.
Captulo 17
279
Alguns objetos do PowerBuilder esto disponveis para incluso em seu projeto Web. No entraremos nestes detalhes considerados avanados. Alguns desses controles precisam de configuraes mais detalhadas para o EAServer. O que no o propsito deste livro. Descrevendo a barra de ferramenta PainterBar3.
Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir Inserir
linha Horizontal fim de linha(Line Break) tabela figura HiperLink Ancora Caixa de marcao boto de rdio campo de linha simples rea de texto ListBox
boto boto com imagem texto esttico DataWindow objeto Applet plug-in
Aps estar familiarizado com a barra de ferramenta procederemos familiarizao do painter de edio. Para isto modificaremos a pgina Bem-vindo.htm.
Captulo 17
280
Captulo 17
281
Clique em Ok para aceitar a seleo dos dados e permitir ao PowerBuilder 9.0 alterar a pgina Bem-vindo.htm.
Captulo 17
282
Captulo 17
283
Captulo 17
284
Captulo 17
285
Melhorando : Clique na imagem como boto direito do mouse e selecione Position e Use Absolute Positioning. Mova a imagem conforme sua preferncia.
Captulo 17
286
Captulo 17
287
Captulo 17
288
Marque o texto Put your data here e troque o texto por : Clique para entrar. Clique em Save para guardar as alteraes. Ento teremos:
Captulo 17
289
Captulo 17
290
Para executar a sua aplicao voc precisa estar com o PowerDynamo Personal Web Server ativo. Clique em Iniciar e procure no seu diretrio do PowerBuilder 9.0 a chamada para o atalho PowerDynamo 3.6 e selecione Personal Web Server. Quando o Personal Web Server estiver ativo o cone na Taskbar do MS Windows. Ento selecione no menu principal Run e Select and Run. Selecione ex_1. E clique em OK. ser visualizado
Captulo 17
291
Captulo 17
292
Finalizando
Seu projeto agora j possui uma ligao Web. O PowerBuilder 9.0 pode disponibilizar dados via DataWindow direto pelo browser, possibilitando uma interao ambiente cliente/servidor e Web, mas para que isto seja possvel necessria utilizao EAServer. Este livro, conforme nos referenciamos no inicio uma literatura bsica, cujo objetivo possibilitar aos iniciantes ter uma referncia, um ponto de partida. Para cada vez mais desbravar as possibilidades oferecidas por esta ferramenta de desenvolvimento. O Sybase PowerBuilder 9.0. Em breve e com o pensamento positivo de todos, estarei escrevendo um modulo sobre as tcnicas avanadas do Sybase PowerBuilder 9.0. At Breve. Paz e prosperidade a todos.
Guia de Referncia
Nomenclaturas
Nomenclatura dos Tipos de Objetos Nome do Objeto Objeto de DataWindow Funo (global) Menu Estrutura Consulta Objeto do usurio Janela Conveno d_ f_ m_ s_ q_ 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 Conveno 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_opo_de_saida hsb_vermelho ln_linhacurta lb_agentes mle_comentrios oval_equipe p_empregado pb_atualizar rb_construo r_ret rr_tela sle_nome_do_cliente st_prompt_do_cliente uo_pedido vsb_percentual_feito
293
Nomenclatura por Espao Escopo da Varivel Local Global Instncia Compartilhada Argumento Conveno lx_ ou nada (o prefixo opcional nas variveis 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 usurio (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) Conveno w m dw str uo i ui l ul b s db r dc d t dt ou st (TtimeStamp)
294
Adquirido por : Fabrcio Moreira da Silva
Exemplos de Nomenclaturas de Variveis Nome da Varivel sstr_pontos_de_dados [] iul_id_do_cliente ss_nome ii_contagem contagem_de_loops li_contagem_de_loops lw_inst_de_janela as_erro Descrio do Tipo de Dados Array de Shared Structure (estrutura compartilhada) Instncia de um Unsigned Long (inteiro longo sem sinal) Shared String (string compartilhada) Instncia de um inteiro Varivel Local (prefixo no obrigatrio) Inteiro Local (prefixo opcional acrescentado) Instncia Local de uma varivel de janela String de argumento (passado|)
Nomenclatura das Funes de Objetos. Tipo de Objeto da Funo Funo Global Funo de Menu Funo de Objeto do Usurio Funo de Janela Conveno f_ mf_ uf_ wf_ Exemplo f_erro_sql mf_sair uf_pedido wf_atualizar
295
Guia de Referncia
Atributos e Eventos
DwMessageTitle
String
MicroHelpDefault ToolbarText
String Boolean
ToolbarFrameTitle String
ToolbarSheefTitle
String
Eventos de Aplicaes Evento Close Idle Descrio Executado no fechamento da execuo Executado quando ocorre o nmero especificado de segundos sem qualquer atividade durante a execuo da aplicao Executado na abertura da aplicao Executado durante um erro do sistema em qualquer local da aplicao
Open SystemError
296
BringToTop
Boolean
ColumnsPerPage
Integer
Controle []
ControlMenu
Icon
String
LinesPer|Page
Integer
297
Adquirido por : Fabrcio Moreira da Silva
Pointer
ToolbarAlignment
ToolbarHeight
ToolbarVisible
298
ToolbarX
ToolbarY
UnitsPercolumn
UnitsPerLine
299
Adquirido por : Fabrcio Moreira da Silva
WindowType X Y
Eventos de Janelas
Eventos Activate Clicked Close CloseQuery Deactivate DoubleClicked DragDrop DragEnter DragLeave DragWithin Hide HotLinkAlarm Key Mouse Down MouseMove Descrio A janela recebeu o foco O usurio deu clique na janela A janela esta sendo fechada A janela esta sendo fechada atravs da caixa de controle A janela esta perdendo o foco O usurio 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 aplicao servidora transmitiu novos dados (ou dados alterados) atravs de DDE Uma tecla foi pressionada (exceto alt) Um boto do mouse foi pressionado em uma rea vazia da janela O mouse esta sendo movimentado
300
Enabled
Boolean
301
Adquirido por : Fabrcio Moreira da Silva
ToolbarItemDownName
String
ToolbarItemName
String
ToolbarItemOrder ToolbaritemVisible
Integer Boolean
Visible
Boolean
302
Alignment
Enumerated
AutoHScroll
Boolean
AutoSkip
Boolean
AutoVScroll
Boolean
AllowEdit
Boolean
Automatic
Boolean
BackColor
Long
BeginX
Integer
303
Adquirido por : Fabrcio Moreira da Silva
304
Depth
Integer
305
Adquirido por : Fabrcio Moreira da Silva
FaceName
String
FiLLColor FillPatt5ern
Long Enumerated
FocusRectangle
Boolean
FontCharSet
Enumerated (CharSet)
FontFamily
Enumareted (Family!)
FontPitch
Enumerated (Pitch!)
GraphType Height
Enumerated Integer
306
HscrollBar
HsplitScrol
HtextAlign
Icon
Increment
LeftText
307
Adquirido por : Fabrcio Moreira da Silva
Legend
LegenDispAttr
LibraryName
LineColor
Integer
LinesPerPage
Integer
LineStyle
Enumerated (Style)
LineTrickness
Integer
LiveScroll
Boolean
Mask
String
308
MaxBox
MaxPosition
MicroHelpHeight MinBox
MinPosition
MinMax
MultiSelect
309
Adquirido por : Fabrcio Moreira da Silva
OverlapPerce Integer nt
Password
Boolean
Perspective
Integer
Resizable Rotation
Boolena Integer
310
Sorted
Boolean
Spacing Spin
Integer Boolean
StdHeight
Boolean
StdWicth
Boolean
Style TabOrder
Long Integer
TabStop []
Array de inteiros
311
Adquirido por : Fabrcio Moreira da Silva
ThreeState
Boolean
UnitsPerColu mn
Integer
312
UseCodeTable Boolean
VtextAlign
Enumerated
Weight
Integer
Width X Y
313
Adquirido por : Fabrcio Moreira da Silva
314
315
Adquirido por : Fabrcio Moreira da Silva
Guia de Referncia
Dados Enumerados
ArrangeType
Border
O tipo da borda.
BorderStyle
O estilo da borda.
Button
ConvertType
DragModes
De que maneira voc quer converter unidades ou pixels nas funes PixelsToUnit e UnitsToPixels. O modo Drag para um objeto.
DwBuffer
O buffer da DataWindow.
316
Adquirido por : Fabrcio Moreira da Silva
FileAcess FileLock
FileMode FillPatern
O modo File para leitura e gravao. O padro de preenchimento usado para preencher um desenho ou um objeto grfico.
FontCharSet
FontFamily
FontPitch
O pitch da fonte.
317
GrDataType GrGraphType
GrLegend Type
318
Adquirido por : Fabrcio Moreira da Silva
GrResetType
GrScaleType
GrScaleValue
319
GrTicType
HelpCommand
O tipo de comando da funo Showl Help. O cone de Message Box (Caixa de Mensagem).
Icon
320
Adquirido por : Fabrcio Moreira da Silva
Teclas <
Teclas = e +
321
322
Adquirido por : Fabrcio Moreira da Silva
323
LibExportType
LibImportType LineStyle
mailFileType
mailLogonOption
324
Adquirido por : Fabrcio Moreira da Silva
325
MajorTic
MinorTic
326
Adquirido por : Fabrcio Moreira da Silva
ParmType
327
RowFocuslnd
SaveAsType
O mtodo que ser usado para indicar que uma determinada linha de uma DataWindow detm o foco. O tipo de arquivo a ser criado quando forem gravadas as linhas de uma DataWindow.
SeekType
A posio na qual voc quer iniciar uma busca em FileSeek. Define a ordem de exibio em controle de janela.
SetPosType
TextCase
328
Adquirido por : Fabrcio Moreira da Silva
TrigEvent
329
330
Adquirido por : Fabrcio Moreira da Silva
UserObjects! WindowState
O tipo de objeto do usurio. O estado no qual a janela ou o programa estar em execuo. Tipo da janela.
WindowType
WriteMode
331