Академический Документы
Профессиональный Документы
Культура Документы
TEAM
DEVELOPER
MDULO BSICO
Verso 2.0
pg 2
pg 3
Contedo
1. Histrico
2. Nosso Foco
3. O Ambiente de Desenvolvimento
O Outline
O Customizer
A Paleta de Controles
O Database Explorer
O Assistente de Cdigo
Explorando os menus
4. A Linguagem SAL
O Programa Fonte
Os Comandos da Linguagem SAL
Operadores Matemticos
Variveis
Os Tipos de Dados
A Declarao de Variveis
As Variveis do Sistema
Os Vetores
Constantes
As Funes
Os Objetos do Centura
Menus
Mensagens do Centura
5. Construindo uma Aplicao
O Banco de Dados
As Telas
A tela de Login
O MDI Principal
Manuteno de Empresas
Manuteno de Contatos
6. Dynalib
Conceito
Implementando Dynalibs
7. Gerao do Executvel
8. O Report Builder
Fundamentos do Report Builder.
reas do Report Builder
O Editor de Frmulas
A Comunicao entre o Centura Builder e o Report Builder
9. Programao Orientada a Objetos.
Conceito
Implementando OOP no Centura.
10. Team Object Manager
pg 4
pg 5
Marcas Registradas
Todos os termos mencionados neste material so de propriedade dos seus respectivos fornecedores.
Microsoft Windows95 e Microsoft SQL-Server so marcas registradas da Microsoft Corporation.
SQLWindows, Centura Team Developer, Centura Builder, Report Builder, Team Object Manager, Dynalib e
QuickObjects so marcas registradas da Centura Software Corporation.
Oracle marca registrada da Oracle Corporation.
Informix marca registrada da Informix Corporation.
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 6
1. Histrico
Em 1988 a GUPTA apresentou a primeira verso do SQLWindows ao mercado destinado ao
desenvolvimento de aplicaes baseadas na arquitetura Cliente/Servidor para o ambiente Microsoft
Windows. Uma linguagem fcil de usar e rica em recursos, foi o pioneiro na sua categoria.
Em 1996 a Gupta Corporation passou por uma srie de mudanas estruturais e passou a
responder pelo nome Centura Software Corporation e a verso do SQLWindows para 16 bits
evoluiu para o ambiente 32bits recebendo o nome de Centura Team Developer, ou simplesmente
SQLWindows/32.
Atualmente o Centura Team Developer est na sua verso 1.5, em outubro de 1998, chegou ao
Brasil trazendo uma srie de recursos importantes, ganhou novas ferramentas e uma srie de
melhorias que consolidam a ferramenta como um dos grandes ambientes de desenvolvimento de
aplicaes corporativas para o ambiente cliente/servidor e tambm para internet.
pg 7
pg 8
2. Nosso Objetivo
Apresentar o Centura Team Developer ao desenvolvedor, explicar os conceitos da linguagem,
mostrar os comandos e funes SAL, os objetos, apresentar o Report Builder, o Team Object
Manager. Enfim, deu ma forma geral , deixar o desenvolvedor familiarizado com o ambiente, pronto
para comear a desenvolver aplicaes.
pg 9
pg 10
3. O Ambiente de Desenvolvimento
3.. O Ambiente de Desenvolvimento
O Outline
Customizer
Paleta de Controles
O Database Explorer
Assistente de Cdigo
Explorando os menus
O Ambiente de Desenvolvimento
Apresentamos agora o ambiente de desenvolvimento do Centura Team Developer, onde o
programador constri a aplicao. No Centura Team Developer o ambiente de desenvolvimento
chamado de Centura Builder. No Centura Builder o programador define as telas da aplicao, os
seus objetos, codifica a aplicao e define a estrutura do banco de dados.
pg 11
pg 12
Global Declarations
pg 13
pg 14
Variables
pg 15
Customizer
pg 16
Paleta de Controles
pg 17
O Database Explorer
pg 18
pg 19
O Menu File
New Inicia uma nova aplicao Centura, e aberto um modelo de aplicao inicial, vazio.
Open Permite abrir uma aplicao j existente.
Save Salva a aplicao com o nome atual.
Save As Salva a aplicao atual com um novo nome, solicitado numa caixa de dilogo.
Page Setting Permite acesso s configuraes de impresso do Outline. Tipo e tamanho da
fonte, ttulos do cabealho e rodap e margens.
Print Imprime o Outline de acordo com as configuraes feitas no item anterior.
pg 20
pg 21
pg 22
pg 23
New Permite a criao de nova Tabela, ndice, Store Procedure, Store Procedure Package e
Banco de Dados
SQL Script Table Comandos para edio, manuteno, e filtro nos dados da tabela selecionada.
Stored Procedure Query Comandos para a criao de nova consulta ou abrir uma consulta j existente.
Add to list Adiciona um novo Banco de Dados relao j existente.
Disconnect Desconecta do banco de dados.
View System Tables Visualiza as tabelas do sistema. (Catlogo)
Close Database Explorer Encerra a execuo do Database Explorer.
pg 24
pg 25
pg 26
4. A Linguagem SAL
4.. A Linguagem SAL
1.. O Programa fonte
1.. APL, APP, APT, APD e APC
2.. Os Comandos da Linguagem SAL
3.. Operadores Matemticos
4.. Variveis
1.. Tipos de Dados
2.. Declarao de Variveis
3.. Variveis do Sistema
4.. Vetores
5.. Constantes
6.. As Funes
7.. Os Objetos do Centura
8.. Menus
9.. Mensagens do Centura
A Linguagem SAL
Toda a programao em Centura feita atravs da linguagem SAL ( Scalable Application
Language ), uma linguagem poderosa e de fcil entendimento. Um programa fonte em linguagem
SAL composto de comandos e funes SAL e comandos SQL.
O Programa fonte
Um programa Centura pode ter as seguintes extenses padres :
APL Tipo de arquivo que identifica Bibliotecas, utilizado para armazenar rotinas genricas.
APP Tipo de arquivo que identifica Aplicaes em formato binrio do Centura, um formato
proprietrio. Uma aplicao que esteja gravada neste formato s pode ser visualizada
atravs do prprio Centura Builder.
APT Tipo de arquivo que identifica Aplicaes em formato texto padro. Uma aplicao que
esteja gravada neste formato pode ser visualizada atravs do Centura Builder e tambm
atravs de um editor de textos padro TXT. Embora no recomendado qualquer alterao
no fonte atravs de uma interface diferente do Centura Builder.
APD - Tipo de arquivo que identifica Aplicaes compiladas em Dynalibs. Dynalibs so utilizadas
para o compartilhamento de funes e variveis globais, janelas top level e suas funes e
janelas MDI e suas funes e objetos child.
APC - Tipo de arquivo que identifica Aplicaes compiladas com o Object Compiler. O resultado
desta compilao uma DLL com todas as funes internas. Essa DLL padro e pode ser
utilizada por qualquer outra linguagem feita para o Windows95.
Os Comandos da Linguagem SAL
A linguagem SAL oferece aos desenvolvedores os comandos Break, Call, Else, If, Loop, Return,
Select Case, Set, While. Que so explicados em detalhes abaixo.
Break
Este comando utilizado para encerrar o processamento dos comandos Loop, While e
Select Case. O fluxo de execuo do programa passado para o bloco de comandos
imediatamente seguinte.
pg 27
Call
O comando Call utilizado para chamar uma funo.
If Else Else If
O comando If usado para executar uma operao dependendo de alguma condio. Ele
possui a seguinte sintaxe :
If < expresso1 >
...........
Else If < expresso2 >
...........
Else
...........
O Centura avalia a primeira expresso no If, se for obtido um valor TRUE ( Verdadeiro ) ,
ento o cdigo subordinado ao comando If executado. Se a expresso retornar FALSE,
ento o Centura procura pelo prximo Else ou Else If se existirem. Else If utilizado
quando se faz necessrio testar mais de uma condio. Se a expresso presente no Else If
retornar TRUE, o Centura ento executa o cdigo subordinado ao comando Else If. Se a
Expresso retornar FALSE o Centura continua a procurar por mais algum comando Else If,
caso no encontre nenhum Else If e encontre um comando Else, o Centura ento executa
o cdigo subordinado ao comando Else. Se no for encontrado nenhum comando Else, o
Centura simplesmente continua a execuo do programa.
O Centura utiliza a hierarquia presente no Outline para determinar o bloco de comandos
subordinados e que ser executado. Isso elimina a necessidade de utilizar os delimitadores
BEGIN ... END presentes em outras linguagens.
Alguns exemplos :
If nCodigo = 999
.............
Else If nCodigo = 888
............
Else
............
Set sNome = Jos
A utilizao do operador de igualdade (=) no se faz obrigatria em alguns casos. Similar a
linguagem C, ao ser avaliada uma expresso, e esta retornar um valor 0 (zero), o Centura
interpreta como FALSE. Qualquer valor diferente de zero interpretado pelo Centura como
um valor TRUE. Observe o prximo exemplo:
Set nValor = 3
If nValor
[ este cdigo executado pois 3 diferente de FALSE ]
If nValor = TRUE
[ este cdigo no executado pois 3 diferente de TRUE ]
No primeiro If o comando subordinado executado pois nenhuma comparao direta com
a constante TRUE efetuada. No segundo If a comparao feita, o cdigo no
executado pois nValor diferente de TRUE.
pg 28
Obs : Podem ser feitas avaliaes de variveis sem a utilizao de operadores, como no
exemplo acima, apenas com variveis ou expresses que retornem um tipo de dado
Lgico. Ao deixar de utilizar o sinal de igualdade (=) em expresses ou variveis que
retornem outros tipos de dados, o entendimento do cdigo ficar comprometido dificultando
a sua leitura e depurao.
Return
O comando Return pode ser utilizado para finalizar o processamento de uma funo ou
mensagem e retornar um status para o ponto da aplicao de onde foi chamado. Return
pode ser utilizado em qualquer ponto do
cdigo.
Select Case
O comando Select Case outro comando de avaliao de condies em SAL. A estrutura
If ... Else normalmente utilizada quando existem dois possveis resultados. Algumas
vezes a estrutura If ... Else utilizada para mais que dois resultados, mas o comando
Select Case se mostra mais conveniente nesses casos. A sintaxe do comando Select Case
a seguinte :
Select Case < expresso >
Case < valor >
..........
Break
Case < valor >
..........
Break
Default
..........
Break
O tipo de dado retornado pela expresso avaliada pelo Select Case deve ser numrico
inteiro. No pode ser avaliado uma expresso de outro tipo de dado como data/hora , string
ou nmero com decimais. O valor utilizado em cada comando Case deve ser um valor ou
uma expresso numrica inteira. Quando for necessrio avaliar expresses de algum tipo
de dado diferente de nmero inteiro deve ser utilizado o comando If ... Else para isso. O
Centura avalia a expresso inteira e localiza o primeiro Case que satisfaa a condio da
expresso. Quando encontra, executa o cdigo subordinado ao Case encontrado e
continua a procurar por mais algum Case que satisfaa a condio. O cdigo subordinado
clusula Default executado quando o Centura no encontra nenhum Case que
satisfaa a condio. A clusula Default no obrigatria, mas quando utilizada deve ser a
ltima do comando Select Case.
O comando Break usado para informar ao Centura que encerre a execuo do bloco de
comandos. Ao encontrar um Break num comando Case o Centura encerra a execuo de
todo o bloco do comando Case.
Se um Break for omitido num bloco Case, o Centura ir continuar executando o contedo
de todos os outros Cases que satisfaam a condio, at o fim.
A omisso do comando Break, quando utilizado corretamente, pode trazer benefcios,
observe o exemplo:
!
Considere
que
PERMISS_GERENTE
,
PERMISS_CONSULTA
PERMISS_SUPERVISOR so constantes numricas inteiras.
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 29
pg 30
Pode ser utilizado o comando Loop e While para montar laos aninhados ( nested loops ).
Neste caso torna-se extremamente til nomear os laos. Observe o cdigo :
Loop LoopExterno
.........
If Condicao
Break LoopExterno
Loop LoopInterno
.........
If Condicao
Break LoopInterno
Else If Condicao
Break LoopExterno
Operadores Matemticos
O Centura suporta os operadores matemticos que so padro entre a maioria das linguagens,
conforme a tabela abaixo :
Operador
+
*
/
=
!=
>
<
>=
<=
**
AND
OR
NOT
&
|
||
Descrio
Adio
Subtrao
Multiplicao
Diviso
Igualdade
No igual a
Maior que
Menor que
Maior que ou Igual
a
Menor que ou Igual
a
Exponenciao
AND lgico
OR lgico
Negao
Bitwise AND
Bitwise OR
Concatenao
Variveis
Um tipo de dado refere-se ao tipo do dado que um campo ou uma varivel pode armazenar. Isto
muito importante pois determina o montante de Memria de Acesso Randmico ( RAM ) que ser
reservado para isso. O Centura suporta os tipos de dados definidos SQL de acordo como o padro
ANSI 92. Isto permite a compatibilidade com uma variedade de outros produtos, incluindo
servidores de bancos de dados e outras ferramentas de desenvolvimento.
Uma varivel significa um local da memria que armazenar um determinado pedao de
informao. Algumas consideraes sobre as variveis devem ser observadas: O tipo de dado que
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 31
pode ser armazenado numa varivel. O escopo da varivel. Escopo refere-se a acessibilidade que
geralmente Local ou Global. Uma varivel Local visvel apenas na funo, objeto, ou janela que
a mesma foi definida. Uma varivel normalmente no pode ser acessada de fora do local definido.
Uma varivel local geralmente desaparece quando o objeto que a criou fechado. Isto tambm
libera a memria que havia sido ocupada.
Uma varivel global tem um alcance maior do que a varivel local ( alcance em toda a aplicao e
no apenas no form onde foi definida ) , mas h dois pontos fracos. O primeiro que a memria
ocupada pela varivel no liberada, mesmo se a varivel no estiver sendo utilizada, enquanto a
aplicao estiver sendo executada. O segundo bem mais grave, uma varivel global pode ser
acessada de qualquer local da aplicao e ter seu valor alterado sem controle.
Tipos de Dados
A tabela abaixo apresenta os tipos de dados suportados pelo Centura.
Tipo de dado
Boolean
Date/Time
File Handle
Long String
Number
SQL Handle
String
Window Handle
Descrio
Dever ser usado apenas quando for importante identificar um dos dois estados.
( on/off, yes/no, verdadeiro ou falso )
Um valor que inclui uma Data e a Hora em seu formato
Usado para apontar para um arquivo.
String maior que 254 bytes
Um nmero
Usado para apontar para um servidor de banco de dados.
Uma string.
Usado para apontar para uma instncia de um objeto sendo executado.
pg 32
Variveis do Sistema
O Centura possui algumas variveis internas, chamadas de variveis do Sistema. So variveis
que no se faz necessrio defini-las antes de utilizar. So variveis especiais. A tabela abaixo
apresenta algumas variveis do sistema e suas descries :
Variveis
- MyValue
- hWndForm
- hWndItem
- hWndMDI
- hWndNull
- wParam
- lParam
- nArgCount
- strArgArray
SqlDatabase
- SqlUser
SqlPassword
Descrio
O valor do objeto atual.
O Window Handle do objeto TopLevel atual.
O Window Handle do objeto atual.
O Window Handle do objeto MDI atual.
Eqivale a um valor tipo Window Handle nulo.
Parmetro de mensagem
Parmetro de mensagem
Conta quantos argumentos foram passados como parmetro quando a aplicao
inicia.
Vetor com os argumentos passados por parmetro na linha de comando para a
aplicao.
Indica o nome do banco de dados a ser utilizado.
Indica o nome do usurio do banco de dados.
Indica a senha do usurio do banco de dados.
Vetores
O Centura suporta vetores multidimensionais de cada um dos seus tipos de dados nativos e dos
tipos de dados definidos pelo usurio. Os vetores podem Ter suas dimenses predeterminadas na
sua definio ou podem ser dinmicos, tendo como limite a memria disponvel.
A sintaxe para a definio de um vetor mostrada abaixo :
Variables
Boolean: abStatus [10]
Number: anMeses [1:12]
String: asNomes [*]
O primeiro vetor declarado, abStatus, um vetor que poder armazenar apenas valores 1 (TRUE)
ou 0 (FALSE). Poder ter no mximo 10 elementos, entre 0 e 9.
O segundo vetor declarado, anMeses, um vetor que poder armazenar qualquer valor numrico
vlido e poder ter no mximo 12 elementos, entre 1 e 12.
O terceiro vetor, asNomes, poder armazenar apenas valores string vlidos. Este vetor dinmico,
portanto o seu nmero de elementos no tem limite.
Constantes
Constantes, assim como as variveis, podem armazenar valores. A principal diferena que
constantes armazenam informaes (como nome, salrio) , e no ponteiros internos (como file
handles ou window handles). As constantes devem ser definidas em tempo de programao, e no
mudam seus valores. Constantes so declaradas no outline na seo chamada Constants que
uma seo subordinada a seo Global Declarations.
Global Declarations
Constants
System
String: NOME = "Jos de Almeida"
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 33
Nmeros
Datas
Caixas de Dilogos
Edio
MDI
Imagens
Scroll Bar
Sistema
Combo Box e List
Box
O Centura disponibiliza uma quantidade enorme de funes, por esse motivo, mostraremos a
seguir apenas as funes utilizadas com maior freqncia. Poderamos inclusive chamar esta
relao de Funes Bsicas do Centura. Um estudo mais profundo merece ser feito abrangendo as
demais funes do Centura.
SalColorSet ( )
SalFmtFormatDateTime ( )
SalListAdd ( )
SalListClear ( )
SalListPopulate ( )
SalListQueryCount ( )
SalListQuerySelection ( )
SalListQueryTextX ( )
SalClearField ( )
SalMessageBox ( )
SalWaitCursor ( )
SalCreateWindow ( )
SalDestroyWindow ( )
SalDisableWindow ( )
SalEnableWindow ( )
SalGetItemName ( )
SalStatusSetText ( )
SalNumberToStr ( )
SalDateCurrent ( )
SalDateDay ( )
SalDateMonth ( )
SalDateYear ( )
SalIsNull ( )
SalIsValidDateTime ( )
SalSendMsg ( )
SalSendMsgToChildren ( )
SalStrLeft ( )
SalStrLength ( )
SalStrMidX ( )
SalStrTrimX ( )
SalStrUpperX ( )
pg 34
SalColorSet
Esta funo permite ao programa SAL alterar a cor de um objeto.
Sintaxe: bOk = SalColorSet ( hWnd , nPonteiro , nCor )
Onde :
hWnd o handle do objeto que ter sua cor alterada.
nPonteiro identifica que parte do objeto ter sua cor alterada. Use uma das contantes
COLOR_Index* .
nCor o nmero da cor desejada. Use uma das constantes COLOR_*.
Exemplo
Call SalColorSet( hWndItem , COLOR_IndexWindowText , COLOR_Red )
SalFmtFormatDateTime
Esta funo usada para formatar um campo do tipo DateTime.
Sintaxe: strFormatada = SalFmtFormatDateTime ( dtData , sFormato )
Onde :
dtData o campo que ter seu formato alterado.
sFormato contm a mascara de formatao a ser aplicada.
Exemplo
Set dtNovaData = SalFmtFormatDateTime ( dtData , dd/MM/YYYY )
SalListAdd
Esta funo usada para adicionar valores em combo box e list box. Utilizada na inicializao
personalizada destes objetos.
Sintaxe: nInserido = SalListAdd ( hWndLista , sTexto )
Onde :
hWndLista o handle ou o nome da lista.
sTexto o texto que ser adicionado ao objeto.
Exemplo
Set nInserido = SalListAdd ( cmbEstado , PE )
SalListClear
Esta funo usada para limpar o contedo de um combo box ou list box.
Sintaxe: bOk = SalListClear ( hWndLista )
Onde :
hWndLista o handle ou o nome da lista.
Exemplo
Set bOk = SalListClear ( cmbEstado )
SalListPopulate
Esta funo usada para preencher um combo box ou list box com o resultado de um SELECT
realizado numa tabela do banco de dados.
Sintaxe: bOk = SalListPopulate ( hWndLista , hSqlHandle, sCmdSelect )
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 35
Onde :
hWndLista o handle ou o nome da lista.
hSqlHandle o handle Sql de uma conexo com o banco de dados.
sCmdSelect o comando select.
Exemplo
Set bOk = SalListPopulate ( cmbEstado , hSql_1 , Select UF From T_UF )
SalListQueryCount
Esta funo usada para contar o nmero de elementos num combo box ou list box.
Sintaxe: nNumElementos = SalListQueryCount ( hWndLista )
Onde :
hWndLista o handle ou o nome da lista.
Exemplo
Set nNumElementos = SalListQueryCount ( cmbEstado )
SalListQuerySelection
Esta funo retorna o nmero do elemento atualmente selecionado num combo box ou list box.
Sintaxe: nNumElemento = SalListQuerySelection ( hWndLista )
Onde :
hWndLista o handle ou o nome da lista.
Exemplo
Set nNumElemento = SalListQuerySelection ( cmbEstado )
SalListQueryTextX
Esta funo retorna o texto de um determinado elemento num combo box ou list box.
Sintaxe: sTexto = SalListQueryTextX ( hWndLista , nNumElemento )
Onde :
hWndLista o handle ou o nome da lista.
nNumElemento o nmero do elemento que ter seu texto recuperado.
Exemplo
Set sTexto = SalListQueryTextX ( cmbEstado , 0 )
SalClearField
Esta funo usada para limpar um objeto do tipo DataField, ComboBox, MultilineField.
Sintaxe: bOk = SalClearField ( hWndObjeto )
Onde :
hWndObjeto o handle ou o nome do objeto.
Exemplo
Set bOk = SalClearField ( cmbEstado )
pg 36
SalMessageBox
Esta funo usada para mostrar uma caixa de dilogo ao usurio e espera por uma deciso do
mesmo. Podendo ser configurado os botes que so mostrados ao usurio.
Sintaxe: nEscolha = SalMessageBox ( sMsg , sTitulo , nFlags )
Onde :
sMsg a mensagem que aparecer para o usurio na caixa de dilogo.
sTitulo o ttulo da caixa de dilogo.
nFlags um valor numrico que determina o estilo da caixa de dilogo. Os estilos podem ser
concatenados utilizando-se o operador | . O Centura possui algumas constantes que
representam as possveis combinaes de estilos. ( MB_* )
Exemplo
Set bOk = SalMessageBox ( Confirma excluso do registro?, Excluso, MB_YesNo )
SalWaitCursor
Esta funo usada para ligar e desligar o indicador visual Ocupado do Windows.
Sintaxe: bOk = SalWaitCursor ( bFlag )
Onde :
bFlag indica se deve ser ligado o cursor como Ocupado, ou se deve ser desligado.
Exemplo
Set bOk = SalWaitCursor ( TRUE )
SalCreateWindow
Esta funo usada para criar uma instncia de um objeto tipo top level ( MDI Window, Form
Window e Table Window )
Sintaxe: hWnd = SalCreateWindow (NomeObj , hWndPai , Parametro1, Parametro2, ....... )
Onde :
NomeObj o nome dado pelo programador ao objeto que ser criado.
hWndPai o handle do objeto Pai do objeto que ser criado.
Parametro1 Parametro2 ... so parmetros opcionais que dependem das definies na seo
Parameters do objeto que est sendo criado.
Exemplo
Call SalCreateWindow ( frmClientes , hWndMDI )
SalDestroyWindow
Esta funo usada para fechar uma janela tipo top level. ( Form Window, MDI Window, Dialog
Box e Table Window ) Fechar uma janela o mesmo que encerrar sua instncia na aplicao.
Todos os recursos ocupados por esta janela so liberados.
Sintaxe: bOk = SalDestroyWindow ( hWndObj )
Onde :
hWndObj o handle do objeto.
Exemplo
Call SalDestroyWindow ( hWndMDI )
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 37
SalDisableWindow
Esta funo usada para desabilitar um objeto. Desabilitar um objeto significa deix-lo indisponvel
para utilizao do usurio.
Sintaxe: bOk = SalDisableWindow ( hWndObj )
Onde :
hWndObj o handle do objeto.
Exemplo
Call SalDisableWindow ( hWndItem)
SalEnableWindow
Esta funo usada para habilitar um objeto. Habilitar um objeto significa deix-lo disponivel para
utilizao do usurio.
Sintaxe: bOk = SalEnableWindow ( hWndObj )
Onde :
hWndObj o handle do objeto.
Exemplo
Call SalEnableWindow ( hWndItem)
SalGetItemName
Esta funo usada para obter o nome de um objeto.
Sintaxe: bOk = SalGetItemName ( hWndObj , sNome )
Onde :
hWndObj o nome ou o handle do objeto.
sNome uma string que representa o nome do objeto
Exemplo
Call SalGetItemName ( hWndItem , sNome )
SalStatusSetText
Esta funo usada para mostrar uma mensagem na barra de status de uma janela tipo top level.
Sintaxe: bOk = SalStatusSetText ( hWndJanela , sMsgTexto )
Onde :
hWndJanela o nome ou o handle do top level.
sMsgTexto a mensagem a ser mostrada na barra de status.
Exemplo
Call SalStatusSetText ( hWndForm , Sair do sistema.)
SalNumberToStr
Esta funo usada para converter um nmero numa string.
Sintaxe: nTam = SalNumberToStr ( nNumero , nDecimais , sNumero )
Onde :
nNumero o nmero a ser convertido.
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 38
pg 39
SalIsNull
Esta funo retorna TRUE quando o campo passado como parmetro no contm nenhum valor,
est nulo.
Sintaxe: bOk = SalIsNull ( hWndField )
Onde :
hWndField o nome ou o handle do objeto.
Exemplo
Set bOk = SalIsNull ( dfNome )
SalIsValidDateTime
Esta funo usada para validar se o valor de um campo corresponde a um valor Date/Time
vlido.
Sintaxe: bOk = SalIsValidDateTime ( hWndObj )
Onde :
hWndObj o nome ou o handle do campo.
Exemplo
Set bOk = SalIsValidDateTime ( dtDATA )
SalSendMsg
Esta funo usada para enviar uma mensagem a um determinado objeto.
Sintaxe: bOk = SalSendMsg (hWndObj , nMsg , nwParam , nlParam )
Onde :
hWndObj o handle ou o nome do objeto que receber a mensagem.
nMsg a mensagem que ser enviada.
nwParam Parmetro numrico
nlParam Parmetro numrico
Exemplo
Set bOk = SalSendMsg ( df1 , SAM_Create , 0 , 0 )
SalSendMsgToChildren
Esta funo usada para enviar uma mensagem a todos os objetos subordinados a um toplevel.
Sintaxe: bOk = SalSendMsgToChildren ( hWndTopLevel , nMsg , nwParam , nlParam )
Onde :
hWndTopLevel o handle ou o nome do objeto Top Level.
nMsg a mensagem que ser enviada.
nwParam Parmetro numrico
nlParam Parmetro numrico
Exemplo
Set bOk = SalSendMsgToChildren ( hWndForm , SAM_Create , 0 , 0 )
SalStrLeft
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 40
Esta funo usada para extrair uma cadeia de caracteres de uma varivel tipo string. A extrao
sempre comea da posio mais a esquerda da cadeia de caracteres.
Sintaxe: nTam = SalStrLeft ( sOrigem, nTamanho, sDestino )
Onde :
sOrigem a varivel que ter uma parte sua extrada.
nTamanho o nmero de caracteres a ser extrado a partir da posio 0 (zero).
sDestino a cadeia de caracteres que foi efetivamente extrada.
Exemplo
Set sOrigem = Abcdefgh
Call SalStrLeft ( sOrigem , 5 , sDestino )
! sDestino = Abcde
SalStrLenght
Esta funo retorna o tamaho de uma string.
Sintaxe: nTam = SalStrLenght ( sTexto )
Onde :
sTexto o texto que ser avaliado.
Exemplo
Set sTexto = Abcd
Set nTam = SalStrLenght ( sTexto )
! nTam = 4
SalStrMidX
Esta funo retorna um pedao de uma string. A partir da posio nInicio, nTam letras.
Sintaxe: sDestino = SalStrMidX ( sOrigem , nInicio , nTam )
Onde :
sOrigem contm o texto inteiro.
nInicio indica a posio inicial a ser recortada.
nTam o nmero de letras a ser recortado da string.
Exemplo
Set sOrigem = AaBbCcDdEeF
Set sDestino = SalStrMidX ( sOrigem , 2 , 4 )
! sDestino = BbCc
SalStrTrimX
Esta funo usada para eliminar os espaos mltiplos e espaos em branco do incio e fim de
uma string.
Sintaxe: sDestino = SalStrTrimX ( sOrigem )
Onde :
sOrigem contm o valor string que ter os espaos eliminados.
Exemplo
Set sOrigem = a b c
def
Set sDestino = SalStrTrimX ( sOrigem )
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 41
! sDestino = a b c d e f
SalStrUpperX
Esta funo usada para converter todas as letras passadas por parmetro em suas equivalentes
maisculas.
Sintaxe: sTextoMaiuscula = SalStrUpperX ( sTextoNormal )
Onde :
sTextoNormal o texto que ser convertido para letras maisculas.
Exemplo
Set sTextoMaiuscula = SalStrUpperX ( Roberto Carlos )
Funes VisualToolchest
Alm destas funes que so nativas do Centura, acompanha o pacote do produto uma biblioteca
chamada Visual Toolchest que contm outro conjunto de funes extremamente teis,
aproximadamente 150 funes. As funes da biblioteca Visual Toolchest so normalmente
chamadas de funes Vis, pelo seu prefixo. Observe a tabela abaixo onde so mostradas as
categoria das funes Vis :
Funes para tratamento de vetores
Funes para depurao
Funes para tratamento de arquivos DOS
Funes para gerenciamento de arquivos
Funes para gerenciamento de Fontes
Funes para tratamento de ListBoxes
Funes para tratamento de Menus
Funes para Caixas de Mensagens
Funes Genricas
Funes Numricas
Funes para tratamento de imagens
Funes para tratamento dos arquivos INI do Windows
Funes para tratamento de cadeia de caracteres
Funes para serem usadas junto ao objeto Table Window
Funes de Janelas em geral.
Os Objetos do Centura
O Centura dispes de um conjunto de objetos bsicos que so normalmente suficientes para a
implementao das solues necessrias aos desenvolvedores no seu dia-a-dia. Estes objetos so
todos apresentados ao desenvolvedor na Paleta de Controles, que iremos analisar em detalhes
agora.
Os objetos do Centura so os elementos utilizados para a criao da interface com o usurio.
Estes elementos dividem-se em trs tipos :
Window Objects
Background Itens
Menus
Personalizvel
Sim
Sim
No
Codificvel
Sim
No
Sim
Os Windows Objects so todos os elementos grficos que podem enviar e receber mensagens, na
realidade so os objetos que interferem no fluxo da aplicao. Estes objetos tm alguma funo
LAIRTON NOGUEIRA DE ALMEIDA JNIOR
Lairton@CenturaExplorer.com http://www.CenturaExplorer.com
pg 42
lgica no programa. Estes objetos possuem algum cdigo associado a eles. No Centura estes
objetos possuem uma identificao nica na aplicao, a esta identificao damos o nome de
handles.
Os Window Objects podem ser
TopLevel Window So os MDI Window , Form Window , Dialog Box e Table Window.
Child Window So os outros objetos que so esto sempre subordinados a algum objeto
TopLevel. Jamais um objeto Child existir sem que exista um objeto Top Level.
pg 43
Um objeto MDI o nico que pode conter outros objetos Top Level no seu interior. Normalmente
usado para gerenciar vrias janelas abertas simultaneamente. Ou seja, o MDI controla vrias
outras janelas abertas podendo distribuir mensagens entre estas janelas. Quando um MDI
encerrado, automaticamente todas as suas janelas filhas so encerradas tambm. Objetos tipo
MDI so normalmente utilizados para servirem de menu principal das aplicaes que requerem
muitas janelas abertas simultaneamente.
pg 44
Form Window
Um objeto Form Window geralmente criado como filho de algum MDI, podendo trocar
informaes com outros forms. normalmente utilizado para a entrada de dados, consultas e
visualizao de relatrios. Um Form Window pode ser maximizado, minimizado e ter seu tamanho
alterado pelo usurio em tempo de execuo. Pode tambm apresentar uma barra de ferramentas
em qualquer um dos seus lados, e uma barra de status.
Obs : Quando um Form Window criado como filho de um MDI a sua barra de status no
visualizada no Form Window mas sim no MDI Window. Este um comportamento padro do
Windows, no requerendo nenhum esforo de programao do desenvolvedor.
pg 45
Dialog Box
Os Dialog Box no possuem a caracterstica de ser filho de algum outro objeto. Sempre mostrado
por cima das demais janelas, e estando ativo um Dialog Box nenhum elemento de outra janela
pode ser acionado. O Dialog Box no pode ser minimizado, maximizado e ter seu tamanho
alterado em tempo de execuo. Tambm possuem barras de ferramentas e barra de status.
Obs : J que os Dialog Box no so filhos de nenhum objeto, o comportamento da barra de status
no similar ao comportamento encontrado no Form Window, a sua barra de status visualizada
no prprio Dialog Box. Este tambm um comportamento padro do Windows, no requerendo
nenhum esforo de programao do desenvolvedor.
pg 46
Table Window
pg 47
Group Box Usado para agrupar informaes logicamente relacionadas. No pode ser
programado, ou seja, no responde a nenhuma ao do usurio, clicks, edio etc. Este objeto no
possui Message Actions.
Frame Utilizado para fazer molduras. No pode ser programado, ou seja, no responde a
nenhuma ao do usurio, clicks, edio etc. Este objeto no possui Message Actions.
pg 48
Line Utilizado para fazer linhas. No pode ser programado, ou seja, no responde a nenhuma
ao do usurio, clicks, edio etc. Este objeto no possui Message Actions.
Data Field um dos objetos que podem ser utilizados para a digitao e visualizao de
informaes na tela. Um datafield pode receber informaes tipo Number, Date/Time, String e Long
String.
pg 49
Child Table executa todas as operaes e herda todas as caractersticas do objeto TopLevel
Table Window exceto a possibilidade de Ter suas dimenses alteradas pelo usurio em temo de
execuo. Numa Table Window possvel carregar dados do banco de dados e ento permitir que
o usurio os edite nas prprias clulas. um objeto proprietrio da Centura para edio de dados
em forma tabular.
Column Cada coluna do banco de dados mostrada numa table window num objeto Column.
Pode ser customizada pelo usurio em tempo de execuo tendo sua largura alterada. Pode
mostrar informaes tipo string, date/time, number e long string.
Custom Control utilizado para que objetos de terceiros possam ser utilizados no Centura.
Pushbutton utilizado normalmente para se ativar alguma ao no sistema, so os botes de
comando.
pg 50
Check Box Diferentemente dos Radio Buttons, os Check Boxes permitem mltiplas escolhas.
List Box Normalmente os ListBoxes so utilizados para mostrar uma lista de dados que
geralmente vem do banco de dados. Permite tambm a seleo de vrios elementos da lista.
pg 51
Combo Box Normalmente os ListBoxes so utilizados para mostrar uma lista de dados que
geralmente vem do banco de dados. Difere do ListBox no visual, pois ocupa o espao de um
datafield e permite apenas a seleo de um elemento.
Graph O objeto para montagem de grficos dos mais diversos tipos como barras, pizzas, linhas
blocos etc. Todos com efeitos 2D e 3D. Pode ser personalizado em tempo de execuo.
Vertical Scroll Bar Utilizado para fazer rolagem vertical de algo que precise de mais espao para
ser visualizado, como uma figura. Tambm utilizado para incrementar/decrementar contadores.
OLE2.0 a interface do Centura para que o programador incorpore ao seu aplicativo objetos
utilizando a tecnologia OLE 2.0.
Quick Object Permite que o programador escolha alguns dos QuickObjects disponveis no
ambiente.
Menus
Os menus so de grande utilidade num aplicativo, atravs deles que o usurio chama por uma
determinada janela. Os menus no podem receber mensagens, podem apenas disparar
mensagens. O Centura oferece ao desenvolvedor dos seguintes tipos de menus :
Menu Item cada opo de um menu.
Menu Row a linha utilizada para separar um Menu Item do outro. No tem ao associada se
acionado.
Popup Menu na verdade um outro menu, formado de outros Popup Menus ou de Menu Itens.
pg 52
Windows Menu um tipo de menu que automaticamente mostra os nomes das janelas que esto
abertas e que sejam filhas da janela em que o menu est localizado. Tornando fcil a mudana de
uma janela para outra.
pg 53
Mensagens do Centura
Sinais que desencadeiam os procedimentos em objetos do SQLWindows, sinais esses emitidos
com a ocorrncia de eventos. A presso de um push button pelo usurio, por exemplo um
evento. Quando um evento para o qual o Centura est preparado para receber ocorre ele envia a
mensagem associada a esse evento para a seo Message Actions do objeto que sofreu o evento.
No caso de um push button, a mensagem de click (SAM_Click) enviada. Caso o programador
tenha codificado alguma ao para ser executada ao receber esta mensagem, esse cdigo ento
executado.
Parmetros em Mensagens : wParam e lParam
wParam e lParam so como parmetros de uma funo e so utilizados pelas mensagens para
armazenar informaes. wParam uma varivel tipo word e lParam tipo longword.
Quando o usurio faz um click com o mouse num objeto tipo picture, enviado ao objeto uma
mensagem de click onde wParam e lParam contm as coordenadas x e y da posio da picture
que recebeu o click.
O Centura est preparado para receber uma srie de mensagens dependendo do evento que
ocorrer. Estas mensagens so chamadas Mensagens do Sistema e esto listadas abaixo junto a
uma breve descrio:
SAM_AnyEdit
SAM_AppExit
SAM_AppStartup
SAM_CacheFull
SAM_CaptionDoubleClick
SAM_Click
SAM_Close
SAM_ColumnSelectClick
SAM_CornerClick
SAM_CornerDoubleClick
SAM_DragExit
SAM_DragMove
SAM_DragNotify
SAM_DragStart
SAM_DropDown
SAM_DropFiles
SAM_EndCellTab
SAM_FetchDone
pg 54
SAM_FetchRow
SAM_FieldEdit
SAM_Help
SAM_KillFocus
SAM_Print
SAM_ReportFetchInit
SAM_ReportFetchNext
SAM_ReportFinish
SAM_ReportNotify
SAM_ReportStart
SAM_RowHeaderClick
SAM_RowHeaderDoubleClick
SAM_RowValidate
SAM_ScrollBar
SAM_SetFocus
SAM_SqlError
SAM_Timer
SAM_Validate
pg 55
enviada
aps
a
mensagem
SAM_ReportFetchInit para indicar que o Report Builder est
pronto para receber da aplicao a prxima linha de dados.
enviada para o objeto top-level que iniciou o relatrio.
Esta mensagem enviada quando o relatrio terminar.
enviada para o objeto top-level ou para o MDI que iniciou o
relatrio. Quando cada bloco do relatrio formatado e impresso
no buffer da pgina o Report Builder envia para a aplicao esta
mensagem informando a posio em que se encontra no
relatrio.
enviada para o objeto top-level ou para o MDI que iniciou o
relatrio logo aps a aplicao chamar o relatrio com as
funes SalReportView ou SalReportPrint, para indicar que o
relatrio est comeando.
enviada para a table window quando o usurio clica no header
da linha.
enviada para a table window quando o usurio d um doubleclick no header da linha.
enviada para a table window antes do foco da linha mudar,
isso permite que a linha seja validada.
enviada para a barra de scroll horizontal ou vertical quando o
usurio move a barra usando o mouse ou as teclas de atalho.
enviada para o check box, combo box, data field, list box,
multiline text field, push button, radio button, scroll bar, ou table
window column quando recebem o foco.
enviada para a seo Application Actions do outline quando
um comando SQL falha.
enviada para a seo Application Actions, aos top-level
window e seus filhos a cada n milisegundos, conforme
especificado em SalTimerSet.
enviada aos data field, multiline field, combo box, e column
quando o usurio modificar o valor do objeto e tentar mover o
foco para fora do objeto.
pg 56
Obs : Consulte o manual do Centura Team Developer para obter informaes mais detalhadas
sobre as mensagens aqui mostradas.
O programador deve basear-se na mensagem SAM_User para criar suas prprias mensagens.
Assim :
Constants
User
Number: PAM_Habilita = SAM_User + 1
Number: PAM_Limpa = SAM_User + 2
possvel tambm utilizar as mensagens do Windows em aplicaes Centura. Para isso basta
definir cada mensagem na seo Constants conforme mostrado abaixo :
Constants
System
Number: WM_MOUSEMOVE = 0x0200
pg 57
pg 58
pg 59
pg 60
O Login do Sistema.
Esta tela possui o seguinte comportamento : Assim que o usurio executa o sistema, esta janela de
login aparece e solicita a digitao do nome do usurio e da senha. Sem estas informaes o
sistema no pode ser acionado. Caso o usurio no digite corretamente uma senha e um nome de
usurio vlidos o sistema emitir uma mensagem de erro. Permanece na janela de login at que o
usurio informe corretamente um usurio e senha e clique no boto Ok, ou que desista e clique no
boto Cancelar.
Observe abaixo, o cdigo completo da caixa de dilogo dlgLogin.
Dialog Box: dlgLogin
Title: Login ao Sistema
Description:
Tool Bar
Contents
Background Text: Nome
Data Field: dfNome
Background Text: Senha
Data Field: dfSenha
Format: Invisible
Pushbutton: pbOK
Title: &Ok
Message Actions
On SAM_Click
Set SqlDatabase = "ISLAND"
Set SqlUser = dfNome
Set SqlPassword = dfSenha
When SqlError
Call SalMessageBox( "Verifique o nomedo usurio e a senha", "Erro no login", MB_Ok )
Return FALSE
If SqlConnect( hSql )
Set prhSql = hSql
Call SalEndDialog( hWndForm , TRUE )
Pushbutton: pbCancelar
Keyboard Accelerator: Esc
Message Actions
On SAM_Click
Call SalEndDialog( hWndForm , FALSE )
Functions
Window Parameters
Receive Sql Handle: prhSql
Window Variables
Sql Handle: hSql
Message Actions
pg 61
O Menu Principal.
O Menu Principal a janela de onde todas as funes do sistema so acionadas. Usaremos uma
janela tipo MDI Window que apropriada para esta funo.
Esta tela possui o seguinte comportamento : Somente aps o sucesso no login o mdiPrincipal
dever ser mostrado. Em seguida todos os menus devem ser disponibilizados para o usurio.
Assim que o usurio escolher uma funo num dos menus, a janela correspondente deve ser
acionada.
Observe abaixo, o cdigo completo do mdiPrincipal.
MDI Window: mdiPrincipal
Description:
Named Menus
Menu
Popup Menu: Cadastros
Menu Item: Empresas
Status Text: Ativa a tela de manuteno de Empresas.
Menu Settings
Enabled when: NOT SalFindWindow ( hWndMDI , "frmEmpresa" )
Menu Actions
Call SalCreateWindow( frmEmpresa, hWndMDI )
Menu Item: Contatos
Status Text: Ativa a tela de manuteno de Contatos.
Menu Settings
Enabled when: NOT SalFindWindow ( hWndMDI , "frmContato" )
Menu Actions
Call SalCreateWindow( frmContato, hWndMDI )
Menu Separator
Menu Item: Faturas
Status Text: Ativa a tela de manuteno de Faturas.
Menu Settings
Enabled when: NOT SalFindWindow ( hWndMDI , "frmFaturas" )
Menu Actions
Call SalCreateWindow( frmFaturas , hWndMDI )
Menu Separator
Menu Item: Sair
pg 62
pg 63
Esta tela possui o seguinte comportamento : Inicialmente o usurio pode realizar uma consulta,
caso saiba o cdigo da empresa a ser consultada basta digitar este cdigo no campo Cdigo e
ento clicar no boto Procurar. Feito isso os dados da empresa sero mostrados na tela.
Utilizando os botes da barra de ferramentas o usurio pode visualizar o primeiro registro com
muita facilidade, basta clicar no boto identificado pelo smbolo |<. Para ver o ltimo registro
basta clicar no boto com o smbolo >|. Dessa forma fica bastante flexvel a navegao atravs
de todos os registros da tabela. Nesse momento o usurio pode alterar os campos que julgar
necessrio e ento clicar no boto Gravar. Da mesma forma possvel incluir uma nova
empresa, o usurio preenche os campos e aciona o boto Gravar. O Boto Gravar distingue o
momento correto de executar uma incluso de uma alterao. Para excluir uma empresa basta
fazer uma consulta, localizar a empresa desejada e clicar no boto Excluir.
A impresso do relatrio no nenhum relacionamento com os dados que estiverem sendo
mostrados no momento. O relatrio impresso sempre com todas as empresas existentes no
cadastro.
Observe abaixo, o cdigo fonte completo desta tela :
Form Window: frmEmpresa
Accesories Enabled? Yes
Display Settings
Automatically Created at Runtime? No
Tool Bar
Contents
Pushbutton: pbPRIMEIRO
Message Actions
On SAM_Click
If nTotalLinhas < 2
Call SalMessageBox( MSG_ErrNAV , "Err", MB_Ok )
pg 64
pg 65
pg 66
pg 67
O comportamento desta tela parecido com a tela de Empresas, porm no existe a consulta, uma
vez que os dados j so mostrados todos na table window. Um outro recurso interessante que
demonstrado a utilizao da coluna de Empresa, que foi programada e tem o comportamento
de um objeto combobox.
Observe o cdigo fonte :
Table Window: frmContatos
Display Settings
Initial State: Maximized
Description:
Named Menus
Menu
Tool Bar
Contents
Pushbutton: pbNOVALINHA
Message Actions
On SAM_Click
Call fNovaLinha( )
Pushbutton: pbATUALIZAR
Message Actions
On SAM_Click
Call SqlPrepare( hSqlContatos, "
INSERT INTO CONTACT (
CONTACT.COMPANY_ID ,
CONTACT.CONT_EMAIL ,
CONTACT.CONT_FAX ,
CONTACT.CONT_FIRST_NAME ,
CONTACT.CONT_LAST_NAME ,
CONTACT.CONT_PHONE ,
CONTACT.CONT_TITLE ,
CONTACT.CONTACT_ID )
VALUES (
:frmContatos.colCOMPANY_ID ,
:frmContatos.colCONT_EMAIL ,
:frmContatos.colCONT_FAX ,
:frmContatos.colCONT_FIRST_NAME ,
:frmContatos.colCONT_LAST_NAME , :frmContatos.colCONT_PHONE ,
:frmContatos.colCONT_TITLE ,
:frmContatos.colCONTACT_ID ) " )
Call SalTblDoInserts( hWndForm , hSqlContatos, TRUE )
!
Call SqlPrepare( hSqlContatos, "
UPDATE CONTACT SET
pg 68
pg 69
Actions
Call SalTblSetFocusCell( hWndForm, SalTblInsertRow( hWndForm,TBL_MaxRow), colCONTACT_ID, -1, -1)
Function: fPopulate
Description:
Returns
Parameters
Static Variables
Local variables
Actions
Call SalTblPopulate( hWndForm , hSqlContatos, "
SELECT
CONTACT.COMPANY_ID ,
CONTACT.CONT_EMAIL ,
CONTACT.CONT_FAX ,
CONTACT.CONT_FIRST_NAME ,
CONTACT.CONT_LAST_NAME ,
CONTACT.CONT_PHONE ,
CONTACT.CONT_TITLE ,
CONTACT.CONTACT_ID ,
COMPANY.COMPANY_NAME
INTO
:frmContatos.colCOMPANY_ID ,
:frmContatos.colCONT_EMAIL ,
:frmContatos.colCONT_FAX ,
:frmContatos.colCONT_FIRST_NAME ,
:frmContatos.colCONT_LAST_NAME ,
:frmContatos.colCONT_PHONE ,
:frmContatos.colCONT_TITLE ,
:frmContatos.colCONTACT_ID ,
:frmContatos.colCOMPANY_NAME
FROM CONTACT , COMPANY
WHERE
CONTACT.COMPANY_ID = COMPANY.COMPANY_ID "
, TBL_FillAll )
Window Parameters
Window Variables
Sql Handle: hSqlContatos
Message Actions
On SAM_Create
Call SqlConnect( hSqlContatos )
Call fPopulate( )
On SAM_RowHeaderDoubleClick
Call SalTblSetRowFlags( hWndForm , lParam , ROW_MarkDeleted, TRUE )
On SAM_RowHeaderClick
Call SalTblSetRowFlags( hWndForm , lParam , ROW_MarkDeleted, FALSE )
pg 70
pg 71
6. Dynalib
6.. Dynalib
1.. Conceito
2.. Implementando Dynalib
Conceito
Uma Dynalib um mdulo compilado com funes e objetos que so utilizados dinamicamente por
outras aplicaes em tempo de execuo. Uma Dynalib um tipo de arquivo intermedirio entre
uma APL e uma DLL. Assim como uma APL, possvel inclu-la numa aplicao e utilizar alguns
de seus recursos. A diferena de uma Dynalib em relao a uma APL que nem todo o cdigo
fonte da biblioteca compartilhado para reutilizao. Assim como uma DLL, o seu contedo s
carregado para a memria quando o aplicativo requer algum recurso que pertence a Dynalib, isto j
em tempo de execuo. A principal diferena entre uma Dynalib e uma DLL que a Dynalib um
formato de arquivo proprietrio do Centura, no sendo possvel sua utilizao em outros ambientes
de desenvolvimento.
Podem ser compartilhados numa Dynalib :
As funes globais
As variveis globais
Objetos top-level e suas funes
Objetos MDI, suas funes e seus objetos child.
As vantagens na utilizao de Dynalibs so :
Desenvolvimento Modular. Voc pode separar sua aplicao em mdulos distintos (dynalibs),
onde cada mdulo dedica-se a realizar uma determinada tarefa.
Economia de Recursos. Voc precisar de menos espao para distribuir suas aplicaes.
Atualizao Modular. possvel recompilar uma biblioteca depois que uma aplicao j encontrase em produo, sem recompilar a aplicao em si.
Segurana de Cdigo Fonte. possvel a distribuio de bibliotecas escritas em SAL sem que o
cdigo fonte seja revelado.
Compilao Rpida. As dynalibs no so compiladas a cada vez que a aplicao , isso reduz
drasticamente o tempo de abertura dos programas e tambm da compilao.
Obs: No desenvolvimento de grandes aplicativos, provvel que alguns limites internos do Centura
sejam atingidos. Por exemplo a tabela de smbolos, o espao para as strings, o nmero de objetos
entre outros. Cada dynalib possui seus prprios recursos e so independentes do restante da
aplicao. Isso pode ajudar a evitar alguns limites impostos pelo Centura.
pg 72
Implementando Dynalib
Para a gerao de uma dynalib o primeiro passo identificar quais os itens que sero exportados,
identific-los e compilar a biblioteca ativando a gerao da dynalib. Observe a definio da
constante e a declarao da funo interna Get_Versao() que ir recuperar o valor da constante
DYNALIB_VERSAO. Observe tambm que a frente do nome da funo est a palavra chave para
que o Centura entenda quais elementos sero exportados na gerao da dynalib , ! __exported.
Atravs da caixa de dilogo Build Settings ( menu Project / Build Settings... ) feita a
configurao do Centura Builder para que seja gerada a dynalib.
pg 73
Observe na figura abaixo que a dynalib foi includa numa aplicao e que a funo Get_Versao()
aparece no outline da aplicao. O cdigo fonte da funo no visualizado. Assim como o
programador no faz a menor idia de que a constante DYNALIB_VERSAO existe.
pg 74
pg 75
7. Gerao do Executvel
Gerao do Executvel
A gerao do executvel com o Centura Builder extremamente simples, basta acionar o menu
Project / Build : app_curso.exe.
Lembre-se que a aplicao precisar estar livre de erros de compilao.
Atravs da caixa de dilogo Build Setting pode ser configurado a gerao do executvel, seu path
e o cone da aplicao.
O executvel gerado pelo Centura no independente, ou seja, o executvel sozinho no o
suficiente para que a aplicao seja executada corretamente pelo usurio. Alguns cuidados devem
ser tomados :
pg 76
pg 77
8. O Report Builder
8.. O Report Builder
1.. Fundamentos do Report Builder.
2.. Funes SALReport*
3.. Definindo layouts.
O Report Builder
O Report Builder um poderoso gerador de relatrios e faz parte do pacote Centura Team
Developer. uma ferramenta de fcil utilizao alm de ser um gerador de relatrios padro
WYSIWYG (what you see is what you get). No Report Builder voc desenha o relatrio utilizando
as ferramentas disponveis na paleta de objetos e ento salva o layout como um template.
Posteriormente, o relatrio ser linkado aos dados que podem vir de um banco de dados padro
SQL, atravs do Centura Bulder, para ento produzir relatrios com qualidade comercial.
Fundamentos do Report Builder.
O ambiente de desenvolvimento de relatrios mostrado na figura abaixo.
reas do ReportBuilder
pg 78
contedo do campo.
Boto para ativar o editor de frmulas
Combobox para configurar a formatao do campo.
Seo
do Descrio
Relatrio
Report Header
o cabealho que dever aparecer apenas no incio do relatrio, antes da
primeira pgina de dados.
Page Header
o cabealho que ser mostrado em todas as pginas do relatrio,
normalmente utilizado para mostrar a data, hora, nmero da pgina e algumas
informaes sobre o relatrio.
Detail Block
corresponde a cada linha de dados que chega da fonte dos dados.
Page Footer
impresso no rodap de cada pgina.
Report Footer
impresso apenas quando o relatrio encerra. Muito til para se fazer um
resumo do relatrio.
A paleta de controles possui algumas ferramentas que podem ser colocadas em vrias sees do
relatrio, assim como no Centura, o relatrio vai sendo montado a cada objeto nele colocado.
Os objetos disponveis so :
cone
objeto
do Nome
Selector
Background Text
Field
Box
Descrio
Destaca um objeto no modelo para que seja executada alguma
operao com o mesmo, como mudar a fonte. similar ao
Selector do Centura Builder.
Similar ao objeto Background Text do Centura Builder. Pode
ser usado para definir algum literal caractere, rtulos e
cabealhos de colunas no relatrio.
Similar ao datafield do Centura Builder. Provavelmente este
seja o objeto mais utilizado do Report Builder. Normalmente
utilizado para fazer um link direto com uma coluna do banco de
dados ou para uma frmula.
Similar ao frame do Centura Builder. Seu uso estritamente
cosmtico.
pg 79
O Editor de Frmulas
O Report Builder possui um editor de frmulas para que seja possvel definir frmulas para os
dados que chegam da aplicao. O editor de frmulas possui uma grande variedade de funes
agrupadas nas seguintes categorias :
pg 80
Obs : Lembre-se estas funes atuam nos dados depois que estes j passaram pelo Centura
Builder. Portanto, existem duas oportunidades de transformao dos dados ; usando as funes da
linguagem SAL no Centura Builder e usando estas funes prprias do Report Builder. No
esquecendo que existe uma terceira oportunidade, a recuperao no banco de dados via comando
SQL. H uma grande abertura para que os dados sejam trabalhados amplamente,
SQL_SAL_ReportWindows, entre o momento em que o dado requisitado do banco de dados at
sua impresso numa impressora.
A comunicao Centura Builder x Report Builder
O primeiro passo foi descrito acima, desenhar e salvar (*.QRP) o template do relatrio. Agora
precisamos invocar e enviar os dados a partir do Centura Builder. Isso feito atravs das funes
SalReport* que so usadas para associar um template com os dados e iniciar a impresso do
relatrio. O relatrio se comunica com o Centura Builder atravs utilizando-se de mensagens.
Cada vez que o Centura Builder termina de processar uma mensagem, ele envia ao Report Builder
uma resposta conhecida para que o prximo passo seja dado. Assim funciona a comunicao
entre o Centura Builder e o Report Builder, assim so processados os relatrios.
Funes SAL utilizadas para imprimir ou visualizar um relatrio :
Funo
SalReportCreate
SalReportPrint
SalReportView
SalReportTableCrea
te
SalReportTableView
SalReportTablePrint
Descrio
Cria um template de relatrio, linkado s variveis do Centura Builder
Envia diretamente um template de relatrio para impressora.
Permite que o relatrio seja pre-visualizado na tela antes de ser impresso.
Cria um template de relatrio, linkado s colunas de uma table window do
Centura Builder
Permite que o relatrio seja pre-visualizado na tela antes de ser impresso.
Baseia-se nos dados presentes numa table window.
Envia diretamente um template de relatrio para impressora. Baseia-se nos
dados presentes numa table window.
A troca de mensagens e dados entre o Centura Builder e o Report Builder mostrada abaixo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CB
RB
RB
RB
CB
RB
CB
RB
CB
RB
CB
RB
CB
pg 81
Todo o processamento responsvel pela transferncia dos dados entre banco de dados at o
relatrio descrito entre os itens 10 e 16. Forma-se um loop entre estes processos at que o
Centura Builder retorno FALSE (item 16) e ento o Report Builder encerra o relatrio.
O dilogo entre o Centura Builder e o Report Builder a cada troca de mensagem :
Mensagem
SAM_ReportStart
SAM_ReportFetchInit
SAM_ReportFetchNext
SAM_ReportNotify
SAM_ReportFinish
pg 82
pg 83
9. Centura e a OOP
9. Centura e a OOP
9.1.. A implementao da OOP no Centura.
9. Programao Orientada a Objetos
O Centura implementa uma srie de recursos tpicos de uma linguagem orientada a objetos.
Podemos afirmar seguramente que o Centura uma linguagem orientada a objetos. Mostraremos
nos exemplos a seguir como implementar alguns destes recursos.
Com a programao orientada ao objeto torna-se possvel :
*
*
*
A definio de classes
Criar classes derivadas de classes j existentes.
Criar objetos destas classes.
Objetos
Um objeto uma entidade de software que combina :
Dados que representam um objeto.
Cdigo procedural que obtm ou modifica os dados de um objeto.
Um objeto pode representar :
Um conceito tangvel como uma janela.
Um conceito abstrato como uma conta bancria.
Um objeto uma instncia de uma classe. Um objeto contm as informaes e o comportamento
da classe origem.
Classes
Uma classe um molde para um objeto. Numa classe voc define a estrutura de dados e o
comportamento que sero compartilhados mais tarde, quando voc criar instncias dessa classe.
Voc define o mesmo comportamento e a mesma estrutura de dados para os objetos sem precisar
duplicar o cdigo para cada um dos objetos. Os objetos de uma classe compartilham os mesmos
dados e os mesmos comportamentos,mas cada objeto possui seus prprios valores para os dados.
Herana
A herana permite que voc defina uma nova nos moldes de uma classe j existente. Uma nova
classe que voc deriva de uma classe base herda o comportamento e a estrutura de dados da
classe base. Assim, uma classe derivada pode :
Expandir a classe base acrescentando novos dados e comportamentos.
Modificar um comportamento de uma classe redefinindo o comportamento herdado.
Desenvolvendo Classes e Objetos.
Siga estas instrues genricas para desenvolver classes e objetos :
pg 84
pg 85
pg 86
pg 87
Todos os membros da equipe podem ser confortavelmente visualizados conforme a figura abaixo,
os nomes e seus direitos. Qualquer alterao que se fizer necessria em algum usurio pode ser
feita nesta tela. Clicando-se com o boto direito do mouse no nome de um usurio far com que
um menu especfico de usurios aparea com todas as opes de configurao possveis para o
usurio escolhido.
pg 88
projeto num repositrio (num banco de dados SQL). Mas pode tambm armazenar no repositrio
apenas os ponteiros e informaes sobre a equipe e sobre os projetos, colocando o grande volume
de dados num diretrio configurado nesta tela. Neste diretrio ficam todos os programas fontes,
imagens, relatrios, ou seja todos os itens do projeto. Essa uma informao extremamente
importante que deve ser decidida neste momento.
O prximo passo incluir no projeto os seus componentes. Para isso o TOM oferece uma interface
bastante amigvel para o armazenamento e organizao dos componentes. Isso pode ser
visualizado na figura abaixo, onde facilmente possvel observar que o programa app_curso.app
est sendo utilizado pelo usurio LAIRTON. Este o ponto mais importante da utilizao do TOM
a ser assimilado neste momento. O mecanismo de Check-In e Check-Out.
Estando uma aplicao guardada no repositrio do TOM, cada vez que um desenvolvedor precisa
realizar alguma manuteno nesta aplicao ele retira do TOM a cpia mais recente da aplicao
requerida. Esta operao registrada pelo TOM e todas as informaes referentes a esta tarefa
ficam no TOM armazenadas. Basicamente so : O nome do desenvolvedor que extraiu um
determinado mdulo do projeto para um diretrio. Fica armazenado o nome do desenvolvedor, o
componente, o diretrio (para o qual o componente foi extrado) e a data e hora da operao. A
esta operao d-se o nome de Check-Out, pois um integrante da equipe extraiu um componente
do projeto, para manuteno.
Obs : Estando um programa em Check-Out, no possvel que nenhum outro desenvolvedor
realize Check-Out novamente. A menos que esta operao esteja habilitada no TOM e que os
integrantes da equipe tenham conscincia dos danos que esse tipo de comportamento pode
causar se utilizado de forma incorreta.
pg 89
Em determinadas ocasies o programa em Check-Out pode no ter sido modificado. Neste caso a
operao correta no o Check-In, mas sim o Unlock.
pg 90
O TOM possui tambm uma srie de relatrios que podem e devem ser utilizados para um melhor
gerenciamento dos projetos. Este recurso e muitos outros que compem o TOM devem ser
analisados atentamente e delicadamente pelos desenvolvedores quando houver oportunidade.