Você está na página 1de 75

Apostila de Powerbuilder 6.

CONVENÇÕES

As conveções apresentadas são sugestões. Utilize as convenções de nomenclatura que se


adaptarem melhor as suas necessidades - o importante é usar convenções durante o
desenvolvimento.
Essas convenções se baseiam em um prefixo que indica exatamente o tipo de variável ou
tipo de dados que estão sendo utilizados:

NOMENCLATURA DOS OBJETOS

Nome do Objeto Convenção Exemplo


Objeto de Datawindow d d_cadastro_pessoas
Função(global) f f_verifica_erro
Menu m_mdi_sistema
Estrutura s s_pessoas
Consulta q q_pessoas_cadastro
Objeto do Usuário u u_pessoa
Janela w w_mdi_ancestral

NOMENCLATURA DAS VARIÁVEIS

A letra 'x' indica o tipo de dado que a variável esta representado.


s. String b. Boolean dec{n}. Decimal
l. Long i. Integer t. Time
r. Real d. Date dt. Datetime

Variável Convenção
Local lx_
Global gx_
Instância ix_
Argumento ax_
Compartilhada cx_

NOMENCLATURA POR TIPO DE DADO

Tipo de Dados Convenção


Janela(window) w_
Item de Menu m_
Controle de Datawindow dw_
Estrutura (Structure) str_
Objeto do Usuário(User Object) uo_

NOMENCLATURA DE FUNÇÕES DE OBJETOS

Tipo de Objeto da Função Convenção


Função Global f_
Função de Menu mf_
Função de Objeto do Usuário uf
Função de Janela wf_

NOMENCLATURA DE CONTROLES DE JANELAS

Nome do Controle Convenção


CheckBox cbx_
CommandButton cb_
ListBox lb_
DropDownListBox ddlb_
EditMask em_
Line ln_
RadioButton rb_
Picture p_
StaticText st_

SIGNIFICADO DOS EVENTOS

Todo objeto e todo controle possui atributos. Todos os objetos e a maior parte dos controles tem
eventos.
EVENTOS DE APLICAÇÃO

Evento de Aplicação Definição


Close Executado no fechamento da aplicação.
Executado quando decorre o número especificado de segundos sem qualquer
Idle
atividade durante a execução da aplicação.
Open Executado na abertura.
SystemError Executado durante um erro do sistema em qualquer local na aplicação.

EVENTOS DE JANELA

Evento de Janelas Definição


Activate A janela recebeu o foco.
Clicked O usuário deu um clique na janela.
Close A janela está sendo fechada.
CloseQuery A janela está sendo fechada através da caixa de controle.
Deactivate A janela está perdendo o focus.
Open A janela se abre.
DragDrop Um objeto arrastado foi solto na janela.
DragEnter Um objeto arrastado entrou na janela.
DragLeave Um objeto arrastado deixou a janela.
DragWithin Um objeto está sendo arrastado no interior da janela.

EVENTOS DE DATAWINDOW

Evento de Controle de Datawindows Definição


A janela foi aberta e o controle de janela está sendo
Constructor
construido.
Clicked O usuário deu um clique sobre um controle da janela.
Ocorreu um erro de banco de dados no controle de
DBError
Datawindow.
A janela superior está sendo fechada e o controle está sendo se
Destructor
fechando (sendo destruído) com ela.
GetFocus O controle da janela recebeu o foco.
LoseFocus O controle da janela está a ponto de perder o foco.
ItemChanged Um item mudou de valor no controle datawindow.
ItemError Um item não passou em seu teste de validação.
ItemFocusChanged O foco no interior do controle de DW foi modificado.
UpdateStart Uma atualização está a ponto de se iniciar.
Acabou de ser emitida uma chamada à função retrieve, update
SQLPreview
ou ReSelectRow mas a função ainda não foi executada.
RetrieveStart Uma recuperação está a ponto de se iniciar.
RowFocusChanged Uma nova linha recebeu o focus.

SINTAXE

Sintaxe: OPEN (nome_da_janela, {nome_da_janela_superior})

Open abre sua janela. O parâmetro janela_superior nunca é obrigatório e só é utilizado com
janelas pop_up ou com janelas filhas. Se você omitir a janela_superior em uma janela ativa é
considerada como sendo a janela superior.

Sintaxe: HALT {Close}


Halt sozinho encerra de imediato a aplicação. Halt Close primeiro executa o evento close da
aplicação, e depois encerra a aplicação.

Sintaxe: CLOSE (nome_da_janela)

Close fecha sua janela. Se nome_da_janela for ParentWindow, então a janela associada a
esse objeto é fechada. O uso de ParentWindow só é válido em menus e em botões de comandos.

Sintaxe: DELETE FROM nome_da_tabela {WHERE condição}

É uma instrução de SQL que elimina todos os registros denotados por nome_da_tabela na
sua tabela. Se você especifica uma condição WHERE (por exemplo, where customer_name =
"Smith" ), somente serão eliminados os registros que correspondem ao critério. Observe que
instruções de SQL como DELETE exigem um sinal de ponto-e-vírgula (;) no seu final.

Sintaxe: OPENSHEET (folha,{nome_da_janela}, quadro, {posição{arrangeopen}})

Abre a janela de uma folha no interior de um quadro.

Folha - é o nome da janela folha


Nome_da_janela (opcional) é um string contendo o nome do tipo de janela que você deseja abrir.
Nome_da_janela não é necessário para os nossos propósitos.
Quadro é o nome da janela correspondente ao quadro MDI.
Arrangeopen é um tipo de dados enumerados do PowerBuilder que informa como você quer que a
folha seja aberta.
Cascaded! (padrão). Coloca a folha em cascata quando é aberta.
Layered! Coloca a folha em uma camada quando ela está aberta.
Original! Abre a folha no seu tamanho original e a coloca em cascata.
Observe os pontos de exclamação no parâmetro arrangeopen. Todos os nomes de tipos de
dados enumerados do Powerbuilder terminam com exclamação.

Sintaxe: VISIBLE

É um atributo na maioria dos objetos e controles. Ele determina e descreve se um controle


ou objeto pode ou não ser visto.

Sintaxe: IF (condição 1)
conjunto de comandos
ELSEIF (condição 2)
conjunto de comandos
END IF
If realiza o teste de uma condição. Se a condição for verdadeira é executado um comando
ou um conjunto de comandos. ElseIf é sempre acompanhado por um IF.

Sintaxe: HIDE ( )
Nome_do_objeto . Hide ( )
Nome_do_objeto . Show ( )
Hide ( ) torna invisível um controle ou objeto referenciado por nome_do_objeto.
Show ( ) torna o objeto novamente visível.

Sintaxe: CLICKED!

É um tipo de dados enumerados que descreve um evento clicked!


Sintaxe: ~r ~n - É uma expressão usada como par retorno de cursos-avanço de linha muitos
antigos.

Sintaxe: RETURN {valor}

Encerra imediatamente o programa.


Sintaxe: MessageBox ("(title)", "(Mensagem)",{(botao)!, {(padrão)!})

Botão (default): Um tipo de dados enumerados que indica o ícone que deverá ser exibido no
lado esquerdo da messagebox.
Padrão(opcional) : O número (de 1 a 3) do botão que deverá ser o botão padrão. (default é 1).

Sintaxe: UPPER (string) ou UPPER(caracter)

Converte em maiúscula quaisquer letras minúsculas no string ou um caracter isolado.

Sintaxe: PRINT SETUP()

Chama automaticamente a função de configuração da impressora.

Sintaxe: CHECKED

Ë um atributo do tipo booleano de um item do menu. Descreve se há ou não um sinal de


visto ao lado do texto.

Sintaxe: INSERTROW(n)

Insere uma nova linha na Datawindow antes da linha especificada (n). Se estiver como 0
insere uma linha antes da atual.

Sintaxe: GETROW(n)

Retorna a linha atual em uma datawindow.


Sintaxe: DELETEROW(n)

Elimina a linha (n) de uma Datawindow. Se estiver como 0 deleta a linha atual.

Sintaxe: ROWCOUNT()

Retorna o número de linhas de uma DataWindow.

Sintaxe: RESET()
Apaga as conexões entre a DW e o banco. Logo limpa os dados da tela, a tabela continua
intacta.

Sintaxe: (nome_datawindow).ACCEPTTEXT()

Força todo o texto da DW a ser aceito, em especial o ensto contido no campo ativo quando
não foi pressionado a tecla Tab ou Enter.

Sintaxe: (nome_datawindow).ClearValues(coluna)

Elimina todos os valores da tabela de códigos(se existir alguma) na coluna especificada.

Sintaxe: (nome_datawindow).GETCHILD(Nome_coluna,dwc)

Define a variavel DataWindowChild(dwc) com o conteúdo da DW filha (DDDW).

Sintaxe: (nome_datawindow).GETITENSTATUS(Numero_linha,coluna,dwbuffer)

Retorna um tipo de dados enumerados dwItemStatus, indicando o status de item


correspondente ao item situado em número de linha e coluna dentro de dwbuffer.

Sintaxe: (nome_datawindow).GETSQLPREVIEW()

Retorna a instrução de SQL atual.

Sintaxe: (nome_datawindow).UPDATE()

Atualiza o banco de dados com a DataWindow.

Sintaxe: (nome_datawindow).SORT()

Ordena as linhas da Datawindow de acordo com o critério especificado no item Rows/Sort.

Sintaxe: (nome_datawindow).SETTRANSOBJECT()

Define a transação correspondente à Datawindow inteira para todas as DW filhas.

Sintaxe: SETNULL(nome_da_variavel)
Atribui o valor null a variável.
Sintaxe: CONTINUE
Usado para terminar uma interação do loop antes que a condição de término do loop seja
alcançada. Isto causa o térmno da interação, não interrompendo o loop.

Sintaxe: SUPER

Quando for necessário fazer referência a um método do ancestral imendiatamente superior.


Exemplo: call super::open
Unidade 1

Abaixo temos a PowerBar.

Exemplo 1.

1.1 Criar o arquivo exemplo1.pbl :


1.1.1 Crie onde achar melhor uma pasta com nome exemplo1.
1.2.2 Na barra de ferramentas PowerBar, clique no item Library.
1.2.3 No menu Library escolha a opção Create.

1.1.4 Selecione a pasta exemplo1, e em File name coloque o nome para o arquivo (library), lib1, e
clique no botao save.

1.1.5 Preencha o campo comment com um comentário sobre a library que esta sendo criada.

1.2 Criação do objeto Application :


1.2.1 Clique no botão Application.

1.2.2 No menu File escolha a opção New, ou clique no botão correspondente,.


selecione a pbl lib1.pbl da pasta exemplo1 e clique no botão save.

1.2.3 Digite o nome aplic1 para o objeto application no campo Applications, preencha o campo
Comments com os comentários que você julgar importantes e clique no botao Ok.

1.2.4 Em seguida clique no botão No, informando que não deseja utilizar um Application Tamplate
para criar o objeto application.

 
1.3 Criação de uma window ( window1 ) :
1.3.1 Clique no botão Window da PowerBar na , janela Select Window clique no botão New.

Aparecera uma nova janela para que você possa acrescentar objetos e codificar os eventos de
acordo com as necessidades em questao.

1.3.2 No menu Controls selecione a opção StaticText,

1.3.3 Em seguida de um clique na window. Isto acrescentará um controle do tipo Texto Estático.
1.3.4 Novamente no menu Controls selecione a opção SingleLineEdit e dê um clique na window.

Para mudar o posicionamento dos objetos na window basta clicar e arrastar para a posição
desejada.

1.3.5 Para salvar a window que está sendo criada clique na opção save do menu file ou no botão
save da PainterBar :

1.3.6 Coloque no campo Windows e em Comments , novamente as informações que julgar


importantes com relação a window. Como na figura abaixo :
1.3.7 Clique com o botão direito do mouse em cima do SingleLineEdit e selecione a opção script.

Automaticamente você será colocado no evento Modified, digite o script como na figura abaixo :

1.3.8 No menu File escolha a opção Close, responda Yes para gravar o script digitado para o
evento Modified do SingleLineEdit.
1.3.9 No menu File escolha a opção Close, responda Yes para gravar as alterações feitas na
window.

1.4 Definindo a window principal do sistema :


1.4.1 Clique no botão Application. Deverá aparecer o objeto Application de nome Aplic1.

1.4.2 Clique no botão Script , da PainterBar1. Automaticamente você será levado para o script do
evento open do objeto aplic1. Digite neste evento o comando open como na figura abaixo :
1.4.3 No menu File escolha a opção Close, responda Yes para gravar o script digitado para o
evento open do objeto aplic1.

1.4.4 No menu File escolha a opção Save para gravar as alterações feitas no objeto aplic1.

1.5 Executando este exemplo :


1.5.1 Clique no botão Run da PowerBar. O exemplo será executado e aparecerá a window na tela
do computador. Para testar digite as letras F ou M e pressione enter. Para encerrar a execução
basta clicar no , no canto superior direito da janela.

1.6 Alterando as propriedades do objeto window1 :


1.6.1 Clique com o botão direito do mouse na window e selecione a opção Properties.
1.6.2 Em General, preencha o campo Title com o nome que você deseja que apareça no lugar de
Untitled. Desmarque os itens Maximize Box, Minimize Box e Resizable.

1.6.3 Em Icon, selecione Information no campo Stock Icons e pressione OK :


1.6.4 Salve as alterações como no item 1.3.8. e execute novamente a aplicação e veja as
mudanças :

Com esta mudanças não é mais possível maximizar, minimizar ou alterar o tamanho da window
durante a execução.
Unidade2

2.1 Construindo uma nova window : (window2)

2.1.1 Como no item 1.3.1., Clique no botão Window da PowerBar .Na janela Select Window clique
no botão New. Como na figura abaixo clique no item ListBox da PainterBar.

2.1.2 Clique na nova window, ajuste o tamanho e posicione o ListBox como abaixo :

2.1.3 Clique com o botão direito do mouse em cima do ListBox, selecione a opção propriedades :
2.1.4 Em Items das propriedades do ListBox, coloque no campo Text, 3 valores como a figura
abaixo. Em seguida clique no botão OK :

2.1.5 Como na figura abaixo clique no item CommandButton da PainterBar e clique na window.

2.1.6 Coloque o CommandButton abaixo do ListBox, como na figura abaixo :

2.1.7  Para salvar esta nova window com o nome window2, repita os procedimentos executados
nos itens 1.3.5 e 1.3.6.
2.1.8 Como no item 1.3.7, clique com o botão direito do mouse em cima do ListBox, selecione a
opção script. Como na figura abaixo, digite o script no evento selectionchanged.

O objeto ListBox recebeu automaticamente o nome lb_1. Caso você mude este nome nas
propriedades do objeto, no script também deve ser alterado. O objeto lb_1 que é do tipo ListBox,
tem uma lista de valores pré definidos, isto significa que é necessário utilizar um índice para fazer
referência a qualquer um destes valores.. Para identificar o valor escolhido pelo usuário utilizamos
uma PowerScript function : SelectedIndex () . Na instrução if verificamos se a propriedate text do
objeto lb_1 tem um dos três valores pré definidos : Vai, Foi ou Mexe. A função SelectedIndex () no
índice retornado pela função, que corresponde ao selecionado pelo usuário. De acordo com a
seleção que o usuário fez no ListBox será atribuído novos valores para a propriedade de
posicionamento do CommandButton cb_1, fazendo com que o objeto cb_1 mude de posição na
window.

2.1.9 Como no item 1.3.8 feche e salve o script. Salve as alterações da window2 clicando no botão
save, como no item 1.3.5.

2.1.10 Altere o script do objeto application aplic1 ( como no item 1.4.1 e 1.4.2), acrescentando um
comando open para window2 como na figura abaixo. Em seguida salve as alterações deste script
como no item 1.4.3.
2.1.11 Execute a aplicação como no item 1.5.1. Aparecerá 2 janelas, uma sobre a outra. Arraste a
janela Untitled, que corresponde a nossa window2, você verá também a janela Validação de Sexo
que corresponde a nossa window1. Para testar o script colocado no evento selectionchanged do
lb_1 (ListBox), use o mouse para selecionar as opções do ListBox (A palavra deve ficar com fundo
azul como na figura abaixo :

3. Exemplo 3.

3.1 Construindo uma nova window : (window3)


3.1.1 Como no item 1.3.1., Clique no botão Window da PowerBar .Na janela Select Window clique
no botão New. Como na figura abaixo clique no item CommandButton da PainterBar.

3.1.2 Clique na nova window, ajuste o tamanho e posicione o ListBox como abaixo :

3.1.3 Acrescente mais 2 CommandButton, como na figura abaixo :

3.1.4 Para acrescentar 1 EditMask, clique no botão correspondente, como na figura abaixo :

3.1.5 Coloque o EditMask logo abaixo, como na figura abaixo :


3.1.6 Clique com o botão direito do mouse em cima do EditMask e selecione properties. No item
Mask, selecione em Type a opção Date, em seguida em Masks selecione a opção dd/mm/yyyy,
como na figura abaixo :

3.1.7 Acrescente um StaticText abaixo do EditMask, como na figura abaixo :

3.1.8 Grave a window com o nome window3. Como no item 1.3.5. e 1.3.6.

3.1.9 Clique com o botão direito do mouse em cima do CommandButton cb_1 ( Ontem) e selecione
a opção Script . Digite o script da figura abaixo para o evento clicked :
3.1.10 Clique com o botão direito do mouse em cima do CommandButton cb_2 ( Hoje) e selecione
a opção Script . Digite o script da figura abaixo para o evento clicked :

3.1.11 Clique com o botão direito do mouse em cima do CommandButton cb_3 ( Amanhã ) e
selecione a opção Script . Digite o script da figura abaixo para o evento clicked :

3.1.12 Grave as alterações feitas na window window3 como no item 1.3.5. Altere o script do evento
open do objeto aplic1, como na figura abaixo. ( Para acessar este script siga os passos dos itens
1.4.1. e 1.4.2.).

3.1.13 Grave as alterações feitas no script do objeto aplic1 como no item 1.4.3 e em seguida
execute a aplicação como no iten 1.5.1. Clique nos botões Ontem, Hoje e Amanhã e veja as
alterações no EditMask em_1 e no StaticText st_1 :

4. Exemplo 4.

4.1 Construindo um menu.


4.1.1 Clique no botão Menu da PowerBar .Na janela Select Menu clique no botão New. Como na
figura abaixo :

4.1.2 Preencha os campos como na figura abaixo :

4.1.3 Coloque o cursor no campo Exemplo 1, em Shortcut selecione a opção F1 como na figura
abaixo. Repita o procedimento colocando para o campo Exemplo 2 key = F2 , para o campo
Exemplo 3 key = F3 e para o campo Sair selecione F4 e marque o Alt. . Este procedimentos irão
criar teclas de atalho para a respectiva opção :

4.1.4 Acrescente o caracter & antes da letra que será definida como atalho. No item Sair do
exemplo abaixo a letra escolhida foi S , nos itens Exemplo 1, Exemplo 2 e Exemplo 3
respectivamente 1 ,2 e 3
.

4.1.5 Em Pictures , colque o cursor em Exemplo 1 e selecione no campo Stock Pictures o ícone
que você deseja associar ao item Exemplo 1, repita o procedimento para os itens Exemplo 2,
Exemplo 3 e Sair :

4.1.6  Em Toolbar , colque o cursor em Exemplo 1 e digite no campo Text: a informação que você
deseja que apareça, quando o usuário posicionar a seta do mouse em cima do ícone selecionado
no item acima (4.1.5.). Repita o procedimento para os itens Exemplo 2, Exemplo 3 e Sair

4.1.7 Para gravar as alterações feitas neste novo menu clique no botão save. Na janela Save Menu
digite o nome para o menu no campo Menus e coloque os comentários no campo Comments,
como na figura abaixo :
4.2 Crie uma nova window como no item 1.3.1. Clique com o botão direito do mouse no meio desta
nova window e selecione a opção Properties, altere alguns atributos. Faça como a figura abaixo :

Clique no botão OK e grave esta nova window com o nome window_principal. Para gravar veja
itens 1.3.5 e 1.3.6.

4.3 No evento open do objeto aplic1 altere e coloque como na figura abaixo. Para acessar este
script faça como nos itens 1.4.1 , 1.4.2 e 1.4.3. :

4.4 Retorne para o objeto menu1, Codifique as instruções que devem ser executadas, quando uma
opção do menu é selecionada pelo usuário. Coloque o cursor no item Exemplo 1 e clique no botão
Script como na figura abaixo :
As instruções que devem ser executadas, quando o usuário selecionar a opção Exemplo 1 do
nosso menu1, são codificadas no evento clicked para m_exemplo1. A figura abaixo mostra as 2
linhas que devem ser codificadas neste script. Na primeira linha criamos uma variável do tipo
window1, depois utilizamos a PowerScript function opensheet, para abrir dentro da
window_principal uma instancia da window1.

Repita o procedimento para os itens Exemplo 2 e Exemplo 3 do nosso menu como nas figuras
abaixo:

Para a opção Sair o script deve ser codificado como na figura abaixo :
4.5 Abra o objeto window1 para que possamos fazer algumas alterações. O script do evento
modified do objeto sle_1 precisa ser alterado, retire do script o nome da window window1 como
mostra a figura abaixo. Para ter acesso este script veja as instruções do item 1.3.7.

4.6 Repita este procedimento para o objeto window2 .

4.7 Grave todas as alteração e execute a aplicação, como no item 1.6.4 :


4.8 Faça todos os testes possíveis. Abra a window Exemplo 1 mais de uma vez ao mesmo tempo e
perceba que a execução é independente. Você irá trabalhar com as windows da mesma forma que
você trabalha com os documentos do Microsoft Word

.
5. Exemplo 5 .

5.1 Crie uma nova window, acrescente : 2 StaticText e 2 EditMask, como na figura abaixo :

5.2 Nas propriedades do EditMask em_1, em Mask no campo Masks altere para #####, como na
figura abaixo :

5.3 Nas propriedades do EditMask em_2 em Font altere o campo Background para ButtonFace :
5.4 Nas propriedades do EditMask em_2 altere o campo Enabled. Não marque esta opção, para
que o usuário não tenha acesso para alterar os valores deste campo.

5.5 Grave esta nova window com o nome valor_energia , para fazer este procedimento faça como
nos itens 1.3.5 e 1.3.6.

5.6 Para criar uma função clique no botão Function da PowerBar . Na janela Select Function clique
no botão New .

5.7 Na jenala New Function preencha como mostra a figura abaixo :


5.8 Digite as instruções que devem ser executadas pela função, como na figura abaixo :

Nas primeiras linhas do script, temos a explicação das regras definidas para o cálculo do valor a
ser pago por uma conta de energia elétrica. As linhas de comentários devem ser iniciadas com // .
Logo em seguida são criadas 2 variáveis do tipo integer, valor e resto, para auxiliar no cálculo do
valor a ser pago, de acordo com a faixa atingida pelo consumo. O valor após calculado é devolvido
através do return. Após digitar o script grave utilizando o botão save. Aparecerá a janela abaixo,
responda yes para confirmar as alterações.

5.9 Abra novamente a window valor_energia e clique com o botão direito do mouse no EditMask
em_1 e selecione a opção script, como na figura abaixo
5.10 Quando o nosso usuário digitar o valor do consumo e pressionar a tecla enter, devemos
mostras no EditMask em_2 o valor a ser pago. Sendo assim no evento modified do objeto em_1
utilizaremos a função valor_energia como mostra a figura abaixo :

O valor digitado no EditMask em_1 está no atributo text, com a função integer() transformamos
este valor para o tipo esperado pela função. (Veja item 5.7 => consumo = integer) .

A função por sua vez retornará um valor do tipo integer (Veja item 5.7 => Returns = integer), por
isso utilizamos a função string() para transformar o resultado devolvido pela função em um tipo
compatível com o atributo text do EditMask em_2.

Grave as alteração feitas no script do evento modified do objeto em_1.

5.11 Para testar esta nova window vamos alterar o script do evento open do objeto aplic1, como
mostra a figura abaixo ( Veja como nos itens 1.4.1., 1.4.2. e 1.4.3) :

5.12 Execute a aplicação e teste o resultado :


6. Exemplo 6.

6.1 Crie uma nova window, utilizado o menu Controls, acrescente : 4 CheckBox, 2 RadioButton, 2
GroupBox, 1 CommandCutton, e 1 EditMask. Como na figura Abaixo : 

6.2 Grave as alterações feitas na window, coloque o nome window4.

6.3 Clique com o botão direito do mouse no EditMask em_1, selecione a opção properties Nas
propriedades do campo :
6.4 Clique no botão OK. Altere o atributo Text do CommandButton cb_1 nas propriedades do
objeto ou como mostra a figura abaixo :
6.5 Quando o usuário clicar no CommandButton cb_1, Calcular, aparecerá no EditMask em_1 o
valor calculado com base nas opções selecionadas em Números e Operação. Para que isso ocorra
precisamos colocar no script do evento clicked do CommandButton cb_1, as comandos
necessários. Clique com o botão direito do mouse e selecione Script, como na figura abaixo :

Digite o script como na figura abaixo :

Grave as alterações feitas no script para o evento clicked do objeto cb_1. Você pode utilizar
Ctrl+F4.
6.6 Grave as alterações feitas na window window4, e para testar se a window funciona de acordo
com o proposto, altere o script do objeto aplic1, como nos itens 1.4.1. e 1.4.2. Coloque como na
figura abaixo :

Grave as alterações feitas no script do evento open do objeto aplic1, e execute a aplicação como
no item 1.5.1.

6.7. Teste todas as combinações possíveis e confira os valores, veja o exemplo abaixo :

7. Exemplo 7 – Utilizando objetos de várias PBLs.

7.1 Clique no botão Library, como mostra a figura abaixo :


7.2 Temos apenas a lib1.pbl, e apenas um Aplication Object o aplic1, como mostra a figura abaixo :

Vamos criar um nova pbl, a lib2.pbl. Clique no botão Create Library :

Selecione a mesma pasta exemplo1, digite o nome lib2 no campo File name e clique no botão
save, como mostra a figura abaixo :
Coloque os comentários que julgar conveniente sobre a nova PBL que está sendo criada :

7.3. Crie um novo Application Object com nome aplic2 e armazenando-o na lib2.pbl, para relembra
como criar um application Object veja o item 1.2. Após a criação, a visualização em Library ficará
como mostra a figura abaixo :

7.4 Neste momento temos um grupo de objetos distribuídos em 2 PBLs. Temos 2 Application
Object, aplic1 e aplic2, podemos considerar que temos 2 programas (sistemas/aplicações)
diferentes. Qualquer objeto pode ser utilizado quantas vezes forem necessárias em quantos
programas você necessitar. Para isso basta acrescentar a(s) PBL(s) que contem os objetos que
deseja utilizar nas propriedades do Application Object, Veja como fazer :

7.4.1 Selecione o novo Application Object aplic2, basta selecionar o objeto e pressionar a tecla
enter ou dar um duplo-click no objeto, como mostra a figura abaixo :

7.4.2 Clique com o botão direito do mouse em cima do Application Object aplic2 :

7.4.3  Em Libraries acrescente a(s) Pbl(s) que contem os objetos que você deseja utilizar neste
programa aplic2 e clique no botão ok. Veja figura abaixo :
7.4.4 No script do evento open do Application Object aplic2 digite o comando para abrir a window
windo2 como na figura abaixo. Para ter acesso a este script veja os itens 1.4.1 , 1.4.2 , 1.4.3. e
1.4.4.

O objeto window2 e um objeto que foi utilizado também no programa aplic1 e está na library
lib1.pbl. Execute a aplicação como no item 1.5 e veja o resultado.

7.5 É possível utilizar no programa aplic2 todos os objetos da library lib2.pbl. Para utilizar objetos
de outras librarys, basta acrescentar em Library Search Path o nome das respectivas Pbls, como
no item 7.4.3.Faça o teste com outros objetos da library lib1.pbl.

8. Exemplo 8 – Copiar, mover ou excluir objetos das PBLs.

8.1 Abra a janela Library, como no item 7.1. Para copiar o objeto window2 da lib1.pbl para a
lib2.pbl, clique com o botão direito do mouse em cima do objeto a ser copiado e selecione a opção
Copy, como mostra a figura abaixo :
8.2 O próximo passo e selecionar a PBL que receberá a copia do objeto. Selecione a Pbl destino e
clique no botão open, como mostra a figura abaixo :

8.3 Após este procedimento teremos uma cópia do objeto window2 dentro da library lib2.pbl.
Confira o resultado na figura abaixo :

8.4 Para excluir um objeto de uma library, repita o procedimento do item 8.1 selecionando a opção
delete. Para mover um objeto de uma library para outra selecione a opção move e repita o
procediemento do item 8.2.

9. Trabalhando com banco de dados Sybase Sql Anywhere :


9.1 Para criar um banco de dados novo utilizaremos o programa Sybase Central, este programa é
instalado juntamento com o Sybase Sql Anywhere. Na pasta Utilities execute a opção Create
Database com um duplo-clique, como mostra a figura abaixo :

9.2 Selecione a pasta e o nome do arquivo que irá conter todas as informações do nosso novo
banco de dados, em seguida clique no botão Next :

9.3 Na próxima janela você deverá optar por ter ou não um arquivo de Log. Para Ter mais
segurança faça como na figura abaixo, e pressione o botão Next.
9.4  Na janela seguinte, você pode opter por fazer mirror do arquivo de log criado na tela anterior.
Não marque esta opção e clique no botão Next

9.5 Na próxima janela, faça como na figura abaixo : Deverá ser criado SYSCOLUMNS E
SYSINDEXES views.
9.6 Não há necessidade de alterar o nomde DBO, e o tamanho de 1024 bytes para as páginas é
ideal.

9.7 Na janela seguinte selecione, como na figura abaixo, o Code Page 850LATIN1 e clique no
botão Next.

9.8 Não há necessidade de marcar a opção Connect to the database. Após o término da criação do
banco de dados banco1 não queremos utiliza-lo no Sybase Central.
9.9 Após alguns segundos será criado o arquivo banco1.db na pasta c:\sistemas\db com os
parâmetros que selecionamos nos itens anteriores. Clique no botão close e pode fechar o Sybase
Central.

10. Acessando um Banco de Dados Sybase Sql Anywhere no PowerBuilder.

10.1 De volta ao PowerBuilder vamos fazer a configuração ODBC para manipular-mos o banco de
dados Sybase Sql Anywhere Banco1 . Na powerbar clique no botão Configure ODBC, como
mostra a figura abaixo :

10.2 Na janela Configure ODBC, selecione no primeiro campo o iten Sybase Sql Anywhere e em
seguida clique no botão Create, como mostra a figura abaixo :
10.3 Preencha os campos Data Source Name, Description e Database file como mostra a figura
abaixo, em seguida clique no botão OK.

10.4 Após definir algumas informações da configuração ODBC aparecerá a janela inicial com o
data source que criamos, clique em seguida clique no botão close como mostra a figura abaixo.
10.5 Após a configuração ODBC é criado automaticamente um DB profile para conexão com o
banco de dados banco1.db. Clique no botão DB Profile da PowerBar, como mostra a figura abaixo

10.6 Na janela Database Profiles selecione o item Estoque em ODBC, e clique no botão connect
como mostra a figura abaixo :

Isto fará com que o servidor Sybase Sql Anywhere seja acionado colocando o banco de dados
banco1 no ar, disponível para transações.

10.7 Aparecerá um item minimizado na sua barra de tarefas :enquanto este programa estiver ativo
o seu banco de dados estará no ar disponível para utilização. Se você der um clique verá as
informações, como mostra a figura abaixo:
10.8 O próximo passo e criar as tabelas e relacionamentos deste novo banco de dados. Vamos
utilizar o D.E.R. abaixo como exemplo :
   
Familias Produtos Fornecedores
Familia Smallint   Produto Integer   Fornecedor Integer
Descricao Char(25)   Familia Smalint   Nome Char(50)
    Nome Char(45)   Endereco Char(70)
    Fornecedor Integer   Fone Char(14)
    Venda Dec(10,2)   Contato Char(30)
    Custo Dec(10,2)   Email Char(40)
    Quantidade Integer    
    Unidade Char(2)    
O item sublinhado é a chave primária.

10.9 Vamos para a criação destas 3 tabelas e destes 2 relacionamentos. Clique no botão Database
da PowerBar, como mostra a figura abaixo :

10.10 Na janela Select Tables clieuq no botão New.

10.11 Crie as colunas da tabela como na figura abaixo :


10.12 Para gravar as alterações, clique no botão save e em seguida no botão Yes.

10.13 Coloque no campo Table Name o nome para a nova tabela, com base no exemplo do item
10.8 esta primeira tabela é familias.

10.14 Para definir a chave primária da tabela familias clique com o botão direito do mouse em cima
da tabela e selecione Properties, como mostra a figura abaixo :

10.15 Em Primary Key, selecione as colunas que irão compor a chave primária, neste caso a
coluna familia e clique no botão OK, como na figura abaixo.
10.16 Após a definição da chave primária a visualização da tabela familias na janela database
ficará como na figura abaixo :

10.17 Para criar as outras 2 tabelas, produtos e fornecedores, utilize o botão Create table como
mostra a figura abaixo, e repita os procedimentos dos itens 10.11 , 10.12 , 10.13 , 10.14 e 10.15.

10.18 Crie a tabela de Produtos como na figura abaixo :


10.19 Crie a tabela de Fornecedores como na figura abaixo :

10.20 Após a criação das 3 tabelas, a visualização na janela Database ficará como na figura abaixo
:

10.21 A visualização das tabelas pode ser alterada a seu critério. Você pode fechar e selecionar as
tabelas de acordo com a necessidade. Para fechar clique com o botão direito do mouse em cima
da tabela e selecione a opção close.
10.22 Para visualizar novamente uma tabela clique com o botão direito do mouse em
qualquer parte branca da janela database e clique em Select Tables. Em seguida selecione o
nome da tabela e clique no botão Open.

10.23  Para criar os relacionamentos selecione a tabela que tem a chave estrangeira com 1 clique
e em seguida clique no botão Create foreign key. Veja como na figura abaixo :
10.24 Veja na figura abaixo como preencher os campos da janela Foreign Key Definition.

10.25 Após a criação do relacionamento na janela database, se você exibir as 2 tabelas, aparecerá
na tabela que tem a chave estrangeira, a indicação de uma Foreign Key, ligado com a chave
primária da tabela correspondente. Veja figura abaixo :

10.26 Crie o outro relacionamento, entre produtos e fornecedores. O resultado final você pode ver
na figura abaixo :
10.27 Para excluir uma tabela, chave primária ou chave estrangeira utilize o botão Drop da
PaintBar. Selecione o item que você deseja excluir e em seguida clique no botão Drop. Exemplo :
para excluir o relacionamento entre a tabela familias e produtos, significa que a coluna familia da
tabela produtos deixará de ser uma chave estrangeira, então dê 1 clique em para selecionar, em
seguida clique no botão drop. Veja como na figura abaixo :

10.28 Como o item selecionado foi uma chave estrangeira, aparecerá uma janela pedindo uma
confirmação para a exclusão da Foreign Key. Clique no botão Yes para confirmar a exclusão ou no
botão No para desistir. Veja figura abaixo.

10.29 É possível manipular as linhas de um tabela no PowerBuilder. Para isso basta


selecionar a tabela e escolher uma das três alternativas de Data manipulation : grid , tabular
ou freeform.

Exemplo : Data manipulation grid. Para inserir linhas nesta nova tabela clique no botão Insert Row,
como mostra a figura abaixo :
Após digitar todas as linhas, clique no botão Save Changes para gravar as linhas inseridas ou
alteradas, no banco de dados. Veja figura abaixo :

Para atualizar as linhas que aparecem na janela Data Maniputaion, basta dar um clique no botão
Retrieve. Este procedimento fará uma nova leitura no banco de dados e mostrará as linhas da
tabela atualizadas.

Para excluir linhas da tabela basta colocar o cursor na linha a ser excluída e clique no botão Clear,
como mostra a figura abaixo :

10.30 Para criar índices para as tabelas do banco de dados, basta selecionar a tabela para a qual
será criado o índice e clicar no botão Create Index.
Em seguida defina as informações do novo índice na janela Create Index, como mostra a figura
abaixo :

10.31 Para executar instruções sql de forma interativa, no PowerBuilder, basta clicar no botão DB
Administration. Veja na figura abaixo que a janela Database está aberta e conectado ao nosso
banco de dados Estoque.
O próximo passo e digitar o comando sql na janela Database Administration, finalizar o comando
com ponto-e-vírgula e clicar no botão Execute. Como mostra a figura abaixo :

Veja o resultado deste exemplo na janela abaixo : (Uma nova janela com o resultado do comando
sql)

10.32 Se você preferir, poderá utilizar o Paste Sql no lugar de digitar os comandos sql. Veja como :

Clique no botão Paste Sql, como na figura abaixo :

Em seguida você terá que escolher o comando : Select para consultar, Insert para inserir, Update
para alterar ou Delete para apagar linhas. Clique na opção desejada e pressione enter.
Como exemplo selecionaremos a opcão Select. Em seguida aparecerá a janela Select Tables.
Selecione a(s) tabela(s) que deseja consultar e clique no botão open, como mostra a figura abaixo

Em seguida selecione as colunas da tabela, como mostra a figura abaixo :

(Não Tem Figura)

Na parte inferior da janela, clique em Where, selecione Column e Operator, depois digite o valor na
coluna Value. Veja Figura Abaixo

Depois clique no botão Return, como mostra a figura abaixo :

Veja o resultado na figura abaixo : ( o comando sql foi gerado automaticamente ). Clique no botão
execute e veja o resultado.
11. Exemplo 11 – Programação com Banco de Dados : DataWindow.

11.1 Para acompanhar os passos deste capítulo é necessário que tenha sido cumprida todas as
etapas dos capítulos 9 e 10. Abra o Powerbuilder e conecte no banco de dados, como explicado
nos itens 10.5, 10.6 e 10.7.

11.2 Para utilizar os recursos do objeto DataWindow, clique no botão DataWindow da PowerBar,
como mostra a figura abaixo :

11.3 Em seguida na janela Select DataWindow, clique no botão New. Veja figura abaixo :

11.4 Na janela New DataWindow, selecione em Data Source o item Quick Select, em Presentation
Style selecione Freeform e clique no botão OK :
11.5 Na janela Quick Select, selecione a tabela familias no item Tables, selecione as colunas
familia e descricao no item Columns, em seguida clique no botão OK. Veja figura abaixo :

11.6  Vamos mudar algumas características da nossa nova DataWindow antes de gravar, clique
com o botão direito do mouse na datawindow em seguida no botão Properties, como mostra a
figura abaixo :
11.7 Na janela DataWindow Object mude o campo Color para Silver, como na figura abaixo :

11.8  Depois de mudar a cor da DataWindow, selecione os columns Objects e altere o background
color para a cor branca. veja como na figura abaixo :

11.9 Ainda com os column objects selecionados, em shadow box bordes selecione 3d lowered
border.

11.10 Selecione os Text Objects e novamente em shadow box bordes selecione 3d raised border,
como mostra a figura abaixo :
11.11 Para salvar a DataWindow clique no save, como mostra a figura abaixo :

Em seguida, digite o nome da datawindow, os comentarios que julgar necessario e clique no botão
OK, como mostra a figura abaixo :

11.12 Os acessos na tabela de fornecedores serão feitos sempre atravéz do chave primária, que é
a coluna fornecedor. Sendo assim clique no botão Data source.
Em seguida, em Design clique na opcão Retrieval Arguments :

Depois, na janela Specify Retrieval Arguments, digite o nome do argumento o seu tipo e clique no
botão OK, como mostra a figura abaixo :

Finalmente, na parte inferior em Where selecione a coluna fornecedor, Operator = e em Value


cooque o nome do argumento precedido de : (dois pontos). Exatamente como na figura abaixo :

Clique novamente no botão data source :


11.13 Vamos fazer um teste, clique no botão Preview, como mostra a figura abaixo :

11.14 Por exemplo, digite o valor 4 para o argumento ra_fornecedor e clique no botão OK.

E o resultado é :

12.  Exemplo 12 – Programação com Banco de Dados : Window x DataWindow.


12.1 Crie uma window, como no item 1.3.1. Acrescente um controle do tipo DataWindow, como
mostra a figura abaixo :

12.2 Posicione o controle Datawindow, e clique com o botão direito do mouse selecionando a
opção Properties, como mostra a figura abaixo :
12.3 Nas propriedades do controle DataWindow digite : O nome para o controle em Name e no
campo DataWindow Object Name digite o nome do objeto datawindow ou selecione no botão
browse. Clique no botão OK. Veja como na figura abaixo :

12.4 Grave as mudanças feitas na window como no item 1.3.5. Coloque o nome w_fornecedores
para a window.
12.5 Crie um objeto application,e no script para o evento open digite as instruções para conexão da
aplicação com o banco de dados utilizado como exemplo no item 10.8.

12.6 Vamos criar 4 User Events. Já vimos vários exemplos de eventos : no item 1.3.7 o evento
modified, no item 1.4.2 o evento open, no item 2.1.8 selectionchaged, entre outros. O User Event e
um evento criado pelo programador. Para cria User Events clique em Declare e em seguida User
Events como mostra a figura abaixo :

12.7 Na coluna Event Name acrescente nossos 4 novos eventos, como mostra a figura abaixo :
12.8  Para conferir as alterações do item anterior, basta clicar com o botão direito do mouse na
window e selecionar a opcão script. (Atenção: cuidado para não clicar em cima do controle
datawindow).

Veja que no script da window agora temos 4 novos eventos, como mostra a figura abaixo :

12.9 Na parte inferior da window acrescente 4 controles CommandButton, como mostra a figura
abaixo :
12.10 Com o botão direito do mouse em cima do controle DataWindow clique com o botão direito e
selecione a opção script.

12.11 O evento é itemchanged for dw_fornecedores. Se o usuário alterar a coluna fornecedor o


fluxo de execução será desviado para o evento eu_abrir atravéz do comando triggerevent. Declare
a variavel ii_fornecedor em Instance Variables... do item Declare, como mostra as figuras abaixo :

Após declarar a Instance Variable ii_fornecedor, codifique o script


12.12 Clique com o botão direito do mouse em cima do controle CommandButton salvar e
selecione o item Script.

12.13 No evento clicked do CommandButton digite as instruções como mosra a figura abaixo :

12.14 Repita o processo do item 12.12. , mas desta vez no CommandButton Excluir, como mostra
a figura abaixo :

12.15 No script para o evento clicked, do CommandButton Excluir, digite a linha de comando como
mostra a figura abaixo :

12.16 Repita o procedimento 12.14. para o CommandButton Novo e no script para o evento clicked
digite o commando triggerevent como mostra a figura abaixo :
12.17 Mais uma vez, repita o procedimento 12.14, desta vez para o CommandButton Fechar. No
script para o evento clicked digite o comando close, como mostra a figura abaixo :

12.18 Clique com o botão direito do mouse no window, selecione o item script. Como mostra a
figura abaixo :

12.19 Para ter acesso ao evento open, selecione entre os vários eventos o open, como mostra a
figura abaixo :

12.20 No Script para o evento open do objeto w_fornecedores, digite as 2 linhas de comando como
mostra a figura abaixo :
12.21 Agora vamos à programação do eventos criados no item 12.6. e 12.7. Primeiro o evento
eu_abrir. Selecione o evento como mostra a figura abaixo :

12.22  Digite as linhas de comando para o evento eu_novo for w_fornecedores, como mostra a
figura abaixo :

12.23 Como no item 12.21, selecione o evento eu_novo e digite os comandos como mostra a figura
abaixo :
12.24 Mais uma vez, como no item 12.21, selecione o evento eu_excluir e digite os comandos
como mostra a figura abaixo

12.25 Mais uma vez, como no item 12.21, selecione o evento eu_salvar e digite os comandos
como mostra a figura abaixo :