Você está na página 1de 268

Scriptcase

Curso Completo



Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
2


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
3


2012
Sumrio
1. Introduo .................................................................................................................................................... 5
2. Instalao. .................................................................................................................................................... 7
2.1. Instalao Automtica. ........................................................................................................................ 7
2.2. Instalao Manual ............................................................................................................................. 10
2.2.1. Instalando o JAVA ou JRE (Java Runtime Environment) .......................................................... 10
2.2.2. Instalando o MySQL. .................................................................................................................. 14
2.2.2.1. Instalando o .NET ............................................................................................................... 15
2.2.2.2. Instalando o Visual C++ 2010 Redistributable .................................................................. 16
2.2.2.3. Instalando o Mysql ............................................................................................................ 18
2.2.2.4. Instalao do MySQL Query Browser (opcional) .............................................................. 29
2.2.3. Zend Optimizer .......................................................................................................................... 31
2.2.4. Instalando o ScriptCase. ............................................................................................................ 38
3. Banco de Dados (uma viso genrica) ...................................................................................................... 42
4. Segurana ................................................................................................................................................... 46
5. Sistema e Aplicao ................................................................................................................................... 55
6. Conhecendo o ScriptCase .......................................................................................................................... 57
7. Criando um Projeto .................................................................................................................................... 60
7.1. Criando Aplicaes............................................................................................................................. 65
7.1.1. Criando uma aplicao Formulrio ........................................................................................... 66
7.1.2. Criando uma aplicao Consulta ............................................................................................... 68
7.1.3. Criando uma aplicao Menu .................................................................................................... 70
8. Funcionalidades do ScriptCase .................................................................................................................. 79
8.1. Menu Principal ................................................................................................................................... 79
8.2. Barra de Ferramentas ........................................................................................................................ 81
8.3. Barra de Tarefas ................................................................................................................................. 82
8.4. Projeto Explorer ................................................................................................................................. 82
9. Personalizando Nosso Sistema. ................................................................................................................. 85
9.1. Criando o Banco de Idiomas. ............................................................................................................. 88
9.2. Criando a Aplicao Login .................................................................................................................. 95
9.2.1. Personalizando os Campos ........................................................................................................ 97
9.2.2. Criando Eventos ....................................................................................................................... 100
9.2.3. Acrescentando uma Funo (PHP) nossa Biblioteca Pblica............................................... 106
9.2.4. Personalizando o LayOut ......................................................................................................... 109
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
4


2012
9.3. Criando uma Aplicao Tipo Menu. ................................................................................................ 112
9.3.1. Personalizando a Aplicao Menu .......................................................................................... 116
9.4. Funcionalidade Esqueceu a Senha? (enviando email).................................................................... 125
9.5. Valores Padres. .............................................................................................................................. 137
9.6. Personalizando uma Aplicao do tipo Formulrio........................................................................ 139
9.6.1. LayOut ...................................................................................................................................... 143
9.6.2. Posicionamento dos campos. .................................................................................................. 145
9.6.3. Obrigatrios ............................................................................................................................. 148
9.6.4. Chave nica .............................................................................................................................. 149
9.6.5. Campos ..................................................................................................................................... 150
9.6.6. Eventos ..................................................................................................................................... 167
9.6.7. N-N Relations ........................................................................................................................... 176
9.7. Personalizando uma Aplicao do tipo Consulta. .......................................................................... 181
9.7.1. Campo Google Maps ................................................................................................................ 187
9.8. Ligaes entre aplicaes. ............................................................................................................... 205
9.8.1. Ligao no Select (captura)...................................................................................................... 205
9.8.2. Ligao no Container. .............................................................................................................. 207
9.9. Construindo/Alterando um Template ............................................................................................ 209
9.10. Criando/Personalizando uma Aplicao Calendrio .................................................................. 223
9.11. Registro de Logs/Acessos ............................................................................................................ 232
9.12. Segurana nas Aplicaes ............................................................................................................ 234
10. Relatrios ............................................................................................................................................. 239
10.1. Criando uma aplicao tipo Report PDF. .................................................................................... 239
10.2. Utilizando o template Formato Livre .......................................................................................... 246
10.2.1. Gerando Cdigo de Barras (Boleto). ....................................................................................... 253
10.2.2. Gerando a Linha Editvel (Boleto) .......................................................................................... 254
11. Outras Aplicaes do Nosso Sistema .................................................................................................. 259
11.1. Exerccio. ...................................................................................................................................... 259
12. Publicando o Sistema .......................................................................................................................... 260

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
5


2012
1. Introduo
O desenvolvimento de aplicaes WEB para internet / intranets uma forte tendncia na Informtica. Cada
vez mais, as empresas desenvolvem ou migram seus sistemas para plataforma WEB. No entanto, criar
aplicaes para a internet no tarefa simples. Aquisio de tecnologias, capacitao e diversidade de
linguagens so alguns dos desafios, alm de representarem investimentos de alto custo.
Pensando nisto, a NetMake desenvolveu o ScriptCase, um ambiente de desenvolvimento de aplicaes WEB
(consultas, relatrios, formulrios e menus), baseadas em Banco de Dados. Facilidade de manuseio, rapidez
na criao de aplicaes e inmeros recursos de programao so caractersticas diferenciais do ScriptCase.
O ScriptCase roda em um servidor web e pode ser acessado via internet / intranet (qualquer browser), ou
seja, uma ferramenta bastante diferenciada das demais por conta da sua portabilidade.
O ScriptCase permite criar novos sistemas ou agregar aplicaes WEB a sistemas j existentes. Para o usurio
profissional, o ScriptCase permite a programao avanada (regras de negcio), permitindo at a criao de
sistemas complexos. Para o usurio final, devido a facilidade de manuseio - o ScriptCase requer apenas
conhecimento bsico de SQL - torna-se forte gerador de relatrios e consultas em diversas sadas,
destacando-se os formatos PDF, XLS e RTF.
O objetivo geral deste curso elaborar uma aplicao WEB, com diversos recursos avanados, utilizando
como ferramenta o ScriptCase e como objetivos genricos aprenderemos algumas tcnicas que facilitaro o
desenvolvimento desta aplicao.
Fontes
O ScriptCase gera os programas-fonte (PHP, JavaScript, HTML e AJAX). Os fontes gerados so totalmente
independentes da ferramenta, podendo ser copiados para qualquer servidor WEB. A linguagem PHP
gratuita (GNU) e pode ser utilizada nos ambientes Windows ou Linux (todo processamento do PHP feito no
servidor).
Pr Requisitos
Do ambiente: O ScriptCase deve ser instalado em um servidor web que possua o PHP instalado e o Zend
Optimizer e um banco de dados padro SQL (MySql, SqLite, etc). Quanto ao servidor web, para ambiente
Microsoft pode ser o IIS ou o APACHE. No ambiente Linux, sugerimos o servidor APACHE.
Do usurio: O ScriptCase utilizado a partir do browser, nos ambientes Windows ou Linux. desejvel
conhecimentos bsicos de SQL.
Ferramentas Adicionais
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
6


2012
Alm dos recursos para criao de aplicaes web, o ScriptCase oferece recursos adicionais que o tornam um
ambiente completo para desenvolvimento de sistemas, leia sobre as ferramentas abaixo:
SQL Builder
Ferramenta para auxiliar a construo de consultas SQL em forma de wizard. Permite a escolha da base de
dados, tabelas, campos, order by e where, assim como, a realizao de simulaes dos comandos montados
e a sua salva para uso posterior.
WebHelp
Permite criar webhelps, de modo a padronizar uma documentao e facilitar a sua criao.
Principais Recursos:
Permite criar arquivos HTMLS com interface grfica (WYSIWYG), css, upload de imagens e menu hierrquico.
Permite tambm ligar uma aplicao diretamente a uma pgina do help, sem a necessidade editar os helps
de cada aplicao.
1




1
Texto extrado do Manual do ScriptCase V.5.0.264, publicado no site www.scriptcase.com.br
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
7


2012
2. Instalao.
Em nosso ambiente de desenvolvimento utilizaremos:
Sistema Operacional Windows 7
Servidor WEB Apache
Linguagem de Programao PHP 5.3.9
Banco de Dados MySQL 5.5.17

Existem duas maneiras de instalao do ScriptCase: automtica e manual.
2.1. Instalao Automtica.
Faa o download do Scriptcase


A opo automtica instalar todos os componentes necessrios ao perfeito funcionamento do SC.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
8


2012
Execute o aplicativo baixado. (scriptcase_install_pt_br_v5.2.041 verso disponvel na confeco deste
material).

Click no boto

Leia o acordo de licena, aceite-o e click no boto

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
9


2012
Click no boto para instalar no local sugerido (padro)

Aguarde a concluso do processo de instalao.

Agora click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
10


2012

Pronto! Tudo instalado, agora s comear.
2.2. Instalao Manual
Algumas situaes o foraro a uma instalao manual. Por exemplo:
a) Utilizao do MySql como banco padro do Scriptcase;
b) Caso voc j tenha instalado em seu ambiente de desenvolvimento o Apache e o PHP.
Pr requisitos para a instalao manual.
a) JAVA ou JRE - Java Runtime Environment 1.6.0 ou superior instalado no servidor.
b) Banco de dados padro SQL (SQLite, MySQL, MSSQL, PostgreSQL, Oracle e DB2) acessvel ao PHP.*
c) Zend Optimizer 3.3.0 ou superior.
d) Servidor Web com suporte ao PHP, tais como: Apache, IIS, Abyss, entre outros.
e) PHP 5.2.1 ou superior, habilitado com os mdulos mbstring, zip e gd2.
2.2.1. Instalando o JAVA ou JRE (Java Runtime Environment)
Acesse a linha de comando do Windows.

A seguir digite o comando java version.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
11


2012

Se voc obtiver como resposta a verso do Java instalado, semelhante imagem acima, seu ambiente est
preparado.
Caso contrrio execute o aplicativo jre-6u30-windows-i586-s, incluso no pacote deste curso.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
12


2012

Acesse a linha de comando do Windows.

A seguir digite o comando java version.

Caso no voc no obtenha uma tela semelhante a esta, ser necessrio ajustar a varivel de ambiente PATH
do Windows. Vejamos
Encontre a pasta bin da aplicao Java (recm instalada).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
13


2012

A seguir acesse as propriedades do seu computador.

Agora acesse as configuraes avanadas do sistema.

Acesse as variveis de ambiente.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
14


2012

Procure a varivel Path e edite-a.

Acrescente ao final da varivel o caminho da pasta bin (;C:\Program Files (x86)\java\jre6\bin\).
Ateno, no se esquea de colocar ; antes do caminho.


Pronto!
2.2.2. Instalando o MySQL.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
15


2012
Caso voc no possua o MySQL instalado voc ter que efetuar download dos aplicativos abaixo, pr
requisitos para a instalao do MySQL:
a) Dot Net - dotNetFx40_Full_x86_x64.exe
b) Visual C++ 2010 Redistributable vcredist_x86
c) Mysql mysql-installer-5.5.17.0 (http://dev.mysql.com/downloads/)
Todos os aplicativos necessrios para o perfeito funcionamento dos exemplos deste manual so de
distribuio gratuita e esto disponveis no material fornecido pelo curso.
2.2.2.1. Instalando o .NET
Execute o aplicativo dotNetFx40_Full_x86_x64.exe.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
16


2012


2.2.2.2. Instalando o Visual C++ 2010 Redistributable
Agora execute o aplicativo vcredist_x86
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
17


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
18


2012

2.2.2.3. Instalando o Mysql
Execute o aplicativo mysql-installer-5.5.17.0.
Acompanhe a instalao pelas figuras a seguir

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
19


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
20


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
21


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
22


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
23


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
24


2012


Nota Na configurao do MySQL Server 5.5.14 (figura acima) por surgir uma mensagem de
advertncia, informando que foi adicionado uma regra no firewall da sua mquina isso
perfeitamente normal e no constituir qualquer problema.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
25


2012


O instalador do MySQL oferece uma ferramenta de administrao chamada MySQL Workbench. Concluda a
instalao do banco ser solicitada a configurao desta ferramenta para as conexes locais. Vejamos
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
26


2012


Faremos a configurao do SQL Development para conexo local
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
27


2012

A seguir teremos o seguinte cenrio

Agora criaremos o banco (schema) que ser utilizado pelo Scriptcase
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
28


2012



Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
29


2012

2.2.2.4. Instalao do MySQL Query Browser (opcional)
No nosso pacote de aplicativos disponibilizamos o MySQL query browser para confeo de querys, mas voc
poder utilizar o que melhor lhe convier.
Execute o aplicativo mysql-query-browser-1.1.20-win.



Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
30


2012

Instalado o banco, faremos a importao do esquema (treinamento) que ser objeto do nosso treinamento.
Execute o workbench

Acesse a opo Server Administration na conexo local

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
31


2012



2.2.3. Zend Optimizer
O SC solicita a instalao do Zend Optmizer em seu site, mas entendo que exista uma pequena confuso
aqui. No h necessidade alguma do Zend Optimizer, muito pelo contrrio, se ele estiver instalado o SC no
funcionar perfeito. O que se precisa do Zend Guard Loader.
O prximo passo ser a instalao do Zend Server. O Zend far a instalao automtica do Apache e PHP,
necessrios para o funcionamento do SC. Vejamos.
Execute o aplicativo ZendServer-CE-php-5.2.17-5.6.0-Windows_x86.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
32


2012




Selecione a instalao customizada uma vez que teremos que habilitar o Guard Loader.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
33


2012

Habilite a instalao do Zend Guard Loader

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
34


2012
Escolha a pasta de instalao, sugeri a pasta C:/Zend apenas porque estamos fazendo uma instalao para
treinamento, mas no faz qualquer diferena.
necessria a Instalao do Apache 2.2.21, portanto esta opo dever estar marcada (default).

Se voc j tiver algum web Server instalado em sua mquina o Zend informar que a porta 80 j est sendo
ocupada e solicita sua alterao pra outra qualquer informe a 85. Caso no tenha nenhum outro web
Server instalado pode deixar na porta 80 (padro).

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
35


2012

Aguarde o processo de instalao.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
36


2012

Agora acessaremos a console do Zend Server para desabilitar o Optmizer.



Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
37


2012

A seguir informado que as alteraes s tero efeito aps restart do php.


A seguir saia do Zend Server.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
38


2012

Neste ponto os pr requisitos para instalao do SC esto prontos. Agora instalaremos o SC.
2.2.4. Instalando o ScriptCase.
Crie uma pasta scriptcase na pasta htdocs do seu web Server, descompacte o contedo do arquivo
scriptcase-5.2.041-pt_br.zip, baixado do site do SC e copie todo o contedo para a pasta htdocs\scriptcase.

A seguir abra o seu navegador e acesse o endereo:
http://localhost:85/scriptcase
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
39


2012

Prossiga com a instalao.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
40


2012

Se preferir que a base de dados do SC seja instalada no SQLite prossiga com a instalao, caso contrrio
altere o banco para MySQL.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
41


2012

A seguir altere o arquivo httpd.conf localizado na pasta /conf do seu web Server. Acrescente as linhas abaixo
ao final do arquivo.
ScriptAlias /php/ "C:/Zend/ZendServer/bin"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
Feche o seu navegador, re-inicie o servio do apache e novamente acesse o endereo.
http://localhost:85/scriptcase

Pronto!








Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
42


2012
3. Banco de Dados (uma viso genrica)
Iniciaremos este estudo tratando de bancos de dados. O SC foi projetado para trabalhar com quase todos os
bancos relacionais que utilizem a linguagem SQL (Structured Query Language ou Linguagem de Consulta
Estruturada veja figura abaixo), no nosso curso utilizaremos o MySQL como padro. No ser nossa
inteno ensinar SQL, pois entendemos que este um requisito bsico de desenvolvedores de sistemas, mas
o conhecimento de algumas dicas tornar o nosso aprendizado mais eficaz.

Desenvolver uma aplicao no uma tarefa fcil para um programador, mas bem mais simples para quem
possui conhecimentos em anlises de sistemas, uma vez que escrever o cdigo a ltima das tarefas.
Estabelecendo uma escala cronolgica podemos dizer que um sistema bem elaborado passa pelas seguintes
etapas de desenvolvimento:
a) Regras de Negcio - So declaraes sobre a forma da empresa fazer negcio. Elas refletem polticas
do negcio. Organizaes tm polticas para satisfazer os objetivos do negcio, satisfazer clientes,
fazer bom uso dos recursos, e obedecer s leis ou convenes gerais do negcio. Regras do Negcio
tornam-se requisitos, ou seja, podem ser implementados em um sistema de software como uma
forma de requisitos de software desse sistema. Representam um importante conceito dentro do
processo de definio de requisitos para sistemas de informao e devem ser vistas como uma
declarao genrica sobre a organizao.
No processo de desenvolvimento de qualquer sistema, a regra de negcio visa detalhar as
funcionalidades particulares do software. Com isso facilita por parte dos programadores o
desenvolvimento de mtodos de tratamento de excees, particularidades que o sistema possa
executar e o mais importante, limitar aes fora do processo normal de funcionamento de um
sistema especfico.
b) Casos de Estudo ou Mtodos do Caso - Um mtodo um conjunto de processos pelos quais se torna
possvel conhecer uma determinada realidade, produzir determinado objeto ou desenvolver certos
procedimentos ou comportamentos (OLIVEIRA, 1999). O mtodo cientfico caracteriza-se pela
escolha de procedimentos sistemticos para descrio e explicao de uma determinada situao
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
43


2012
sob estudo e sua escolha deve estar baseada em dois critrios bsicos: a natureza do objetivo ao
qual se aplica e o objetivo que se tem em vista no estudo (FACHIN, 2001).
c) Casos de Uso - Um caso de uso representa uma unidade discreta da interao entre um usurio
(humano ou mquina) e o sistema. Um caso de uso uma unidade de um trabalho significante. Por
exemplo: o login para o sistema, registrar no sistema e criar pedidos so todos casos de uso.
Cada caso de uso tem uma descrio o qual descreve a funcionalidade que ir ser construda no
sistema proposto. Um caso de uso pode incluir outra funcionalidade de caso de uso ou estender
outro caso de uso com seu prprio comportamento.
d) Montagem/Modelagem do Banco de dados.
e) Escrever o Cdigo.
f) Testar a aplicao.
g) Mant-la em funcionamento (em produo).
Como j foi mencionado anteriormente, no propsito deste curso o aprofundamento dos conceitos
acima, veremos apenas, na prtica, como eles funcionam.
Toda aplicao tem entre os seus conceitos bsicos:
a) Tornar a sua operao mais simples possvel;
b) Evitar erros de digitao;
c) Evitar o re-trabalho;
d) Evitar o maior nmero possvel de atualizaes.
Dessa forma aplicaremos um conceito muito comum em modelagem que a normalizao (NF) do banco.
O objetivo da normalizao de um banco de dados evitar os problemas que podem provocar falhas no
projeto do banco de dados, bem como eliminar a mistura de assuntos e as correspondentes redundncias
dos dados desnecessrias. A abreviao usada, (NF), vem do ingls, "Normal Form".
O processo de normalizao aplica uma srie de regras sobre as tabelas (tambm chamadas de relaes) de
um banco de dados, para verificar se esto corretamente projetadas.
Tipos de Formas Normais
a) Primeira forma normal (1NF);
b) Segunda forma normal (2NF);
c) Terceira forma normal (3NF);
d) Forma normal Boyce/Codd (BCNF)
Inicialmente veremos a 1NF, no decorrer do curso, havendo necessidade, veremos outras.
Um esquema de relao R est na 1FN se todos os seus atributos forem atmicos (simples) e
monovalorados, ou seja, no so permitidos atributos multivalorados, atributos compostos ou atributos
multivalorados compostos.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
44


2012
Exemplo:
FUNCIONRIOS = {CODFUNC + NOME + CARGO + {PROJETO + DATAINI + DATAFIM}}
Para colocar na 1FN:
FUNCIONRIOS = {CODFUNC + NOME + CARGO}
FUNC_PROJ = {CODFUNC + PROJETO + DATAINI + DATAFIM}
OBS: A chave primria de FUNCIONRIOS vai ser a chave estrangeira de FUNC_PROJ.
Veja abaixo outro exemplo de tabela que no est na 1FN (considerando que o campo TELEFONES
multivalorado):
PESSOAS = {ID + NOME + ENDERECO + TELEFONES}
Para deixar esta tabela na 1FN, deve-se separar o campo multivalorado TELEFONES em uma tabela adicional,
desta forma:
PESSOAS = {ID + NOME + ENDERECO}
TELEFONES = {PESSOA_ID + TELEFONE}
Outra forma de identificar se a tabela est na 1NF verificando se existem tabelas aninhadas, ou seja, mais
de um registro para uma chave primria.
Observe o exemplo:
Considere um Pedido nmero 00001, para este pedido se observarmos o formulrio em papel teremos
muitos campos a considerar, contudo usaremos apenas alguns para facilitar o entendimento.
PEDIDOS = {PEDIDO + CLIENTE + VENDEDOR + ATENDENTE + PRODUTO + QUANT + VALOR}
Neste momento devemos idealizar o pedido nmero: 00001 e efetuar os seguintes testes:
PEDIDO CLIENTE VENDEDOR ATENDENTE PRODUTO QUANT VALOR
00001 Paulo Csar Jos Silva Joo
Tnis 1 50,00
00001 Paulo Csar Jos Silva Joo
Sandlia 2 60,00
00001 Paulo Csar Jos Silva Joo
Carteira 1 80,00

Observe que para os dados do pedido 00001 lanados acima, apenas os atributos que esto em negrito SO
NICOS, pois no se diferem. Os demais atributos mudam, no cumprindo a 1NF onde os atributos devem
ser atmicos, quer dizer nicos.
Para testarmos um dos atributos e ter certeza que este atmico, podemos efetuar uma pergunta conforme
o exemplo abaixo:
Podemos ter outro cliente para o pedido 00001? = No. Podemos ter apenas 1 cliente por pedido, sendo
assim este atributo atmico nico para 1 pedido.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
45


2012
Podemos ter outro vendedor para o pedido 00001? = No. Podemos ter apenas 1 vendedor por pedido.
Podemos ter outro produto para o pedido 00001? = Sim. Podemos ter vrios produtos para um pedido,
sendo assim, os campos aninhados devem ser extrados para outra tabela.
Assim sendo devermos normalizar esta tabela, transformando-a em duas: PEDIDOS e PRODUTOS. Essa a
tcnica fundamental da normalizao.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
46


2012
4. Segurana
preciso que se entenda que no existe sistema 100% seguro. Na melhor das hipteses quem desenvolveu o
esquema de segurana saber como quebr-lo.
O nosso objetivo aqui apresentar algumas sugestes para tornar as aplicaes desenvolvidas no SC mais
seguras.
Uma aplicao stand alone (autnoma, sozinha), sem ser baseada na web, requer critrios de segurana bem
menos complexos, porm no menos importantes. Uma aplicao web requer esforo extremo no quesito
segurana. Um dos fatores que concorre para isso que o usurio final (o cliente), na maioria das vezes, no
faz a mnima idia do que se passa por traz de um aparato de segurana de uma aplicao web e por no
conhec-los no toma providncias no sentido de evit-las. Dessa forma, caber a voc analista definir a
quase totalidade dos estudos de casos e casos de uso.
A segurana poder e dever ser feita em trs camadas:
a) No banco de dados Todo DB relacional possui um forte esquema de segurana;
b) Na aplicao - O SC tem incorporado um bom esquema de segurana, falaremos sobre isso no
momento oportuno, mas caber ao projetista do banco refor-la e implement-la.
c) No servidor O gerente de rede dar suporte nesta etapa.
Nossa inteno agora montar um esquema no banco de dados que reforce a segurana na camada da
aplicao.
As boas prticas de segurana estabelecem os seguintes nveis mnimos.
a) Nvel de aplicao Saber quem pode acessar quais aplicaes, e quais os privilgios deste acesso
(incluir, alterar, excluir e consultar);
b) Nvel de registro Saber quem dono do registro e, mesmo como proprietrio, quais os privilgios
sero atribudos a este registro (incluir, alterar, excluir e consultar).
Pequenas aes podero nosso esquema de segurana, veja:
a) Na tabela de usurios, acrescente um campo que force a troca de senha temporariamente. Havendo
necessidade de trocar a senha necessrio um campo que informe a data da ltima troca e outro
informando qual o perodo de troca;
b) Poderemos reforar a senha criptografando-a em 16 bits md5 (mnimo recomendvel);
c) Acrescente em todas as tabelas um campo prop_reg (proprietrio do registro) para determinar
quem o proprietrio do registro;
d) Acrescente um campo situao na tabela usurios para determinar se o mesmo est ativo ou
inativo;
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
47


2012
e) Acrescente um campo Status na tabela Clientes para determinarmos se ele est bloqueado ou livre.
Caso esteja bloqueado, todos os usurios daquele grupo estaro automaticamente bloqueados, sem
a necessidade de bloquear/desbloquear um-por-um cada usurio.
f) Acrescente dois campos em todas as tabelas: login (quem criou o registro) e data da criao do
registro.
Veja, foram medidas simples que ampliaram nossa margem de segurana.
O modelo de segurana teria uma estrutura de tabelas semelhante ao exemplo abaixo.
Tabela: Usurios
Campo Chave
Id Primria (pk)
Nome
Login ndice
Situao
Trocar Senha?
Qual o perodo de
troca de senha?

Qual a ltima data
de troca?

senha Criptografada md5
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Aplicaes
Campo Chave
Id Primria (pk)
Descrio
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Grupos de Acesso (No registro)
Campo Chave
Id Primria (pk)
Descrio
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Grupos (Na aplicao)
Campo Chave
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
48


2012
Id Primria (pk)
Descrio
Status
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Grupos de Aplicaes (Na aplicao)
Campo Chave
Id Primria (pk)
Grupo de Acesso(id) Estrangeira (fk)
Aplicao(id) Estrangeira (fk)
Atributos de Acesso
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Perfil de Acesso (No registro)
Campo Chave
Id Primria (pk)
Descrio
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Perfil de Grupo (Na aplicao)
Campo Chave
Id Primria (pk)
Perfil de Acesso(id) Estrangeira (fk)
Grupo de Proprietrios(id) Estrangeira (fk)
Atributos de Acesso
prop_reg
Login Estrangeira (fk)
Data da criao

Tabela: Grupo de Usurios (Na aplicao)
Campo Chave
Usurio(id) Estrangeira (fk)
Grupo de Acesso(id) Estrangeira (fk)
prop_reg
Login Estrangeira (fk)
Data da criao

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
49


2012
O SC oferece um utilitrio muito interessante chamado de calendrio (agendamento de compromissos). Esse
calendrio particular, porm muito interessante criarmos uma forma de compartilhamento destas
informaes, tornando-as coorporativas, afinal esse o propsito de uma aplicao web. Aproveitando que
estamos tratando segurana, criaremos mais trs tabelas que faro o compartilhamento deste calendrio.
Tabela: perfil de Acesso da Agenda (No registro)
Campo Chave
Id Primria (pk)
Descrio (igual ao
login do usurio)

prop_reg
Prop_agd
Login Estrangeira (fk)
Data da criao

Tabela: Grupo Acesso da Agenda (No registro)
Campo Chave
Id Primria (pk)
Login Estrangeira (fk)
prop_reg
Prop_agd
Login Estrangeira (fk)
Data da criao

Tabela: Perfil de Grupo Agenda (No registro).
Campo Chave
Id Primria (pk)
Perfil de Acesso
Agenda(id)
Estrangeira (fk)
Grupo de Acesso(id) Estrangeira (fk)
prop_reg
Prop_agd
Login Estrangeira (fk)
Data da criao

Est pronto nosso esquema de segurana? Ainda no. Parta do princpio que a pessoa que menos entende
de segurana de sistemas, no mundo, voc. Ento, implantaremos mais um dispositivo - esquema de LOGs
de ACESSO e AES. Embora os DBs j produzam este tipo de segurana, normalmente eles possuem dois
pontos muito fracos:
a) Degeneram a performance do banco;
b) Suas auditorias so muito complicadas.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
50


2012
Para tanto acrescentaremos mais uma tabela que registrar toda e qualquer ao que for realizada pela
aplicao.
Tabela: LOGs
Campo Chave
Id Primria (pk)
Aplicao(id) Estrangeira (fk)
Data e Hora
login Estrangeira (fk)
IP
Ao
Realizado
status

Nota:
A tabela de Logs sugerida no possuir campos tipo BLOB para armazenamento de imagens,
desta forma no sero atualizadas operaes com imagens no tratamento dos logs.


Outra ao bastante interessante determinarmos quem est logado na aplicao. Essa tarefa muito
complicada em aplicaes web, uma vez que o usurio est utilizando-se de um navegador (Firefox, IE,
Google Chrome), que uma aplicao externa, para acesso ao nosso sistema e para sair da aplicao baixa
fechar o navegador. Utilizaremos a tabela acima para efetuarmos esse controle mas desde j informo
esta soluo no representar 100% da realidade.
Comentrios sobre o esquema de segurana
Segurana do Registro (Acesso)
O esquema de segurana foi montado para uma aplicao multi-empresa, onde cada empresa poder gerir
os seus registros ou grupos de registros.
No esquema abaixo podemos observar que:
a) Cliente A tem controle sobre os registros do Cliente B, C e D;
b) Cliente B tem controle apenas dos seus registros;
c) Cliente C tem controle sobre os seus registros e os do Cliente D;
d) Cliente D tem controle apenas dos seus registros.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
51


2012

Esses controles so definidos pelas tabelas de acesso (grupo_acesso, perfil_grupo e perfil _acesso).
A tabela grupo_acesso definir cada cliente (empresa) do sistema.
A tabela perfil_grupo definir o controle que cada cliente ter sobre os demais clientes.
Sempre que um novo cliente cadastrado, automaticamente ser lanado um novo registro na tabela
grupo_acesso definido pela sua sigla e posteriormente o administrador definir sobre quais grupos de
acesso ele ter o respectivo controle.
Toda tabela ter um campo prop_reg que determinar a que grupo_acesso ele pertence,
conseqentemente quais clientes tero acesso sobre ele.
Para efetuar este controle criaremos uma funo no banco de dados denominada PermiteAcesso, que
receber dois parmetros: usuario e prop_reg. Veja abaixo:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
52


2012

A forma correta de chamar esta funo :
PermiteAcesso(usuario, prop_reg) = Sim
Onde o usuario quem est fazendo a consulta e prop_reg quem o proprietrio do registro da tabela que
est sendo consultada.
Esta funo estar sempre presente em clusulas WHERE das querys
Segurana na Aplicao
O controle dos usurios sobre as aplicaes ser definido por grupos que determinaro perfis de acesso
(Incluso, Alterao, Excluso e Consulta) s aplicaes.
Por padro nosso esquema criou dois grupos bsicos:
a) Administradores Acesso total a todas as aplicaes;
b) Acesso Restrito Acesso total a um conjunto mnimo de aplicaes (login, menu, troca de senhas,
agenda, esqueceu a senha e sair do sistema)
Outros grupos podero ser criados por livre escolha, como por exemplo:
a) Cadastradores Acesso total s aplicaes do tipo Formulrio;
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
53


2012
b) Consultas Acesso s aplicaes do tipo Consulta.
Esses controles so definidos pelas tabelas de acesso (aplicaes, grupos, grupo_aplicacoes e
usuario_grupos).
Tabela Definio Exemplos
grupos Descrio dos grupos Administrador, Acesso Restrito, etc
aplicacoes Descrio de todas as
aplicaes do sistema
login, menu, form_usuarios, etc
grupo_aplicacoes Definir quais grupos tero
acessos s aplicaes e qual o
perfil de acesso
Grupo Administadores Acessos
A;I;E;C em todas as tabelas
Usurio_grupos Definir a que grupo(s)
pertence(m) cada usurio
Usurio administrador pertence a
todos os grupos

Sempre que um novo usurio cadastrado ele receber o perfil do grupo de Acesso Restrito, posteriormente
o administrador definir qual(is) grupo(s) ele pertencer.
Segurana na Agenda (Registro)
Os registros das agendas podero ser acessados de forma pessoal ou corporativa
Para efetuar este controle criaremos uma funo no banco de dados denominada PermiteAcessoAgenda,
que receber dois parmetros: usuario e prop_agd. Veja abaixo:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
54


2012

A forma correta de chamar esta funo :
PermiteAcessoAgenda(usuario, prop_agd) = Sim
Onde o usuario quem est fazendo a consulta e prop_agd quem o proprietrio do registro da tabela
agenda.
Sempre que um novo usurio cadastrado, automaticamente ser lanado um novo registro na tabela
grupo_acesso_agenda definido pelo login deste cliente e posteriormente o administrador definir sobre
quais grupos de acesso a agenda este participar.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
55


2012
5. Sistema e Aplicao
Em linhas gerais, cada pgina web elaborada pelo Scripctcase uma aplicao e o conjunto de aplicaes
(pginas) compem um sistema. Cabe salientar dois pontos:
a) Uma pgina web poder, em alguns casos, ser composta de mais de uma aplicao;
b) Uma aplicao nem sempre ser uma pgina existem aplicaes que no sero visualizadas em
pginas. Exemplo: uma aplicao de registro de sada do sistema de um usurio.
O ScriptCase elabora os seguintes tipos de aplicaes:

CONSULTAS - So as aplicaes para visualizao dos dados. Uma consulta no ScriptCase tem tambm o
carter de relatrio, uma vez que gera a sada em PDF, XLS, XML, RTF e outros formatos.
FORMULRIOS - So as aplicaes para atualizao de Dados. O ScriptCase cria uma aplicao com todos
os recursos de incluso, alterao, excluso e navegao de registros.
Os Formulrios esto divididos em 4 tipos de orientao: Simples, Mltiplos Registros, Grid editvel e Grid
Editvel (view).
ABAS - O ScriptCase permite atravs desta opo reunir vrias aplicaes j desenvolvidas e dar aplicao
resultante um destes formatos ou ambos, onde cada aba ou cada opo da pasta corresponde a uma
aplicao.
CONTROLE - So as aplicaes criadas para infra-estrutura do sistema. Podem ser utilizadas para captao
de dados (parmetros) que sero repassados a outras aplicaes.
Ex.: login de sistema, seleo da empresa, seleo de acesso e etc.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
56


2012
MENU - As aplicaes de menu servem para criar uma estrutura hierrquica de navegao das aplicaes do
sistema. um recurso extremamente til, uma vez que organiza as aplicaes de modo visual, facilitando o
acesso do usurio s aplicaes.
MENU RVORE - As aplicaes de Menu rvore servem para criar uma estrutura de navegao das
aplicaes do sistema em formato Tree View (similar ao windows explorer). um recurso extremamente til,
uma vez que organiza as aplicaes de modo visual, facilitando o acesso do usurio s aplicaes.
FILTRO - Formulrio de filtro para ligar alguma aplicao que necessite receber uma string contendo uma
clusula where.
REPORT PDF - ScriptCase oferece uma ferramenta para gerar relatrios de qualidade, usando formatos pr-
definidos.
Use esta aplicao para gerar relatrios para as instituies de governo ou outra organizao que formato
exigido especficos.
CONTAINER - Permite exibir vrios tipos de aplicaes aninhadas em Widgets semelhantes quelas para o
iGoogle.
BLANK - Permite ao desenvolvedor escrever PHP / cdigo HTML e exibir um resultado do processo.
2

Um sistema ser tratado dentro da estrutura do ScriptCase como um projeto. O projeto ser o repositrio de
todas as aplicaes, rotinas, conexes ao banco e bancos de idiomas de um sistema.


2
Texto extrado do Manual do ScriptCase V.5.0.264, publicado no site www.scriptcase.com.br
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
57


2012
6. Conhecendo o ScriptCase

A tela acima representa a interface de logon, onde voc dever informar o seu cdigo de usurio (login) e
senha.
Aps a validao do usurio/senha e de acordo com o perfil estabelecido para o mesmo, o ScriptCase
disponibilizar as opes que o usurio ter acesso, assim como, os projetos que o mesmo poder acessar.
Nota: O usurio do tipo "Administrador" tem privilgio de acesso a todas as funcionalidades do
ScriptCase, assim como, faz parte das suas funes o cadastro de novos usurios e o estabelecimento de
quais funes os mesmos tero acesso.
Uma vez autenticado/logado no ScriptCase, ser apresentada a pgina do inicial de onde voc pode
selecionar um projeto existente ou criar um novo projeto.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
58


2012

Essa tela composta dos seguintes itens:
a) Menu Principal;

b) Barra de Ferramentas;

c) Barra de Tarefas;

d) rea de Projetos.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
59


2012

Ao trabalharmos com um projeto esta rea de projetos ser dividida em duas reas distintas: a) Projeto
Explorer; b) Lista de Aplicaes. E teremos uma tela geral semelhante figura abaixo.



Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
60


2012
7. Criando um Projeto
Podemos definir um projeto como sendo um sistema. Isso de forma bem simples, uma vez que se voc
estender o conceito de sistema vrios projetos podero compor um nico sistema. Exemplos:
a) Se voc definir que o seu sistema uma Folha de Pagamentos, ento aconselhvel que o seu
projeto seja Folha de Pagamentos, conseqentemente ele ser o repositrio de todas aplicaes,
funes, rotinas, etc relativas folha de pagamentos;
b) Se voc definir que seu Sistema um Gestor Financeiro, ento aconselhvel que voc divida este
sistema em partes (Contabilidade, Folha de pagamento, Contas a Receber/Pagar, etc) e cada parte
desta seja um projeto. Os projetos podem ser integrados entre si.
Uma diviso do sistema em partes facilitar a administrao dos seus projetos.
Tudo isso conceitual, voc poder definir um nico projeto para um cliente que ser repositrio de todos
os sistemas, aplicaes, etc relativos ao cliente.
Para criarmos um projeto basta clicar na figura

E teremos acesso a seguinte tela:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
61


2012

Defina um nome para o seu projeto e descreva-o. Este nome no poder conter espaos nem caracteres
especiais. Para o nosso curso o nome ser treinamento.

O SC traz como exemplos alguns modelos de projeto, no nosso curso no os utilizaremos.
Click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
62


2012

Voc poder definir um banco de idiomas para o seu projeto. Nesta fase do nosso treinamento isso no
interessante, veremos isso em outra oportunidade, click no boto

Outro ponto forte do SC que voc poder definir lay-outs para seus sistemas. Essa definio poder ser
feita em tempo de execuo. Veremos esses tpicos mais adiante, por ora ficaremos na configurao bsica.
Click no boto

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
63


2012
Como foi abordado nos captulos anteriores, todo processo de desenvolvimento inicia-se pela modelagem do
banco de dados (DB), assim, ao criarmos um novo projeto, deveremos informar o Sistema Gestor do Banco
de Dados (DBMS Data Base Manager System) que gerenciar nosso banco (DB).
No nosso curso definimos o MySQL, ento click na figura correspondente.


Supondo-se que sua base de dados est instalada em seu computador pessoal (localhost), escolha o usurio
e a senha, a seguir click no boto para selecionar a base de dados que utilizar
neste projeto, conforme exemplo abaixo.
Ao clicar no boto s sero disponibilizados os DBs que o usurio ter acesso, se
o usurio for o root ter acesso a todos os bancos.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
64


2012

Click no boto
Como esse um novo projeto o SC abrir uma tela sugerindo a criao de uma nova aplicao.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
65


2012
7.1. Criando Aplicaes
Existem dois modos de criao de uma nova aplicao:
a) Wizard;

b) Expressa.

Por ser mais completa utilizaremos a forma Expressa.
Um sistema por mais simples que seja ter pelo menos trs aplicaes:
a) Um Menu;
b) Uma tela de cadastro;
c) E uma tela de consulta/relatrio.
Pois bem, antes de iniciarmos o sistema objeto deste curso faremos uma apresentao bem simples de
cada um desses tipos de aplicaes e, a seguir, retornaremos s mesmas para um estudo mais avanado.
Os tipos de aplicaes disponveis foram descritas na Introduo deste captulo, por ora veremos a criao
de uma aplicao do tipo formulrio e utilizaremos como exemplo a tabela clientes da nossa base de dados.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
66


2012
7.1.1. Criando uma aplicao Formulrio
Selecione o tipo de aplicao Formulrio.

E teremos a seguinte tela:

Escolha a conexo (conn_mysql)

Escolha a Tabela (clientes)
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
67


2012

Defina o nome da aplicao. Este nome no poder conter espaos nem caracteres especiais. Poderemos
utilizar o nome padro utilizado pelo SC (form_clientes).

Mesmo para os usurios mais experientes, 90 % das aplicaes do tipo formulrio so criadas desta maneira
ou seja, sem qualquer alterao dos valores padres. O que pode mudar o Tipo e sobre isso falaremos mais
adiante no estudo avanado.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
68


2012
Click no boto e o SC criar a nova aplicao (form_clientes) e retornar para a edio da
mesma. Sempre haver necessidade de editar uma aplicao recm gerada, mas esse ser um passo que
daremos no estudo avanado.

7.1.2. Criando uma aplicao Consulta
Criaremos agora uma aplicao do tipo Consulta para a tabela clientes. Para tanto click no boto (Nova
Aplicao) localizado na barra de Ferramentas.

Defina a tabela (clientes).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
69


2012

Defina o nome da aplicao. Este nome no poder conter espaos nem caracteres especiais. Poderemos
utilizar o nome padro utilizado pelo SC (grid_clientes).

Click no boto e o SC criar a nova aplicao (grid_clientes) e retornar para a edio da
mesma. Sempre haver necessidade de editar uma aplicao recm gerada, mas esse ser um passo que
daremos no estudo avanado.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
70


2012

7.1.3. Criando uma aplicao Menu
Criaremos agora uma aplicao do tipo Menu para o nosso sistema. Para tanto click no boto (Nova
Aplicao) localizado na barra de Ferramentas e escolha o tipo de aplicao Menu

Click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
71


2012

Este o cenrio aps a criao das trs aplicaes bsicas.
Teremos agora que editar a aplicao menu, de forma tal que ela possa executar as aplicaes geradas e sair
do sistema. Vamos l.

Os passos seguintes sero:
a) Criar o item Clientes;
b) Dentro deste item, adicionarmos o sub-item Cadastrar Clientes;
c) Ainda dentro deste item (Clientes) adicionarmos o sub-item Consultar Clientes;
d) Criarmos o item Sair do Sistema.
Passo 1:
Na Configurao do Menu, crie o label Clientes e insira o Item.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
72


2012

Passo 2:
Crie o label Cadastrar Clientes, informe a aplicao que ser o link (form_clientes) e insira o Sub-item.

Passo 3:
Crie o label Consultar Clientes, informe a aplicao que ser o link (grid_clientes) e insira o Item.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
73


2012
Passo 4:
Crie o label Sair do Sistema, altere o Target para Sair e insira o Item.

Ao fazer isso voc obter a seguinte tela:

Voc pode observar que o item Sair do Sistema est no mesmo nvel dos itens Cadastrar Clientes e Consultar
Clientes, ou seja, est dentro do item Clientes, mas eu desejo que ele fique no mesmo nvel (menu) que o
item Clientes. Para consertar isso utilize o boto , mostrado na figura anterior.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
74


2012

Feito isso salve a aplicao clicando no boto Salvar, localizado na Barra de Ferramentas.

Pronto, agora que aplicaes foram criadas na base de dados do SC precisamos gerar os cdigos PHP.
Selecione a opo Projetos do Menu Principal e click em Gerar Cdigo Fonte.

Teremos a seguinte tela:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
75


2012

Terminado o processo, se tudo ocorreu bem, surgir a seguinte tela.

Agora j poderemos executar o nosso sistema. Como ele se iniciar pela aplicao menu, click na sua aba
correspondente e a seguir click no boto Executar localizado na Barra de Ferramentas.

Eis o resultado do seu trabalho inicial.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
76


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
77


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
78


2012

Evidentemente que um sistema neste estgio atual no deve ser apresentado sequer a ns mesmos, quanto
mais a um cliente. Poderia gastar algumas folhas de papel enumerando os problemas que encontramos nele,
mas a etapa de personalizao das aplicaes ser descrita mais adiante. Por ora, nossa tarefa est concluda
elaborar um pequeno sistema.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
79


2012
8. Funcionalidades do ScriptCase
No tpico anterior aprendemos a criar alguns tipos de aplicaes (menu, formulrio e consulta) e montamos
um sistema. Esse sistema precisa ser totalmente editado (por diversos motivos), mas antes de efetuarmos
esta edio precisaremos conhecer melhor as potencialidades do ScriptCase o que veremos a seguir.
8.1. Menu Principal

O menu principal do SC disponibiliza as seguintes funcionalidades.
Arquivo
Novo Projeto Cria um novo projeto.
Abrir Projeto Lista os projetos que o usurio possui permisso.
Fechar Projeto Fecha o projeto em edio.
Nova Aplicao Cria novas aplicaes de consultas, report pdf, formulrios, abas,
controle, menu, filtro, container ou blank.
Criao Expressa Permite criar vrias aplicaes simultaneamente.
Aplicaes Recentes Exibe as ltimas aplicaes editadas.
Menu Principal Navega para a pgina do menu principal do ScriptCase.
Restaurar Aplicao Utilizado para restaurar verses anteriores de uma aplicao.
Exportar Projeto Utilizado para exportar aplicaes desenvolvidas utilizando o
ScriptCase.
Importar Projeto Utilizado para importar aplicaes desenvolvidas utilizando o
ScriptCase.
Novos Mdulos -
Segurana
Ferramenta para automatizar controle de acesso as suas
aplicaes.
Logout Fecha o ScriptCase.

Exibir
Cdigo Fonte Exibir ltimo cdigo fonte gerado da aplicao que
est sendo editada.
Filtrar Usurios Todos os usurios Sero exibidas todas as aplicaes desenvolvidas
pelo grupo.
Filtrar Usurios Apenas admin Sero exibidas somente as aplicaes desenvolvidas
pelo usurio.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
80


2012
Filtrar Pastas Pastas clssicas Sero exibidos seus contedos quando forem
selecionadas.
Filtrar Pastas - Exibir abertas As pastas sero exibidas com seus contedos visveis.
Dados em Sesso Sero exibidas todas as variveis de sesso do
ScriptCase, bem como, as das aplicaes executadas.

Projeto
Propriedades Exibe as propriedades do projeto.
Valores Padres Exibe a lista dos valores padres para o projeto corrente.
Histrico de Verses Exibe as verses do projeto.
Incrementar Verso Incrementa a verso do projeto corrente.
Gerar Cdigo Fonte Gera o fonte de todas as aplicaes do projeto atual.
Publicar Abre o wizard de publicao do projeto corrente.
Exportar aplicaes Gera um arquivo de exportao do projeto corrente.
Importar aplicaes Importa um arquivo de backup no projeto corrente.
Excluir Elimina o projeto corrente.
Relatrios- Lista de Aplicaes Exibe as aplicaes do projeto.
Relatrios - Resumo por
Desenvolvedores
Exibe aplicaes totalizadas pelo desenvolvedor.
Exibir Diagrama Exibe o diagrama do projeto.
Busca em Aplicaes Permite buscar por texto nas aplicaes do projeto.

Conexes
Nova Conexo Cria uma nova conexo no projeto atual.
Editar Conexo Permite editar as conexes do projeto atual.

Aplicao
Salvar Salvar Aplicao.
Gerar Gerar o fonte da Aplicao.
Executar Executar a aplicao.

Ferramentas
SQL Builder Ferramenta para criao rpida de comandos
SQL.
Dicionrio de Dados Permite ao usurio definir padres para as
tabelas (nomes, e tipos de campos, etc.).
Edio expressa Abre uma janela para editar vrias aplicaes ao
mesmo tempo.
Criar WebHelp Ferramenta para criar documentao.
Bibliotecas Permite a criao de rotinas padres que sero
utilizadas em muitas aplicaes.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
81


2012
Regionalidade Idiomas Edio das mensagens.
Regionalidade Configuraes regionais Personalizao das configuraes regionais.
Conversor Conversor (V4 -> V5).
Visualizao- Temas Edio de Esquemas.
Visualizao- Botes Gerenciamento de botes.
Visualizao - Templates Edio de templates.

Configurao
Administrao Acesso a todas as configuraes da parte de
administrao do ScriptCase.
Meu ScriptCase Configuraes personalizadas no nvel do
usurio.
Trocar Senha Acesso a alterao senha.
Criar base de exemplos Abre um wizard para a criao das bases dos
sistemas de exemplos.

Ajuda
WebHelp Manual do ScriptCase.
Suporte Acessa o suporte on-line do ScriptCase.
Diagnosis Exibe configuraes do ambiente / Servidor
onde est instalado o ScriptCase.
Verificar Verso Acessa o site do ScriptCase a procura de
atualizaes.
Dicas Importantes Dicas do ScriptCase.
Sobre Informaes sobre o ScriptCase.

8.2. Barra de Ferramentas


Novo Projeto Cria um novo projeto.

Abrir Projeto Lista os projetos que o usurio possui permisso.

Fechar Projeto Fecha o projeto corrente.

Nova Conexo Cria uma nova conexo no projeto atual.

Editar Conexo Permite editar as conexes do projeto atual.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
82


2012

Novo Criar aplicaes atravs do recurso wizard.

Criao Expressa Criar aplicaes de forma expressa.

Salvar Salva a aplicao editada. (*)

Gerar Fonte Gera o cdigo-fonte da aplicao editada.(*)

Executar Salva a aplicao, gera o programa-fonte e o executa. (*)

SQL Builder Executa ferramenta para construo de comandos SQL.

Menu Principal. Retorna ao Menu Principal do SriptCase

Web Help
Documentao on-line do ScriptCase. De todas as
funcionalidades.

Logout Sada do ScriptCase.
(*) As opes Salvar, Gerar Fonte e Executar s sero habilitadas quando uma
aplicao est sendo editada.

Demais atributos da Barra de Ferramentas:
a) Usurio - Mostra o nome do usurio ativo.
b) Projeto e verso - Mostra o projeto / verso corrente selecionado pelo usurio.
8.3. Barra de Tarefas
A barra de tarefas mostra as aplicaes que foram abertas, permitindo a navegao entre elas.

8.4. Projeto Explorer
Projeto Explorer ocupa a parte central do SC, ficando logo abaixo da Barra de Tarefas. Figura abaixo
demonstra nosso projeto exemplo (treinamento).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
83


2012

direita teremos todas as Pastas criadas para administrao do projeto. Estas pastas no fazem parte do
Sistema, elas so repositrios das aplicaes e suas criaes servem apenas para melhor administrar as
aes que esto sendo desenvolvidas no projeto.

Por exemplo: Como todo sistema ter algumas aplicaes relativas segurana aconselhvel que criemos
uma pasta Segurana e nela depositaremos todas as aplicaes referentes segurana do sistema.
Click no boto

Defina um nome para a pasta (Seguranca). Este nome no poder conter espaos nem caracteres especiais.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
84


2012

Click no boto

Voc dever criar tantas pastas quantas forem necessrias para uma boa administrao do seu sistema.
Ateno! Entenda que estas pastas no faro parte do Sistema.
Utilize os botes para renomear e excluir (respectivamente) as pastas do seu projeto.
As pastas criadas sempre sero dispostas em ordem alfabtica. Se voc desejar estabelecer uma ordem
cronolgica utilize algarismos numricos no incio do nome das pastas (ex. 1_Tabelas, 2_Cadastros,
3_Consultas, etc).
No propsito deste curso descrever detalhadamente as funcionalidades do ScriptCase, para isso voc
dever baixar o Manual do Scriptcase no site
http://downloads.scriptcase.net/downloads/v5/manual/pt_br/pdfhelp_pt_br.pdf, ele bastante completo e
detalhado.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
85


2012
9. Personalizando Nosso Sistema.
Como foi dito anteriormente, nosso sistema precisa de algumas funcionalidades que estabeleam segurana.
Isso j foi discutido no Captulo Segurana. Com base na nossa modelagem vamos implementar nosso
esquema de segurana iniciando pelo cadastro de usurios.
Click na pasta Segurana para que as aplicaes a serem criadas fiquem depositadas nesta pasta.

A seguir click no boto (Nova Aplicao) localizado na barra de Ferramentas.
Defina:
a) Tipo nico registro;
b) Conexo conn_mysql;
c) Tabela usuarios;
d) Nome form_usuarios;
e) Click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
86


2012

Criada a aplicao, execute-a clicando no boto (Executar) localizado na barra de tarefas e teremos a
seguinte tela.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
87


2012

Pela tela apresentada pode-se notar que nossa tabela de usurios j est populada com os dados do
Administrador do Sistema todo esquema de segurana precisa ser populado com pelo menos um usurio, o
administrador, e isso foi feito durante a Modelagem do nosso Banco de Dados.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
88


2012
Todos os campos desta tabela (apresentados na figura anterior) foram descritos no captulo Segurana, em
caso de dvida reveja-o.
Faremos agora uma personalizao desta aplicao.
O primeiro passo da nossa personalizao ser criar um banco de idiomas.
9.1. Criando o Banco de Idiomas.
O SC cria aplicaes em vrios idiomas (a nossa ser disponibilizada em trs: portugus, ingls e espanhol)
isso s possvel porque criado um banco de idiomas que conter todas as variveis que necessitem de
labels para serem apresentados pelo sistema.
O conjunto de labels mais importante o nome dos campos das nossas tabelas, e para criarmos este banco
utilizaremos dois passos:
Passo 1 Criao do Dicionrio de Dicionrio de Dados.
Click no item Ferramentas do menu principal e escola a opo Dicionrio de Dados.

Defina:
a) O nome do dicionrio (treinamento). Este nome no poder conter espaos nem caracteres
especiais;
b) Descreva o dicionrio;
c) A conexo (conn_mysql);
d) Click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
89


2012

A seguir o SC disponibilizar uma tela contendo todas as tabelas referentes ao nosso banco de dados
(treinamento).

Selecione todas as tabelas clicando no boto e a seguir click no boto .
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
90


2012

Deixe marcada apenas a opo Gerar ndices nos arquivos de idiomas com os labels dos campos da tabela.
Se voc marcar tambm a o opo Sobrescrever ndices existentes nos arquivos de idioma, tudo que j
estiver sido criado no banco de idiomas ser apagado (para as tabelas selecionadas).
A seguir click no boto
Criado o Dicionrio de dados, faremos agora a atualizao da tabela de idiomas (tabela interna do nosso
projeto, gerado pelo (SC).
Passo 2 Atualizao da tabela de idiomas.
Click no item Ferramentas do menu principal e escola a opo Reginalidade -> Idiomas.

Comearemos atualizando a tabela usurios. Selecione tbe_usuarios.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
91


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
92


2012
Atualize os labels dos campos.

Click no boto .
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
93


2012
Esta tarefa ter que ser repetida para todos os idiomas e todas as tabelas do sistema.
Se voc executar as aplicaes j geradas (menu, form_clientes, grid_clientes e form_usuarios) observar
que os labels dos campos no sofreram qualquer alterao, isso porque o banco de idiomas foi gerado aps
as aplicaes terem sido criadas.
Para que seus labels sejam atualizados com menos esforo possvel, basta que deletemos as aplicaes
criadas e as criemos novamente. Isso nem sempre conveniente, mais adiante veremos o motivo.
Caso desejemos alterar algum label, de alguma aplicao j criada, basta alterarmos no banco de idiomas e
re-gerar a aplicao. Isso porque o banco foi criado antes da aplicao.
Vamos agora apagar todas as aplicaes criadas e a seguir recri-las de forma que os labels criados no banco
de idiomas sejam incorporados automaticamente.

Marque todas as aplicaes e click na opo DELETAR, conforme mostrado na figura acima.
Agora crie a nova aplicao, tipo formulrio, para a tabela usurios, conforme foi mostrado no tpico - Nova
Aplicao. Execute-a e teremos a seguinte tela.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
94


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
95


2012
Como voc pode observar os labels j esto iguais aos criados no banco de idiomas. Se voc gerar as outras
aplicaes poder notar que os labels esto todos perfeitos.
Nota Importante:

Sempre que for criar uma nova aplicao observe se o banco de idiomas para a
tabela j est criado. Isso gerar uma boa economia de tempo no desenvolvimento.


9.2. Criando a Aplicao Login
Agora que j foi visto como criar uma nova aplicao e como criar o banco de idiomas, criaremos a aplicao
login, que uma aplicao do tipo Controle.
As aplicaes do tipo Controle so semelhantes s aplicaes tipo Formulrio (porque tambm uma
aplicao de entrada de dados), com pequenas diferenas, as mais importantes so:
a) Sua criao no est associada a nenhuma tabela, desta forma no aceita algumas funcionalidades
(Mestre/Detalhes, Dependncias, Relacionamentos, etc);
b) Os Eventos relacionados a este tipo de aplicao so diferentes da aplicao Formulrio;
Crie uma nova aplicao tipo Controle, conforme figura abaixo.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
96


2012
Feito isso teremos a seguinte tela:

O prximo passo agora criarmos os campos login e senha, uma vez que esta aplicao no est
relacionada a qualquer tabela.
Click na opo Campos, a seguir Novo Campo.

Defina a criao de 2 (dois) campos.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
97


2012

Informe os nomes dos campos. Esses nomes no podero conter espaos nem caracteres especiais. E click no
boto

Criados os campos vamos personaliz-los.
9.2.1. Personalizando os Campos
Click no campo login para definirmos um label para ele.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
98


2012

No nosso banco de idiomas, na tabela usurios, j existem os labels criados para os campos login e senha
(daquela tabela), utilizaremos estes dois labels.
Click na opo Ferramentas -> Regionalidade -> Idiomas do Menu Principal

A seguir Click na tabela usurios (tble_usuarios) cole o ndice lang_usuarios_fild_login e copie para o label
do campo login da aplicao login.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
99


2012
No se esquea de colocar as chaves ({ }), antes e depois do label, para que o PHP assuma que uma
varivel local.

Agora click no campo senha para as devidas personalizaes.
Este campo precisar de trs alteraes:
a) O label Proceda como no exemplo anterior;
b) Campo tipo senha Para que no apaream os caracteres que sero digitados neste campo;
c) Os tipos de caracteres que podero ser digitados.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
100


2012
Agora definiremos as funcionalidades desta aplicao. Isso ser feito atravs dos Eventos.
9.2.2. Criando Eventos
Eventos so rotinas criadas pelo desenvolvedor para definirmos uma determinada ao. So semelhantes s
Trigers dos bancos de dados. Ou seja, sempre que acontecer isso, faa aquilo.
Click na opo Eventos

Os Eventos disponveis para esse tipo de aplicao (Controle) so:
a) onApplicationInit Ocorre uma vez quando o aplicativo carregado (primeira vez);
b) onScriptinit Ocorre sempre que a aplicao e carregada ;
c) onLoad Ocorre na carga do formulrio;
d) onRefresh Ocorre quando um campo fora a recarga do formulrio;
e) onValidate Ocorre durante a validao de dados, aps clicar no boto ;
f) onValidateFailure Ocorre quando existe erro de validao;
g) onValidateSucess Ocorre quando no existe erro de validao.
No h necessidade de decorar onde ocorre determinado evento. Se voc clicar e qualquer um deles, ser
aberta uma tela para criao do evento e o SC lhe informar em que situao ele ser executado.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
101


2012

Em toda aplicao login o evento a ser criado ser to tipo onValidate, ou seja no momento que o usurio
clicar no boto .

A primeira coisa que faremos limpar da sesso o perfil do ultimo usurio logado neste browser (Acesso).
Isso ser feito com a funo sc_reset_apl_status().

Agora vamos limpar da sesso o perfil do ultimo usurio logado neste browser (Direitos). Isso ser feito
com a funo sc_reset_apl_ conf ().
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
102


2012

Como as senhas armazenadas no banco estaro criptografadas, teremos que criptografar a senha informada
para compararmos com as que esto armazenadas.

Agora vamos proteger a aplicao de invases do tipo SQL Injection, para isso utilizaremos a funo
sc_sql_injection() sobre a varivel {login}.

Agora vamos buscar as informaes no banco. Para isso montamos o seguinte comando SELECT. O SC
disponibiliza a funo sc_lookup(data,$query) que armazenar na matriz (array) data o resultado da
pesquisa $query.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
103


2012

A seguir verificaremos:
a) Se usurio e senha no existem;
b) Se usurio est Inativo;
c) Se o Grupo de Acesso a que ele pertence est bloqueado (md5(Bloqueado) =
9d5ed678fe57bcca610140957afab571) ou no.

d) Se o primeiro acesso e se tem senha padro;
e) Caso no seja o primeiro acesso, se o perodo de expirao da senha foi excedido.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
104


2012

Estando tudo correto verificaremos os atributos que o usurio tem dentro do sistema.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
105


2012

Definidos os atributos, criaremos variveis globais que sero acessadas pelas demais aplicaes do sistema.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
106


2012

A seguir registraremos o acesso na tabela de Logs e redirecionaremos para o menu do nosso sistema.

Para gravarmos o registro no arquivo de logs, criaremos uma funo chamada de RegLogMysql() e
adicionaremos esta funo nossa biblioteca de funes, uma vez que ela ser executada por todas as
aplicaes do sistema.
9.2.3. Acrescentando uma Funo (PHP) nossa Biblioteca Pblica.
Click na opo Ferramentas -> Bibliotecas do Menu Principal
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
107


2012

A seguir defina como uma biblioteca Pblica.

Click no boto

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
108


2012
Digite o cdigo abaixo.

Observaes:
a) O nome da funo deve estar declarado dentro da funo;
b) necessrio a incluso das tags <?php e ?> no incio e no final da funo (se a funo for escrita
em PHP).
Ao final click no boto
Criada a funo necessrio que a mesma seja includa na aplicao login. Para tanto click na opo
Programao -> Bibliotecas -> Bibliotecas Pblicas e marque a rotina criada (RegLogMysql()).

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
109


2012
Agora vamos executar a aplicao clicando no boto Executar localizado na Barra de Ferramentas.
Ao clicarmos no boto Executar todas as alteraes executadas na aplicao sero salvas e o cdigo
fonte gerado automaticamente.

Esta a tela padro de uma aplicao tipo Controle. Est evidente que no estamos executando nenhuma
atualizao, portanto vamos alterar este layout para que seja uma aplicao de login.
9.2.4. Personalizando o LayOut
Click na opo Layout -> Visualizao e defina o Modelo Cabealho como sendo Elegant2 (apenas como
exemplo).

Crie agora dois novos labels (sistema e versao) no banco de idiomas (na pasta Geral), conforme exemplo
abaixo:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
110


2012

Ao clicar no boto so criados os labels (lang_sistema e lang_versao).

Retorne para a aplicao login e click na opo Layout -> Cabealho e Rodap, a seguir defina o ttulo com
o novo label criado ({lang_sistema}), no se esquecendo das chaves ({}).

Agora defina um novo rodap, conforme o exemplo abaixo:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
111


2012

Execute a aplicao clicando no boto

Neste ponto a aplicao j est com layout apropriado.
O SC tem incorporado duas funcionalidades muito interessantes:
a) Mudana de Idioma;
b) Mudana de Layout.
Ambas podem ser alteradas em tempo de execuo. Vamos implement-las nesta aplicao.
Selecione a opo Barra de Ferramentas, marque os itens Idiomas e Esquemas e transfira-os para a coluna
da direita usando a .
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
112


2012


Execute a aplicao clicando no boto

Por ora est pronta, mais adiante acrescentaremos mais uma funcionalidade a esta aplicao: Esqueceu a
Senha?
Agora veremos um novo tipo de aplicao Menu.
9.3. Criando uma Aplicao Tipo Menu.
O SC permite a criao de dois tipos de Menus:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
113


2012
a) Menu (Horizontal);
b) Menu rvore (Vertical)
A Operacionalizao de ambos idntica e, mesmo aps criado, possvel transformar um tipo no outro e
vice-versa.
A criao de um Menu j foi discutida no tpico Nova Aplicao. Nosso foco agora ser a personalizao
deste tipo de aplicao.
Click no boto (Nova Aplicao) localizado na barra de Ferramentas e escolha o tipo de aplicao Menu

Click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
114


2012

Teremos agora que editar a aplicao menu, de forma tal que ela possa executar as aplicaes geradas e sair
do sistema. Vamos l.

At o presente momento s temos duas aplicaes criadas:
a) Cadastro de Usurios;
b) Login;
Dessa forma criaremos apenas duas opes no Menu: a) Cadastro de Usurios e b) Sair do Sistema.
Inicialmente criaremos trs labels no banco de idiomas na pasta Geral (usurios, sair e logado), conforme
exemplo abaixo:

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
115


2012
Ao clicar no boto so criados os labels (lang_usuarios, lang_sair e Lang_logado).

Agora vamos inserir os itens no menu.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
116


2012

Execute a aplicao clicando no boto

Vamos personalizar nosso Menu.
9.3.1. Personalizando a Aplicao Menu
Na opo Layout marque a Exibio do cabealho e coloque o label {Lang_sistema} (criado anteriormente)
no ttulo.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
117


2012
Marque a Exibio do Rodap e acrescente na Linha 1/Coluna 1 (ROD_LIN1_COL1) a string: {lang_logado}
[sm_global_nome] - [sm_global_dtlog] ** {lang_versao} - {lang_usuarios_fild_usuarios_count} - [sm_global_contador].
Esta string composta das seguintes variveis:
a) {lang_logado} Label criado recentemente;
b) [sm_global_nome] Varivel global criada no evento onValidate da aplicao login e representa o
nome do usurio que est logado;
c) [sm_global_dtlog] Varivel global criada no evento onValidate da aplicao login e representa a
data em que o usurio se conectou;
d) {lang_versao} Label criado durante a criao da aplicao login;
e) {lang_usuarios_fild_usuarios_count} Label da tabela de usuarios e representa um contador de
acessos;
f) [sm_global_contador] Varivel global criada no evento onValidate da aplicao login e
representa a quantidade total de acessos ao sistema;

Agora iremos executar a aplicao login e a partir dela acessar o nosso menu. Se tentarmos acessar
diretamente a aplicao menu surgiro alguns erros, uma vez que algumas variveis foram criadas na
aplicao login e no foram repassadas para o menu.
Click na pasta Home e Execute a aplicao Login, conforme mostrado na figura abaixo.

Como j foi mencionado anteriormente, a tabela de usurios j est populada com o usurio
administrador e a senha 123456 (senha padro de todos os novos usurios).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
118


2012


Veja que nossa aplicao j est tomando um aspecto mais profissional, mas vamos melhorar.
Colocaremos no Menu as funcionalidades de escolha de Idiomas e LayOut.
Na opo Configurao da aplicao Menu, marque Selecionar Idioma e Selecione Tema.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
119


2012

O prximo passo acrescentar alguns cones nos itens do Menu.
Click na opo Itens do Menu, selecione o item usurios e click no boto para selecionar um cone.

Click na opo Pblico.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
120


2012

Escolha o cone.

Click no boto localizado no final da pgina.

A seguir click no boto e em seguida salve as alteraes clicando no boto
(localizado na Barra de Ferramentas do SC).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
121


2012

Escolha um cone para o item {sair}, repetindo o processo acima. Salve as alteraes clicando no boto
(localizado na Barra de Ferramentas do SC), gere a aplicao clicando no boto e execute a aplicao
Login.
Aps se logar no sistema teremos o nosso menu semelhante figura abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
122


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
123


2012
Terminado o Layout, a prxima alterao que faremos na aplicao menu criar um evento que registre os
acessos no arquivo de LOGs. Ou seja, sempre que um usurio acessar uma aplicao travs do menu, esse
acesso ser gravado na tabela logs.
Uma aplicao do tipo Menu possui apenas trs tipos de eventos:
a) onApplicationInit Ocorre uma vez quando o aplicativo carregado (primeira vez);
b) onExecute Ocorre quando um item de menu selecionado;
c) onLoad Ocorre quando o menu carregado;
Criaremos o seguinte evento onExecute:

Comentrios a respeito deste evento:
a) Linha 1 Incluiremos a rotina RegLogMysql (criada durante a aplicao login) ao escopo da
aplicao menu. Isto porque esse tipo de aplicao no disponibiliza a biblioteca de rotinas geradas
pelo desenvolvedor.
b) Linha 2 Atribumos varivel local $apl o valor da varivel {sc_script_name}. A varivel
{sc_script_name} s disponibilizada nas aplicaes do tipo menu.
c) Linha 3 Gravar o registro na tabela logs, atravs da funo RegLogMysql.
Pronto, agora conclumos esta aplicao.
Se desejarmos transformar nossa aplicao em uma aplicao tipo Menu rvore, selecione a opo
Aplicao, click em Converter Tipo de Menu e a seguir click no boto .
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
124


2012

Eventualmente quando se altera o tipo de menu a conexo com o banco de dados pode ser perdida,
precisamos restaur-la. Veja abaixo como faz-la.

Feito isso, salve as alteraes clicando no boto (localizado na Barra de Ferramentas do SC), gere a
aplicao clicando no boto .
Execute a aplicao Login.
Aps se logar no sistema teremos o nosso menu semelhante figura abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
125


2012

Escolha a que melhor lhe convier. Para o nosso treinamento utilizaremos o tipo tradicional (horizontal).
Daremos prosseguimento ao nosso curso criando as demais aplicaes que comporo nosso esquema total
de segurana.
Durante a criao da aplicao login, no evento onValidate, fizemos meno a funcionalidade Esqueceu a
Senha?. Pois bem, criaremos agora esta aplicao que possui um recurso bastante interessante
disponibilizado pelo SC Envio de Email.
9.4. Funcionalidade Esqueceu a Senha? (enviando email)
Sempre que o boto Esqueceu a Senha? Da aplicao login for clicado, o sistema executar as seguintes
tarefas:
a) Alterar a senha atual do usurio (esquecida) pela senha padro (123456);
b) Enviar ao usurio (por email) a confirmao da alterao da senha (para padro);
c) Enviar para o administrador do sistema um email, informando que o usurio fulano-de-tal solicitou
mudana de senha atravs do boto Esqueceu a Senha?
Essa nova aplicao ser do tipo Controle, semelhante ao login.
Iniciaremos criando dois novos labels no banco de idiomas (mensagem e mens_esqueceu_senha).
O Label mensagem ser:
a) Em portugus -> Voc receber sua<b> Nova Senha </b>no email indicado.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
126


2012
b) Em espanhol -> Usted recibir su contrasea<br>en email indicada.
c) Em ingls -> You will receive your password<br>in email indicated.

Ao clicar no boto so criados os labels (lang_mensagem e
lang_mens_esqueceu_senha).

Agora criaremos a aplicao tipo Controle -> esqueceu_senha.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
127


2012

Essa aplicao solicitar o login do usurio, seu nome completo e o seu email, a seguir comparar com o
banco de usurios se as informaes esto corretas. Caso estejam, enviar emails para o usurio e o
administrador do sistema. Para tanto criaremos quatro campos (uma vez que a aplicao tipo controle no
possui campos por no est associada a nenhuma tabela do nosso banco de dados).

Trs campos sero do tipo Texto (usurios_login, usurios_nome, usurios_email) e um do tipo Label
(mensagem). Veja a figura abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
128


2012

Click no boto .
Agora faremos a personalizao dos campos, conforme figuras abaixo.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
129


2012


Agora personalizaremos o layout desta aplicao, conforme a figura abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
130


2012

E por fim criaremos um evento OnValidate que executar as funes descritas no escopo deste tpico. Veja
abaixo.

Na figura acima ser verificado se o usurio e o seu email conferem com o banco de dados. Em caso positivo
o sistema ajustar a senha deste usurio para a padro (123456) e enviar email para ele informando-o
deste procedimento.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
131


2012

A funo do SC que enviar o email sc_mail_send.

Suas propriedades podero ser analisadas no manual do SC, cabe apenas a seguinte observao para que o
PHP proceda o envio deste email necessrio que as extenses php_openssl.dll e php_snmp.dll estejam
habilitadas no arquivo php.ini (arquivo de configurao do PHP). Por padro, estas extenses esto
desabilitadas.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
132


2012

A seguir ser verificado qual o email do administrador e o enviar um email informando que usurio fulano-
de-tal solicitou mudana de senha.

Finalmente, se tudo ocorreu sem problema o usurio receber um email informando que o email foi enviado
com sucesso ou que ocorreu um erro.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
133


2012

Salve as alteraes clicando no boto (localizado na Barra de Ferramentas do SC) e gere a aplicao
clicando no boto .
O prximo passo acrescentarmos um boto (Esqueceu a Senha?) na aplicao login.
Crie um label (lang_esqueceu_senha) para esse boto, a seguir edit a aplicao login, criando um Novo
Boto.


Este boto ser do tipo PHP ser apenas uma rotina PHP de redirecionamento para a aplicao
esqueceu_senha. Click no boto .
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
134


2012

Defina o label do boto e click na opo CODIGO PHP para acrescentarmos o redirecionamento.

Feito isso, o SC disponibilizar um novo boto (esqueceu_senha) na barra de ferramentas da aplicao.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
135


2012

Salve as alteraes clicando no boto (localizado na Barra de Ferramentas do SC), gere a aplicao
clicando no boto e execute-a.

Essa a aplicao pronta. Clique no boto .

Se tudo estiver correto o usurio ver a seguinte mensagem:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
136


2012

E receber um email, conforme modelo abaixo.

Agora que j temos a aplicao login bem definida, retornaremos a aplicao de cadastro de usurios
(form_usuarios) para personaliz-la.
Antes de iniciarmos a personalizao desta aplicao, utilizaremos um recurso do SC para definirmos valores
padres (cabealhos, rodaps, bibliotecas, etc) para as aplicaes criadas.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
137


2012
9.5. Valores Padres.
No menu principal click na opo Projetos -> Valores Padres.

Todos os valores atribudos nesta sesso sero utilizados nas novas aplicaes a serem criadas, por esse
motivo esse um dos passos iniciais para construo de um projeto.
Ns estabeleceremos modelos para:
a) Quantidade de registros na paginao (padro = 15) alterar para 20;
b) Campos obrigatrios Exibir mensagem (padro = Sim) alterar para No;
c) Templates (Formulrios, Consulta e Filtro)
Cabealho - Line;
Rodap Elegant
Linha 1 / Coluna 1 -> {lang_logado} [sm_global_nome] - [sm_global_dtlog] **
{lang_versao} - {lang_usuarios_fild_usuarios_count} - [sm_global_contador]
Linha 1 / Coluna 2 -> sys__NM__br.png
d) Bibliotecas Ativar RegLogMysql.php
e) Alinhamento dos campos na consulta Datas (meio)

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
138


2012



A seguir click no boto


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
139


2012

9.6. Personalizando uma Aplicao do tipo Formulrio.
A personalizao de uma aplicao algo muito pessoal, neste tpico abordaremos uma personalizao
onde possamos aplicar o maior nmero possvel de funcionalidades do SC, para esse tipo de aplicao.
Na construo da nossa aplicao form_usuarios obtivemos a seguinte tela (figura abaixo).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
140


2012

A inteno deix-la com os seguintes aspectos:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
141


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
142


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
143


2012

9.6.1. LayOut
Iniciaremos elaborando um novo layout, para tanto criaremos 5 novos blocos (endereo, documentao,
acesso, observao e usuarios_x_grupos) mas antes criaremos 3 labels (lang_documentacao, lang_acesso e
lang_grupo_usuario). O processo de criao dos labels j foi amplamente discutido anteriormente.
Veja figura abaixo:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
144


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
145


2012
Agora habilitaremos a exibio do Rodap (por padro o SC no habilta esta exibio).

Feito isso, iremos distribuir os campos pelos blocos recm criados, de acordo com as telas do formulrio
mostradas anteriormente.
9.6.2. Posicionamento dos campos.
Click na opo Posicionamento dos campos.

E teremos a tela.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
146


2012

A caixa da esquerda mostra os campos que no faro parte do formulrio e a direita os que sero exibidos
no formulrio.
Retiraremos os campos:
a) usuarios_id Campo auto-incrementvel pelo DB;
b) usuarios_senha Todos os usurios recm criados recebero uma senha padro (123456);
c) usuarios_ultima_troca Data da ltima troca da senha, para os novos usurios ser a data de
cadastro;
d) usuarios_dtcad Data e hora do momento do cadastro.
Agora distribuiremos os campos nos blocos:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
147


2012




Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
148


2012
O bloco usuarios_x_grupos ser preenchido oportunamente uma vez que o seu contedo no ser um
campo, e sim um relacionamento do tipo N para N.
Agora, seguindo uma cronologia, atribuiremos valores aos campos que no fazem parte do formulrio,
conforme figura abaixo.

9.6.3. Obrigatrios
Agora definiremos os campos obrigatrios.
Com base no esquema de segurana fazem-se obrigatrios os seguintes campos:
a) usuarios_id;
b) usuarios_login;
c) usuarios_nome;
d) usuarios_cpf;
e) usuarios_situacao;
f) grupo_acesso;
g) perfil_acesso;
h) perfil_acesso_agenda;
i) usuarios_periodo;
j) usuarios_ultima_troca;
k) usuarios_senhapadrao;
l) usuarios_dtcad;
m) usuarios_senha;
n) usuarios_email;
o) prop_reg;
p) prop_agd;
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
149


2012


9.6.4. Chave nica
Por definio usurios_id a chave primria, conseqentemente nica, desta forma acrescentaremos os
campos usurios_login e usurios_cpf ao rol.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
150


2012

9.6.5. Campos
O prximo passo ser definir as caractersticas dos campos.
Campo Tipo Caractersticas
usuarios _id Texto
usuarios_situacao Select Ativo / Inativo
clientes_id Select Tabela de clientes
usuarios_cep Texto Mscara - ##.###-###
usuarios_endereco Texto
usuarios_compl Texto
usuarios_bairro Texto
usuarios_municipio Texto
usuarios_uf Texto
usuarios_pais Texto BR
usuarios_cpf CPF
usuarios_rg Texto
usuarios_celular Texto Mscara (##) ####.####
usuarios_fone Texto Mscara (##) ####.####
usuarios_email Email
usuarios_login Senha Caracteres permitidos letras, nmeros e
ponto
grupo_acesso_id Select Tabela grupo_acesso
perfil_acesso_id Select Tabela perfil_acesso
prop_reg Select Tabela grupo_acesso
prop_agd Select Tabela grupo_acesso_agenda
perfil_acesso_agenda Select Tabela perfil_acesso_agenda
usuarios_count Nmero 0
usuarios_periodo Radio Nunca 999999999
30 dias 30
60 dias 60
90 dias 90
120 dias 120
usuarios_senhapadrao Radio Sim 0
No 1
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
151


2012
usuarios_observ Editor HTML Altura - 400

Faremos uma abordagem apenas dos campos que apresentem uma forma diferenciada de configurao.
usuarios_situacao Tipo Select (Manual) Ativo / Inativo


Observa-se que o label do campo foi adicionado automaticamante.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
152


2012

importante usar o Ttulo/Navegao nos campos tipo Select, isso forar o usurio excolher uma opo ao
invs de selecionar a primeira opo do select (que nem sempre ser a opo desejada).
clientes_id Tipo Select (Automtico) Tabela de Clientes

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
153


2012

Selecione a opo Automtico e click no link Construo do Select.

Escolha a tabela clientes.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
154


2012

Selecione o campo clientes_sigla como Campo Exibio e click no boto
Feito isso voc ter a seguinte tela.

Preciso agora incluir uma clusula WHERE, utilizando a funo PermiteAcesso discutida no captulo
Segurana, para definir quais clientes o usurio ter acesso para efetuar a sua escolha.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
155


2012

A varivel global [sm_global_login] foi criada durante na aplicao login. Toda varivel global no SC vem
sempre entre cochetes ([]). Por se tratar de uma varivel do tipo texto dever estar entre aspas simples (
).
O parmetro prop_reg refere-se ao proprietrio do registro na tabela clientes.
usuarios_cep Tipo Texto ou CEP.
O SC possui uma funcionalidade para tratamento de campos especficos (CPF, CNPJ, CEP, etc). Esta
funcionalidade ser oferecida na escolha do tipo de campo. Para determinao de campos do Tipo CEP o
SC utiliza uma base de dados oficial que atualizada periodicamente (anualmente). Na grande maioria das
vezes posso afirmar que mais de 90% - esta base de dados corrompida durante a transmisso (plana)
para o ambiente de produo e existem duas maneiras para solucionar este problema :
a) Compactando esta base antes da transmisso, enviando-a e descompactando-a no destino
(produo). Os arquivos compactados so fornecidos em anexo, no material deste treinamento.
b) Para fazer a descompactao no ambiente de produo necessrio que se tenha uma conta de
acesso pasta de produo e nem sempre isso possvel (por questes de segurana). Desta forma,
para resolver este problema, ns importamos esta base de dados para o nosso banco de dados
(tabela - cep) e solucionamos definitivamente a questo.
Veremos como proceder nas duas formas.
a) Utilizando o Tipo CEP nativo do SC.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
156


2012

A seguir defina os campos da sua tabela de usurios que correspondem aos parmetros que sero passados
da base de dados do SC.

No nosso caso teremos algo assim:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
157


2012

b) Utilizando o Tipo Texto (desenvolvido por ns).
Alteraremos a Mscara de Exibio - ##.###-###

E criaremos um Evento Ajax.
O evento Ajax ocorre sempre que alguma ao feita sobre um campo numa aplicao do tipo
formulrio/controle. Os seguintes eventos esto disponveis com o ScriptCase.
onChange - Este evento ocorre quando o campo tem o foco e o valor do campo mudado e o foco
direcionado para outro objeto.
onClick - Este evento ocorre quando o campo clicado.
onBlur - Este evento ocorre quando o campo tem o foco, o valor do campo no alterado e o foco
direcionado para outro objeto.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
158


2012
onFocus - Este evento ocorre quando o campo tem o foco.

Defina o campo usuarios_cep para criao do evento

Escolha o tipo de evento onChange e click no boto . Este evento ser executado sempre
que o campo for atualizado.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
159


2012

Acrescente o cdigo abaixo.

usuarios_cpf Tipo - CPF
Outro tipo de campo especial disponibilizado pelo SC (CPF ou CPF e CNPJ).

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
160


2012
Este campo tambm merece uma ateno especial. Ns no desejamos que dois CPFs iguais sejam includos
no nosso cadastro de usurios, comprometendo nosso esquema de segurana. Desta forma criaremos mais
um evento Ajax que verificar a existncia de outro CPF, igual ao que est sendo digitado, em nossa base.


Crie o evento e acrescente o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
161


2012

usuarios_login Tipo Texto
Determine os tipos de caracteres que podero ser digitados.

Tambm no desejamos que dois logins iguais sejam includos no nosso cadastro de usurios,
comprometendo nosso esquema de segurana. Desta forma criaremos mais um evento Ajax que verificar a
existncia de outro login, igual ao que est sendo digitado, em nossa base. Esse tipo de checagem pode ser
feita diretamente no banco de dados, criando uma chave nica para este campo, porm nossa inteno
criarmos uma situao que no haja necessidade de digitarmos o ltimo campo para identificarmos esta
duplicidade.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
162


2012


Crie o evento e acrescente o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
163


2012

usuarios_email Tipo Email.
Outro tipo de campo especial disponibilizado pelo SC (Email). O ser digitado este campo o SC verifica se a
nomenclatura corresponde a um endereo de email. Ele no verificar se o email vlido.

grupo_acesso_id Tipo Select (Automtico) Tabela de Grupos de Acesso
Este campo definir qual grupo de acesso o novo usurio pertencer, este assunto j foi discutido no captulo
segurana. Seu processamento idntico ao campo, alterando-se apenas a construo do select de consulta.
Veja abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
164


2012

usuarios_periodo Tipo Rdio (Manual) Nunca (999999999), 30 dias (30)

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
165


2012

usuarios_senhapadrao Tipo Rdio (Manual) Sim (0), No (0)


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
166


2012
Aqui tambm precisaremos de um tratamento especial. Veja, as aplicaes do tipo Formulrio so utilizadas
tanto para cadastrar um novo registro, como para alterar registros existentes. Neste campo especialmente,
durante a alterao de um registro, precisamos setar a senha para a condio de padro (123456) ou no e
lembre-se que nossas senhas so criptografadas. Assim sendo, criaremos novo evento Ajax para checarmos
esta condio e criptografar a senha padro.

Crie o evento e acrescente o cdigo abaixo.

usuarios_observ Tipo Editor HTML
Outro tipo de campo especial disponibilizado pelo SC (Editor HTML).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
167


2012

9.6.6. Eventos
Antes de definirmos alguns eventos discutiremos algumas funcionalidades do formulrio form_usuarios.
a) Aps incluso/alterao do registro criptografar a senha padro;
b) Aps a incluso criar um grupo de acesso a agenda para o novo usurio;
c) Aps a incluso definir o perfil de acesso a agenda do usurio;
d) Incluir o administrador no perfil de acesso a agenda do administrador o perfil do novo usurio. Esta
ao opcional se voc desejar que o administrador do sistema tenha acesso a todos os perfis de
agenda;
e) Registrar os logs das aes executadas (incluso,alterao ou excluso).
Os Eventos disponveis para esse tipo de aplicao (Formulrio) so:
OnInit - Este evento executado ao carregar a aplicao;
OnRefresh - Este evento executado ao recarregar a pagina da aplicao;
Onvalidate - Este evento e executado ao clicar nos botes de validao (OK,Alterar, incluir, Excluir, Filtrar)
dependendo da aplicao utilizada. No caso de Formulrio os V botes so: Incluir, Alterar e Excluir;
OnBeforeInsert - Este evento executado antes da insero do registro;
OnAfterInSert - Este evento e executado aps a insero do registro; `
OnBeforeUpdate - Este evento e executado antes da atualizao do registro;
OnAfterUpdate - Este evento e executado aps a atualizao do registro;
OnBeforeDelete - Este evento executado antes da excluso do registro;
OnAfterDelete - Este evento executado aps a excluso do registro;
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
168


2012
OnLoad - Este evento ocorre quando a pagina carregada. EX.: ao navegar de um registro para outro; ao
clicar nos botes ( novo, inserir, anterior etc.), ao recarregar a pgina, etc.

Assim sendo, por ordem cronolgica, criaremos os seguintes eventos.
onValidate
O evento onValidate ocorrer sempre que o formulrio for submetido (incluso, alterao ou excluso), no
caso especfico ele verificar se o boto foi clicado. Se for clicado no altere a senha do usurio
(para que no haja criptografia da senha que j est criptografada), se no ser responsvel pela criptografia
da senha.
Click na opo Eventos, a seguir onValidate.


A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
169


2012

onBeforeInsert
O evento onBeforeInsert ocorrer antes da incluso de novo registro e ser responsvel pela criptografia da
senha senha padro (123456), uma vez que todo novo usurio sempre receber a senha padro (123456).
Click na opo Eventos, a seguir onBeforeInsert.

A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
170


2012

onAfterInsert
O evento onAfterInsert ocorrer aps a incluso de novo registro e ser responsvel por:
a) Criar um grupo de acesso a agenda para o novo usurio;
b) Definir o perfil de acesso a agenda do usurio;
c) Incluir o administrador no perfil de acesso a agenda do administrador o perfil do novo usurio. Esta
ao opcional se voc desejar que o administrador do sistema tenha acesso a todos os perfis de
agenda;
d) Registrar os logs das aes executadas (incluso,alterao ou excluso).
Click na opo Eventos, a seguir onAfterInsert.

A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
171


2012

Comentrios:
No captulo segurana definimos que o campo prop_agd responsvel pela determinao de quem o
proprietrio do registro na tabela de agenda esse campo aparecer nas tabelas dos usurios e da agenda.
Para todo novo usurio cadastrado o sistema criar um perfil de acesso a agenda para esse usurio que
correspondente ao seu nome de login.
Ao se criar o novo perfil o sistema gerar automaticamente (uma vez que o campo perfil_acesso_agenda_id
auto incrementvel nesta tabela) e este novo id s ser conhecido aps a incluso do registro ento, aps a
incluso faremos a leitura deste registro para identificar o respectivo id, que corresponder ao prop_agd
deste usurio.
O cdigo acima representa estas tarefas.
A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
172


2012

Comentrios:
Para todo novo usurio cadastrado o sistema criar um grupo de acesso a agenda para esse usurio que
correspondente ao seu nome de login.
Ao se criar o novo grupo o sistema gerar automaticamente (uma vez que o campo
grupo_acesso_agenda_id auto incrementvel nesta tabela) e este novo id s ser conhecido aps a
incluso do registro ento, aps a incluso faremos a leitura deste registro para identificar o respectivo id,
que ser lanado no perfil de grupo deste usurio.
Obtido este valor lana-se um novo perfil de grupo de agenda deste usurio, contendo o seu grupo e perfil
de acesso a agenda
O cdigo acima representa estas tarefas.
Caso voc deseje que o administrador do sistema tenha acesso a agenda dos novos usurios ento digite o
cdigo abaixo.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
173


2012
A seguir digite o cdigo abaixo.

Comentrios:
O cdigo acima responsvel pela gravao dos logs da nova incluso.
onBeforeUpdate
O evento onBeforeUpdate ocorrer antes da alterao de um registro e ser responsvel pela consulta ao
registro antes da alterao. O resultado desta consulta ser armazenado em um array que ser comparado
s alteraes efetuadas.
Click na opo Eventos, a seguir onBeforeUpdate.

A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
174


2012

onAfterUpdate
O evento onAfterUpdate ocorrer aps da alterao de um registro e ser responsvel pela comparao da
consulta ao registro antes da alterao e aps a alterao. O resultado desta comparao ser registrado no
arquivo de logs.
Click na opo Eventos, a seguir onAfterUpdate.

A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
175


2012

onBeforeDelete
O evento onBeforeDelete ocorrer antes da excluso de um registro e ser responsvel pelo registro no
arquivo de logs deste cadastro excludo.
Click na opo Eventos, a seguir onBeforeDelete.

A seguir digite o cdigo abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
176


2012

9.6.7. N-N Relations
O relacionamento n <-> n necessrio para definirmos quais os grupos de usurios que o usurio pertence
(ex: Cadastradores, Acesso Restrito, etc).
Essa uma parte bastante especial, a tela abaixo mostrar o resultado deste relacionamento.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
177


2012
Para que haja um relacionamento n <-> n entre duas tabelas necessrio que haja uma terceira tabela que
servir de juno entre ambas. No caso especfico desejaremos fazer o relaciomento n <-> n entre as tabelas
de usuarios e grupos, para isso utilizaremos a tabela usuario_grupos como juno.
Veja o modelo abaixo.

Click na opo N-N Relations, a seguir Nova Atualizao.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
178


2012

Identifique o campo (usuarios_x_grupos), esta identificao no poder conter espaos nem caracteres
especiais. A seguir click no boto

A seguir voc informar a tabela onde ser montado select de consulta. Veja, iremos consultar quais os
grupos disponveis para informar qual(is) dele(s) o usurio pode participar.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
179


2012

O SC ento montar o select necessrio.

Voc agora definir o objeto de exibio, no nosso caso Duplo Select.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
180


2012
A seguir definiremos qual a tabela de ligao, ou seja a tabela que receber os novos registros
usuario_grupos.

Agora informaremos qual o campo chave na tabela de ligao entre a tabela de juno (usuario_grupos) e a
tabela do formulrio (usuarios) no nosso caso usuarios_id.

O prximo passo informar a chave estrangeira da tabela de relacionamento que ser atualizada com o
valor do lookup (grupos_id).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
181


2012

Defina o atributo de de ligao da tabela de relacionamento (prop_reg).

Para as demais opes (Filtro, Configurao da Visualizao e Configurao da Ajuda) basta clicar no boto
e por fim
Pronto agora a aplicao est totalmente configurada.
Veremos a seguira personalizao de uma aplicao do tipo Consulta
9.7. Personalizando uma Aplicao do tipo Consulta.
As aplicaes do tipo Consulta tm duas funes bsicas na estrutura dos sistemas gerados pelo SC:
a) Relatrios;
b) Filtros para as aplicaes do tipo Formulrio.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
182


2012
Criaremos agora uma aplicao do tipo Consulta para a tabela usurio. Para tanto click no boto (Nova
Aplicao) localizado na barra de Ferramentas.

Defina a tabela (usuarios).

Defina o nome da aplicao. Este nome no poder conter espaos nem caracteres especiais. Poderemos
utilizar o nome padro utilizado pelo SC (grid_usuarios).
Consideraes:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
183


2012
O SC disponibiliza um query que contm os campos que podero ser exibidos na consulta. Antes de criar a
aplicao faremos uma personalizao nesta query para que nos sejam disponibilizados apenas os campos
que nos interessam e os respectivos relacionamentos com outras tabelas (ex: clientes_id, grupo_acesso_id,
etc).
Exemplo:
Os campos que me interessam nesta consulta so: id, login, nome, CPF, celular, email, situao, sigla do
cliente, grupo de acesso, perfil de acesso, perodo de troca de senha, data da ltima troca da senha, se a
senha padro est setada e quem o proprietrio do registro. A escolha destes campos obedeceu a critrios
tcnicos (sob o prisma do administrador do sistema). Desta forma, nossa query seria conforme a figura
abaixo.


SELECT
u.usuarios_id,
u.usuarios_login,
u.usuarios_nome,
u.usuarios_cpf,
u.usuarios_celular,
u.usuarios_email,
u.usuarios_situacao,
c.clientes_sigla,
ga.grupo_acesso_descricao,
pa.perfil_acesso_descricao,
u.usuarios_periodo,
u.usuarios_ultima_troca,
u.usuarios_senhapadrao,
u.prop_reg
FROM
usuarios as u,
clientes as c,
grupo_acesso as ga,
perfil_acesso as pa
WHERE
c.clientes_id = u.clientes_id AND
u.grupo_acesso_id = ga.grupo_acesso_id AND
u.perfil_acesso_id = pa.perfil_acesso_id AND
PermiteAcesso('[sm_global_login]',u.prop_reg) = 'Sim'
ORDER BY
u.usuarios_nome

Substitua esta query pela sugerida pelo SC
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
184


2012

Como ns desejamos que o usurio visualize apenas os registros permitidos pelo seu grupo de acesso,
incluiremos na clusula where a funo PermiteAcesso (j discutida no captulo segurana)
Click no boto
Posicione todos os campos para serem exibidos na consulta.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
185


2012

Agora na opo Exportao habilite as opes PDF Configurvel e Resoluo do PDF. Isto porque se voc
desejar exportar para um arquivo PDF e a quantidade de colunas escolhidas exceder o tamanho do papel (ex:
A4), poder configurar o relatrio em tempo de execuo.

Na opo Ordenao, click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
186


2012

Se isso no for feito, os campos que no constavam do relatrio, antes de efetuarmos o Posicionamento dos
Campos, no podero ser submetidos ordenao na grid.
Na opo Campos altere o tipo do campo usuarios_cpf de Texto para CPF

Altere a Mscara de Exibio do campo usuarios_celular para (##) ####.####
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
187


2012

9.7.1. Campo Google Maps
Agora acrescentaremos um novo campo (mapa) onde poderemos visualizar o endereo do usurio. Esse
campo ser do tipo Google Maps.

Personalize o campo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
188


2012

Comentrios sobre a Chave API.
A chave API uma chave gerada pelo Google necessria para visualizao do mapa que fornecido por ela.
Para gerar essa chave acesse o site
http://code.google.com/intl/pt-BR/apis/maps/signup.html
Se voc for acessar o mapa atravs da sua mquina local, na solicitao da URL do Meu Site informe
localhost

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
189


2012
Caso contrrio, informe a URL verdadeira (ex: www.meusite.com.br).
Ao clicar no boto a chave ser gerada. Transfira-a para o local apropriado,
conforme mostra figura passada.

Para toda URL localhost a chave ser sempre a mesma.
ABQIAAAAnRQBs5ayZsDYXagoIkMIyxT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSpabRcxbrUvm76cnr7aFK09o-YRw
Essa chave ser lembrada no momento da configurao do ambiente de produo, aps a publicao do
sistema.

Comentrios importantes sobre esse tipo de Campo.

1. Se o modo de visualizao for do tipo Modal o mapa no ficar centralizado no
endereo solicitado ele ficar no canto esquerdo superior BUG do SC e no h
como configurar esta centralizao.
Soluo Criar uma nova aplicao apenas para a visualizao do endereo e
torn-la sub-consulta da aplicao principal. A aplicao view_colab_mapa um
exemplo de como isso pode ser feito.

2. Se a sua consulta tiver relacionamentos, estabelea aliases para os campos
endereo,bairro, municpio, estado e pais, caso contrrio o SC provocar um erro
BUG do SC .
Exemplo:
SELECT
u.usuarios_id,
u.usuarios_login,
u.usuarios_nome,
u.usuarios_cpf,
u.usuarios_celular,
u.usuarios_endereco as usuarios_endereco,
u.usuarios_bairro as usuarios_bairro,
u.usuarios_municipio as usuarios_municipio,
u.usuarios_uf as usuarios_uf,
u.usuarios_pais as usuarios_pais,
u.usuarios_email,
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
190


2012
u.usuarios_situacao,
c.clientes_sigla,
ga.grupo_acesso_descricao,
pa.perfil_acesso_descricao,
u.usuarios_periodo,
u.usuarios_ultima_troca,
u.usuarios_senhapadrao,
u.prop_reg
FROM
usuarios as u,
clientes as c,
grupo_acesso as ga,
perfil_acesso as pa
WHERE
c.clientes_id = u.clientes_id AND
u.grupo_acesso_id = ga.grupo_acesso_id AND
u.perfil_acesso_id = pa.perfil_acesso_id AND
PermiteAcesso('[sm_global_login]',u.prop_reg) = 'Sim'
ORDER BY
u.usuarios_nome


Altere o tipo do campo usuarios_email de Texto para E-mail

Na opo Layout -> Cabealho & Rodap habilite a exibio do rodap e acrescente o label
{Lang_tble_usuarios} ao ttulo do cabealho.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
191


2012

Na opo Detalhes -> Cabealho acrescente o label {Lang_tble_usuarios} ao ttulo do cabealho e altere as
variveis do cabealho conforme a figura abaixo.

Na opo Aplicao -> Navegao defina a URL de Sada como sendo a aplicao menu e habilite a opo
Fechar Janela, conforme a figura abaixo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
192


2012

Agora criaremos uma ligao do tipo Aplicao com a aplicao form_usuarios, veja as figuras seguintes.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
193


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
194


2012

Existe outra forma de efetuar ligaes entre aplicaes, logo mais adiante veremos outra forma. Por ora est
pronta nossa aplicao de Consulta.
Iremos agora gerar todas as aplicaes criadas e verificar o resultado. Proceda como as figuras abaixo.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
195


2012

Se tudo ocorreu sem problemas voc ver a seguinte tela.

Agora execute a aplicao login e veja se est tudo ok. O usurio inicial administrador e a senha 123456.
Personalizando a Ligao
Se voc acessar o cadastro de usurios ver a seguinte tela:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
196


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
197


2012
Pois bem, a tela esta perfeita e funcional, mas podemos melhor-la.
O SC utiliza os cones para linkar com uma tela de detalhes e com a aplicao form_usuarios
(alteraes). Muitos usurios no entendem muito bem esses dois cones, principalmente o lpis ( ) que
indica alterao do registro.
Tambm o boto no uma forma muito amigvel de comunicao com o usurio (digitador), at por
que em alguns casos no algo NOVO que se quer adicionar e sim algo NOVA (questo de semntica).
Faremos uma personalizao desta consulta, substituindo os cones e o boto por algo mais
sensitivo.
Vamos l, edite a aplicao grid_usuarios.
Iniciaremos excluindo a ligao.

Criaremos um novo boto para adicionar um novo usurio (novo_usuario). Esse boto ser do Tipo PHP, ou
seja ser uma rotina php para direcionamento aplicao form_usuarios.
Criaremos agora uma aplicao do tipo Menu para o nosso sistema. Para tanto click no boto

Altere o modo de exibio deste boto para Imagem, associe um cone a esta imagem e click no link CODIGO
PHP para escrever a rotina de redirecionamento.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
198


2012

Agora escreva o cdigo.

Criado o boto, acesse a opo Barra de Ferramentas e posicione o boto (novo_usuario) na posio
adequada e retire o Botes do Formulrio da exibio da consulta.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
199


2012

Agora acrescentaremos um boto ao lado de cada registro pra efetuar a alterao dos mesmos.
Crie um novo campo do tipo Imagem HTML (alterar_usuario).

Altere o Label (Alterar), associe uma imagem, posicione o Alinhamento Horizontal Centralizado,
Alinhamento Horizontal Meio e click no boto

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
200


2012
Marque a aplicao form_usuarios e click no boto

Ajuste os parmetros que sero passados para a aplicao form_usuarios, click no boto e a
seguir no boto

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
201


2012
Na opo Posicionamento dos Campos coloque o novo boto (alterar_usuario) para o incio da consulta e
click no boto

A seguir gere todas as aplicaes e execute a aplicao login.
Agora voc tem uma tela mais amigvel.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
202


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
203


2012
Faremos agora uma nova personalizao nesta consulta. Efetuaremos uma quebra por Clientes (Sigla), voc
pode observar que existem usurios para dois clientes diferentes (Oops e JCM).
Edite a aplicao grid_usuarios e selecione a opo Quebras -> Posicionamento dos Campos, marque o
campo clientes_sigla.

Agora na opo Quebras -> Posicionamento dos Campos, altere o Separador do valor para (:)

A seguir gere a aplicao e execute a aplicao login.
Sua consulta agora est assim.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
204


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
205


2012
Pronto! Encerramos esta sesso.
9.8. Ligaes entre aplicaes.
Um recurso bastante interessante a ligao entre aplicaes, veremos algumas situaes.
9.8.1. Ligao no Select (captura)
Imagine a seguinte situao:
Durante o preenchimento de um formulrio, em um campo do tipo select, observou-se a necessidade de
cadastrar uma nova opo. Vejamos como fazer, sem a necessidade de abandonar o formulrio.
Utilizaremos como exemplo a aplicao form_colaboradores, edite-a.
Edite o campo lotacao_id.

Crie a ligao com a aplicao form_lotacao.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
206


2012

Passe os parmetros correspondentes e salve.

Informe que a ligao ser feita no modal.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
207


2012
Gere a aplicao e execute o sistema.

Se voc clicar no boto ter a seguinte tela de cadastro do Departamento.

9.8.2. Ligao no Container.
Um container no SC um local onde vrias aplicaes podem estar abertas simultaneamente (ex. agenda,
grficos, filtros, etc). Cada aplicao desta fica dentro de um iframe. O que ns faremos, no nosso exemplo,
atualizar uma aplicao e recarregar outra (em outro iframe) dinamicamente, atravs de uma funo
javascript.
No SC o nome dos iframes segue um padro: id-iframe-widget1, id-iframe-widget2, id-iframe-
widgetX..

possvel pra acessar um widget de qualquer evento ou boto em outro widget, basta inserir um javascript
atravs de um echo ou uma funo. As funes ou mtodos javascript s podem ser criadas em aplicaes
do tipo formulrio.
echo "<script language='javascript'>
parent.window['id-iframe-widgetX'].......;
</script>";

Exemplos:
Realizar "refresh" no widget-2:
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
208


2012
parent.window['id-iframe-widget2'].location.reload();
Alterar a url do widget-2 pra aplicao "grid_abc":
parent.window['id-iframe-idget2'].location.href='../grid_abc/grid_abc.php';
Capturar campo {cod_usuario} do widget-2:
parent.window['id-iframe-widget2'].document.getElementByID('cod_usuario').value;
Alterar campo {nome_usuario} do widget-2:
parent.window['id-iframe-widget2'].document.getElementByID('nome_usuario').value =
'Novo Nome';
Utilizaremos as aplicaes cad_colaboradores e grafico_cbo. Atualizaremos o cargo do colaborador
e automaticamente o grfico de cargos ser alterado.
Edite a aplicao container para criar um widget.

O widget criado possui um nome. Independentemente de voc estabelecer um label para ele, este sempre
ser o seu nome.

Edite-o conforme a figura abaixo e salve

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
209


2012
Agora edite a aplicao cad_colaboradores criando um novo mtodo javascript (atualiza_cargo).


Agora altere o eventos onAfterInsert (aps a insero de um novo registro), on AfterUpdate (aps a
atualizao) e onAfterDelete (aps a excluso).

Nota : Esta funo no funciona no FireFox.
Gere as aplicaes, abra o Google Chrome ou o IE e faa os testes.
9.9. Construindo/Alterando um Template
O processo de construo ou alterao de um template exatamente o mesmo, uma vez que o SC trar
sempre um modelo pr-existente para que seja alterado (mesmo quando solicitado a criao de um novo) e
esse procedimento nos ajudar muito.
Nosso exemplo ser a construo de uma tela de login, nada muito complicado.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
210


2012
Na tela atual assim.

A deixaremos assim.

Construir um template lento e emprico, sero necessrias algumas horas de trabalho para ajustar todos os
campos, cores, etc e uma boa dose de criatividade. Comece sempre criando sua tela, para tanto utilize um
editor grfico de sua preferncia (ns utilizamos o Corel Draw). A nossa ficou assim.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
211


2012

Comentrios:
a) Nossa tela foi construda inteira, 100% da tela do navegador;
b) No coloque os campos (login, senha, etc) o SC far isso.
A seguir acesse a opo Ferramentas -> Visualizao -> Temas do menu principal do SC

Escolha um esquema que seja igual ao do seu projeto (nosso exemplo: ScriptCase5_Green) e a seguir click no
boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
212


2012

A aplicao login uma aplicao do tipo Controle que , como j foi mencionado no incio desta apostila,
uma aplicao do tipo Formulrio com caractersticas especiais (no est associada a nenhuma tabela, etc),
desta forma faremos alterao na opo Formulrio do nsso novo template.

Depois de muitas tentativas e erros estabelecemos os valores que passaremos atravs das telas seguintes,
para cada opo do Formulrio.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
213


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
214


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
215


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
216


2012

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
217


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
218


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
219


2012

Feitas as alteraes click no boto o SC solicitar o Local e o Nome do tema.

Agora edite a aplicao login.
Na opo Configurao faa os ajustes conforme tela abaixo. Os valores obtidos foram alcanados atravs
do mtodo de tentativas e erros e aplica-se apenas ao nosso exemplo. Na construo da sua tela esses
valores certamente no sero os mesmos.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
220


2012

Na opo Layout -> Blocos ajuste a quantidade de Campos/Colunas para 2.

Na opo Layout -> Visualizao ajuste o Esquema para Tela_De_Login.

Na opo Layout -> Cabealho & Rodap desabilite a exibio do cabealho e do rodap.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
221


2012

A seguir gere a aplicao e execute a aplicao login.
Sua tela de login agora est assim.

Tudo Ok?
Os exemplos acima lhe deram uma boa orientao no procedimento de tcnicas avanadas do SC, existem
outras que veremos a seguir. Para exemplific-las faremos a importao de um projeto pronto que servir de
subsdio para os prximos passos.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
222


2012
Para exportar um projeto proceda da seguinte maneira.
Saia da aplicao clicando no boto localizado na Barra de Ferramentas do SC

Selecione a opo Arquivos -> Importar Projeto no menu principal do SC.

Selecione o arquivo (compactado) a importar e click no boto

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
223


2012
O SC informa o nome do projeto, que voc poder alter-lo caso j exista um projeto com o mesmo nome. A
seguir click no boto

Pronto! Agora abra o projeto (Treinamento) e gere o cdigo fonte todas as aplicaes.
Execute a aplicao login.
Execute diversos testes para entender o funcionamento da estrutura de segurana.
9.10. Criando/Personalizando uma Aplicao
Calendrio
Como vocs puderam observar a aplicao calendrio (agenda) j est criada. Seu processo de criao
muito simples, necessitando apenas que na sua tabela possua os seguintes campos: id, ttulo, data de incio,
hora de incio, data final, hora final, recorrncia e perodo. O SC far toda montagem sem qualquer
dificuldade.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
224


2012

O que ns faremos agora :
a) Ajustarmos nosso esquema de segurana de forma tal que esta possa ser compartilhada
corporativamente;
b) Criarmos a funcionalidade de gerao de mltiplas ocorrncias para o mesmo evento;
c) Criarmos os logs.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
225


2012

Edite a aplicao agenda.
Por padro todos os eventos gerados sero visualizados por toso os usurios do sistema e isso nem sempre
conveniente. Utilizando a funo PermiteAcessoAgenda, discutida no captulo Segurana, a tornaremos
pessoal ou corporativa.
Na opo SQL, inclua na clusula Where a funo
PermiteAcessoAgenda([sm_global_login], prop_agd) = Sim

Criaremos o campo nr_recor que determinar quantas vezes este evento ser replicado.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
226


2012

Criaremos o campo grupo_acesso para informar ao usurio quem est compartilhando aquele evento. Este
campo ser do tipo Select.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
227


2012

Eventos da Agenda
Crie o evento onBeforeInsert (antes da incluso). Esto este evento informar que o usurio logado estou este
evento.

Crie os eventos onAfterInsert (aps a incluso). Este evento far as devidas replicaes caso o nmero de
ocorrncias seja superior a 1 e, ao final, registrar os logs.
// Lanamento das Ocorrncias...

if({nr_recor} > 1)
{
if({agenda_periodo} == 'D')
{
$w=1;
$z={nr_recor}-1;
for($x = 0; $x < $z; $x++ ) {
$nova_dtinicio = sc_date_conv({agenda_dtinicio},"db_format","dd/mm/aaaa");
$nova_dtinicio = SomarData($nova_dtinicio, $w, 0, 0);
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
228


2012
$nova_dtfim = sc_date_conv({agenda_dtfim},"db_format","dd/mm/aaaa");
$nova_dtfim = SomarData($nova_dtfim, $w, 0, 0);
$w++;
$insert_sql = "INSERT INTO agenda
(
agenda_titulo,
agenda_dtinicio,
agenda_hrinicio,
agenda_dtfim,
agenda_hrfim,
agenda_recorrente,
agenda_periodo,
agenda_descricao,
agenda_alerta,
usuarios_login,
agenda_dtcad,
prop_reg,
prop_agd
)
VALUES
(
'{agenda_titulo}',
'$nova_dtinicio',
'{agenda_hrinicio}',
'$nova_dtfim',
'{agenda_hrfim}',
'{agenda_recorrente}',
'{agenda_periodo}',
'{agenda_descricao}',
'{agenda_alerta}',
'[sm_global_login]',
current_timestamp,
[sm_global_acesso],
{prop_agd}
)";
sc_exec_sql($insert_sql);
}
}
elseif({agenda_periodo} == 'W')
{
$w=7;
$z={nr_recor}-1;
for($x = 0; $x < $z; $x++ ) {
$nova_dtinicio = sc_date_conv({agenda_dtinicio},"db_format","dd/mm/aaaa");
$nova_dtinicio = SomarData($nova_dtinicio, $w, 0, 0);
$nova_dtfim = sc_date_conv({agenda_dtfim},"db_format","dd/mm/aaaa");
$nova_dtfim = SomarData($nova_dtfim, $w, 0, 0);
$w = $w+7;
$insert_sql = "INSERT INTO agenda
(
agenda_titulo,
agenda_dtinicio,
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
229


2012
agenda_hrinicio,
agenda_dtfim,
agenda_hrfim,
agenda_recorrente,
agenda_periodo,
agenda_descricao,
agenda_alerta,
usuarios_login,
agenda_dtcad,
prop_reg,
prop_agd
)
VALUES
(
'{agenda_titulo}',
'$nova_dtinicio',
'{agenda_hrinicio}',
'$nova_dtfim',
'{agenda_hrfim}',
'{agenda_recorrente}',
'{agenda_periodo}',
'{agenda_descricao}',
'{agenda_alerta}',
'[sm_global_login]',
current_timestamp,
[sm_global_acesso],
{prop_agd}
)";
sc_exec_sql($insert_sql);
}
}
elseif({agenda_periodo} == 'M')
{
$w=1;
$z={nr_recor}-1;
for($x = 0; $x < $z; $x++ ) {
$nova_dtinicio = sc_date_conv({agenda_dtinicio},"db_format","dd/mm/aaaa");
$nova_dtinicio = SomarData($nova_dtinicio, 0, $w, 0);
$nova_dtfim = sc_date_conv({agenda_dtfim},"db_format","dd/mm/aaaa");
$nova_dtfim = SomarData($nova_dtfim, 0, $w, 0);
$w++;
$insert_sql = "INSERT INTO agenda
(
agenda_titulo,
agenda_dtinicio,
agenda_hrinicio,
agenda_dtfim,
agenda_hrfim,
agenda_recorrente,
agenda_periodo,
agenda_descricao,
agenda_alerta,
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
230


2012
usuarios_login,
agenda_dtcad,
prop_reg,
prop_agd
)
VALUES
(
'{agenda_titulo}',
'$nova_dtinicio',
'{agenda_hrinicio}',
'$nova_dtfim',
'{agenda_hrfim}',
'{agenda_recorrente}',
'{agenda_periodo}',
'{agenda_descricao}',
'{agenda_alerta}',
'[sm_global_login]',
current_timestamp,
[sm_global_acesso],
{prop_agd}
)";
sc_exec_sql($insert_sql);
}
}
elseif({agenda_periodo} == 'A')
{
$w=1;
$z={nr_recor}-1;
for($x = 0; $x < $z; $x++ ) {
$nova_dtinicio = sc_date_conv({agenda_dtinicio},"db_format","dd/mm/aaaa");
$nova_dtinicio = SomarData($nova_dtinicio, 0, 0, $w);
$nova_dtfim = sc_date_conv({agenda_dtfim},"db_format","dd/mm/aaaa");
$nova_dtfim = SomarData($nova_dtfim, 0, 0, $w);
$w++;
$insert_sql = "INSERT INTO agenda
(
agenda_titulo,
agenda_dtinicio,
agenda_hrinicio,
agenda_dtfim,
agenda_hrfim,
agenda_recorrente,
agenda_periodo,
agenda_descricao,
agenda_alerta,
usuarios_login,
agenda_dtcad,
prop_reg,
prop_agd
)
VALUES
(
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
231


2012
'{agenda_titulo}',
'$nova_dtinicio',
'{agenda_hrinicio}',
'$nova_dtfim',
'{agenda_hrfim}',
'{agenda_recorrente}',
'{agenda_periodo}',
'{agenda_descricao}',
'{agenda_alerta}',
'[sm_global_login]',
current_timestamp,
[sm_global_acesso],
{prop_agd}
)";
sc_exec_sql($insert_sql);
}
}
}

$apl = 'agenda';
$mess_executada = 'Incluir - '.{lang_tble_agenda};
$mess_realizada='<table border=1 style="padding: 0px; border-spacing: 0px; border-width:
0px;">
<tr class="scGridLabel">
<td class="scGridLabelFont">Campo
<td class="scGridLabelFont">Valor';
$i=0;
foreach ($this->nm_new_label as $campo=>$display)
{
$display=$this->Ini->Nm_lang[substr($display,1,-1)];
$mess_realizada.="<tr><td class=scGridFieldOddFont>$display<td
class=scGridFieldOddFont>".$this->$campo;
$i++;
}
$mess_realizada.='</table>';

RegLogMysql($apl,$mess_executada,$mess_realizada);


Crie os eventos onBeforeUpdate (antes da alterao). Este evento ser responsvel pela consulta ao registro
antes da alterao. O resultado desta consulta ser armazenado em um array que ser comparado s
alteraes efetuadas.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
232


2012

Crie os eventos onAfterUpdate (aps a alterao). Este evento ser responsvel pela comparao da
consulta ao registro antes da alterao e aps a alterao. O resultado desta comparao ser registrado no
arquivo de logs.

Crie os eventos onBeforeDelete (antes da excluso). Este evento ser responsvel pelo registro no arquivo
de logs deste evento excludo.
9.11. Registro de Logs/Acessos
Toda aplicao do tipo Formulrio ter sempre quatro eventos para o registro de logs:
a) onAfterInsert.


$apl = 'aplicao';
$mess_executada = 'Incluir - '.{lang_tble_tabela};
$mess_realizada='<table border=1 style="padding: 0px; border-spacing: 0px; border-width: 0px;">
<tr class="scGridLabel">
<td class="scGridLabelFont">Campo
<td class="scGridLabelFont">Valor';
$i=0;
foreach ($this->nm_new_label as $campo=>$display)
{
$display=$this->Ini->Nm_lang[substr($display,1,-1)];
$mess_realizada.="<tr><td class=scGridFieldOddFont>$display<td class=scGridFieldOddFont>".$this->$campo;
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
233


2012
$i++;
}
$mess_realizada.='</table>';

RegLogMysql($apl,$mess_executada,$mess_realizada);



b) onBeforeUpdate;


sc_lookup(dataset,"SELECT * FROM tabela WHERE tabela_id = { tabela_id}");
$dataset_anterior={dataset[0]};



c) onAfterUpdate;


$apl = 'aplicao';
$mess_executada = 'Alterar - '.{lang_tble_tabela};
$mess_realizada='<table border=1 style="padding: 0px; border-spasgservng: 0px; border-width: 0px;">
<tr class="scGridLabel">
<td class="scGridLabelFont">Campo
<td class="scGridLabelFont">Anterior
<td class="scGridLabelFont">Atual';
sc_lookup(ver_campos,"SHOW columns FROM tabela");
sc_lookup(dataset,"SELECT * FROM tabela WHERE tabela_id = { tabela_id}");
$dataset_atual = {dataset[0]};
foreach({ver_campos} as $chave => $valor )
{
if((!($dataset_anterior[$chave]==$dataset_atual[$chave])) or ($chave < 1))
{
$mess_realizada.="<tr><td class=scGridFieldOddFont>".
$this->Ini->Nm_lang['lang_tabela_fild_'.$valor[0]].
"<td class=scGridFieldOddFont>".$dataset_anterior[$chave].
"<td class=scGridFieldOddFont>".$dataset_atual[$chave];
}
}
$mess_realizada.='</table>';
RegLogMysql($apl,$mess_executada,$mess_realizada);



d) onBeforeDelete.


$apl = 'aplicao';
$mess_executada = 'Excluir - '.{lang_tble_tabela};
$mess_realizada='<table border=1 style="padding: 0px; border-spacing: 0px; border-width: 0px;">
<tr class="scGridLabel">
<td class="scGridLabelFont">Campo
<td class="scGridLabelFont">Valor';
$i=0;
foreach ($this->nm_new_label as $campo=>$display)
{
$display=$this->Ini->Nm_lang[substr($display,1,-1)];
$mess_realizada.="<tr><td class=scGridFieldOddFont>$display<td class=scGridFieldOddFont>".$this->$campo;
$i++;
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
234


2012
}
$mess_realizada.='</table>';

RegLogMysql($apl,$mess_executada,$mess_realizada);


9.12. Segurana nas Aplicaes
Um ponto forte do SC que ele efetua o controle de sesses no php para evitar que usurios no
autorizados acessem as aplicaes fora do sistema ou seja sem ter efetuado o login.
Isso feito ativando-se o mdulo de segurana em cada aplicao.

Voc poder fazer essa ativao automaticamente em todas as aplicaes utilizando um recurso bastante
interessante do SC Edio Expressa. Vejamos
Click no item Ferramentas do menu principal e escola a opo Edio Expressa.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
235


2012
Voc poder escolher Todas ou selecionar as desejadas.

Escolha a opo desejada para a edio expressa.

A seguir defina sua escolha e click no boto
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
236


2012

A seguir sero apresentadas as aplicaes que sofreram alterao.


Ateno.

Voc no poder ativar a segurana de duas aplicaes, sem as quais ser
impossvel acessar o sistema:

a) Login
b) Esqueceu a Senha.

Se voc escolheu ativar todas as aplicaes ter que editar estas duas aplicaes e
desativar a segurana (em ambas). Por isso, dentro do nosso projeto, estas duas
aplicaes esto na pasta Segurana -> Sem_Segurana.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
237


2012
Sempre uma nova aplicao for gerada no sistema haver a necessidade de pelo menos o administrador ter
acesso a mesma. Para tanto desenvolvemos a aplicao grid_aplicacoes que, alm de ser uma consulta
tabela aplicaes, ela verificar quais aplicaes foram recm criadas e dar acesso total (Incluso,
Alterao, Excluso e Consulta) ao administrador. Edite esta aplicao.
No evento onScriptInit poder ser vista a rotina que far a verificao descrita acima.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
238


2012

Com essas informaes vocs podero analisar todas as demais aplicaes.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
239


2012
10. Relatrios
Toda aplicao do tipo Consulta um relatrio, porm existem mais duas formas de obtermos relatrios no
SC.
10.1. Criando uma aplicao tipo Report PDF.
No nosso exemplo utilizaremos a impresso de um certificado de concluso de curso.
Utilize o aplicativo grfico de sua preferncia para gerar um arquivo jpg/pmg referente ao certificado,
conforme exemplo abaixo.

Criaremos agora uma aplicao do tipo Report PDF para a tabela cocluintes. Para tanto click no boto
(Nova Aplicao) localizado na barra de Ferramentas.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
240


2012
Defina a tabela (concluintes).

Utilizaremos a query abaixo, como exemplo

SELECT
'Este Documento Certifica que ' as frase1,
colaboradores_nome,
concat('Participou do Curso ',certificados_tit) as frase2,
concat('com carga horria de ',eventos_horas, ' no perodo de ',concat(EXTRACT(day from eventos_dtin),'/',EXTRACT(MONTH from
eventos_dtin),'/',EXTRACT(year from eventos_dtin)),' a ',concat(EXTRACT(day from eventos_dtconcl),'/',EXTRACT(MONTH from
eventos_dtconcl),'/',EXTRACT(year from eventos_dtconcl))) as frase3,
eventos_facil
FROM
concluintes as cc,
colaboradores as c,
certificados as ct,
eventos as e
WHERE
ct.eventos_id = e.eventos_id and
cc.certificados_id = ct.certificados_id and
cc.colaboradores_id = c.colaboradores_id


Voc pode observar que estamos utilizando cada linha do select como sendo o texto pronto para impresso
do certificado.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
241


2012

Agora efetue os seguintes ajustes:

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
242


2012


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
243


2012

Pode-se definir algumas caractersticas especficas para cada linha clicando no boto

Esta pronta.
Agora edite a aplicao grid_concluintes e faa uma ligao com a aplicao pdfreport_concluintes (gerada
acima)
Crie um campo (certificado) do tipo Imagem HTML
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
244


2012

Vamos Editar a Ligao deste campo.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
245


2012


Gere as duas aplicaes (grid_concluintes e pdfreport_concluintes) e execute o sistema.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
246


2012

10.2. Utilizando o template Formato Livre
Outra maneira de obtermos formulrios personalizados utilizando o template Formato Livre. No nosso
exemplo faremos a emisso de um boleto bancrio.
Utilize o editor HTML de sua preferncia (ex.: Word) e crie o formulrio deixando os campos a serem
preenchidos pela sua aplicao no formato de variveis. Chamaremos este formulrio de
boleto_bancario.html. Veja o exemplo do formulrio.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
247


2012

Veja parte do cdigo fonte do formulrio (o cdigo completo segue no material do curso).
<HTML>
<HEAD>
<TITLE>www.scriptcase.com.br</TITLE>
<style type=text/css>
.cp { font: bold 10px Arial; color: black}
.ti { font: 9px Arial, Helvetica, sans-serif}
.ld { font: bold 15px Arial; color: #000000}
.ct { FONT: 9px "Arial Narrow"; COLOR: #000033}
.cn { FONT: 9px Arial; COLOR: black }
.bc { font: bold 22px Arial; color: #000000 }
</style>
</head>

<BODY text=#000000 bgColor=#ffffff topMargin=0 rightMargin=0>
<table width=666 cellspacing=0 cellpadding=0 border=0><tr><td valign=top class=cp><DIV
ALIGN="CENTER">Instrues
de Impresso</DIV></TD></TR><TR><TD valign=top class=ti><DIV ALIGN="CENTER">Imprimir
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
248


2012
em impressora jato de tinta (ink jet) ou laser em qualidade normal. (No use modo
econmico). <BR>Utilize folha A4 (210 x 297 mm) ou Carta (216 x 279 mm) - Corte
na linha indicada<BR></DIV></td></tr></table><br><table cellspacing=0 cellpadding=0 width=666
border=0><TBODY><TR><TD class=ct width=666>{var_img_separador}</TD></TR><TR><TD class=ct
width=666><div align=right><b class=cp>Recibo
do Sacado</b></div></TD></tr></tbody></table><table width=666 cellspacing=5 cellpadding=0
border=0><tr><td width=41></TD></tr></table><table width=666 cellspacing=5 cellpadding=0 border=0
align=Default><tr>
<td width=41 valign="middle"> {var_img_logo_empresa}</td><td class=ti width=455 valign="middle">
{var_str_nome_empresa}<br>{var_str_endereco_empresa}<br>{var_str_bairro_empresa}<br>{var_str_cid
ade_empresa}/{var_str_uf_empresa}<br>CEP: {var_str_cep_empresa}<br><br><br> </td><td align=RIGHT
width=150 class=ti>

.........................................................


Montado o formulrio, criaremos uma aplicao tipo Consulta (emitir_boleto), utilizando a tabela
areceber.

Utilize a seguinte query de consulta (exemplo).

SELECT
areceber_id,
a.clientes_id,
clientes_nome,
clientes_cpf,
clientes_endereco,
clientes_bairro,
clientes_municipio,
clientes_uf,
areceber_nrtitulo,
areceber_emissao,
areceber_vencto,
areceber_pagto,
areceber_valor,
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
249


2012
areceber_acresc,
areceber_pago
FROM
areceber as a,
clientes as c
WHERE
a.clientes_id = c.clientes_id and
PermiteAcesso('[sm_global_login]',a.prop_reg) = 'Sim'
ORDER BY
areceber_vencto



Adicione um novo Template

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
250


2012

Defina o destino como pblico e ficar acessvel a todos os projetos.

Selecione o formulrio criado boleto_bancario.

Edite a Barra de Ferramentas para o seguinte modelo.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
251


2012

Altere a Visualizao do Layout para o novo template.

Crie dois novos campos (codigobarras e linhadigitavel).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
252


2012

Edite o campo codigobarras, conforme a figura abaixo.

Posicione os campos do formulrio (formato Livre), de acordo com os campos do Select da aplicao.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
253


2012



10.2.1. Gerando Cdigo de Barras (Boleto).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
254


2012
Crie agora um mtodo PHP para gerar o cdigo de barras a ser impresso no boleto. Chamaremos este
mtodo de codigo_barras.

O cdigo desta funo ser.

10.2.2. Gerando a Linha Editvel (Boleto)
Crie agora um mtodo PHP para as linhas digitveis. Chamaremos este mtodo de linha_digitavel.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
255


2012

O cdigo desta funo ser.

Criaremos um evento onRecord para gerao do cdigo de barras e da linha digitvel, no momento da
impresso do boleto.

Edite a aplicao grid_areceber para fazermos uma ligao com a aplicao emitir_boleto.
Crie um novo campo do tipo Imagem HTML
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
256


2012

Edite-o para criar a ligao com a aplicao emitir_boleto.


Passe os parmetros solicitados.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
257


2012


Gere as aplicaes e execute o sistema.

Observe que os ttulos que esto em aberto so impressos em cores vermelha.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
258


2012



Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
259


2012
11. Outras Aplicaes do Nosso Sistema
11.1. Exerccio.
Acesse as demais aplicaes do sistema para entender o seu funcionamento.






Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
260


2012
12. Publicando o Sistema
Antes de publicar o sistema gere o cdigo fontes de todas as aplicaes.


A seguir crie uma pasta na pasta documents root (htdocs) do servidor web, no caso do SC
C:\Program Files\NetMake\v5\wwwroot.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
261


2012

Retorne ao SC e inicie a publicao do sistema.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
262


2012

Defina qual ser sua aplicao inicial (login) e avance.

Escolha a pasta onde quer publicar treinamento (no seu ambiente de desenvolvimento).
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
263


2012

Aguarde a finalizao do processo de publicao.


Concludo o processo de publicao, abra o seu browse e digite o endereo.
localhost:85/treinamento/
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
264


2012

Como a aplicao no reconheceu nenhuma conexo, ser solicitada sua criao.

Digite a senha padro (scriptcase) e o sistema solicitar a mudana de senha.

Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
265


2012

Edite a conexo.


Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
266


2012
Escolha o banco (treinamento) e teste a conexo.

Defina o collation que voc definiu para seu banco, durante a sua criao, clicando no boto



O prximo passo a colocao da Chave API (descrita no tpico campo Google Maps), no local adequado, de
acordo com a URL apropriada.
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
267


2012


Lembre-se de que sempre que voc alterar a sua URL, nova chave ter que ser gerada e afixada neste local.
Conclua o processo e acesse o endereo
localhost:85/treinamento/

Se desejar acessar novamente o ambiente de produo digite o endereo.
localhost:85/treinamento/_lib/prod
Scriptcase Completo


Jovito Cabadas Melo jovitomelo@hotmail.com
268


2012

Você também pode gostar