Você está na página 1de 150

1

MANUAL DO USUÁRIO

http://www.xmaker.com.br

Modular Software
Uberaba – M.G.
2

COPYRIGHT

Todos os direitos reservados. Nenhuma parte deste material


poderá ser reproduzida, transmitida, transcrita, armazenada em
meio recuperável ou traduzida para outras línguas, no todo ou
em parte, em qualquer forma ou por quaisquer meios, seja
eletrônico, mecânico, magnético, ótico ou manual, sem o
consentimento prévio e por escrito da Modular software.
A Modular Software reserva-se, outrossim, o direito de revisar
e fazer mudanças periódicas no conteúdo deste manual, sem a
obrigação de notificar a quaisquer pessoas ou instituições.
Alguns nomes de produtos que aparecem neste manual são
marcas registradas de seus respectivos proprietários.
3

1. O QUE É O X-MAKER?

O X-Maker é um gerador de aplicativos para o ambiente


Windows, voltado para desenvolvedores de software. Utilizando
todo potencial da linguagem orientada a objetos, acelera o
processo de desenvolvimento de forma extremamente eficiente,
prática e padronizada. Sua principal função é a manipulação de
banco de dados para armazenamento de informações de
qualquer natureza, agregando todos os recursos possíveis e
atuais do ambiente visual e com acesso nativo as bases de dados,
cria projetos altamente profissionais e confiáveis.
Os arquivos fontes são gerados na linguagem Delphi 5, 6
ou 7, sendo, portanto necessário que o usuário tenha instalado
em seu equipamento a versão Professional ou Enterprise do
Delphi. Somente essas versões possuem os recursos disponíveis
para acesso as bases de dados utilizadas pelo X-Maker, são elas:
InterBase 5.x/6.x, FireBird 1.x, SyBase, MS-SQL Server,
MySql 3.20/3.23/4.00, PostGreSql 6.5/7.2 e ADO (Access,
Paradox, dBase, Oracle, etc.),. Outras bases de dados poderão
ser utilizadas em futuras versões desse produto, temos como
meta a compatibilidade com os diversos gerenciadores de banco
de dados disponíveis no mercado.

As versões disponíveis do X-Maker são:

• X-Maker – Free Edition: Destinada aos novos usuários


que desejam conhecer essa ferramenta, essa versão trás
os mesmos recursos da versão Professional, porém, é
limitada para pequenos projetos. Existe um limite de
definições, que são: Um Banco de Dados, doze Tabelas,
doze Formulários, doze Relatórios, doze Etiquetas e doze
Gráficos. Não há limitações de criação de projetos.
4

• X-Maker – Professional - Individual: Destinada aos


profissionais que irão utilizar o X-Maker como
ferramenta oficial de desenvolvimento.

• X-Maker – Professional - Corporativo: Destinada ao


trabalho em grupo, compartilha os projetos em uma rede
local, permitindo que vários profissionais trabalhem em
um mesmo projeto ao mesmo tempo.

Agilidade, praticidade e confiabilidade são os pontos


principais na construção de aplicações através dessa ferramenta,
seja ela de pequena ou de grande complexidade. É possível criar
um projeto sem nenhum esforço de programação.
As Empresas desenvolvedoras e organizações encontrarão
nessa ferramenta um ganho significativo de produção e
padronização, a redução de custos de desenvolvimento e
manipulação de projetos será uma meta alcançada, outro ponto
importante é a independência de um desenvolvedor específico, o
trabalho em grupo será valorizado.
Os profissionais liberais encontrarão todos os recursos
necessários para uma produção mais ativa e dinâmica na criação
de softwares. Para aqueles que não se consolidaram no
desenvolvimento de aplicações em ambiente Windows, poderão
iniciar a migração sem traumas ou incertezas.
Pensando no crescimento e aperfeiçoamento dos
estudantes, instrutores e professores da linguagem de
programação Delphi, a versão Free Edition irá proporcionar um
novo universo de conhecimento e experiências na criação de
projetos.

1.1. Pré-requisitos

As exigências mínimas de software e hardware para que


seu sistema execute corretamente o X-Maker são:
5

• Microsoft Windows (98 ou versão posterior).


• Delphi 5, 6 ou 7 na versão Professional ou Enterprise
instalado na máquina.
• Microcomputador com processador Pentium (ou
superior), 64 megabytes de memória, 120 megabytes de
espaço livre em disco.
• Um adaptador de vídeo, mouse suportado pelo Windows.

1.2. Instalando o X-Maker

A instalação do X-Maker em seu computador é feita pelo


programa Instalar, gravado no Cd-Rom de "Instalação" ou
através do arquivo disponível em nosso site para download.

1.2.1 Para instalar o X-Maker através do Cd-Rom:

1. Insira o Cd-Rom de “Instalação” do X-Maker.


2. O programa Instalar será inicializado automaticamente.
Caso a inicialização não seja inicializada
automaticamente, dê um duplo clique no ícone “Meu
Computador” no Desktop e um duplo clique na unidade
de Cd-Rom, execute o programa Instalar.
3. Siga as instruções mostradas na tela.

1.2.2 Para instalar o X-Maker através do arquivo de


download:

1. Faça o download do arquivo em nosso site


http://www.xmaker.com.br na seção de Downloads.
2. Execute o arquivo em seu computador.
3. Siga as instruções mostradas na tela.
6

1.2.3 Pasta de Instalação:

A pasta de Instalação do X-Maker padrão é –


C:\XMAKER3 - sugerimos que esta pasta seja mantida. Esta
recomendação está relacionada a uma limitação do sistema
operacional relativa ao comprimento máximo de linhas de
comando executado via MS-DOS, pois a compilação do projeto
pelo X-Maker se faz através de linhas de comandos do MS-
DOS. Recomenda-se que a nova pasta esteja localizada
imediatamente abaixo da pasta raiz escolhida, Exemplos:
C:\XMaker3 - D:\XMaker3 – F:\Xmaker3 - …

1.2.4 FireBird:

O FireBird é o gerenciador de banco dados utilizado pelo


X-Maker. Sua instalação é necessária para o funcionamento
correto do X-Maker. Caso o InterBase 6.x ( ou superior ) esteja
instalado em seu computador a instalação do FireBird não será
necessária, por ser compatível com o FireBird. Qualquer versão
do Interbase inferior a 6.x deverá ser desinstalada antes da
instalação do FireBird.
7

2. INTERFACE DO X-MAKER

Através de uma interface prática e amigável é possível


construir um aplicativo através de 06 passos intuitivamente
coordenados. A seguir iremos dar um enfoque geral das opções
disponíveis no menu principal, barra de ferramentas e barra de
assistente.

Visão geral:
8

2.1. Menu Principal do X-Maker

• Arquivo: Contêm as opções para criação e abertura de


projetos e edição de arquivos fontes.

• Editar: Comandos básicos de manipulação dos arquivos


fontes abertos (área de transferências, pesquisas,
substituições e posicionamentos).

• Exibir: Configuração do ambiente de trabalho e


utilitários para o projeto (diário de anotações, calendário
e calculadora).

• Projeto: Opções de definições do projeto (Propriedades,


Tabelas, Formulários, Relatórios e Menu Principal).

• Fontes: Restauração de módulos, compilação e execução


do projeto.

• Configuração: Configuração dos parâmetros de


compilação, propriedades do editor e definição de
campos predefinidos.

• Ajuda: Acesso à ajuda do X-Maker, Delphi e


informações complementares.

2.2. Barra de Ferramentas

Novo Projeto: Permite a criação de um novo projeto.


9

Abrir Projeto: Faz a abertura de projetos já existentes.

Fechar Projeto: Fecha o projeto que esteja aberto.

Novo Arquivo: Cria um novo arquivo fonte para edição.

Abrir Arquivo: Faz a abertura de um arquivo fonte já


existente.

Salvar Arquivo (F2): Salva as modificações realizadas em


um arquivo fonte em edição.

Salvar Todos: Salvam as modificações realizadas em todos


os arquivos fontes em edição.

Fechar Arquivo: Fecha um arquivo fonte em edição.

Propriedades: (1º Passo) Define as propriedades do projeto,


tais como: Título, Empresa Projetista, Programadores,
Analistas, versão, data de início, ícone e configurações
adicionais.

Tabelas: (2º Passo) Definição dos bancos de dados, tabelas,


campos, índices, integridades, relacionamentos, processos
diretos/inversos e lançamentos.

Formulários: (3º Passo) A manipulação dos registros é


realizada através de formulários de Entrada de Dados, a
montagem do Layout não será mais problema, com recursos
exclusivos o X-Maker irá facilitar todo o processo de criação
através da Auto Formatação e drag and drop (arrasta e solta)
dos componentes inseridos no formulário.

Relatórios: (4º Passo) A extração de informações é


realizada através de relatórios, etiquetas e gráficos. Com um
10

poderoso editor de relatórios esses processos serão obtidos


de forma simples e eficiente.

Menu: (5º Passo) Consiste na definição das chamadas dos


formulários e relatórios criados.

Compilar: (6º Passo) É parte final de criação do projeto,


todos os módulos criados e personalizados serão compilados
para a geração do executável final.

Executar: Executa o projeto previamente compilado.

Delphi: Executa o Delphi, conforme a versão definida na


propriedade do projeto e abre o projeto para livre
manipulação.

Diário: Possibilita ao projetista a realizar anotações e


lembretes que serão vinculados ao projeto.

2.3. Barra de Assistente

• Propriedades: (1º Passo) Define as propriedades do


projeto, tais como: Título, Empresa Projetista,
Programadores, Analistas, versão, data de início, ícone e
configurações adicionais.

• Tabelas: (2º Passo) Definição dos bancos de dados,


tabelas, campos, índices, integridades, relacionamentos,
processos diretos/inversos e lançamentos.

• Formulários: (3º Passo) A manipulação dos registros é


realizada através de formulários de Entrada de Dados, a
montagem do Layout não será mais problema, com
11

recursos exclusivos o X-Maker irá facilitar todo o


processo de criação através da Auto Formatação e drag
and drop (arrasta e solta) dos componentes inseridos no
formulário.

• Relatórios: (4º Passo) A extração de informações é


realizada através de relatórios, etiquetas e gráficos. Com
um poderoso editor de relatórios esses processos serão
obtidos de forma simples e poderosa em recursos.

• Menu: (5º Passo) Consiste na definição das chamadas


dos formulários e relatórios criados.

• Compilar: (6º Passo) É parte final de criação do projeto,


todos os módulos criados e personalizados serão
compilados para a geração do executável final.
12

3. CONCEITOS BÁSICOS

O X-Maker utiliza alguns conceitos básicos na definição


de projetos, algum desses conceitos já dever ser de seu
conhecimento, com pequenas variações de nomes ou definições,
a compreensão dos mesmos facilita a utilização da ferramenta.

3.1. Banco de Dados

É a estrutura que irá armazenar uma coleção de Tabelas, a


sua definição é necessária antes da definição de qualquer Tabela,
em Propriedades do Projeto é possível escolher o gerenciador de
Banco de Dados que será utilizado, a definição do Banco de
Dados estará subordinada a essa informação.

Login e senha de acesso, parâmetros de conexão, nome do


Banco de Dados e localização são definidos conforme
informações contidas na Propriedade do Projeto, toda tabela tem
que ter um Banco de Dados associado, e um Banco de Dados
pode conter uma ou todas as tabelas do projeto.

3.2. Tabelas

Através de um ou mais campos nós formamos a definição


de um Tabela, essas Tabelas irão conter uma estrutura
predefinida de informações para que o projeto final possa criar
as Tabelas em disco para armazenar todos os registros de um
sistema.

As Tabelas são constituídas de campos, chave primária e


chaves secundárias (índices). Uma chave primária é definida por
um ou mais campos, sendo que seus valores não poderão ser
13

duplicados na inclusão de registros. Como exemplo podemos


citar uma tabela de cadastro de clientes, ao cadastrar o código
0001 esse código não poderá ser mais utilizado por outro cliente
enquanto o mesmo existir.

3.3. Campos

São utilizados na definição da estrutura das tabelas. Os


campos são definidos através de um conjunto de atributos, tais
como: nome, tipo, tamanho, tipo de edição, máscara, título, etc.

As informações contidas na definição dos campos são de


extrema importância, pois os componentes que serão utilizados
na formatação da tela de “Entrada de Dados” estão subordinados
aos atributos dos campos, principalmente o atributo de “Tipo de
Edição”.

3.4. Campo Calculado

É um tipo de campo especial, por tratar-se de um campo


virtual, esse campo não é gravado fisicamente na Tabela. A
utilização desse tipo de campo é aconselhável para
demonstração de cálculos que dependem de outros campos e que
são variáveis. Como exemplo podemos citar um campo de valor
total de produtos, esse campo conterá um cálculo de
multiplicação entre os campos de quantidade e preço unitário.

3.5. Integridades & Relacionamentos

A integridade de uma base de dados está vinculada a um


relacionamento correto e coerente entre as tabelas, existem
registros que dependem de outros registros para serem criados e
14

existem registros que não podem ser excluídos se estiverem


sendo referenciados em outras tabelas. O X-Maker proporciona
os seguintes relacionamentos:

• Relacionamento: Trata-se de um relacionamento


simples, ou seja, não será utilizado para criação de
integridade referencial. Esse tipo de relacionamento
permite a utilização de campos “Extras”, campos de
tabelas relacionadas poderão ser visualizados como se
pertencessem a uma mesma tabela. Exemplo: A Tabela
de Vendas possui um relacionamento com a Tabela de
Clientes, e os campos da Tabela Clientes poderão ser
agregados a Tabela de Vendas. Isso não é uma
duplicidade de informação ou campos, os campos
escolhidos da Tabela de Clientes não serão gravados
fisicamente na Tabela de Vendas.

• Restrita: Somente os registros que não estivem sendo


referenciados em outras Tabelas poderão ser excluídos.
Exemplo: A Tabela de Clientes possui uma referência da
Tabela de Atividades Comerciais, ao excluir uma
Atividade Comercial o sistema irá checar se a mesma
não está sendo referenciada em algum ou alguns dos
registros da Tabela de Clientes.

• Cascata: Indica que ao excluir um determinado registro


todos os registros relacionados em uma outra tabela
serão excluídos também. Exemplo: A Tabela de Notas
Fiscais possui uma Tabela relacionada de Itens da Nota
Fiscal, o campo de relacionamento é o número da Nota
Fiscal, ao excluir uma Nota Fiscal todos os registros da
Tabela de Itens da Nota Fiscal que possuírem o mesmo
número da Nota Fiscal serão excluídos.
15

3.6. Processos Diretos/Inversos

Os processos diretos/inversos permitem a atualização das


tabelas relacionadas, o processo direto está vinculado à inclusão
e modificação dos registros e o processo inverso está vinculado
à exclusão e modificação. Como exemplo podemos citar uma
Tabela de Vendas que deverá atualizar a Tabela de Estoque, ao
vender um produto a quantidade do estoque é baixada (processo
direto), ao excluir um produto vendido à quantidade do estoque
é estornada (processo inverso).

3.7. Dicionário de Dados

O dicionário de dados é um poderoso recurso, pois


possibilita ao projetista compartilhar de uma mesma definição
de Banco de Dados, Tabelas, Campos, Índices e
Relacionamentos. O projetista poderá dividir o programa em
vários projetos, ao definir cada novo projeto o “Dicionário de
Dados” poderá ser habilitado, o primeiro projeto criado será o
principal, todas as definições de dados serão armazenados e
compartilhados a partir do mesmo.
16

4. CONTEÚDO DAS PASTAS

A partir da pasta de instalação do X-Maker, esta pasta é


indicada pelo usuário na instalação (a pasta padrão é
C:\XMaker3), outras pastas são criadas para diversas
finalidades.

• C:\XMaker3\Comp : Contém os pacotes de


componentes utilizados nos projetos, os pacotes são
separados por pastas, para a linguagem Delphi você
encontrará a pasta Delphi, a medida que outras
linguagem forem sendo suportadas outras pastas serão
adicionadas.

• C:\XMaker3\Delphi : Contém os arquivos fontes


utilizados na criação de um novo projeto, todos os
arquivos são copiados para pasta do novo projeto, esses
arquivos podem ser personalizados pelo projetista.

• C:\XMaker3\Ajuda: Contém os arquivos de ajuda


interna do X-Maker.

• C:\XMaker3\Exemplos : Contém os projetos de


exemplos para estudo e exemplificação da utilização do
X-Maker, os projetos são separados por pastas.

• C:\XMaker3\Imagem : Contém uma coletânea de mais


de 700 bitmaps (bmp) e ícones (ico), para utilização nos
projetos.

• C:\XMaker3\Projetos : Esta pasta é criada para


armazenamento de novos projetos, inicialmente não
possui nenhum arquivo, serve apenas como uma
17

sugestão de pasta de localização dos projetos, sua


utilização é opcional.

• C:\XMaker3\Firebird : Contém o instalador do


Firebird 1.5 e o utilitário IBConsole, esse utilitário é
utilizado para manipular tabelas criadas pelo Firebird.
18

5. CONFIGURANDO O X-MAKER

Uma configuração padrão acompanha o X-Maker na sua


instalação, essa configuração pode ser alterada a qualquer
momento pelo projetista. Através do X-Maker é possível
compilar e gerar o executável do projeto, para isso é necessário
informar a localização do compilador do Delphi e os parâmetros
adicionais, em Configurações do Menu Principal existe uma
opção para cada versão do Delphi.

A compilação e criação do executável do projeto estão


totalmente vinculadas à configuração correta do compilador e
parâmetros adicionais.
19

• Compilador: Informe a localização (path) e o


executável responsável pela compilação, utilize o
compilador DCC32.EXE.

• Parâmetros: Os parâmetros adicionais são utilizados


pelo compilador (DCC32.EXE) é possível realizar várias
configurações extras de compilação, a opção /U é
utilizada para informar a localização de componentes
extras.

• Ajuda: Informe a localização (path) e o arquivo de ajuda


do Delphi, isso torna possível à visualização da ajuda do
próprio Delphi dentro do X-Maker.

5.1. Compilando e Executando pelo Delphi

É possível compilar e executar o projeto diretamente no


Delphi, para isso é necessário instalar os componentes utilizados
nos projetos.

Para instalar os componentes do X-Maker no Delphi (5, 6


ou 7) deve-se executar o Delphi e seguir os seguintes passos:

• Menu File: Clique na opção Open e localize a pasta de


instalação do X-Maker, acesse a pasta Comp\Delphi –
“Exemplo: C:\XMaker3\Comp\Delphi “.

• Componente do FreeReport: Abra o arquivo


correspondente a versão do Delphi.
o FREEREP5.DPK: Free Report para Delphi 5.
o FREEREP6.DPK: Free Report para Delphi 6.
o FREEREP7.DPK: Free Report para Delphi 7.
20

• Instalando: Clique no botão Install. Ao fechar a janela


de instalação confirme qualquer mensagem de
confirmação de atualização.

• Componente do X-Maker: Abra o arquivo


correspondente a versão do Delphi.
o XMaker5.DPK: X-Maker para Delphi 5.
o XMaker6.DPK: X-Maker para Delphi 6.
o XMaker7.DPK: X-Maker para Delphi 7.

• Instalando: Clique no botão Install. Ao fechar a janela


de instalação confirme qualquer mensagem de
confirmação de atualização.

• Finalizando: Acesse o menu do Delphi


Tools\Environment Options selecione a aba “Library”
no campo “Library Path”, verifique se existe o seguinte
path “C:\XMaker3\Comp\Delphi” (C:\XMaker3 –
Corresponde a pasta de instalação do X-Maker) se não
existir faça a inclusão do mesmo.

5.2. Propriedades do Editor

Essa opção fica disponível quando algum arquivo fonte


fica aberto. É possível personalizar algumas propriedades do
editor.
21

• Auto Identificação: Permite que o próprio Editor


identifique o tipo de arquivo está sendo aberto para o
tratamento visual adequado.

• Arrastar Selecionado: Áreas selecionadas no texto


poderão ser arrastadas para outros pontos no próprio
texto.

• Converte Tabs para Espaços: Ao pressionamento da


tecla TAB a quantidade de espaços será convertida para
o caractere de espaço.

• Scroll em Final de Linha: Ao posicionar o cursor na


última linha um rolamento é realizado automaticamente
para uma melhor visualização do texto.
22

• Tamanho de um TAB: Informe a quantidade de


espaços que será dado ao pressionamento da tecla TAB.

• Barra Visível: Visualização da barra lateral no Editor,


nesta barra é mostrado o número de cada linha no texto.

• Mostra Nº de Linhas: Mostra o número de linhas na


barra lateral do editor.

5.3. Campos Predefinidos

O X-Maker traz alguns campos predefinidos em sua


instalação, esses campos são utilizados na definição de Tabelas.
Os campos predefinidos auxiliam e agilizam o processo de
definição.
23

6. CONHECENDO AS ETAPAS DE
DEFINIÇÃO DE UM PROJETO

Para o uso correto da ferramenta é necessário conhecer


todas as etapas de definição, o domínio das funcionalidades de
cada objeto disponível permite uma segurança muito grande
para o projetista. A barra de Assistente do X-Maker contém as
06 etapas (passos) de criação de um projeto, sua utilização
torna-se totalmente intuitiva e prática, a Barra de Ferramentas e
o Menu Principal possui os mesmos atalhos da barra de
Assistente.
24

Barra de Ferramentas

Menu Principal
25

6.1. 1º Passo – Propriedades do Projeto

Este é o primeiro passo para criação de um projeto, é


destinado à personalização do projeto.

• Data no Formato Século: A visualização dos campos


tipo Data em Entrada de Dados e Relatórios poderão ser
vistos no formato “dd/mm/aa” ou “dd/mm/aaaa”
(formato século), vale lembrar que essa visualização está
26

subordinada a configuração do Windows em Painel de


Controle “Opções Regionais e de Idioma”.

• Confirma Saída: Uma mensagem de confirmação de


saída será executada ao finalizar o projeto final, a mesma
poderá ser desabilitada pelo projetista. O usuário do
projeto final também poderá alterar essa opção no menu
Exibir em “Ambiente”.

• Múltiplas Instâncias: Permite que o executável seja


executado mais de uma vez em um mesmo
microcomputador ao mesmo tempo.

• Hint Estilo Balão: Exibe as mensagens na forma de


balão. O usuário final poderá alterar essa opção no menu
Exibir em “Ambiente”.

• Menu Estilo XP: Exibe o menu no padrão do Windows


XP, cores e formato. O usuário final poderá alterar essa
opção no menu Exibir em “Ambiente”.

• Controle de Acesso: Habilita o controle de acesso ao


projeto.

• Selecionar Empresa: Permite ao usuário final


selecionar a Empresa Usuária na abertura do programa.
O usuário final poderá alterar essa opção no menu Exibir
em “Ambiente”.

• Desativar Menu Lateral: O X-Maker gera menu lateral


e superior, somente o lateral poderá ser desativado.

• Desativar Barra de Ferramentas: Desativa a barra de


ferramentas.
27

• Banner Vertical: Exibe um banner lateral em degrade


com o título do projeto.

• Senha Inicial: Para projetos que irão utilizar o Controle


de Acesso é possível definir uma senha para acesso
inicial, o usuário padrão é MASTER.

• Linguagem: Define a linguagem e versão a ser utilizada


para compilação.

• Banco de Dados: Define o banco de dados a ser


utilizado pelo projeto.

• Conexão: Componente de conexão com o banco de


dados.

• Compartilhamento – Dicionário de Dados: Habilita a


pasta de localização do dicionário do projeto.

• Compartilhamento – Pasta do Dicionário: Informe a


pasta de localização do dicionário do projeto. Como
padrão o X-Maker utiliza a mesma pasta do projeto.

• Compartilhamento – Servidor do Dicionário: Informe


o servidor utilizado para armazenamento do dicionário
do projeto, essa opção é somente para a versão
corporativa. Exemplo: Servidor, 195.195.1.1, etc.

• Compartilhamento – Pasta do Projeto no Servidor:


Informe a pasta de localização das definições do projeto,
é a pasta física do servidor.

• Compartilhamento – Servidor do Projeto: Informe o


servidor utilizado para armazenamento das definições do
28

projeto, essa opção é somente para a versão corporativa.


Exemplo: Servidor, 195.195.1.1, etc.

• Apresentação (2): Define uma imagem de apresentação


durante a inicialização e abertura do projeto final.

• Imagem de Fundo (3): Define uma imagem de fundo


para o projeto final, o usuário poderá alterar a imagem
no projeto final através do Menu Principal Exibir em
“Ambiente”.

6.2. 2º Passo – Tabelas

Este é o segundo passo para a criação de um projeto, as


Tabelas são estruturas formadas por campos, chave primária e,
29

opcionalmente, por chaves secundárias. Outros recursos de


definição são os relacionamentos de integridade referencial,
exclusões em cascatas e restritas, processos diretos/inversos e
lançamentos.

Definição dos botões e teclas de atalho:

Salva a definição em edição, uso genérico.


Cancela a definição em edição, uso genérico.
Insere uma nova definição, tecla de atalho: “Insert”, uso
genérico.
Exclui uma definição, tecla de atalho: “Delete”, uso
genérico.
Importa estruturas já definidas (tabelas, campos,
índices, integridades, relacionamentos, processos e
lançamentos) em outras bases de dados ou outros projetos.
Importa definições de campos do projeto em edição.
Possibilita um maior ganho de produtividade, campos já
definidos poderão ser reaproveitados.
Edição de campo “Calculado”, todo campo “Calculado”
possui uma codificação definida pelo próprio projetista.
Define a chave estrangeira dos campos com o tipo de
edição: “Lista Externa (Estrangeira)”. Personaliza o estilo de
pesquisa e campos a serem visualizados.
Insere campos das tabelas relacionadas, campos de
tabelas relacionadas poderão ser visualizados como se
pertencessem a uma mesma tabela. Exemplo: A Tabela de
Vendas possui um relacionamento com a Tabela de Clientes,
e os campos da Tabela Clientes poderão ser agregados a
Tabela de Vendas. Isso não é uma duplicidade de
informação ou campos, os campos escolhidos da Tabela de
30

Clientes não serão gravados fisicamente na Tabela de


Vendas.
Define a ordem de apresentação dos campos dentro das
opções de “Consulta” dos formulários de “Entrada de
Dados”.

De um duplo clique ou tecle F2 para editar qualquer definição já


existente.

Dica:

Para forçar uma geração dos arquivos fonte das Tabelas,


selecione qualquer Tabela e clique F2 para entra no modo de
edição. Ao fechar a janela de “Tabelas & Campos” os arquivos
fonte serão regerados.

6.2.1 Definindo Atributos da Tabela


31

Através dessa janela é possível definir todos os atributos


de uma Tabela.

• Nome: Informe o nome da Tabela, esse nome será usado


para criação do arquivo fonte (unit) e para criação da
Tabela dentro do Banco de Dados.

• Nome Físico da Tabela: É possível criar várias


instâncias de uma mesma tabela, se o projetista define
uma tabela cujo nome é “Clientes” e depois cria uma
outra tabela com o nome de “Clientes_2” e essa tabela
possui o Nome Físico: “Clientes”, isso indica que não
será criada fisicamente uma tabela no banco de dados de
nome “Clientes_2”, pois ele é uma outra instância da
tabela “Clientes”. Em resumo “Clientes” e “Clientes_2”
são uma mesma tabela.

• Título: Informe o título da Tabela, esse título é utilizado


para o uso interno do projeto.

• Banco de Dados: Essa informação é obrigatória, toda


Tabela tem que estar vinculada a um Banco de Dados,
para definir um Banco de Dados clique no botão .

• Filtragem de Inicialização: Utilize essa opção para


definir uma seleção de registros a serem abertos na
inicialização do projeto, o X-Maker trabalha no conceito
Client/Server, e a abertura de todos os registros não é
aconselhável devido ao tráfego de informações em rede.
Em uma tabela de “Vendas” o projetista poderá definir
uma filtragem dos registros cuja data da venda seja igual
à data atual do sistema, o usuário final poderá redefinir
ou mesmo limpar esse filtro após a inicialização e o
sistema ficará mais dinâmico.
32

• Filtragem Fixa: Possui as mesmas características da


“Filtragem de Inicialização” porém o usuário final não
poderá altera-la ou mesmo limpa-la. Um exemplo prático
é a utilização de um sistema “Multiempresa” em que
cada tabela irá conter um campo de identificação da
“Empresa Usuária”, a tabela será filtrada pelo número da
“Empresa Usuária” selecionada no momento da
inicialização.

• Ordenação Inicial: Informe o(s) campo(s) de ordem


inicial da tabela, como padrão toda tabela é ordenada
pela chave primária definida, o projetista poderá alterar
este padrão.

6.2.2 Definição do Banco de Dados


33

O Banco de Dados irá gerenciar as Tabelas do projeto, sua


utilização é obrigatória.

Salva o banco de dados em edição.


Cancela a edição do banco de dados.
Insere um novo banco de dados, tecla de atalho:
“Insert”.
Exclui o banco de dados selecionado, tecla de atalho:
“Delete”.

• Conexão Padrão: Indica se o Banco de Dados irá


utilizar o banco de dados padrão definido em
propriedades do projeto. É possível ter acessos diferentes
em um mesmo projeto, exemplo: Firebird e MySql,
MySql e SyBase, etc.

• Bco. Dados: Tipo de Banco de Dados a ser utilizado,


essa opção é utilizada quando a “Conexão Padrão” não
está habilitada.

• Alias: Esse nome é para uso interno da codificação dos


arquivos fontes.

• Servidor: É o nome físico do Banco de Dados. O


usuário final do projeto poderá alterar o Servidor.

• Login de Conexão: Habilita o uso de Login de Conexão


para conectar-se a Base de Dados na abertura do projeto
final. Sugerimos que deixe essa opção desmarcada o
tratamento interno de Controle de Acesso do projeto é
bem completo e prático.
34

• Usuário: Informe o usuário (Login) para conexão com a


Base de Dados, cada gerenciador de Banco de Dados
possui um tratamento específico de acesso.

• Senha: Informe a senha (Password) para conexão com a


Base de Dados.

• HostName: Informe o nome ou número do I.P do


servidor de localização do Banco de Dados. O usuário
final do projeto poderá alterar o HostName.

• Parâmetros: É possível informar os parâmetros


adicionais para conexão, os mesmos dependem do
gerenciador utilizado.

Dica:

É possível definir vários Bancos de Dados, um Banco de


Dados pode conter um conjunto de Tabelas, a utilização de mais
de um Banco de Dados pode ser utilizado quando o projeto final
realizar o tratamento de multiempresas. Como exemplo
podemos citar um projeto para gerenciamento de uma Loja de
Confecções, essa loja possui Matriz e Filiais, algumas Tabelas
serão utilizadas de forma compartilhada (Clientes, Fornecedores
e Contas a Pagar / Receber), para obter essa operação será
necessário criar um Banco de Dados para armazenar as Tabelas
que serão Compartilhadas e um outro Banco de Dados para as
Tabelas não compartilhadas. Em configurações da Empresa
Usuária no projeto final é possível definir uma localização
diferente para cada Banco de Dados criado.
35

6.2.3 Importando Estruturas Externas

É possível importar uma estrutura já existente em outras


Bases de Dados ou projetos, clique no botão .

Escolha a estrutura a ser importada, para as estruturas X-


Maker, dBase e Paradox basta informar a pasta de localização
das tabelas, para as demais estruturas outras informações
adicionais serão necessárias, tais como usuário (login) e senha
(password). Clique no botão para ativar a pesquisa.
36

6.2.4 Campos da Tabela

A definição dos campos é precedida de vários atributos,


cada campo pode armazenar um tipo de dado diferente, uma
definição lógica e coerente respeitando todos os atributos torna a
aplicação final mais apresentável e com maior entendimento. As
informações contidas serão utilizadas na criação do Layout dos
Formulários e Relatórios.

6.2.5 Botões Associados:

Importa definições de campos do projeto em edição.


Possibilita um maior ganho de produtividade, campos já
definidos poderão ser reaproveitados.
Edição de campo “Calculado”, todo campo “Calculado”
possui uma codificação definida pelo próprio projetista.
37

Define a chave estrangeira dos campos com o tipo de


edição: “Lista Externa (Estrangeira)”. Personaliza o estilo de
pesquisa e campos a serem visualizados.
Insere campos das tabelas relacionadas, campos de
tabelas relacionadas poderão ser visualizados como se
pertencessem a uma mesma tabela. Exemplo: A Tabela de
Vendas possui um relacionamento com a Tabela de Clientes,
e os campos da Tabela Clientes poderão ser agregados a
Tabela de Vendas. Isso não é uma duplicidade de
informação ou campos, os campos escolhidos da Tabela de
Clientes não serão gravados fisicamente na Tabela de
Vendas.
Define a ordem de apresentação dos campos dentro das
opções de “Consulta” dos formulários de “Entrada de
Dados”.

6.2.5.1 Nome
Informe o nome que será utilizado para tratamento interno
dos arquivos fontes e para criação em disco da Tabela. Utilize o
botão para importar uma estrutura predefinida.

6.2.5.2 Tipo
Informe o tipo de dado para armazenamento na Tabela.

As opções disponíveis são:

• Alfanumérico: Permite o armazenamento de valores


alfanuméricos (letras, algarismos e caracteres especiais)
o seu tamanho máximo é fixo. Exemplos: Nome,
Endereço, Cidade, etc.
38

• Número Inteiro: Permite o armazenamento de valores


do conjunto dos números inteiros (positivos e negativos).
Exemplos: Códigos, Quantidade, Número de
Dependentes, etc.
• Número Fracionário: Permite o armazenamento de
valores do conjunto dos números reais (inteiros ou
fracionários, positivos ou negativos). O número de casas
decimais de um campo fracionário é determinado pela
máscara. Exemplos: Salário, Total das Vendas, Saldo em
Caixa, etc.
• Data: Permite o armazenamento de valores que
representam datas válidas. O formato da data é
determinado em “Propriedades do Projeto”.
• Memo: Permite o armazenamento de valores
alfanuméricos de tamanho variável. Exemplos:
Observações, Referências Comerciais, Dados
Adicionais, etc.
• Imagem: Permite o armazenamento de imagens.
Exemplos: Foto, Logotipo, etc.

6.2.5.3 Chave
Indica se o campo faz parte da chave primária, uma chave
primária é composta por um ou mais campos da Tabela.

6.2.5.4 Tamanho
Informe o tamanho máximo para armazenamento no
campo, não considerar o sinal de negativo (-), o separador de
decimais (,) e outros caracteres separadores utilizados na
máscara.
39

Exemplo: CNPJ é alfanumérico de tamanho 14 a máscara


é 99.999.999/9999-99 os pontos (.) e barra (/) não são
considerados para calcular o tamanho do campo.

6.2.5.5 Autoincremento
Indica que o campo será incrementado automaticamente
(seqüencialmente), somente campos do tipo: Número inteiro,
Fracionário e data poderão utilizar essa opção. A seqüência é
subordinada a posição do campo na Tabela.

6.2.5.6 Edição
Informe o tipo de edição de controle, o formulário de
entrada de dados irá utilizar o tipo de edição para inserir os
componentes na tela. Os tipos disponíveis são:

• Edit (Edição Padrão): Caixa de edição de livre


digitação, respeitando as restrições impostas pela
máscara. Exemplo:

• Combo Drop (Lista Interna): Caixa de lista de opções


predefinidas, permite ao usuário a escolha do item
através de uma lista. Os valores válidos são informados
no atributo “Valores Válidos”. Exemplo:

• Rádio Button (Optativo): Caixa de opções onde todos


os itens disponíveis ficam visíveis para escolha. Os
valores válidos são informados no atributo “Valores

Válidos”. Exemplo:
• Check Box (Conferência): Caixa optativa de marca e
desmarca. Os valores válidos são informados no atributo
40

“Valores Válidos”, apenas dois valores são informados,


um para marcado e outro para desmarcado. Exemplo:

• Lista Externa (Estrangeira): Campo vinculada a uma


tabela relacionada, o estilo de pesquisa poderá ser
personalizado (Combo Box ou Formulário de Pesquisa).

6.2.5.7 Calculado
Indica que o campo é do tipo Calculado, o X-Maker
permite que o campo seja virtual (não é gravado fisicamente na
Tabela) ou não virtual (é gravado fisicamente na Tabela). Sua
utilização é válida quando se deseja mostrar um cálculo ou
fórmula específica.

Exemplo: Ao definir uma Tabela de Itens da Venda, os


campos Quantidade e Preço Unitário serão utilizados para
formar o campo de Total Geral, ao definir a Tabela o projetista
não sabe quais serão os valores informados pelo usuário no
momento da venda, para isso utiliza-se uma codificação de
multiplicação entre os campos de Quantidade e Preço Unitário
criando assim o campo de Total Geral.

6.2.5.8 Máscara
Informe a máscara de apresentação do campo para
formulários e relatórios. Os caracteres usados como máscara não
são armazenados na Tabela e não ocupam espaço adicional.

As máscaras são utilizadas apenas para os campos cujo


tipo de edição seja: Edit (Edição Padrão).
41

O X-Maker cria uma lista de opções de máscaras


disponíveis conforme o tipo e tamanho do campo. Clique no
botão vinculado ao atributo.

6.2.5.8.1 Campos Numéricos e Fracionários:


• 9 Se nesta posição o valor for “0” (zero), será mostrado
o “0” (zero) mesmo que seja zero à esquerda.
• Z Se nesta posição o valor for “0” (zero), será mostrado
o “0” (zero) exceto se este for um zero à esquerda. Neste
caso, o “0” (zero) é substituído por um espaço em
branco.
• - O caractere “-“ (negativo) será mostrado sempre que o
campo for negativo e para valores positivos será
mostrado um espaço em branco.

6.2.5.8.2 Campos Alfanuméricos:


• 9 Indica que nesta posição somente algarismos serão
aceitos entre “0” (zero) e “9” (nove).

• A Indica que nesta posição somente letras e espaços


serão aceitos. Os caracteres serão convertidos para
maiúsculo.

• a Indica que nesta posição somente letras e espaços


serão aceitos. Os caracteres serão convertidos para
minúsculo.

• X Indica que nesta posição qualquer caractere será


aceito. Os caracteres serão convertidos para maiúsculo.

• x Indica que nesta posição qualquer caractere será


aceito. Os caracteres serão convertidos para minúsculo.
42

• * Indica que os próximos caracteres da máscara seguirão


o caractere anterior ao “*”. É usado para simplificar e
agilizar a digitação, como exemplo pode citar um campo
de Nome do Cliente com tamanho de 50, a máscara
utilizada será o X invés de digitar o X cinqüenta vezes,
basta digitar o X*, o X-Maker irá gerar o X cinqüenta
vezes no arquivo fonte.

6.2.5.9 Título
Informe o título do campo, esse título é utilizado no
formulário de entrada de dados e relatórios.

6.2.5.10 Índice
Informe o número da ordem de apresentação do campo
durante a consulta no formulário de “Entrada de Dados”.

6.2.5.11 Invisível
Informe se o campo não será visível durante a consulta no
formulário de “Entrada de Dados”.

6.2.5.12 Ajuda
Informe a mensagem de ajuda do campo, essa mensagem é
utilizada no formulário de entrada dados (Hint).

6.2.5.13 Valor Padrão


Informe o valor de inicialização do campo, este valor será
utilizada na inclusão de um registro em formulário de dados.
Um exemplo prático é a definição de Data de Cadastro na
43

Tabela de Clientes, ao incluir um novo Cliente a data de


Cadastro irá trazer como padrão à data do sistema operacional.

Para campos de Data sugerimos a utilização do valor


padrão DataAtual, e para campos que irão armazenar a hora,
sugerimos a utilização do valor padrão HoraAtual. Não existe
um tipo de campo do tipo Hora disponível no X-Maker, para
isso defina o campo como Alfanumérico de Tamanho 06 e
Máscara 99:99:99.

6.2.5.14 S. Atribui “Sempre Atribui”


Informe se o campo que possui “autoincremento” será
sempre atualizado a cada mudança de campo durante a digitação
e não irá permitir que o usuário altere a seqüência definida.

6.2.5.15 Pré-Validação
Informe uma condição lógica para edição do campo no
formulário de “Entrada de Dados”. O campo somente será
editável se a condição retornar “verdadeiro” ou se não existir
nenhuma condição definida.
Exemplo: TabGlobal.DClientes.TIPO_PESSOA.Conteudo = 'F'
Neste exemplo o campo “CPF” somente será editável se o tipo
de pessoa for “Física”. Para deixar o campo sem edição insira o
valor lógico “Falso”, exemplo: False

6.2.5.16 Ação
Informe a “Ação” a ser executada após a “Pré-Validação”,
esta “ação” é executada quando a “Pré-Validação” retorna
“Falso”. Seguindo o exemplo acima do campo “CPF” o
projetista poderá definir se o campo será “Não Editável” ou
“Invísivel” quando o usuário escolher o tipo de pessoa
“Jurídica”.
44

6.2.5.17 Limpar Campo


Informe se o campo será limpo quando a “Pré-Validação”
retornar “Falso”. Seguindo o exemplo acima do campo “CPF” o
projetista poderá definir se o conteúdo do campo será eliminado
quando o usuário escolher o tipo de pessoa “Jurídica”.

6.2.5.18 Validação
Informe uma função de validação para o campo. Essa
função será vinculada ao evento OnExit (Ao Sair) do campo no
formulário de entrada de dados, ou seja, quando o cursor mudar
de campo ou o usuário clicar em Salvar. Para utilizar mais de
uma validação em um mesmo campo utilize o ponto-e-vírgula,
exemplo: DATAVALIDA;VALORNULO

As funções de validação são módulos codificados, que são


armazenados no arquivo fonte “Validar.Pas” presente na pasta
do projeto.

O projetista poderá inserir e modificar as funções de


validações fornecidas pelo X-Maker. Basta editar o arquivo
fonte “Validar.Pas” e realizar as modificações necessárias. As
modificações realizadas na pasta do projeto pertencem única e
exclusivamente ao projeto em questão, caso você queira realizar
uma modificação no “Validar.Pas” para que todos os projetos
que forem criados a partir dessa personalização façam uso desse
arquivo fonte, altere na pasta de origem dos arquivos fontes,
“C:\XMaker3\Delphi\Validar.Pas”. Lembrando que
“C:\XMaker3” é a pasta básica de instalação, se o X-Maker
estiver instalado em outra pasta considere a pasta correta.

A lista interna das funções disponíveis para validação


estão no arquivo “C:\XMaker3\Validacao.Lst” trata-se de um
45

arquivo texto comum que poderá ser editado por qualquer editor
de texto. Personalizações nesse arquivo são reconhecidas. A
edição desse arquivo é justificável quando o projetista cria novas
funções de validação no arquivo fonte “Validar.Pas”.

Funções de validação disponíveis no “Validar.Pas”:

• function DATAVALIDA(Dado: string): Boolean; //


Valida data no formato ddmmaa ou no formato
ddmmaaaa

• function VUF(Dado: string): Boolean; // Valida as


siglas dos estados

• function VCNPJ(Dado: string): Boolean; // Valida o


CNPJ

• function VCPF(Dado: string): Boolean; // Valida o


CPF

• function VPIS(Dado: String): Boolean; // Valida o PIS

• function VHORA(Dado: string): Boolean; // Valida a


Hora

• function VHORAMIN(Dado: string): Boolean; //


Valida a Hora e Minutos

• function VHORAMINSEG(Dado: string): Boolean; //


Valida a Hora, Minutos e Segundos

• function ANOATUAL(Dado: string): Boolean; //


Valida o Ano Atual
46

• function MESATUAL(Dado: string): Boolean; //


Valida o Mês Atual

• function MESANOATUAL(Dado: string): Boolean; //


Valida o Mês a Ano Atual

• function MESANOVALIDO(Dado: string): Boolean; //


Valida o Mês e Ano

6.2.5.19 Procurar em
Informe se o campo será pesquisado e validado em outra
Tabela, a mesma deverá ser definida em “Relacionamentos”,
somente tabelas relacionadas poderão ser pesquisadas. Campos
com o tipo de edição: “Lista Externa (Estrangeira)” poderão
utilizar esta opção para garantir a consistência dos dados.

6.2.5.20 Msg. de Erro “Mensagem de Erro”


Informe uma mensagem de erro a ser apresentada para o
usuário quando os atributos de “Validação” ou “Procurar em”
retornarem “Falso”, o X-Maker gera uma mensagem padrão
quando este atributo estiver vazio.

6.2.5.21 Valores Válidos


É uma lista de valores com suas respectivas descrições.
Esta lista é utilizada para campos cuja Edição seja: Lista Interna
(Combo Drop), Optativo (Rádio Button) ou Conferência (Check
Box).
47

Os valores contidos em “Valor” serão gravados na Tabela,


as descrições “Descrição” serão mostradas no formulário de
entrada de dados e na consulta.

Ao fechar a caixa de “Tabela de Valores Válidos” o


atributo será preenchido da seguinte forma
, todos os valores válidos são separados
por (ponto-e-vírgula).

O tipo de Edição: “Conferência (Check Box)” só poderá


conter dois valores válidos. O primeiro valor indica que o
componente estará marcado, o segundo valor indica que o
componente estará desmarcado.

6.2.6 Definição da Chave Estrangeira

Os campos definidos como “Lista Externa (Estrangeira)”


deverão ser associados corretamente,
48

6.2.7 Edição de Campo Calculado

Os campos definidos como “Campo Calculado” são


codificados conforme a linguagem utilizada no projeto.

A codificação é dividida em duas janelas de texto, a 1ª


janela de texto é destinada para as declarações de variáveis
locais, a 2ª janela de texto é destinada para a codificação que irá
gerar um retorno através da variável “Result”.

A utilização da variável “Result” é obrigatória, e o tipo de


informação a ser atribuída depende do tipo do campo
(alfanumérico, inteiro, fracionário ou data). A atribuição de um
campo número ou data em um campo alfanumérico ou vice-e-
versa, sem as devidas conversões, causa um erro de compilação.
49

Codificar um “Campo Calculado” exige um conhecimento


básico de programação.

6.2.8 Índices (Chaves Secundárias)

Os índices são utilizados para agilizar o processo de


localização, filtragem e ordenação em formulários de entrada de
dados e relatórios. Sua utilização não é obrigatória e uma falta
de coerência torna o acesso à base de dados mais lenta, a
quantidade de índices definidos em uma Tabela interfere na
velocidade de atualização da mesma.

Para os campos que serão mais utilizados em processos de


localização, filtragem e ordenação é aconselhável a utilização de
índices.

Um índice é composto por um ou mais campos, de forma


crescente (padrão) ou decrescente, campos número resultam em
índices mais velozes.

Uma Tabela pode conter vários índices, os campos Memo


e Imagem não poderão ser utilizados na criação de um índice.
50

6.2.9 Integridades & Relacionamentos

A integridade de uma base de dados está vinculada a um


relacionamento correto e coerente entre as tabelas, existem
registros que dependem de outros registros para serem criados e
existem registros que não podem ser excluídos se estiverem
sendo referenciados em outras tabelas. O X-Maker proporciona
os seguintes relacionamentos:

• Relacionamento: Trata-se de um relacionamento


simples, ou seja, não será utilizado para criação de
integridade referencial. Esse tipo de relacionamento
permite a utilização de campos “Extras”, campos de
tabelas relacionadas poderão ser visualizados como se
pertencessem a uma mesma tabela. Exemplo: A Tabela
de Vendas possui um relacionamento com a Tabela de
Clientes, e os campos da Tabela Clientes poderão ser
agregados a Tabela de Vendas. Isso não é uma
duplicidade de informação ou campos, os campos
escolhidos da Tabela de Clientes não serão gravados
fisicamente na Tabela de Vendas.

• Restrita: Somente os registros que não estivem sendo


referenciados em outras Tabelas poderão ser excluídos.
Exemplo: A Tabela de Clientes possui uma referência da
Tabela de Atividades Comerciais, ao excluir uma
Atividade Comercial o sistema irá checar se a mesma
não está sendo referenciada em algum ou alguns dos
registros da Tabela de Clientes.

• Cascata: Indica que ao excluir um determinado registro


todos os registros relacionados em uma outra tabela
serão excluídos também. Exemplo: A Tabela de Notas
Fiscais possui uma Tabela relacionada de Itens da Nota
Fiscal, o campo de relacionamento é o número da Nota
51

Fiscal, ao excluir uma Nota Fiscal todos os registros da


Tabela de Itens da Nota Fiscal que possuírem o mesmo
número da Nota Fiscal serão excluídos.

• Relacionado com: Informe a Tabela para


relacionamento.

• Campos: Lista dos campos disponíveis para


relacionamento das Tabelas.

• Campo(s) de associação: Para relacionar os campos é


necessário selecionar um campo de cada lista em
“Campos”, depois clicar no botão “Inserir
Relacionamento”. Os campos devem possuir a mesma
estrutura (tipo e tamanho), não há necessidade de
possuírem o mesmo nome. Um relacionamento é
composto por um ou mais conjunto de campos.
52

6.2.10 Processos Diretos/Inversos

Os processos diretos/inversos permitem a atualização das


tabelas relacionadas, o processo direto está vinculado à inclusão
e modificação dos registros e o processo inverso está vinculado
à exclusão e modificação. Como exemplo podemos citar uma
Tabela de Vendas que deverá atualizar a Tabela de Estoque, ao
vender um produto a quantidade do estoque é baixada (processo
direto), ao excluir um produto vendido à quantidade do estoque
é estornada (processo inverso).
53

Processo “Direto”.

Processo “Inverso”.
54

6.2.11 Lançamentos

Os lançamentos poderão ser utilizados para gerar um novo


registro em outra tabela após a inclusão.

Neste exemplo um novo registro na tabela de “Clientes” é


inserido após a inclusão de um novo “Fornecedor”. O “Cliente”
irá conter o mesmo “Código” e “Nome”.
55

6.3. 3º Passo – Formulários

Este é o terceiro passo para criação de um projeto, através


desta opção o projetista irá definir todos os formulários a serem
utilizados pelo projeto.

Após a definição das Tabelas é necessário criar uma


interface para que o usuário do seu projeto final passa entrar
56

com informações. O X-Maker possui um Editor de Layout


muito prático e eficiente, a criação de janelas de entrada de
dados nunca foi tão fácil e amigável.

O X-Maker possibilita a criação de 04 tipos de


formulários, são eles:

• Entrada de Dados: É o tipo mais usado para definição,


esse tipo de formulário trabalha no padrão MDI ou
Interface de Múltiplos Documentos. É um modelo mais
sofisticado, pois possibilita o acesso às outras áreas do
programa e a abertura de outros formulários ao mesmo
tempo. Todas as janelas poderão ser minimizadas e
maximizadas.

• Entrada de Dados Filho: Esse tipo de formulário


trabalha no padrão Modal, ou seja, outras áreas do
programa não poderão ser acessadas enquanto o mesmo
estiver aberto. As definições de formulários (Entrada de
Dados) que irão utilizar um Grid de Relacionamento irão
utilizar uma Entrada de Dados Filho para vincular a
manipulação dos dados da Tabela relacionada. Como
exemplo podemos citar a definição de uma Nota Fiscal
(Entrada de Dados) que irá conter um Grid de
Relacionamento para a chamada dos Itens da Nota Fiscal
(Entrada de Dados Filho).

• Avulso MDI: A definição de formulário avulso é


destinada para a manipulação direta no Delphi, ou seja, o
X-Maker irá criar um formulário vazio para que o
projetista possa manipulá-lo através do próprio Delphi.
Esse tipo de formulário trabalha no padrão MDI ou
Interface de Múltiplos Documentos.
57

• Avulso Normal: Possui os mesmos propósitos do


Avulso MDI, porém o padrão utilizado é o Modal, ou
seja, outras áreas do programa não poderão ser acessadas
enquanto o mesmo estiver aberto.

Finalidade de cada botão:

Inclui um novo formulário.


Exclui um formulário selecionado.
Edita as propriedades do formulário.
Layout do formulário.
Importa formulário definido em outro projeto.
Confirma a inclusão ou modificação de um formulário.
Cancela a inclusão ou modificação de um formulário.

6.3.1 Finalidade de cada atributo:

• Nome: Informe o nome do formulário, este nome será


utilizado para criação do arquivo fonte.

• Tipo: Informe o tipo de formulário, os tipos disponíveis


são: Entrada de Dados, Entrada de Dados Filho, Avulso
MDI e Avulso Normal.

• Título: Informe o título do formulário, o título será


atribuído no “Caption” do formulário.

• Tabela: Informe a Tabela a ser manipulada pelo


formulário. Os formulários de Entrada de Dados e
Entrada de Dados Filho são utilizados para a criação de
uma interface de manipulação das Tabelas.
58

Os formulários são ordenados por nome, utilize a opção


“Localizar” para um posicionamento mais rápido no formulário
desejado, esta opção é válida quando o projeto conter um
número muito grande de formulários.

6.3.2 Definindo o Layout do formulário

O X-Maker possui um poderoso e prático editor de layout


de formulários. Com o recurso exclusivo de auto formatação o
projetista terá um ganho de produtividade muito grande, outro
ponto importante é a manipulação do arquivo fonte gerado em
uma mesma tela. Toda codificação é gerada automaticamente a
cada manipulação dos componentes disponíveis.

Um protótipo do formulário é criado para facilitar a


referência visual dos componentes, a janela “Object Inspector”
permite a manipulação direta dos componentes, criação de
59

páginas e/ou acesso aos eventos disponíveis. O arquivo fonte


poderá ser editado através do botão “Editar arquivo fonte”, para
que o projetista possa interagir diretamente na codificação.

O X-Maker trabalha diretamente no arquivo fonte, os


arquivos “.Pas” e “.Dfm” do Delphi, ou seja, toda leitura e
gravação do layout do formulário e realizado diretamente nesses
arquivos. Esse recurso avançado permitiu uma grande interação
como o Delphi, pois qualquer manipulação do formulário
através do Delphi é preservada no X-Maker. Algumas áreas são
restritas, essas áreas serão comentadas no tópico de “Estrutura
do Arquivo Fonte”, e a descaracterização do layout não poderá
ser feita pelo projetista. Para formulários totalmente
personalizados sugerimos a utilização de formulários do tipo:
“Avulso MDI” ou “Avulso Normal”.
60

6.3.2.1 Janela “Object Inspector”

Coletânea de componentes extras


disponíveis para inserção nas páginas.
Estes componentes não são utilizados
para manipulação dos campos da
Tabela.

Coletânea de componentes para


manipulação dos campos da Tabela.

Salva o layout em definição.


Define o estilo de abertura do
formulário.
Grid de relacionamento, tabelas de
relacionamento “exclusão em cascata”
poderão ser manipuladas em um
mesmo formulário.
Insere campo(s) da tabela no
formulário.
Recurso de “Auto formatação” das
páginas, todos os campos selecionados
serão posicionados corretamente nas
páginas.
Edita o arquivo fonte do
formulário, o projetista poderá interagir
com o fonte gerado.
61

Define o “TabOrder” seqüência de


digitação dos campos pelo usuário
final.
Configuração das páginas do
formulário.
Área de manipulação dos objetos.

O X-Maker permite a
criação de até 11 páginas
por formulário, ao
utilizar o recurso de
auto formatação novas
páginas poderão ser
criadas automaticamente
dependendo da
quantidade de campos
da Tabela.

Dica:

Para alternar entre a janelas (Propriedades e Protótipo) utilize a


tecla F11.
62

6.3.2.2 Inclusão de Grid de Relacionamento


Em formulários de entrada de dados é possível a utilização
de um Grid de Relacionamento, para operações do tipo “Mestre-
Detalhe”. Exemplo: Notas Fiscais e Itens da Notas, Vendas e
Itens da Venda, Orçamentos e Itens do Orçamento, etc.

Neste exemplo de definição de um formulário de vendas é


possível identificar sua real utilização. O Grid fará o acesso a
Tabela de Itens da Venda, o campo de ligação será o Nº da
Venda que é um campo em comum entre as Tabelas.
63

Para inserir um Grid de Relacionamento clique no botão


na janela “Object Inspector”, depois clique em qual área da
tela o componente será inserido.

Somente tabelas definidas com o relacionamento


“Exclusão em Cascata” poderão ser utilizadas. Faça a definição
em “Assistente -> Tabelas”.

• Edição direta: Informe se o Grid terá uma edição direta,


ou seja, não será necessário utilizar um formulário
“filho” para manipulação dos dados.

• Formulário: A manipulação dos registros poderá ser


realizada através de um formulário “filho”. Antes de
inserir um Grid de Relacionamento em um formulário de
Entrada de Dados faça a definição de um formulário de
Entrada de Dados Filho da Tabela relacionada.
64

6.3.2.3 Movimentar e Redimensionar Componentes


da Tela
Os componentes inseridos em “Páginas” da janela de
protótipo poderão movimentados, arrastados, copiados,
recortados, colados, excluídos e redimensionados. É possível
mover um ou vários componentes de uma página para outra,
utilize o recurso de recortar (Ctrl+X).

• Mouse: Utilize o mouse para arrastar, redimensionar e


selecionar os componentes.

• Teclado: Selecione os componentes pelo mouse e use o


teclado para movimentar ou redimensionar os
componentes.
o Ctrl + Setas: Movimenta os componentes
selecionados em uma posição.
o Ctrl + Shift + Setas: Movimentam os
componentes selecionados em oito posições.
o Shift + Setas: Redimensiona os componentes
selecionados.
o Del: Exclui os componentes selecionados.
o Ctrl + C: Copia os componentes selecionados.
o Ctrl + V: Cola os componentes selecionados.
o Ctrl + X: Recorta os componentes selecionados.
65

Propriedades dos Objetos

Clique com o botão da direita do mouse para obter uma lista


de propriedades “extra” de configuração.

6.3.2.4 Finalidade do botão “Tabelas” no formulário

Este botão é utilizado para criação de um menu de atalhos


para acesso a outros formulários do projeto, normalmente são
formulários que possuem algum tipo de vinculo com o
formulário em questão. Como exemplo podemos citar um
formulário de Cadastro de Produtos do Estoque, ao cadastrar um
produto são exigidas algumas informações do tipo: Grupo,
Família, Fornecedor e Unidade, e existe uma Tabela e
formulário para cada uma dessas informações. Para criar um
acesso mais rápido e esses formulários o projetista poderá
utilizar o botão “Tabelas”.
66

Inicialmente este botão possui a propriedade “Visible”


desabilitada, para habilitar clique no botão e escolha a
opção “Rodapé – Manutenção” ou “Rodapé – Consulta”.

Clique no botão “Tabelas” e habilite a propriedade “Visible”


na janela “Object Inspector”.

Faça a edição do evento “BtnRelac_1Click”, clique em


“OnClick” na janela “Object Inspector”.
67

Insira a codificação entre os blocos {09} e {99}, utilize o


método “AddMenuItem” para atribuir um novo item ao menu da
tabelas relacionadas.
68

Exemplo:

AddMenuItem(PopRelacionados, 'Atividades',
'mnuAtividades', True , 0, 6001);

Parâmetros do Método “AddMenuItem”:

PopRelacionados = Objeto “PopMenu” a ser utilizado.


‘Atividades’ = Título a ser apresentado no menu.
‘mnuAtividades’ = Nome interno do componente, não poderá
ser utilizado nome de outro componente utilizado no formulário.
Como padrão o projetista poderá utilizar a sigla “mnu” + o nome
do formulário.
True = Habilitado e False = Desabilitado.
0 = Número do ícone de imagem de apresentação.
6001 = Número de seqüência de identificação utilize a seqüência
6001, 6002, 6003, etc. para os demais formulários.

Salve a codificação do evento e faça a edição do arquivo fonte,


clique no botão: “Editar arquivo fonte”.

Vá para o bloco de codificação do evento


“PopRelacionadosClick”.
69

Insira a codificação entre os blocos {10} e {99}, utilize o


botão “form” na barra de ferramentas do “Mini Editor” para
inserir a codificação de chamada do formulário desejado.

Exemplo:

{10-Início do Bloco Modular. Modificações não


serão preservadas}
if MenuItem.Tag = 6001 then
begin
FormAtividades :=
TFormAtividades.Create(Application);
Try
FormAtividades.ShowModal;
Finally
FormAtividades.Free;
end;
end
{99-Final do Bloco Modular. Modificações não
serão preservadas}
70

É necessário referenciar as units dos formulários utilizados


na cláusula “uses”.

O projetista poderá utilizar o botão “Tabelas” para outras


finalidades ou até mesmo remove-lo, fica a critério do projetista.

6.3.3 Janela do Mini Editor

O projetista tem a sua disposição o arquivo fonte do


formulário que está sendo definido, o arquivo é atualizado a
cada mudança no layout.
71

Vejamos as funções da barra de ferramentas do editor:

Modo interativo de criação de expressões a serem inseridas


no arquivo fonte.
Insere campo de qualquer tabela definida no projeto.
Sintaxe das principais estruturas de codificação do Delphi.
Codificação correta de chamada de formulários.
Permite recortar uma área selecionada (Ctrl+X).
Permite copiar uma área selecionada (Ctrl+C).
72

Permite colar uma área copiada ou recortada (Ctrl+V).


Localiza uma expressão no arquivo (Ctrl+F).
Procura uma próxima expressão encontrada (Ctrl+L).
Procura e substitui uma expressão no arquivo (Ctrl+R).
Posicione o cursor em uma linha desejada (Alt+G).
Cancela a edição.
Confirma as alterações.

6.3.3.1 Estrutura do Arquivo Fonte


Para uma melhor utilização e aproveitamento dos arquivos
fontes gerados é necessário que o projetista conheça melhor a
estrutura utilizada.

A estrutura segue os padrões estabelecidos pelo Delphi,


vários eventos foram criados para atender as exigências de
tratamento das Tabelas.

Os arquivos fontes possuem vários blocos de utilização


interna do X-Maker, esses blocos não serão preservados em
eventuais personalizações através do Delphi ou algum outro
meio.

Os blocos são identificados como linhas de comentários,


iniciados em “{XX-Início do Bloco Modular. Modificações não
serão preservadas}” e finalizados em “{99-Final do Bloco
Modular. Modificações não serão preservadas}”. “XX”
representa o número do bloco, um arquivo fonte pode ter vários
blocos (01, 02, 03, etc).
73

Os blocos são utilizados de forma estratégica a fim de não


comprometer a liberdade de codificação do projetista.

Grande parte das funções e procedimentos utilizados em


um formulário de entrada de dados e entrada dados filhos estão
codificados na unit “RotinaEd.Pas”.

6.3.4 Principais eventos

6.3.4.1 Inicialização (FormShow)


Este evento é utilizado para fazer a ligação entre os
componentes e os campos da Tabela, algumas configurações
visuais são tratadas também neste evento. O evento é chamando
quando o formulário é executado pela primeira vez, quando o
formulário é fechado e executado novamente conta-se como
74

sendo a primeira vez. O projetista deverá respeitar os blocos 05


e 06.

6.3.4.2 Abertura de Tabelas (AbreTabelas)


Todas as Tabelas do projeto são abertas na inicialização do
projeto final, o projetista não irá encontrar neste evento as
codificações de abertura da Tabela manipulada pelo formulário.
Este evento foi mantido visando uma possível necessidade do
usuário em realizar uma abertura de Tabela de forma Local no
formulário.

6.3.4.3 Confirma Inclusão (ConfirmaInclusao)


Cada vez que o usuário do projeto final pedir uma inclusão
de registro, o evento “ConfirmaInclusao” será chamado, este
evento retorna uma expressão lógica permitindo ou não a
inclusão. Como padrão o evento retorna sempre verdadeiro, o
projetista poderá criar uma condição para manipular o retorno.

6.3.4.4 Confirma Modificação


(ConfirmaModificacao)
Cada vez que o usuário do projeto final pedir uma
modificação do registro, o evento “ConfirmaModificacao” será
chamado, este evento retorna uma expressão lógica permitindo
ou não a modificação. Como padrão o evento retorna sempre
verdadeiro, o projetista poderá criar uma condição para
manipular o retorno.

6.3.4.5 Confirma Exclusão (ConfirmaExclusao)


Cada vez que o usuário do projeto final pedir uma
exclusão de registro, o evento “ConfirmaExclusao” será
chamado, este evento retorna uma expressão lógica permitindo
75

ou não a exclusão. Como padrão o evento retorna sempre


verdadeiro, o projetista poderá criar uma condição para
manipular o retorno.

6.3.4.6 Confirma Gravação (ConfirmaGravacao)


Cada vez que o usuário do projeto final pedir para salvar
um registro, o evento “ConfirmaGravacao” será chamado, este
evento retorna uma expressão lógica permitindo ou não que o
registro seja salvo. Como padrão o evento retorna sempre
verdadeiro, o projetista poderá criar uma condição para
manipular o retorno.

6.3.4.7 Ao Entrar Manutenção (TelaManutencao)


Toda vez que a tela de manutenção do formulário for
ativada o evento “TelaManutencao” será chamado, ao navegar
entre os registros com a tela de manutenção ativa o evento será
chamado também. Esse evento é muito útil para realizar
alterações de propriedades visuais em tempo de execução.
Exemplo: um Cadastro de Clientes, aonde o tipo de pessoa
(Física ou Jurídica) determina o preenchimento de certos
campos, o projetista terá que codificar essas particularidades
exigidas. Os campos a serem habilitados ou desabilitados serão
codificados nesse evento.

6.3.4.8 Ao Entrar Consulta (TelaConsulta)


Toda vez que a tela de consulta do formulário for ativada o
evento “TelaConsulta” será chamado.
76

6.3.4.9 Atribui Valores (AtribuiValoresPadrao)


Quando o usuário do projeto final pedir uma inclusão de
registro o evento “AtribuiValoresPadrao” será chamado, o X-
Maker utilize este evento para atribuir a função de auto-
incremento de um campo. O projetista poderá utilizar este
evento para atribuir valores aos campos da Tabela.

6.3.4.10 Antes de Salvar (AntesdeSalvar)


Este evento será chamado antes de salvar um registro
através do botão “Salvar” do formulário. O projetista poderá
realizar codificações de atribuição de campos ou para quaisquer
outros fins.

6.3.4.11 Antes de Incluir (AntesdeIncluir)


Este evento será chamado antes de entrar no modo de
inclusão de registro, através do botão “Incluir” da barra de
ferramentas.

6.3.4.12 Antes de Modificar (AntesdeModificar)


Este evento será chamado antes de entrar no modo de
modificação de registro, através do botão “Modificar” da barra
de ferramentas.

6.3.4.13 Antes de Excluir (AntesdeExcluir)


Este evento será chamado antes de entrar no modo de
exclusão de registro, através do botão “Excluir” da barra de
ferramentas.
77

6.3.4.14 Depois de Incluir (DepoisdeIncluir)


Este evento será chamado depois da inclusão de um
registro, através do botão “Incluir” da barra de ferramentas.

6.3.4.15 Depois de Modificar (DepoisdeModificar)


Este evento será chamado depois da modificação de um
registro, através do botão “Modificar” da barra de ferramentas.

6.3.4.16 Depois de Excluir (DepoisdeExcluir)


Este evento será chamado depois da exclusão de um
registro, através do botão “Excluir” da barra de ferramentas.

6.3.4.17 Finalização (FormClose)


Este evento será chamado quando o usuário do projeto
final fechar o formulário.
78

6.4. 4º Passo – Relatórios, Etiquetas e


Gráficos.

Este é o quarto passo para criação de um projeto, através


desta opção o projetista irá definir todos os relatórios, etiquetas e
gráficos a serem utilizados pelo projeto.
79

Em um projeto a extração de resultados é realizada através


dessa opção, é possível criar vários tipos de relatórios, o
projetista terá toda liberdade de criação através do Editor de
Layout.

• Relatórios: O projetista poderá definir vários tipos de


relatórios para diversas finalidades, com exemplo
podemos citar a criação de relatórios de Tabela de
Preços, Lista de Clientes, Contas a Receber, Contas a
Pagar, Fluxo de Caixa, etc.

• Etiquetas: Esse tipo de definição é muito utilizado na


criação de Mala Direta ou etiquetas para os produtos do
estoque com a utilização do código de barras.

• Gráficos: São utilizados para uma visualização mais


sintética dos dados, existe uma variedade de modelos
disponíveis.

No projeto final o usuário sempre irá visualizar os


relatórios antes de imprimir, isso garante ou usuário optar entre
apenas visualizar na tela ou enviar para impressora. Outro
recurso muito útil e a exportação dos relatórios para PDF, BMP,
JPG, EMF, WMF, TXT, HTM, CSV e RTF.

A seguir iremos usar apenas o termo “Relatório”, pois na


realidade uma Etiqueta ou Gráfico é gerado como Relatório pelo
X-Maker.

6.4.1 Finalidade de cada botão:

Inclui um novo relatório.


80

Exclui um relatório selecionado.


Edita as propriedades do relatório.
Layout do relatório.
Importa relatório definido em outro projeto.
Confirma a inclusão ou modificação de um relatório.
Cancela a inclusão ou modificação de um relatório.

6.4.2 Finalidade de cada atributo:

• Nome: Informe o nome do relatório, esse nome será


utilizado para criação do arquivo fonte.

• Tipo: Informe o tipo de relatório, os tipos disponíveis


são: Relatório, Etiqueta e Gráfico.

• Título: Informe o título do relatório, o título será


atribuído no “Caption” do formulário.

• Tabela: Informe a Tabela a ser manipulada pelo


relatório.

Os relatórios são ordenados por nome, utilize a opção


“Localizar” para um posicionamento mais rápido no relatório
desejado, essa opção é válida quando o projeto conter um
número muito grande de relatórios.

Dica:

O X-Maker não predetermina os nomes a serem utilizados


em formulários e relatórios, o projetista tem a liberdade de
escolha, porém sugerimos a utilização de nomes tais como:
Rel_001, Rel_002, Rel_003, etc. Eti_001, Eti_002, Eti_003, etc.
81

Gra_001, Gra_002, Gra_003, etc., como em todo projeto os


relatórios são maioria isso torná-se uma boa escolha.

6.4.3 Definindo o Relatório

A definição do relatório é composta pelos campos a serem


listados, Relacionamentos, Filtragem, Ordenação e Layout.

É possível definir uma filtragem (seleção) de registros,


quando um relatório não possui nenhuma filtragem todos os
82

registros são listados de forma incondicional. A filtragem pode


ser fixa, predeterminada pelo projetista, ou informada pelo
usuário do projeto final. A escolha da filtragem depende do tipo
de resultado a ser extraído.

Na opção “Operação” está contida os operadores lógicos


disponíveis, sua utilização tem que ser coerente, pois os
resultados extraídos dependem da sua boa utilização.

• = Igual: Indica que apenas os registros cujo campo


selecionado, forem iguais ao valor fixo ou variável serão
listados. Exemplo: Nome = ‘Maria’ somente os registros
que iniciarem com o nome ‘Maria’ serão listados.

• <> Diferente: Indica que apenas os registros cujo campo


selecionado, forem diferentes do valor fixo ou variável
83

serão listados. Exemplo: Nome <> ‘Maria’ somente os


registros que forem diferentes de ‘Maria’ serão listados.

• < Menor que: Indica que apenas os registros cujo campo


selecionado, forem menores que o valor fixo ou variável
serão listados. Exemplo: Nome < ‘Maria’ somente os
registros que forem menores que ‘Maria’ serão listados.
Para campos Alfanuméricos, conforme exemplo, a
comparação é alfabética. Os campos numéricos e datas
são comparados por valores.

• <= Menor ou Igual: Indica que apenas os registros cujo


campo selecionado, forem menores ou iguais ao valor
fixo ou variável serão listados. Exemplo: Nome <=
‘Maria’ somente os registros que forem menores ou
iguais a ‘Maria’ serão listados.

• > Maior que: Indica que apenas os registros cujo campo


selecionado, forem maiores que o valor fixo ou variável
serão listados. Exemplo: Nome > ‘Maria’ somente os
registros que forem maiores que ‘Maria’ serão listados.

• >= Maior ou Igual: Indica que apenas os registros cujo


campo selecionado, forem maiores ou iguais ao valor
fixo ou variável serão listados. Exemplo: Nome >=
‘Maria’ somente os registros que forem maiores ou
iguais a ‘Maria’ serão listados.

• % Contém: Indica que apenas os registros cujo campo


selecionado, conterem o valor fixo ou variável serão
listados. Exemplo: Nome LIKE ‘%SOUSA%’ somente
os registros que conterem a expressão ‘SOUSA’ serão
listados. A procura independe da posição da expressão
no campo, esse recurso é muito utilizado para
localização de sobrenomes em uma Tabela de Clientes.
84

• ? Vazio: Indica que apenas os registros cujo campo


selecionado, forem vazios serão listados. Exemplo:
Nome IS NULL somente os registros que não possuírem
Nomes cadastrados serão listados.

A opção “Composição Lógica” é utilizada quando mais de uma


expressão de filtro for utilizado.

• E: Atribui o operador “AND” entre as expressões de


filtro. Exemplo: Nome = ‘Maria’ AND Cidade =
‘UBERABA’ somente os registros que iniciarem com o
nome ‘Maria’ e forem da Cidade de ‘UBERABA’ serão
listados.

• OU: Atribui o operador “OR” entre as expressões de


filtro. Exemplo Nome = ‘Maria’ OU Nome = ‘Jose’
somente os registros que iniciarem com o nome
‘Maria’ou o nome ‘Jose’ serão listados.

Todos os componentes de edição utilizados em “Diálogo”


poderão ser utilizados na expressão de filtragem, possibilitando
assim que o próprio usuário defina os valores de seleção.

Dica:

É muito comum a confusão do uso das “Composições


Lógicas”, um exemplo clássico seria a criação de um relatório
para listar os salários iguais a R$ 1.000,00 e R$ 1.200,00. Se
projetista definir o filtro como: SALARIO = 1000 E SALARIO
= 1200 nenhum registro seria listado, pois o campo SALARIO
não poderia valer R$ 1.000,00 e R$ 1.200,00 ao mesmo tempo,
em um mesmo registro, o certo seria: SALARIO = 1000 OU
SALARIO = 1200.
85

A ordenação dos registros a serem listados é definida pelo


projetista, a chave de ordenação poderá ser composta ou não.
Chaves compostas indicam que mais de um campo serão
utilizados na formação do índice.

6.4.4 Layout do Relatório

A definição do layout do relatório é realizada através de


uma interface visual, o componente utilizado é o FreeReport
(http://www.fast-report.com/en/) trata-se de um poderoso e
prático componente de geração de relatórios. Outros
componentes serão implementados em próximas versões do X-
Maker, proporcionar o máximo de opções e versatilidades para o
projetista é o nosso maior objetivo.
86

O editor possui uma estrutura predefinida comporta por:


Cabeçalho de Página, Cabeçalho de Coluna, Dados Mestre,
Sumário do Relatório e Rodapé de Página.

Na barra de ferramentas o botão é responsável pela


atribuição dos campos no relatório.
87

Selecione os campos a serem atribuídos e determine o seu


posicionamento em “Ordem”. A opção “Inclua cabeçalhos” traz
os títulos definidos em “Tabelas” para a coluna de cabeçalho, a
opção “Incluir banda” não é necessária, pois como padrão o
Layout utilizará uma faixa predefinida, a seguir iremos explicar
a utilização das “bandas”.

6.4.4.1 Bandas
As “Bandas” são áreas específicas que poderão conter
campos ou objetos a serem impressos. Cada banda é responsável
por um recurso diferente no relatório, temos como exemplo as
áreas de cabeçalho (topo do relatório), rodapé, cabeçalho de
colunas, registros da tabela, grupo de quebra, etc.

Utilize o botão na barra lateral para inserir uma nova


“Banda”.
88

Exemplo de “Bandas”.

Barra de Ferramentas Lateral


Insere um campo/texto em uma “Banda”, o
campo/texto poderá conter um campo da Tabela, texto
ou fórmula de cálculo.
Este botão é utilizado para inserir uma nova banda
no relatório
Insere uma imagem (bmp, ico, wmf ou emf) em
uma “Banda”, normalmente é utilizado para mostrar um
Logotipo no relatório.
Insere uma nova página de relatório, sua utilização
é justificável para relatórios mais complexos com
muitos objetos de definição.
Insere um desenho de uma linha, possibilita a
criação de linhas.
Insere uma caixa de texto com sombras, cria um
efeito de fundo no relatório.
Insere um gráfico, seis modelos de gráficos estão
89

disponíveis.
Insere um código de barras, muito utilizado para
impressão de etiquetas de produtos.
Insere um objeto “Check Box”.
Insere um objeto de desenho com vários formatos.
Insere uma caixa de texto.
Insere um objeto de compartilhamento com outros
aplicativos, tais como o Word, Excel, Corel Draw e
outros.

Cálculos em Relatórios

É possível a criação de cálculos entre campos em relatórios, ao


inserir um campo/texto uma janela de edição será
apresentada, na caixa de texto é possível realizar codificações.
90

Todo campo da Tabela é referenciado como


[DVendas."PRO_CODIGO"] o “DVendas” representa o nome
da tabela. O nome “PRO_CODIGO” corresponde ao campo da
Tabela, sendo utilizado assim o nome definido em “Tabelas”.

Os operadores matemáticos poderão ser utilizados para


cálculos entre campos ou valores fixos.
Exemplo 1: [[DProdutos."PRO_VENDA"] *
[DProdutos."PRO_QUANTIDADE"]]
Exemplo 2: [[DProdutos."PRO_VENDA"] * 0.5]
A utilização de colchetes ‘[ ]’ é obrigatório, pois indica
que o seu conteúdo representa um campo da Tabela ou variável.
Os cálculos terão que utilizar os colchetes ‘[ ]’ também,
91

conforme exemplo. A não utilização dos colchetes ‘[ ]’ indica


que o seu conteúdo será impresso como texto.

Alguns comandos do Delphi poderão ser utilizados, tais


como: if…then…else, while…do, repeat…until. A utilização
de blocos begin..end; também são aceitos.

Algumas funções internas poderão ser utilizadas, são elas:

• Sum: Totaliza campos numéricos, sintaxe:


Sum(<field>), exemplo:
[SUM([DProdutos."PRO_CUSTO"] )]
• Count: Quantifica a quantidade de registros listados,
sintaxe: Count(<dataset>), exemplo: [Count(DProdutos)]
• Str: Converte número em string, sintaxe: Str(<value>)
• Copy: Retorna uma parte de uma string, sintaxe:
Copy(<string>, <from>, <count>)
• If: Retorna uma string conforme condição, uma
condição lógica irá determinar o retorno de uma String1
ou String2, sintaxe: If(<expression>, <string1>,
<string2>)
• FormatFloat: Converte um número em uma string
formatada, sintaxe FormatFloat(<formatstr>, <value>), o
<formatstr> segue os padrões do Delphi de formatação.
• FormatDateTime: Converte uma data/hora em uma
string formatada, sintaxe: FormatDateTime(<formatstr>,
<value>)
• StrToDate: Converte uma string em data, sintaxe:
StrToDate(<value>)
• StrToTime: Converte uma string em hora, sintaxe:
StrToTime(<value>)
• UpperCase: Converte os caracteres de uma string em
caracteres maiúsculos, sintaxe: UpperCase(<value>)
92

• LowerCase: Converte os caracteres de uma string em


caracteres minúsculos, sintaxe: LowerCase(<value>)
• Int: Retorna a parte inteira de um número, sintaxe:
Int(<value>)
• Frac: Retorna a parte fracionária de um número, sintaxe:
Frac(<value>)
• Round: Arredonda um número, sintaxe:
Round(<value>)
• Mod: Retorna o resto da divisão entre dois números,
sintaxe: value1 Mod value2
• Input: Mostra uma caixa de texto, onde o usuário poderá
digitar qualquer informação extra, sintaxe:
Input(<caption> [,<default>])
• MascValor: Formata um número inteiro ou fracionário e
retorna em “String”, sintaxe:
MascValor(<valor>,<máscara>), exemplo:
[MascValor([DProdutos."PRO_CUSTO"],’
ZZZ.ZZ9,99’)]
• ConstStr: Retorna uma “String” replicada N vezes,
sintaxe: ConstStr(<string>,<qtde>), exemplo:
[ConstStr(‘-‘,80)]
• RetiraBrancos: Retira os espaços em branco de uma
“String”, sintaxe: RetiraBrancos(<string>), exemplo:
[RetiraBrancos([Dprodutos.”PRO_DESCRICAO”])]
• PadR: Alinha uma “String” à esquerda, dentro de um
tamanho determinado, sintaxe:
PadR(<string>,<tamanho>), exemplo:
[PadR([Dprodutos.”PRO_DESCRICAO”], 80)]
• PadL: Alinha uma “String” à direita, dentro de um
tamanho determinado, sintaxe:
PadL(<string>,<tamanho>), exemplo:
[PadL([Dprodutos.”PRO_DESCRICAO”], 80)]
• Center: Centraliza uma “String”, dentro de um tamanho
determinado, sintaxe: Center(<string>,<tamanho>),
93

exemplo: [Center([Dprodutos.”PRO_DESCRICAO”],
80)]
• Space: Cria uma “String” em branco de tamanho
determinado, sintaxe: Space(<tamanho>), exemplo:
[Space(80)]
• PorExtenso: Retorna um número por extenso, em
português, sintaxe: PorExtenso(<valor>), exemplo:
[PorExtenso([Dproduto.”PRO_PRECO”])]
• StrZero: Converte um número inteiro em “String” com
zeros à esquerda, sintaxe:
StrZero(<número>,<tamanho>), exemplo:
[StrZero([Dproduto.”PRO_CODIGO”], 05)]
• FormatMaskText: Formata uma “String” conforme a
máscara informada, sintaxe:
FormatMaskText(<máscara>, <string>), exemplo:
[FormatMaskText(‘XXXX’,
[Dprodutos.”PRO_UNIDADE”])]
• MascTexto: Formata uma “String” conforme a máscara
informada, sintaxe: MascTexto(<string>, <máscara>),
exemplo: [MascTexto([DClientes."CEP"], '99999-999')]
• MascData: Formata uma data conforme a máscara
informada, sintaxe: MascData(<data>, <máscara>),
exemplo: [MascData([DVendas."VEN_DATA"],
'dd/mm/yy')]
• CalcC_0: Arredonda uma expressão de cálculo e retorna
sem casas decimais, sintaxe: CalcC_0(<valor 1>, <valor
2>, <operador>), exemplo: [CalcC_0(99.56, 85.56, ‘+’)]
• CalcC_1: Arredonda uma expressão de cálculo e retorna
com uma casa decimal, sintaxe: CalcC_1(<valor 1>,
<valor 2>, <operador>, exemplo: [CalcC_1(99.56,
85.56, ‘-‘)]
• CalcC_2: Arredonda uma expressão de cálculo e retorna
com duas casas decimais, sintaxe: CalcC_2(<valor 1>,
94

<valor 2>, <operador>, exemplo: [CalcC_2(99.56,


85.56, ‘*‘)]
• CalcC_3: Arredonda uma expressão de cálculo e retorna
com três casas decimais, sintaxe: CalcC_3(<valor 1>,
<valor 2>, <operador>, exemplo: [CalcC_3(99.56,
85.56, ‘/‘)]
• CalcC_4: Arredonda uma expressão de cálculo e retorna
com quatro casas decimais, sintaxe: CalcC_4(<valor 1>,
<valor 2>, <operador>, exemplo: [CalcC_4(99.56,
85.56, ‘+‘)]
• CalcC_5: Arredonda uma expressão de cálculo e retorna
com cinco casas decimais, sintaxe: CalcC_5(<valor 1>,
<valor 2>, <operador>, exemplo: [CalcC_5(99.56,
85.56, ‘-‘)]

Dica:

A pasta “C:\XMaker3\Comp\Delphi”, contem o arquivo de


ajuda do FreeReport, o nome do arquivo é “FRUSER.HLP”.

6.4.5 Configurando Etiquetas

A configuração da quantidade de colunas por etiqueta é


realizada através do Menu Arquivo em “Opções da Página”.
95

Defina o número de colunas da etiqueta em “Colunas”.

6.4.6 Configurando o Gráfico

De um duplo clique no objeto de gráfico do relatório.


96

Todas configurações estão disponíveis nesta janela, em


“Dados” na opção “Nome do objeto” informe os objetos a serem
totalizados e visualizados no gráfico.

• Memo7: Neste exemplo representa o código do produto.


• Memo11: Representa o total das vendas.

Para obter no nome do objeto clique no objeto desejado e


veja na opção “Name” do Object Inspector.
97

6.5. 5º Passo – Menu

Este é o quinto passo para criação de um projeto, através


desta opção o projetista irá definir o menu lateral, superior e
barra de ferramentas para acesso aos formulários e relatórios do
projeto.
98

As opções disponíveis para definição são:

• Sub-Menu: Insere um grupo de separação das opções,


sua utilização torna o projeto mais organizado e
apresentável.

• Formulários e Relatórios: Insere um formulário ou


relatório definido no projeto.

• Rotina Avulsa: Insere um bloco de codificação livre, ou


seja, o projetista poderá utilizar uma codificação
específica.

• Programa Externo (EXE): Insere a chamada de um


programa externo, exemplo: Word, Excel, etc.

Barra de Ferramentas

Caixa de opções (Sub-Menu,


Formulários, Relatórios, etc.).
Apaga uma opção selecionada, ao
apagar um Sub-Menu todas opções
subordinadas serão apagadas também.
Edita uma opção selecionada.
Redefine o Menu Superior & Barra de
Ferramentas, o projetista poderá inserir novas
opções ou mover as opções de acesso através
do próprio Delphi, sendo necessário uma
atualização de leitura para atualização do
próprio X-Maker.
99

Rotina Avulsa

Ao inserir uma rotina avulsa o botão ficará disponível para


o projetista.

O projetista poderá realizar uma codificação especifica


dentro do bloco predeterminado, a codificação segue os padrões
estabelecidos pela linguagem Delphi.
100

6.6. 6º Passo – Compilação

Este é o sexto e último passo para criação de um projeto,


todos os arquivos fontes estarão gerados e configurados para
criação do arquivo executável.

A compilação do projeto é realizada via comandos do MS-


DOS, durante a compilação o X-Maker estará verificando
qualquer tipo de erro nos arquivos fontes gerados que empeçam
a criação do executável.

Em caso de erro em algum arquivo fonte, o Editor de texto


será executado e o arquivo que gerou o erro será aberto, o cursor
estará posicionado na linha indicada pelo compilador com uma
tarja vermelha.
101

A opção força a recompilação de


todos os módulos do projeto

Para executar o projeto automaticamente após a


compilação, marque a opção .
Outros fatores poderão atrapalhar o processo de
compilação, uma delas é a configuração errada do compilador e
parâmetros utilizados. Veja o tópico “Configurando o X-Maker”
para certificar-se se o compilador está configurado da forma
correta. Por tratar-se de uma compilação via comandos do MS-
DOS, deve-se considerar as restrições de uso do MS-DOS,
configurações do “Autoexec.bat” e “Config.sys” poderão
interferir na execução.
A compilação poderá ser realizada diretamente no Delphi,
veja o tópico “Configurando o X-Maker” em “Compilando e
Executando pelo Delphi”. Não há diferenças entre os meios de
compilação, o resultado será o mesmo.
102

7. FONTES GERADOS PELO X-MAKER

O X-Maker possui vários módulos predefinidos para


controle geral do aplicativo gerado. Alguns módulos são
constantemente alterados, são os módulos de definições de
Banco de Dados, Tabelas e Campos.

Segue abaixo uma tabela com todos os módulos gerados e


manipulados pelo X-Maker.

Função do Módulo Módulo Fonte


Formulário Principal Princ.Pas; Princ.Dfm; Princ.Res
Definição da Base de BaseD.Pas; BaseD.Dfm; BaseD.Dti
Dados
Abertura de Tabelas Abertura.Pas; Abertura.Dfm
Atributos de Campos Atributo.Pas
das Tabelas
Estrutura de Campos Estrutur.Pas
das Tabelas
Classe de Definição das Tabela.Pas
Tabelas
Lista de Tabelas LTab.Pas; LTab.Inc
Formulário de Pesquisa GridPesquisa.Pas; GridPesquisa.Dfm
Formulário Adapter Princ_Adapter.Pas;
Princ_Adapter.Dfm
Seleciona Empresa - Emp_Adapter.Pas;
Adapter Emp_Adapter.Dfm
Campo Adapter Campo_Adapter.Pas;
Campo_Adapter.Dfm
Tela de Apresentação Splash.Pas; Splash.Dfm
Rotinas Internas Rotinas.Pás
Rotinas de Edição RotinaEd.Pás
Rotinas de Validação de Validar.Pas
103

Campos
Declaração de Variáveis Publicas.Pas
Públicas
Componentes Extras Extras.Pas
Chamada de Interno.Pas
Formulários Internos
Calendário Calend.Pas; Calend.Dfm
Calculadora Calculad.Pas; Calculad.Dfm
Agenda de Telefones Agenda.Pas; Agenda.Dfm
Edição da Agenda AgEdit.Pas; AgEdit.Dfm
Acesso de Usuários Acesso.Pas; Acesso.Dfm
Configuração de Senhas.Pas; Senhas.Dfm
Senhas
Edição de Usuários EdUsr.Pas; EdUsr.Dfm
Edição de Grupos de EdGrp.Pas; EdGrp.Dfm
Usuários
Configuração de CfgEmp.Pas; CfgEmp.Dfm;
Empresas Usuárias CfgEmp.Res
Seleção de Empresas SelEmp.Pas; SelEmp.Dfm
Usuárias
Configuração do Ambiente.Pas; Ambiente.Dfm
Ambiente de Trabalho
Configuração da Filtro.Pas; Filtro.Dfm
Filtragem em Tabelas
Bate Papo em Rede BatePapo.Pas; BatePapo.Dfm
Cópia de Segurança Backup.Pas; Backup.Dfm
Restauração de Cópia Restaura.Pas; Restaura.Dfm
de Segurança
Utilitário de CabIntF.Pas; CabStComps.Pas;
Compactação de Dados CabStConsts.Pas; CabiNet.Dll
Formulário de Aguarde.Pas; Aguarde.Dfm
Mensagem de Processo
Visualizador de Fr_View.Pas;Fr_View.Dfm;Fr.Inc
Relatórios
104

Configuração de OpcRel.Pas;OpcRel.Dfm
Impressão
Sobre Sobre.Pas; Sobre.Dfm
Tabelas do Projeto DXXXX.Pas (XXXX = Nome da
Tabela)
Campos e Atributos ATRL9999.Pas (9999 = Nº Seq.
Tabela)
Modelo “Entrada de Modelo1.Pas;Modelo1.Dfm
Dados”
Modelo “Entrada de Modelo2.Pas;Modelo2.Dfm
Dados Filho”
Modelo “Avulso MDI” Modelo3.Pas;Modelo3.Dfm
Modelo “Avulso Modelo4.Pas;Modelo4.Dfm
Normal”
Modelo “Relatórios” Modelo5.Pas;Modelo5.Dfm
Modelo “Gráficos” Modelo6.Pas;Modelo6.Dfm
Modelo “Etiquetas” Modelo7.Pas;Modelo7.Dfm

Todos os módulos poderão ser personalizados pelo projetista. O


X-Maker possui um sistema de segurança que possibilita a
recuperação de módulos, essa opção está no Menu Principal
Fontes na opção “Regerar ...”.
105

Selecione os módulos a serem regerados (recuperados) e


clique no botão “Gerar”. Faça a compilação do projeto, marque
a opção “Compilar Todos os Módulos”.

Ao redefinir um formulário ou relatório o X-Maker cria


automaticamente uma cópia do arquivo fonte. Uma pasta
chamada “Copia” é criado dentro da pasta do projeto, exemplo:
“C:\Xmaker3\Projetos\Vendas\Copia”, o arquivo fonte copiado
possui o mesmo nome de origem.
106

7.1. Estrutura do componente “Tabela”

O componente “Tabela” é utilizado para manipular as


tabelas do projeto, o módulo fonte é o “Tabela.Pas”. Todo
acesso às tabelas deverá ser realizado através deste componente,
sua utilização padroniza e facilita o uso dentro do projeto.

Segue abaixo as principais propriedades do componente


“Tabela”.

Propriedade Definição / Utilização


NomeTabela: String Retorna o nome da tabela.
Exemplo: DCLIENTES.NomeTabela;
Retorno: ‘CLIENTES’ = Conforme
exemplo.
Titulo: String Retorna o título da tabela.
Exemplo: DCLIENTES.Titulo;
Retorno: ‘Ficha Cadastral de Clientes’ =
Conforme exemplo.
Name: String Retorna o nome interno (componente) da
tabela.
Exemplo: DCLIENTES.Name;
Retorno: ‘DCLIENTES’ = Conforme
exemplo.
<Campos>.Conteúdo: Todos os campos da tabela são acessados
<valor do campo> através do componente.
Exemplo: DCLIENTES.Nome.Conteúdo
:= ‘Modular Software’;
Neste exemplo o campo ‘Nome’ está
recebendo o valor ‘Modular Software’,
cada campo receberá o dado conforme
sua origem, que são: Alfanumérico,
Numérico, Data, Memo ou Imagem.
Inclui(Campos: Inclui um novo registro em branco na
107

TListaCampos): tabela, o parâmetro “Campos”, é


Boolean utilizado no formulário de entrada de
dados, é uma lista contendo os campos
utilizados na tela para atribuição dos
valores padrões.
Em um formulário avulso ou outro tipo
de finalidade utilize e opção “NIL” como
parâmetro.
Exemplo: DCLIENTES.Inclui(Nil);
Retorno: True = Inclusão autorizada,
False = Inclusão não autorizada.
Modifica: Boolean Habilita o registro para edição.
Exemplo: DCLIENTES.Modifica;
Retorno: True = Edição autorizada, False
= Edição não autorizada.
Exclui: Boolean Exclui o registro atual.
Exemplo: DCLIENTES.Exclui;
Retorno: True = Exclusão efetivada com
sucesso, False = Não foi possível excluir.
Salva: Boolean Salva o registro que está em modo de
inclusão ou edição. Essa propriedade
utiliza o recurso de “Commit”, ou seja,
ela assegura que informação seja gravada
em disco e não somente no “buffer” de
memória.
Exemplo: DCLIENTES.Salva;
Retorno: True = Registro salvo com
sucesso, False = Erro ao salvar o registro.
Cancela: Boolean Cancela uma operação de inclusão ou
edição do registro.
Exemplo: DCLIENTES.Cancela;
Retorno: True = Cancelamento efetivado,
False = Cancelamento abortado.
LimparTabela: Exclui todos os registros da tabela, sua
108

Boolean utilização dever ser ponderada, pois ao


realizar esta operação a tabela ficará
vazia, sem nenhum registro.
Exemplo: DCLIENTES.LimparTabela;
Retorno: True = Registros apagados com
sucesso, False = Erro ao excluir os
registros.
DeletaTabela Exclui a tabela fisicamente do banco de
dados.
Exemplo: DCLIENTES.DeletaTabela;
A tabela não pode estar em uso, utilize a
propriedade “Close” antes de excluir a
tabela.
CriaTabela Cria a tabela fisicamente no banco de
dados, somente se a tabela não existir.
Exemplo: DCLIENTES.CriaTabela;
Existe: Boolean Verifica se a tabela existe fisicamente no
banco de dados.
Exemplo: DCLIENTES.Existe;
Retorno: True = A tabela existe, False =
A Tabela não existe.
Abrir: Boolean Abre a tabela para uso, a manipulação
dos registros é somente possível após a
abertura da mesma.
Exemplo: DCLIENTES.Abrir;
Retorno: True = Tabela aberta com
sucesso, False = Não foi possível abrir a
tabela.
O projeto abre todas as tabelas em sua
inicialização.
AtualizaSql; Atualiza a visualização dos registros no
“buffer” de memória, os registros
poderão ser filtrados e ordenados.
Exemplo: DCLIENTES.AtualizaSql;
109

Sempre que uma tabela receber uma


expressão de filtro ou de ordenação essa
propriedade terá que ser utilizada.
Filtro: TStringList Recebe uma lista de expressões para
filtro.
Exemplo:
DCLIENTES.Filtro.Add(‘CODIGO =
100’);
A sintaxe utilizada para filtragem é
definida pelo SQL. Para atualizar os
registros com o novo filtro, utilize a
propriedade “AtualizaSql”.
FiltroRelac: Recebe uma lista de expressões para
TStringList filtro.
Exemplo:
DCLIENTES.FiltroRelac.Add(‘CODIGO
= 100’);
Segue os mesmos padrões da propriedade
“Filtro”.
O X-Maker utiliza este filtro extra para
os “Grids de Relacionamentos” em
formulários de entrada de dados. É
utilizado para não gerar conflito na opção
de filtragem do formulário de entrada de
dados filho.
ChaveIndice: String Define o conjunto de campos para
ordenação da tabela.
Exemplo: DCLIENTES.ChaveIndice :=
‘NOME’;
Para mais de campo para composição da
chave utilize a “,“(vírgula).
Exemplo: DCLIENTES.ChaveIndice :=
‘NOME, SALARIO’;
110

Método Ptabela

Pesquisa de registros, cálculos, extração de dados, atualizações e


exclusões.

Unit

Tabela.Pas

Descrição

O “Ptabela” pode ser utilizado de cinco (5) forma diferentes,


isso é possível, pois é utilizada uma sobrecarga de métodos.

1) Pesquisar um registro em uma tabela:

Sintaxe:

Ptabela(Tabela: TTabela, [Vetor de Campos]: String, [Vetor


de Valores]: Variant): Boolean;

1º Parâmetro: Tabela = Tabela a ser pesquisada.

2º Parâmetro: [Vetor de Campos] = Vetor de campos da tabela


para composição do filtro, para mais de um campo utilize a
vírgula (,) exemplo: [‘CAI_DOCUMENTO’,
‘CAI_PARCELA’].

3º Parâmetro: [Vetor de Valores] = Vetor de valores a serem


atribuídos no filtro, em conformidade com o parâmetro acima,
para mais de um campo utilize a vírgula (,) exemplo: [100, 1].

Exemplo:
111

if not Ptabela(TabGlobal.Dclientes, [‘CLI_CODIGO’],


[TabGlobal.Dvendas.CLI_CODIGO.Conteudo]) then
MessageDlg(‘Cliente não encontrado ...’, mtWarning, [mbOk],
0);

2) Pesquisa registros realiza cálculos e retorna os valores


desejados:

Sintaxe:

Ptabela(Tabela: TTabela, [Vetor de Cálculos]: Variant, Filtro:


String, Resultado: Variant): Boolean;

1º Parâmetro: Tabela = Tabela a ser pesquisada.

2º Parâmetro: [Vetor de Cálculos] = Vetor de cálculos, para


mais de um campo utilize a vírgula (,) exemplo:
['SUM(QUANT)', 'SUM(PRECO * QUANT)'].

3º Parâmetro: Filtro = Expressão de filtragem.

4º Parâmetro: Resultado = Variável do tipo "Variant",


previamente declarada, irá conter o resultado dos cálculos (2º
Parâmetro).

Exemplo:

var
CamposResultado: Variant;
begin
if Ptabela(TabGlobal.Ditvendas, ['SUM(QUANT)',
'SUM(PRECO * QUANT)'], 'NUMERO =
'+IntToStr(TabGlobal.DVENDAS.Numero.Conteudo),
112

CamposResultado) then
begin
Quant.Value := CamposResultado[0];
Total.Value := CamposResultado[1];
end;
end;

3) Pesquisa registros e retorna os valores desejados:

Sintaxe:

Ptabela(Tabela: TTabela, [Vetor de Campos]: String, [Vetor


de Valores]: Variant, [Vetor de Campos p/retorno]: String,
Resultado: Variant): Boolean;

1º Parâmetro: Tabela = Tabela a ser pesquisada.

2º Parâmetro: [Vetor de Campos] = Vetor de campos da tabela


para composição do filtro, para mais de um campo utilize a
vírgula (,) exemplo: [‘CAI_DOCUMENTO’,
‘CAI_PARCELA’].

3º Parâmetro: [Vetor de Valores] = Vetor de valores a serem


atribuídos no filtro, em conformidade com o parâmetro acima,
para mais de um campo utilize a vírgula (,) exemplo: [100, 1].

4º Parâmetro: [Vetor de Campos p/retorno] = Vetor de campos


da tabela para retorno em "Resultado", para mais de um campo
utilize a vírgula (,) exemplo: [‘CAI_DATA’,
‘CAI_HISTORICO’].

5º Parâmetro: Resultado = Variável do tipo "Variant",


previamente declarada, irá conter o resultado do conteúdo dos
campos (4º Parâmetro).
113

Exemplo:

var
CamposResultado: Variant;
begin
if Ptabela(TabGlobal.Dclientes, ['CLI_CODIGO'],
[TabGlobal.Dvendas.CLI_CODIGO.Conteudo], ['CLI_NOME',
'CLI_ENDERECO'], CamposResultado) then
begin
Nome.Value := CamposResultado[0];
Endereco.Value := CamposResultado[1];
end;
end;

4) Pesquisar um registro em uma tabela e atualiza campos


(update):

Sintaxe:

Ptabela(Tabela: TTabela, [Vetor de Campos]: String, [Vetor


de Valores]: Variant, Update: String): Boolean;

1º Parâmetro: Tabela = Tabela a ser pesquisada.

2º Parâmetro: [Vetor de Campos] = Vetor de campos da tabela


para composição do filtro, para mais de um campo utilize a
vírgula (,) exemplo: [‘CAI_DOCUMENTO’,
‘CAI_PARCELA’].

3º Parâmetro: [Vetor de Valores] = Vetor de valores a serem


atribuídos no filtro, em conformidade com o parâmetro acima,
para mais de um campo utilize a vírgula (,) exemplo: [100, 1].
114

4º Parâmetro: Update = Expressão em SQL para atualização


(Update).

Exemplo:

if not PTabela(TabGlobal.DESTOQUE, ['CODIGO'],


[TabGlobal.DITVENDAS.PRODUTO.Conteudo],
'QUANTIDADE = QUANTIDADE -
'+FracToStr(TabGlobal.DITVENDAS.QUANT.Conteudo))
then
MessageDlg(‘Falha na atualização ...’, mtError, [mbOk], 0);

5) Pesquisar um registro em uma tabela e exclui:

Sintaxe:

Ptabela(Tabela: TTabela, [Vetor de Campos]: String, [Vetor


de Valores]: Variant, Excluir: Boolean): Boolean;

1º Parâmetro: Tabela = Tabela a ser pesquisada.

2º Parâmetro: [Vetor de Campos] = Vetor de campos da tabela


para composição do filtro, para mais de um campo utilize a
vírgula (,) exemplo: [‘CAI_DOCUMENTO’,
‘CAI_PARCELA’].

3º Parâmetro: [Vetor de Valores] = Vetor de valores a serem


atribuídos no filtro, em conformidade com o parâmetro acima,
para mais de um campo utilize a vírgula (,) exemplo: [100, 1].

4º Parâmetro: Excluir = Variável para confirmação da exclusão.

Exemplo:
115

if not Ptabela(TabGlobal.Dclientes, [‘CLI_CODIGO’],


[TabGlobal.Dvendas.CLI_CODIGO.Conteudo], True) then
MessageDlg(‘Erro na exclusão do registro ...’, mtError, [mbOk],
0);

7.2. Rotinas Diversas “Rotinas.Pas”

7.2.1 Função ConstStr

• Declaração

function ConstStr(Ch: string; N: byte): string;

• Descrição

Prenche uma variável string “Ch” com uma seqüência de


caracteres de tamanho “N”.

• Exemplo

LbLinha.Caption := ConstStr(‘-‘,50);

7.2.2 Função DiretorioComBarra

• Declaração

function DiretorioComBarra(NomeDir: string): string;

• Descrição

Insere a última barra invertida ao nome do diretório


“NomeDir”, caso seja necessário.
116

• Exemplo

Pasta := DiretorioComBarra(DirWindows);

7.2.3 Função DiretorioSemBarra

• Declaração

function DiretorioSemBarra(NomeDir: string): string;

• Descrição

Retira a última barra invertida do nome do diretório


“NomeDir”, caso seja necessário.

• Exemplo

Pasta := DiretorioSemBarra(DirWindows);

7.2.4 Função RetiraHK

• Declaração

function RetiraHK(S: string): string;

• Descrição

Retira os caracteres “&” e “...” de uma string “S”.

• Exemplo

titulo := RetiraHK(mnu_clientes.Caption);
117

7.2.5 Função ArrayOfString

• Declaração

function ArrayToString(OpenArray: array of string;


Separador: char): string;

• Descrição

Copia o conteúdo de um array “OpenArray” para uma


variável string, acrescentando o caractere “separador”
entre cada elemento.

• Exemplo

lista := ArrayToString(listbox1.items, ‘;’);

7.2.6 Função StringToArray

• Declaração

procedure StringToArray(St: string; Separador: char;


Lista: TStringList);

• Descrição

Copia os diversos elementos de uma string “St” que


estão separados pelo caractere “Separador” para uma
lista do tipo “TStringList”.

• Exemplo
118

StringToArray(‘Azul;Branco;Amarelo’, ‘;’ , Lista);

7.2.7 Função DirWindows

• Declaração

function DirWindows: string;

• Descrição

Retorna a pasta de instalação do sistema operacional


“Windows”.

• Exemplo

Pasta := DirWindows;

7.2.8 Função RetiraBrancos

• Declaração

function RetiraBrancos(Str: string): string;

• Descrição

Retira todos os caracteres brancos de uma variável string


“Str”.

• Exemplo

Pasta := RetiraBrancos(DirWindows);
119

7.2.9 Função ExecutaForm

• Declaração

procedure ExecutaForm(FormClass: TFormClass; var


Reference);

• Descrição

Executa formulários do tipo MDI.

• Exemplo

ExecutaForm(TFormClientes,FormClientes);

7.2.10 Função CopiaArquivo

• Declaração

function CopiaArquivo(Origem, Destino: string):


Boolean;

• Descrição

Copia o arquivo “Origem” para o arquivo “Destino”.


Retorna True caso a cópia seja bem sucedida.

• Exemplo

Ok := CopiaArquivo(‘C:\Projeto\Base.Gdb’,
‘D:\Base.Gdb’);
120

7.2.11 Função CopiaArquivoMascara

• Declaração

function CopiaArquivosMascara(Orig, Dest, Masc:


string): Boolean;

• Descrição

Copia todos os arquivos da pasta “Origem” para a pasta


“Destino”, conforme a máscara. Retorna True caso todas
as cópias sejam bem sucedidas.

• Exemplo

Ok := CopiaArquivoMascara(‘C:\Projeto\’, ‘D:\’,
‘*.Gdb’) ;

7.2.12 Função PadR

• Declaração

function PadR(InStr: string; TotalLen: Integer): string;

• Descrição

Alinha o conteúdo da variável string “InStr” à esquerda,


dentro de um tamanho definido em “TotalLen”.

• Exemplo

S := PadR(Sistema.Titulo, 40);
121

7.2.13 Função PadL

• Declaração

function PadL(InStr: string; TotalLen: Integer): string;

• Descrição

Alinha o conteúdo da variável string “InStr” à direita,


dentro de um tamanho definido em “TotalLen”.

• Exemplo

S := PadL(Sistema.Titulo, 40);

7.2.14 Função Center

• Declaração

function Center(InStr: string; TotalLen: Integer):


string;

• Descrição

Centraliza o conteúdo da variável string “InStr”, dentro


de um tamanho definido em “TotalLen”.

• Exemplo

S := Center(Sistema.Titulo, 40);
122

7.2.15 Função Space

• Declaração

function Space(TotalLen: Integer): string;

• Descrição

Preenche uma variável string com espaços em branco


conforme o tamanho contido em “TotalLen”.

• Exemplo

S := Space(40);

7.2.16 Função DataAtual

• Declaração

function DataAtual: TDateTime;

• Descrição

Retorna a data atual do sistema.

• Exemplo

data := DataAtual;

7.2.17 Função HoraAtual

• Declaração
123

function HoraAtual: string;

• Descrição

Retorna a hora atual do sistema em uma variável string,


no formato 999999.

• Exemplo

hora := HoraAtual;

7.2.18 Função PorExtenso

• Declaração

function PorExtenso(FValor: Double): String;

• Descrição

Retorna um valor inteiro ou fracionário por extenso.

• Exemplo

extenso := PorExtenso(100.50);

7.2.19 Função Encript

• Declaração

Encript(Encript : String): string;

• Descrição
124

Codifica uma variável string “Encript”.

• Exemplo

senha := Encript(‘x-maker’); // Retorna: qfjbl.w

7.2.20 Função Decript

• Declaração

function Decript(Decript : String): string;

• Descrição

Decodifica uma variável string “Decript”.

• Exemplo

senha := Encript(‘qfjbl.w’); // Retorna: x-maker

7.2.21 Função StrZero

• Declaração

function StrZero(N: integer; Tamanho: integer): string;

• Descrição

Converte um número inteiro em string e atribui zero à


esquerda conforme o tamanho definido em “Tamanho”.

• Exemplo
125

numero := StrZero(100, 5); // Retorna: 00100

7.2.22 Função Dia

• Declaração

function Dia( Data: TDateTime ): string;

• Descrição

Retorna uma variável string com o número do dia de


uma data.

• Exemplo

Nr_dia := Dia(DataAtual);

7.2.23 Função Mes

• Declaração

function Mes( Data: TDateTime ): string;

• Descrição

Retorna uma variável string com o número do mês de


uma data.

• Exemplo

Nr_mes := Mes(DataAtual);
126

7.2.24 Função MesAno

• Declaração

function MesAno( Data: TDateTime ): string;

• Descrição

Retorna uma variável string com o número do mês e ano


de uma data, no formato 99/9999.

• Exemplo

Nr_mes_ano := MesAno(DataAtual);

7.2.25 Função Ano

• Declaração

function Ano( Data: TDateTime ): string;

• Descrição

Retorna uma variável string com o número do ano de


uma data, no formato 9999.

• Exemplo

Nr_ano := Ano(DataAtual);

7.2.26 Função UltimoDiadoMes

• Declaração
127

function UltimoDiaDoMes( MesAno: string ): string;

• Descrição

Retorna uma variável string com o número do último dia


de determinado mês e ano.

• Exemplo

Ultimo_dia := UltimoDiadoMes(Mes(DataAtual) +
Ano(DataAtual));

7.2.27 Função DDMMAA

• Declaração

function DDMMAA( Data: string ): string;

• Descrição

Converte uma variável string “Data” para o formato:


99/99/99.

• Exemplo

data := DDMMAA(‘01022004’); // Retorno: 01/10/04

7.2.28 Função MascValor

• Declaração
128

function MascValor(Valor: Extended; Mascara:


string): string;

• Descrição

Converte uma variável fracionária “Valor” para uma


string formatada “Mascara”.

• Exemplo

Valor :=MascValor(100.50,’ ZZZ.ZZ9,99’);

7.2.29 Função MascTexto

• Declaração

function MascTexto(S, Mascara: String): string;

• Descrição

Retorna uma variável string “S” formatada “Mascara”.

• Exemplo

Cep :=MascTexto(‘38010020’,’ 99999-999’);

7.2.30 Função TrocaString

• Declaração

function TrocaString(const S, OldPattern, NewPattern:


string; Flags: TReplaceFlags): string;
129

• Descrição

Substitui os caracteres “OldPattern” pelos caracteres


“NewPattern” dentro do variável string “S”. As opções
de substituição são definidos em “Flags”.

• Exemplo

cpf := TrocaString(‘999.999.999-99’, ‘.’, ‘’,


[rfReplaceAll, rfIgnoreCase]);

7.2.31 Função ContaOcorrencia

• Declaração

function ContaOcorrencia(Substr: string; S: string):


Integer;

• Descrição

Retorna quantas ocorrências do caractere “Substr” existe


na variável “S”.

• Exemplo

pontos := ContaOcorrencia(‘.’,‘999.999.999-99’);

7.2.32 Função FracToStr

• Declaração

function FracToStr(Valor: Extended): String;

• Descrição
130

Converte um número fracionário “valor” em uma


variável string. É retornado o ponto para as casas
decimais e não a vírgula como no método “FloatToStr”.
Este método é o mais indicado para atribuições em
expressões “SQL”.

• Exemplo

numero := FracToStr(100.50);

7.2.33 Função CalcC

• Declaração

function CalcC(N1,N2: Extended;Operador: String;


Decimal: Integer): Extended;

• Descrição

Arredonda uma expressão de cálculo e retorna com o


número de casas decimais desejados “Decimal”. Os
operadores suportados são: + (adição), – (subtração), *
(multiplicação) e / (divisão).

• Exemplo

calculo := CalcC(100, 50.50, ’*’, 3);

7.2.34 Função Exponencial

• Declaração
131

function Exponencial(N1: Extended; N2: Integer):


Extended;

• Descrição

Faz o cálculo exponencial entre os valores “N1” e “N2”.

• Exemplo

calculo := Exponencial(5, 2);

7.2.35 Função StrNumerica

• Declaração

function StrNumerica(N: String) : Boolean;

• Descrição

Verifica se variável string “N” possui apenas números.

• Exemplo

ok := StrNumerica(‘123456’);

7.2.36 Função ConverteLogico

• Declaração

function ConverteLogico(Valor: Boolean): string;

• Descrição
132

Converte uma expressão lógica em uma variável string.


True = T e False = F.

• Exemplo

ok := ConverteLogico(True);

7.2.37 Função ConverteStrToLog

• Declaração

function ConverteLogico(Valor: Boolean): string;

• Descrição

Converte uma variável string em uma expressão lógica.


T = True e F = False.

• Exemplo

ok := ConverteStrToLog(‘T’);

7.2.38 Função SerialHD

• Declaração

Function SerialHD(FDrive:String) :String;

• Descrição

Retorna o número de série de uma unidade de disco.


Pode ser utilizado para criar um sistema de proteção
contra cópias não autorizadas.
133

• Exemplo

Serial := SerialHD(‘C’); // Unidade C:\

7.2.39 Função Vnivel

• Declaração

function VNivel: Boolean;

• Descrição

Caixa de diálogo de senha, o usuário digita a senha se for


um usuário “Master” retorna True, senão retorna False.

• Exemplo

If Vnivel then ...

7.3. Rotinas de Edição “RotinaEd.Pas”

7.3.1 Função RetornaAutoIncremento

• Declaração

function RetornaAutoIncremento(TabelaPrincipal:
TTabela; Campo: String; Condicao: String; Qtd:
Integer = 1): Variant;

• Descrição
134

Retorna o próximo número a ser utilizado em uma


Tabela. O projetista poderá informar uma expressão de
filtro em “Condicao”, como default o próximo registro
será acrescido de 1 (um).

• Exemplo

TabGlobal.DCLIENTES.CLI_CODIGO.Conteudo :=
RetornaAutoIncremento(TabGlobal.DCLIENTES,
‘CLI_CODIGO’, ‘’, 1);

7.3.2 Função AtribuiAutoIncremento

• Declaração

procedure AtribuiAutoIncremento(TabelaPrincipal:
TTabela; Campo: String; Componente: TComponent;
Condicao: String; Editavel: Boolean);

• Descrição

Atribui o próximo número a ser utilizado em uma Tabela


em um objeto de edição. O projetista poderá informar
uma expressão de filtro em “Condicao”, como default o
próximo registro será acrescido de 1 (um).

• Exemplo

AtribuiAutoIncremento(TabGlobal.DCLIENTES,
‘CLI_CODIGO’, Xedit1, ‘’, True);
135

7.3.3 Função LocalizaTabela

• Declaração

function LocalizaTabela(Nome: String): TTabela;

• Descrição

Localiza uma Tabela do projeto pelo nome.

• Exemplo

Tabela_ed := LocalizaTabela(‘CLIENTES’);
136

8. DICAS E MACETES

A seguir iremos mostrar algumas dicas, macetes e soluções


para utilização do X-Maker e dos projetos gerados.

8.1. Ao abrir ou criar num novo projeto no X-


Maker à mensagem de erro "unavailable
database" (Banco de Dados Indisponível)
é apresentada, o que fazer?

A mensagem "unavailable database" indica que firebird


não está gerenciando corretamente. Para equipamentos que
utilizem o windows 98 é necessário a reinicialização do micro
após a instalação do X-Maker, se não for o caso outro problema
pode ocorrer entre o FireBird e o InterBase. Em seu micro já
estava instalado o InterBase ? Faça a seguinte operação: desative
o interbase ou firebird, veja na bandeja de ícones do windows
(barra de tarefas), remova no painel de controle em "Adicionar
ou Remover Software" o interbase e o firebird e reinicialize o
micro. Faça a instalação do FireBird
"C:\XMaker\Firebird\Firebird.exe".

É possível configurar a forma de execução do Firebird, em


Painel de Controle -> Firebird 1.5 Server Manager você
pode alterar a forma de execução entre Service ou Application.
Como padrão o Firebird é executado como Service. Faça a
mudança do tipo de execução caso o problema continue.
137

8.2. Quando tento compilar um projeto através


do X-Maker a mensagem de erro
“Compilador não encontrado” é
apresentada, o que fazer?

Em “Propriedades” do projeto o projetista define qual


versão do Delphi será usada no projeto. Provavelmente a versão
definida não corresponde à versão do Delphi instalada em seu
micro, vá em “Propriedades” do projeto e faça a correção.

8.3. Toda vez que mando compilar o projeto


através do X-Maker o Delphi é aberto e a
compilação não é concluída, o que fazer?

Em qualquer versão do Delphi o compilador utilizado é o


“DCC32.EXE”, esse compilador fica na pasta “Bin” do Delphi.

Exemplo:

“C:\Arquivos de
programas\Borland\Delphi7\Bin\DCC32.EXE”

Quando o “DCC32.EXE” não estiver instalado em seu


micro a compilação deverá ser realizada diretamente no Delphi,
veja o tópico “Compilando e Executando pelo Delphi”, não
substitua o “DCC32.EXE” pelo “DELPHI32.EXE”.
138

8.4. Eu tenho o “4DOS” instalado em meu


micro, ele pode interferir na compilação
do projeto através do X-Maker?

A compilação do projeto pelo X-Maker é realizada através


de comandos do MS-DOS, o “4DOS”, quando instalado, faz o
gerenciamento desses comandos e não o MS-DOS. Em algumas
versões do “4DOS” foi constatado um tratamento diferente nos
comandos fazendo com que o projeto não seja compilado. Para
esse caso sugerimos que a compilação seja feita diretamente no
Delphi, veja o tópico “Compilando e Executando pelo
Delphi”.

8.5. Como atribuir o nome do usuário


(controle de acesso) em um campo da
tabela?

O X-Maker cria uma estrutura pública para armazenar


vários dados referentes ao projeto. Entre esses dados existe o
nome do usuário “corrente”, o termo “corrente” indica o usuário
atual que acessou o projeto final.

No formulário de entrada de dados, faça a edição do


evento “Ao Entrar” do campo desejado.

procedure TFormClientes.USUARIOEnter(Sender:
TObject);
begin
TabGlobal.DCLIENTES.USUARIO.Conteudo :=
Sistema.Usuario;
end;

Vejamos outras informações armazenadas na estrutura


“Sistema”:
139

Sistema.Titulo: String Título do projeto definido em


“Propriedades”.
Sistema.Versão: String Versão do projeto definido
em “Propriedades”.
Sistema.Analista: String Analista responsável pelo
projeto definido em
“Propriedades”.
Sistema.Programador: String Programador do projeto
definido em “Propriedades”.
Sistema.EstiloData: String Estilo da data “dd/mm/yy” ou
“dd/mm/yyyy” utilizado no
projeto.
Sistema.ConfirmaSaida: Boolean Valor lógico (True ou False)
que identifica se a mensagem
de confirmação de saída do
projeto final será apresentada
ou não.
Sistema.ControleAcesso: Valor lógico (True ou False)
Booelan que identifica se o controle de
acesso está habilitado.
Sistema.SenhaInicial: String Senha Inicial do controle de
acesso definido em
“Propriedades”.
Sistema.HintBalao: Boolean Valor lógico (True ou False)
para habilitar ou desabilitar a
visualização das mensagens
(hits) na forma de balão.
Sistema.Pasta: String Pasta de localização do
executável do projeto final.
Sistema.Usuário: String Usuário “corrente”.
Sistema.Senha: String Senha do usuário “corrente”.
Sistema.Master: Boolean Valor lógico (True ou False)
que identifica se o usuário
“corrente” está classificado
140

como “Master” (acesso total).


Sistema.Grupo: String Grupo do usuário “corrente”.
Sistema.ListaUsuarios: Lista completa dos usuários
TstringList cadastrados no controle de
acesso.
Sistema.EmpresaUsr: String Nome da Empresa usuária
“corrente”.
Sistema.EnderecoUsr: String Endereço da Empresa usuária
“corrente”.
Sistema.BairroUsr: String Bairro da Empresa usuária
“corrente”.
Sistema.CidadeUsr: String Cidade da Empresa usuária
“corrente”.
Sistema.UfUsr: String UF da Empresa usuária
“corrente”.
Sistema.CepUsr: String CEP da Empresa usuária
“corrente”.
Sistema.CNPJUsr: String CNPJ / CPF da Empresa
usuária “corrente”.
Sistema.IEUsr: String Inscrição Estadual da
Empresa usuária “corrente”.
Sistema.FonesUsr: String Telefone(s) da Empresa
usuária “corrente”.
Sistema.LogoUsr: String Localização da imagem de
logotipo da Empresa usuária
“corrente”.
Sistema.Integridade: Boolean Valor lógico (True ou False)
para habilitar ou desabilitar o
uso da verificação da
integridade referencial na
exclusão de um registro.
141

8.6. Como filtrar ou ordenar uma tabela na


abertura do formulário de entrada de
dado?

Faça a edição do evento “Abertura de Tabelas”


(AbreTabelas) do formulário.

Exemplo de Filtragem:
function TFormRContas.AbreTabelas: Boolean;
begin
{07-Início do Bloco Modular. Modificações não
serão preservadas}
Result := True;
{99-Final do Bloco Modular. Modificações não
serão preservadas}
TabGlobal.DCONTAS.Filtro.Text := 'CLI_CODIGO =
100';
end;

Exemplo de Ordenação:
function TFormRContas.AbreTabelas: Boolean;
begin
{07-Início do Bloco Modular. Modificações não
serão preservadas}
Result := True;
{99-Final do Bloco Modular. Modificações não
serão preservadas}
TabGlobal.DCONTAS.ChaveIndice := 'CON_LANCTO
Desc';
end;

* Desc = Indica que o índice será decrescente.


142

8.7. Como ocultar um campo via código para


que o mesmo não seja visualizado no
Grid de consulta do formulário?

Faça a edição do evento de “Inicialização” (FormShow) do


formulário de entrada de dados.

Exemplo:

TabGlobal.DCLIENTES.NOME.Valor.Visible := False;

* A propriedade Valor é um TField vinculado a tabela e ao


campo.

8.8. Como configurar o projeto final para


compartilhamento das Tabela em uma
rede?

Para configurar o uso em Rede dos projetos gerados no X-


Maker, é simples, execute o projeto e clique no Arquivo ->
Empresa Usuária e clique no botão “Editar”. No campo
Localização informe o número do IP ou o nome do servidor +
pasta + base de dados.

Exemplo:

Localização (DataBase): C:\XMaker\Exemplos\Contas\Base.Gdb

Servidor (HostName): 195.195.1.1

Ou

Servidor (HostName): NetServidor


143

Nas estações o FireBird tem que estar instalado !


Crie um atalho nas estações buscando o executável do projeto e
pronto !

Quando usar a Pasta Básica em Exibir -> Ambiente?

Caso você não queira buscar o executável da rede, cada estação


teria o executável do projeto, utilize a pasta básica para buscar
as definições de usuário e localização da base de dados.

Exemplo:

\\Servidor\Dados\XMaker\Exemplos\Contas\

ou

F:\XMaker\Exemplos\Contas\

* As configurações em Exibir -> Ambiente são gravadas na


pasta do Windows, o nome do arquivo é o nome do executável +
a extensão .INI
Exemplo: C:\Windows\Contas.INI

Faça e exclusão desse arquivo para voltar as configurações


padrões ou faça a edição do mesmo através do Edit ou Bloco de
Notas.

8.9. Como configurar o botão “Tabelas” no


formulário de Entrada de Dados?
144

Este botão é utilizado para criação de um menu de atalhos


para acesso a outros formulários do projeto, normalmente são
formulários que possuem algum tipo de vinculo com o
formulário em questão. Como exemplo podemos citar um
formulário de Cadastro de Produtos do Estoque, ao cadastrar um
produto são exigidas algumas informações do tipo: Grupo,
Família, Fornecedor e Unidade, e existe uma Tabela e
formulário para cada uma dessas informações. Para criar um
acesso mais rápido e esses formulários o projetista poderá
utilizar o botão “Tabelas”.
Inicialmente este botão possui a propriedade “Visible”
desabilitada, para habilitar clique no botão e escolha a
opção “Rodapé – Manutenção” ou “Rodapé – Consulta”.

Clique no botão “Tabelas” e habilite a propriedade “Visible”


na janela “Object Inspector”.
145

Faça a edição do evento “BtnRelac_1Click”, clique em


“OnClick” na janela “Object Inspector”.
146

Insira a codificação entre os blocos {09} e {99}, utilize o


método “AddMenuItem” para atribuir um novo item ao menu da
tabelas relacionadas.

Exemplo:

AddMenuItem(PopRelacionados, 'Atividades',
'mnuAtividades', True , 0, 6001);

Parâmetros do Método “AddMenuItem”:

PopRelacionados = Objeto “PopMenu” a ser utilizado.


‘Atividades’ = Título a ser apresentado no menu.
‘mnuAtividades’ = Nome interno do componente, não poderá
ser utilizado nome de outro componente utilizado no formulário.
Como padrão o projetista poderá utilizar a sigla “mnu” + o nome
do formulário.
True = Habilitado e False = Desabilitado.
0 = Número do ícone de imagem de apresentação.
147

6001 = Número de seqüência de identificação utilize a seqüência


6001, 6002, 6003, etc. para os demais formulários.

Salve a codificação do evento e faça a edição do arquivo fonte,


clique no botão: “Editar arquivo fonte”.

Vá para o bloco de codificação do evento


“PopRelacionadosClick”.

Insira a codificação entre os blocos {10} e {99}, utilize o


botão “form” na barra de ferramentas do “Mini Editor” para
inserir a codificação de chamada do formulário desejado.

Exemplo:

{10-Início do Bloco Modular. Modificações não serão


preservadas}
148

if MenuItem.Tag = 6001 then


begin
FormAtividades := TFormAtividades.Create(Application);
Try
FormAtividades.ShowModal;
Finally
FormAtividades.Free;
end;
end
{99-Final do Bloco Modular. Modificações não serão
preservadas}

É necessário referenciar as units dos formulários utilizados


na cláusula “uses”.

O projetista poderá utilizar o botão “Tabelas” para outras


finalidades ou até mesmo remove-lo, fica a critério do projetista.

8.10. Como posso eliminar os registros


excluídos e tabelas temporárias em minha
base de dados “Firebird/Interbase”?

O utilitário "GBAK" que é instalado junto com Firebird faz esse


tipo de operação, a técnica é fazer um backup e depois restaurar,
o "GBAK" faz um backup somente das informações realmente
necessárias e depois restaura.
Na restauração os índices são recriados e o seu banco de dados é
totalmente "Balanceado".
149

Após a utilização do "GBAK" o seu banco de dados irá conter


um tamanho bem menor e a sua performace será melhorada.

Exemplo de utilização do "GBAK":

. Vá para o "Prompt do MS-DOS"


. Acesse a pasta de localização do banco de dados
. Digite na linha de comando do DOS:

COPY "C:Arquivos de
programas\Firebird\Firebird_1_5\Gbak.exe
SET ISC_USER=SYSDBA
SET ISC_PASSWORD=masterkey
COPY BASE.GDB BASE.COP
GBAK -B BASE.GDB BASE.GBK
GBAK -R BASE.GBK BASE.GDB

Vamos analisar os comando digitados:

COPY "Arquivos de ... = Copia o "Gbak.exe" da pasta de


instalação do Firebird.
SET ISC_USER = Variável de ambiente que irá conter o
usuário "Master".
SET ISC_PASSWORD = Variável de ambiente que irá conter
a senha do usuário "Master".
BASE.GDB = Nome do banco de dados de exemplo.
COPY BASE.GDB = Faz uma cópia do banco de dados
original, medida de segurança.
GBAK -B = Faz um backup do banco de dados e grava no
arquivo com extensão "GBK".
GBAK -R = Restaura o backup do banco de dados "GBK".

Para facilitar esses comandos poderão ser gravados em um


150

arquivo de "Lote", exemplo: "Balancer.Bat"

Execute o "Balancer.Bat" sempre que houver necessidade de


melhorar a perfomace de acesso, e lembre-se nunca faça esse
tipo de operação quando o banco de dados estiver em uso, seja
nas estações ou no servidor.

Você também pode gostar