Manual Do Father

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 367

MANUAL DO FATHER

MANUAL DO FATHER

~1~
MANUAL DO FATHER

Download e instalação Top Next

Para fazer o download do Father, execute os passos abaixo:

1. Acesse o seguinte endereço:

http://www.father.inf.br/Pages/Home.aspx

A seguinte tela aparecerá em seu navegador:

2. Clique em ;

3. Preencha o formulário com os dados de login e em seguida, clique em "Entrar". Caso você seja
um novo usuário, clique em "Cadastrar".

4. Após ativar a versão Trial, clique em "Instalador do Father";

~2~
MANUAL DO FATHER

5. Determine um local para que o arquivo instalador - setup.exe - seja gravado;

6. Após o download, dê um clique duplo no arquivo instalador para executá-lo;

7. Selecione o idioma da instalação e clique em "OK";

8. Na tela de boas vindas, clique em ;

9. Leia o Contrato de Licença e se concordar, marque a opção "Eu aceito os termos do Contrato".

~3~
MANUAL DO FATHER

Em seguida, clique em ;

10. Escolha a pasta destino do Father - a pasta padrão é recomendada - e clique em

11. Selecione a pasta do Menu Iniciar para armazenar o atalho de acesso ao Father e clique em

~4~
MANUAL DO FATHER

12. Se desejar, marque as opções de criação de ícones de atalhos e clique em ;

13. Um relatório das opções selecionadas será apresentado. Clique em ;

~5~
MANUAL DO FATHER

Aguarde enquanto é feita a extração dos arquivos;

Após concluído o processo, é necessário reiniciar o computador.

Escolha uma das opções e em seguida clique em ;

Pronto! Execute um dos atalhos do Father para acessar o Gerador.

~6~
MANUAL DO FATHER

Requisitos Top Previous Next

Para executar o Father, é necessário o ambiente Windows XP/Vista/7.0 32 bits em um


microcomputador com, pelo menos, 100 MB de espaço livre, podendo variar bastante para menos, se
o Visual Basic 6.0 já tiver sido instalado no equipamento. A quantidade de memória RAM mínima
para a execução do Father é de 512 MB e a recomendada é de 1 GB.

Para a compilação dos programas gerados pelo Father, é necessário que o Visual Basic 6.0
Professional ou Enterprise esteja instalado no equipamento. É altamente recomendável que o Visual
Basic 6.0 instalado no equipamento esteja atualizado com o último service pack disponível, o qual
poderá ser obtido por download, no site da Microsoft Corporation.

Características Top Previous Next


Programas fontes gerados na linguagem Microsoft Visual Basic 6.0;


Melhor produtividade e padronização com redução de tempo e custo de desenvolvimento;


Permite criação de sistemas sem conhecimento de códigos de programação.


Suporte nativo para as aplicações geradas utilizarem bancos de dados Microsoft Jet Engine v3.6.

Na sua versão Enterprise, oferece suporte nativo aos bancos: Microsoft Jet Engine v3.6, SQL Server 7

8.i/Superior, MySQL 5.0/Superior e Firebird 2.0/Superior.

O que há de novo
• Completa remodelagem do layout da IDE, melhorando a produtividade para sua operação;
• Redefinição das telas da IDE, para melhor aproveitamento de espaço, molhorando a produtividade n
• Alterada estrutura da IDE, possibilitando a definição e utilização de vários módulos de forma simultân
Alteração das classes de acesso ao banco de dados do projeto Father, trazendo melhoria na perform
• para o projeto;
Todas as tabelas internas do sistema (PW~Grupos, PW~Tabelas, etc) agora estão disponíveis como
• banco de dados, possibilitando sua utilização em janelas de dados e/ou relatórios;
• Possibilidade de definição e uso de VIEWS para o banco de dados;
• Criada nova funcionalidade para definição de filtro automático para sistemas multiempresa;
Trocado componente Menu da aplicação gerada. O novo menu utiliza subclasse assim como o GRID
• de ícone para cada um de seus itens;
Alteração do controle de log, o projeto tem a opção de determinar a gravação de log em arquivo (.LA
• um dos bancos de dados do projeto;
Novo módulo disponível para que a aplicação gerada tenha uma nova barra de ferramentas com os i
• usuário;
• Adicionado novo recurso para aplicação gerada possibilitando a abertura de um mesmo formulário m
• Barra de progresso em processos pré-definidos;
Melhoria na performance da aplicação gerada com a utilização de resources embutidos no binário fin
• para as leituras;
• Melhoria de performance na abertura de formulários de dados da aplicação gerada;
• Adicionado recurso para copiar/colar dados entre o GRID e o Excel, entre GRID e GRID e entre Exce

~7~
MANUAL DO FATHER

Estrutura do Father
Todas as aplicações definidas através do Father são tratadas como projeto de sistema. Um
projeto de sistema constitui-se de um conjunto de informações necessárias à construção de uma
aplicação, que são organizadas e armazenadas para serem utilizadas no momento apropriado. O
Father possui recursos para se desenvolver no conceito de Multi-Projetos, neste caso, cada
projeto gerado será uma aplicação, e o desenvolvimento destes projetos estarão dentro de uma
solução. Também é possível gerar um aplicativo que funcione como solução para o controle dos
projetos.

Modelador do projeto Top Previous Next

A modelagem ou desenho de um projeto com o Father é feita utilizando-se o seu modelador.


Por intermédio deste recurso, pode-se estabelecer toda a hierarquia dos módulos que comporão a
aplicação final. Os módulos são inseridos no projeto na forma de árvore hierárquica, verticalizada,
aparecendo dentro do modelador conforme exemplo da figura abaixo. Um fato importante a ser
observado na árvore do projeto é que ela espelha exatamente a estrutura de menus que serão
levados para a aplicação final.

Os módulos inseridos imediatamente abaixo do título do projeto (Arquivo, Editar, Exibir, Janela,
Ajuda) aparecerão na barra de menu da aplicação enquanto os demais aparecerão em sub-menus.

O primeiro item da Arvore trata das configurações globais e da definição da solução(Multi-


Projetos). Isto porque você pode em uma solução ter vários projetos, ou seja, criar um aplicativo
totalmente modular.
Quando se tem mais de um projeto em uma solução, é aberta a possibilidade de gerar os fontes
também da solução, que neste caso, tratará de um aplicativo voltado apenas para o acesso aos
outros módulos, fazendo uma espécie de interligação. Cada projeto é gerado com um .exe respectivo,
por isto, caso o usuário não queira gerar a solução, pode-se opcionalmente executar diretamente
cada aplicativo gerado do projeto desejado.

~8~
MANUAL DO FATHER

Múltiplos projetos Top Previous Next

A estrutura principal para definição de projetos do Father foi alterada visando


possibilitar a definição de vários projetos de forma agrupada dentro de uma única solução
(.FTR). Essa característica pode ser comparada a soluções (nome dado em algumas IDE's
como, por exemplo, o Visual Studio). Você define a estrutura dos bancos de dados em um
local centralizado e, depois de definidos os bancos, poderá determinar quais bancos serão
utilizados dentro de cada projeto.

Tipos de Módulos Top Previous Next

Diversos tipos de módulos podem ser inseridos no projeto, podendo alguns, inclusive, conter
módulos subordinados.

Para inserir os módulos, clique no módulo desejado com o botão direito do mouse e em
seguida, escolha a opção "Insere novo módulo abaixo":

~9~
MANUAL DO FATHER

É necessário definir a posição do novo módulo. Clique no módulo anterior ao módulo que será
inserido.

Em seguida, para confirmar a posição do novo módulo, clique em .

Destacamos os seguintes tipos de módulos:

~ 10 ~
MANUAL DO FATHER

Menu Top Previous Next

Constitui-se de um módulo que apresenta outras opções. As janelas de dados podem ser
inseridas neste módulo.

Abaixo de módulos do tipo menu podem ser inseridos quaisquer outros tipos de módulos.

~ 11 ~
MANUAL DO FATHER

Janela de dados Top Previous Next

É um módulo que serve para a definição de uma tabela que tenha sido inserida na estrutura do
banco de dados do projeto. Esta definição compreende a sua estrutura, como campos, validações,
índices, relacionamentos, processos, lançamentos, etc. Quando inserimos uma janela de dados na
árvore do projeto, o Father coloca automaticamente uma opção no menu para a sua ativação na
aplicação final. As demais opções necessárias, como, por exemplo, inclusão de registros, alteração,
consultas, etc, serão colocadas em outras opções de menu ou botões na barra de ferramentas,
servindo para atender a todas as janelas de dados que forem definidas na aplicação e atuando sobre a
janela que estiver ativa no momento da operação.

Após inserir um módulo Janela de dados, é necessário definir as propriedades do módulo, por
isso o título da solução e do projeto ficam com a cor vermelha, indicando que é preciso definir as
propriedades.

Abaixo de um módulo janela de dados, poderão ser inseridas outras janelas de dados ou tabelas
em grid, estabelecendo um relacionamento 1-N (pai e filho), relacionamento este que você terá de criar
quando definir a estrutura do banco de dados para a aplicação.

A criação deste tipo de módulo, compreende duas etapas, sendo a definição do modulo e a
formatação da janela de dados.

Para mais detalhes, consulte o tópico Definindo módulos.

~ 12 ~
MANUAL DO FATHER

Grids Top Previous Next

Este tipo de módulo pode ser inserido somente abaixo de uma janela de dados, compondo a
parte "N" de um relacionamento 1-N que o projetista deverá ter criado na estrutura do banco de dados.
A rigor, uma tabela pode ser mostrada em grid sempre que estiver relacionada na árvore a uma outra
tabela mãe, mesmo que no banco de dados não exista especificamente este relacionamento. Porém,
na aplicação final, a única forma de garantir a exclusão de registros filhos por integridade referencial é
criando-se o relacionamento no banco de dados. Outros módulos podem ser inseridos abaixo de uma
tabela em grid, concedendo total abertura na apresentação de módulo que obedeçam a
relacionamentos do tipo mãe-filha-irmã-neta-bisneta...

Uma vez que uma tabela seja apresentada em grid na aplicação final gerada, com exceção de
campos do tipo imagem, todos os demais tipos de campos podem ser digitados dentro do próprio grid,

~ 13 ~
MANUAL DO FATHER

inclusive campos do tipo listas externas e internas, rotativos, lógicos, memo, etc. Todos os recursos de
edição, como por exemplo, a digitação com máscaras, são disponibilizados para os campos digitados
no grid. A cada nova linha incluída ou alterada no grid, todos os processos e lançamentos definidos são
disparados automaticamente e todos os forms visíveis no momento são imediatamente atualizados
para espelhar os valores que, porventura, tenham sido alterados. Também, podem ser definidas
fórmulas para serem apresentadas nas colunas, sendo atualizadas simultaneamente no momento da
digitação. Naturalmente, essas fórmulas podem envolver campos de qualquer um dos bancos de dados
manipulados pela aplicação. Com isto, o Father oferece duas maneiras de trabalhar com
relacionamento 1-N: da forma onde a tabela mãe e filha aparecem em forms separados e a forma onde
as tabelas filhas são disponibilizadas em grids dentro do mesmo form onde aparece a tabela mãe.

Rotina avulsa Top Previous Next

Uma rotina avulsa constitui-se de um programa ou fragmento de programa não gerado pelo
Father, ou seja, é elaborado manualmente por você utilizando o Editor de Programas do Father,
através do atalho <F9>.

Consulta predefinida Top Previous Next

Este tipo de módulo possibilita a criação de consultas aos registros das tabelas definidas na
aplicação. É denominada pré-definida porque é estabelecida por você em tempo de projeto, diferindo,
assim, das consultas que o usuário poderá criar em tempo de execução da aplicação, caso você queira
disponibilizar este recurso. Essas consultas serão sempre apresentadas na aplicação em forma de
grade, onde os registros aparecerão em linhas e os campos em colunas.

Relatório Top Previous Next

Um módulo do tipo relatório tem por finalidade emitir, em papel, o resultado da leitura dos
registros de uma ou mais tabelas definidas para a aplicação. Os relatórios são definidos utilizandose
totalmente a interface do Father, por intermédio do G-Reports, ou utilizando-se do utilitário Crystal
Reports, que acompanha o Visual Basic, para que seja efetuada externamente a formatação dos
mesmos.

Etiqueta Top Previous Next

Tudo o que se aplica a módulos do tipo relatório também se aplica aos módulos do tipo etiqueta
que, nada mais é do que um tipo especial de relatório. A SSI Tecnologia desenvolveu, ainda, oito
conjuntos de fontes true-type para a impressão dos seguintes códigos de barras: EAN-13, EAN-8,
UPC-A, cada uma delas com dois estilos (normal e curto), 2 de 5 interleaved e o código 3 de 9.

~ 14 ~
MANUAL DO FATHER

Processos predefinidos Top Previous Next

Este tipo de módulo permite a definição de processamentos especiais, pré-definidos por você,
para executar certas tarefas, como por exemplo, fechamento de mês, cálculo de folha de pagamento,
baixas em estoque, históricos, etc. Na definição desses módulos, você tem total flexibilidade para
envolver outros bancos de dados, efetuar cálculos, apagar registros, etc., correndo uma mesma tabela
quantas vezes se fizer necessário e efetuando processos diferentes a cada passagem. Telas
complementares podem ser criadas para serem apresentadas antes dos processos, de modo a permitir
o estabelecimento de filtros e condições de processos e lançamentos. Abaixo de um módulo processo
pré-definido, agora, podem ser inseridos relatórios, etiquetas ou outros processos pré-definidos,
podendo-se ou não gerar relacionamentos entre eles.

Programa executável Top Previous Next

Um módulo do tipo executável pode ser inserido na árvore do projeto para disparar a execução
de um programa executável qualquer, do DOS ou Windows, a partir da aplicação final gerada.

Formulário avulso Top Previous Next

Forms podem ser desenhados dentro do próprio ambiente do Father para serem integrados à
aplicação. Normalmente esta opção é utilizada para que você insira módulos especiais elaborados por
ele mesmo.

Formulário existente Top Previous Next

Um módulo de formulário existente pode ser inserido na árvore para permitir que você reutilize
objetos de interface que já tenha sido elaborada para outras aplicações.

Gráfico Top Previous Next

Permite inserir um módulo para exibição de Gráficos.

~ 15 ~
MANUAL DO FATHER

Após selecionar a posição do módulo, dê um clique duplo sobre o título do módulo para inserir as
definições.

Linha separadora Top Previous Next

Este tipo de módulo, como o seu próprio nome indica, não significa nada mais além de uma linha
separadora de itens de menu. Uma vez que a modelagem da estrutura da árvore do projeto implica na
estruturação do próprio menu da aplicação, este módulo foi criado para permitir que uma linha seja
inserida para separar opções, onde você julgar necessário.

Impressão fiscal Top Previous Next

Ao gerar o aplicativo final, estes módulos auxiliarão o usuário no processo de manutenção da


impressora fiscal e, com esses dispositivos, diversas operações fiscais poderão ser realizadas, por
exemplo, abrir e fechar caixa, mudar horário de verão, sangria, cancelar itens impressos, etc.

Itens na Árvore Top Previous Next

Os itens a seguir são opções que podem ser inseridas na árvore do projeto que não
correspondem a módulos propriamente ditos. Existem apenas para completar a estrutura de menu que
qualquer aplicação padrão Windows deve ter. Cada item corresponde a um menu com suas opções na
aplicação gerada.

Arquivo
Editar
Exibir
Janela
Ajuda

Arquivo Top Previous Next

Esta opção normalmente aparece como a primeira de qualquer aplicação Windows, sob a qual
são disponibilizadas normalmente opções de apoio (backup de banco de dados, manutenção de
senhas, etc), saída da aplicação, etc.

~ 16 ~
MANUAL DO FATHER

Observe, na figura abaixo, a lista de opções do menu Arquivo da aplicação exemplo Controle de
Estoque:

Editar Top Previous Next

Abaixo desta opção normalmente são disponibilizadas opções genéricas de edição, como copiar,
colar, cortar, etc.

Observe, na figura abaixo, a lista de opções do menu Editar na aplicação exemplo Controle de
Estoque:

Exibir Top Previous Next

Esta opção é normalmente utilizada para agrupar opções de exibição de objetos da interface que
podem ser exibidas ou ocultadas do usuário.

Observe, na figura abaixo, a lista de opções do menu Exibir na aplicação exemplo Controle de
Estoque:

~ 17 ~
MANUAL DO FATHER

Janela Top Previous Next

Sob esta opção são disponibilizadas comumente as opções de organizar ícones da aplicação e,
ainda, a lista de janelas abertas em aplicações MDI.

Observe, na figura abaixo, a lista de opções do menu Janela na aplicação exemplo Controle de
Estoque:

Ajuda Top Previous Next

Finalmente, sob este título são disponibilizadas algumas opções de ajuda da aplicação, bem
como a janela de créditos (sobre...).

Observe, na figura abaixo, a lista de opções do menu Ajuda na aplicação exemplo Controle de
Estoque:

~ 18 ~
MANUAL DO FATHER

Criando uma aplicação Top Previous Next

Primeiramente você deverá configurar o Father de acordo com as suas preferências. Você pode
alterar as configurações padrões do Father através do menu Opções, conforme a figura abaixo:

A seguinte tela será exibida:

Para mais detalhes, consulte o tópico Configurações.

~ 19 ~
MANUAL DO FATHER

Novo projeto Top Previous Next

Ao acessar o Father, será exibida a tela de Projetos do Father, a qual permitirá a criação de um
novo projeto (baseado ou não em gabaritos existentes), selecionar um projeto existente ou, ainda,
projetos que tenham sido recentemente abertos, como verificamos nas figuras abaixo:

~ 20 ~
MANUAL DO FATHER

A abertura de um novo projeto também pode ser efetuada selecionando-se as opções de menu
Arquivo/Novo projeto e dispondo o nome do novo projeto a ser criado. O Father utiliza a extensão .FTR
para identificar os arquivos que armazenam projetos. Informado o nome do novo projeto, este é criado
e carregado na árvore do projeto.

Árvore default Top Previous Next

Sempre que um novo projeto é criado, o Father monta uma árvore com opções default para o
mesmo. Nela já são disponibilizadas as opções normais da interface padrão Windows, como por
exemplo, os menus Arquivo, Editar, Exibir, Janelas, Ajuda, etc. Também são disponibilizados alguns
módulos genéricos que poderão ou não estar presentes na aplicação final, como, por exemplo, o plano
de senhas e as informações sobre o BD. De acordo com a necessidade, preserve ou retire esses
módulos da árvore do projeto. O tópico Apagando um Módulo da Árvore descreve como isto pode ser
feito.

~ 21 ~
MANUAL DO FATHER

Definir o projeto Top Previous Next

A definição de um projeto deve sempre começar pelo módulo que aparece em primeiro lugar na
árvore. É neste ponto que a definição dos dados relativos ao projeto como um todo é feita. O título
deste módulo é, inicialmente, SEM NOME DEFINIDO.

Você deverá alterar este título para que ali apareça o título do seu projeto. Isto pode ser feito
clicando com o botão direito do mouse sobre este título e selecionando a opção "Define o módulo
selecionado" no menu pop-up que surgirá. Assim procedendo, serão disponibilizadas definições a
serem feitas neste módulo. Pode-se, ainda, clicar diretamente sobre o botão de definição de módulos
existente na barra de ferramentas, caso esta esteja visível.

A definição do projeto compreende cinco etapas, das quais, pelo menos as duas a seguir são
obrigatórias:

Dados genéricos do projeto - nesta parte são definidos alguns aspectos genéricos do projeto como,
por exemplo, o título da aplicação e seu nome executável, tipo de banco de dados utilizado,
endentação e comentários nos programas fontes, etc. Consulte o tópico Definindo os dados
• genéricos do projeto para executar esta tarefa.

Estrutura do banco de dados da aplicação - Aqui são criadas as tabelas que irão compor o banco de
dados. Mais de um banco de dados pode ser utilizado. Para cada tabela serão estabelecidos os
campos que esta irá conter. Cada campo deverá ser definido segundo o tipo de informação que irá
receber. Índices e integridades poderão também ser criados para serem ligados às tabelas. O tópico
• Definindo o Banco de Dados explica detalhadamente como estas definições podem ser feitas.

Além dessas definições, você poderá fazer também a formatação da barra de ferramentas da
aplicação. Para executar esta operação, você poderá consultar, os tópicos Desenhando a barra de
ferramentas e Editor de Telas. Se você não desejar fazer esta operação, o Father definirá uma barra de
ferramentas default na aplicação final. Após este passo, a situação deverá ser a seguinte:

Criada a estrutura do banco de dados necessária, fato que nos permitirá referir às tabelas, campos,
• índices e, dependendo da aplicação, relações de integridades.

• Criada a barra de ferramentas para atender a aplicação (ou será apresentada a barra default).

Definidos o título e nome do programa executável da aplicação, bem como o nome de seus arquivos
• de dados.

~ 22 ~
MANUAL DO FATHER

Janela de dados Top Previous Next

Normalmente, algumas das tabelas que foram criadas na definição da estrutura do banco de dados,
no passo anterior, estarão vinculadas a uma janela de dados inserida na árvore do projeto. Este é o
ponto em que a digitação e manutenção de dados é acionada a partir da aplicação final.

O tópico Inserindo um Módulo mostra como você pode inserir janelas de dados na árvore do projeto.
Se desejar, você poderá inserir módulos do tipo menu para agrupar outras tabelas. Poderá criar, por
exemplo, um menu de nome "Movimentação" e inserir logo abaixo, todas as tabelas que estão
envolvidas neste processo.

Definição das janelas Top Previous Next

Para definir uma janela de dados inserida na árvore, basta clicar com o botão direito do mouse
sobre o seu título na árvore e selecionar a opção "Define o módulo selecionado", abrindo a interface
de definição, que é efetuada em cinco etapas (dependendo da aplicação, nem todas são necessárias)
apresentadas nas abas intituladas:

~ 23 ~
MANUAL DO FATHER

Definição geral Top Previous Next

Aqui são feitas algumas definições genéricas como, por exemplo, qual a tabela básica desta
janela, nome do módulo .FRM que irá ser gerado, as permissões de acesso a esta janela, etc. O tópico
Definindo uma Janela de Dados - Geral explica os aspectos desta parte da definição.

Tabelas auxiliares Top Previous Next

Esta etapa da definição é necessária somente quando você precisar abrir outras tabelas, além da
tabela básica, para se referenciar a seus campos, processá-los e criar lançamentos a partir da tabela
básica. Consulte o tópico Definindo uma Janela de Dados - Tabelas Auxiliares para maiores detalhes.

~ 24 ~
MANUAL DO FATHER

Lançamentos Top Previous Next

A definição de lançamentos só é necessária em certo tipo de aplicação. Nesta parte da definição


são estabelecidas as tabelas que irão receber os lançamentos, quais dos seus campos serão
modificados e os valores a serem lançados. Os detalhes dessas definições estão no tópico "Definindo
uma Janela de Dados - Lançamentos".

Processos Top Previous Next

Nesta parte da definição são estabelecidos os processamentos de campos de tabelas do banco


de dados, baseando-se nos campos a serem modificados e seus respectivos valores. Consulte o tópico
"Definindo uma janela de dados - Processos" para se inteirar dos detalhes. Para completar a definição
da janela de dados, falta a formatação da tela de digitação de dados para a tabela básica. Esta
operação é feita utilizando-se o Editor de Telas. Consulte o tópico Editor de Telas para conhecer os
detalhes da elaboração de telas de digitação.

~ 25 ~
MANUAL DO FATHER

Geração dos fontes e executável Top Previous Next

A geração de programas fontes e executável deve ser acionada por intermédio dos botões
apropriados existentes na barra de ferramentas do Father ou por intermédio, respectivamente, das
opções "Gerar fontes..." e "Criar executáveis..." do menu "Arquivo".

Botão Executar

A geração dos fontes somente estará habilitada se todos os módulos na árvore estiverem prontos
para serem gerados (veja item anterior). O tópico Geração de Programas Fontes detalha os aspectos
desta operação. Após gerados os programas fontes, o Father automaticamente disponibilizará uma
interface para a geração do programa executável, geração tal que poderá ser executada de forma
independente, acionando-se o botão de geração de executáveis presente na barra de ferramentas. O
tópico Geração de executáveis detalha com maior profundidade os aspectos desta operação.

Cores na Árvore do projeto Top Previous Next

Os módulos ainda não definidos aparecem em cor diferente dos módulos já prontos, caso você
tenha assim configurado.

Se existir algum módulo ainda não definido, você deverá selecionar este módulo e verificar os
fatores ainda a definir. Em alguns módulos você terá de marcar explicitamente a opção módulo pronto
para dizer ao Father que o módulo está pronto para ser gerado, segundo o seu critério.

~ 26 ~
MANUAL DO FATHER

Abrir ou criar projetos Top Previous Next

Ao ser aberto, o Father apresenta a seguinte tela:

Novo
Permite a criação de novos projetos.

Existentes
É utilizada para se abrir um projeto qualquer do Father que esteja acessível em um drive local ou
de rede;

Recentes
Exibe uma lista com os últimos projetos abertos pelo Father. Basta selecionar um deles para que
este seja aberto e disponibilizado na árvore do projeto.

Ferramentas Top Previous Next

Todas as funções programadas nos botões da barra de ferramentas pussuem um atalho


correspondente nas opções de menus.

Você pode optar por ocultar a barra de ferramentas, desmarcando a opção no menu Exibir:

Os botões da barra de ferramentas são os seguintes:

~ 27 ~
MANUAL DO FATHER

Este botão pode ser utilizado para abrir e carregar um projeto de sistema já existente. Os projetos
de sistemas criados pelo Father utilizam a extensão .FTR.

Este botão pode ser utilizado para disparar a geração dos programas fontes da aplicação. Só
aparece habilitado quando todos os módulos da árvore do projeto estão completamente definidos.
Posteriormente, por meio de um diálogo, você poderá ligar ou desligar a geração de certos módulos.
Para mais detalhes, consulte o tópico Geração de programas fontes.

Logo após a geração dos programas fontes, o Father dispõe a você, automaticamente, a
interface de geração dos programas executáveis necessários ao seu funcionamento. No entanto, este
botão poderá ser utilizado para acessar o módulo de compilação, de uma forma independente, no qual
você poderá selecionar os módulos que deseja compilar. Para detalhes, consulte o tópico Geração de
Executáveis.

Se os programas fontes da aplicação foram gerados pelo menos uma vez, este botão estará
habilitado para ativar a criação do kit de instalação da aplicação.

Este botão pode ser utilizado para ativar e desativar a disponibilização do Diário de Bordo,
utilizado para anotações que deverão ser vinculadas ao projeto de sistema em definição. Por esta
razão, só estará habilitado quando existir uma definição de projeto em andamento. Os aspectos da
utilização deste recurso estão descritos no tópico Utilizando o Diário de Bordo.

Este botão poderá ser clicado para executar o Editor de Programas do Father. Existem diversas
situações, durante a fase do desenvolvimento do projeto, em que este botão poderá ser utilizado.
Consulte o tópico Editor de Programas para obter detalhes de sua utilização.

Este botão serve para ativar o Editor de Telas do Father para a formatação de telas e da barra de
ferramentas para a aplicação a ser gerada, processo que é detalhado no tópico Utilizando o Editor de
Telas.

Este botão só estará habilitado se um módulo do tipo relatório ou etiqueta estiver completamente
definido e selecionado na árvore do projeto. A interface com o Crystal Reports também é efetuada
automaticamente, por meio deste botão, caso você tenha optado por este utilitário na inserção do
módulo de relatório no projeto.

Este botão ativa a interface de definição do módulo que se encontra selecionado na árvore. Para
estabelecer as definições do módulo, você deverá clicar sobre este botão.

Este botão tem por finalidade permitir a inserção de novos módulos na árvore do projeto. Só
estará ativado se o módulo selecionado na árvore suportar um módulo subordinado. Esses módulos
são o título do projeto, menus, janelas de dados, tabelas em grid, processos pré-definidos, relatórios,
formulários avulsos, etc.

Este botão serve para cortar para o clipboard textos do Editor de Programas, módulos da árvore

~ 28 ~
MANUAL DO FATHER

do projeto ou suas definições. O texto selecionado é apagado do editor e disponibilizado na área de


transferência (ou clipboard). Já o módulo é movido para outra posição da árvore do projeto ou mesmo
para outro projeto, utilizando-se a opção de colagem a ser referenciada logo a seguir. O mesmo ocorre
com as definições de módulo recortadas.

Este botão serve para copiar todas as definições efetuadas no módulo selecionado para uma
área de transferência. Este recurso foi disponibilizado no Father para permitir a herança de definições
de um módulo para outro, dentro da árvore, ou para ser levado a um outro projeto. Quando o Editor de
Programas for a janela ativa, este botão pemitirá copiar o texto nele selecionado para o objeto
clipboard (ou área de transferência). Módulos da árvore do projeto também poderão ser copiados.

Uma vez que algum texto do Editor de Programas, os módulos da árvore do projeto ou as
definições do módulo tenham sido copiadas para a área de transferência, você poderá clicar sobre este
botão para aproveitar tudo o que foi definido, com a finalidade de modificar somente o que for
necessário, com um ganho considerável de tempo na fase do projeto. No caso de ser o Editor de
Programas a janela ativa, o texto existente na área de transferência será inserido no texto, na posição
do cursor.

Este botão é utilizado para apagar o que estiver sendo feito no momento, o que pode ser tanto
um módulo selecionado na árvore do projeto, quanto controles selecionados no Editor de Telas do
Father ou texto selecionado no Editor de Programas. Exceto para este último, as informações podem
ser apagadas sempre mediante uma confirmação prévia.

Este botão serve como atalho para a apresentação da ajuda de operação do Father.

Editor de programas - Botões Top Previous Next

Se a janela ativa for o Editor de Programas do Father, os seguintes botões estarão ativos na
barra de ferramentas:

Este botão serve para apresentar o diálogo de procura de texto dentro do Editor de Programas. A
tecla CTRL+F pode ser utilizada como atalho desta operação.

Este botão serve para apresentar o diálogo de procura e substituição dentro do Editor de
Programas do Father. A tecla CTRL+H pode ser utilizada como atalho para esta operação.

Este botão serve para desfazer, de modo ilimitado, quaisquer alterações que tenham sido
efetuadas no Editor de Programas do Father.

Este botão serve para refazer, de modo ilimitado, quaisquer ações que tenham sido desfeitas no
Editor de Programas do Father.

Este botão serve para endentar cada uma das linhas do bloco selecionado, proporcionando uma

~ 29 ~
MANUAL DO FATHER

facilidade maior na formatação das estruturas da linguagem definidas diretamente por você.

Este botão serve para retirar a endentação de cada uma das linhas do bloco selecionado,
proporcionando uma facilidade maior na formatação das estruturas da linguagem definidas diretamente
por você.

Este botão serve para comentar cada uma das linhas do bloco selecionado. Caso você não tenha
selecionado algum bloco de linhas e pressione este botão, o caracter de comentário (apóstrofo) será
incluído no início da linha indicada.

Este botão serve para retirar o comentário de cada uma das linhas do bloco selecionado.

Barra de Status Top Previous Next

Como forma de projetar uma interface ainda mais amigável, encontra-se disponibilizada no
rodapé do aplicativo uma barra de status, a qual informa o estágio de progressão do processo efetuado
no corrente momento, como criação e carregamento de projetos, geração de fontes, dentre outros.
Quando a referida barra de progresso se encontrar na cor azul, o processo tem a possibilidade de ser
interrompido. Tal procedimento não pode ser efetuado quando esta barra de progresso se apresentar
na cor vermelha.

~ 30 ~
MANUAL DO FATHER

Menus do Father Top Previous Next

A seguir, vamos conhecer as opções disponíveis no menu do Father. Como já vimos, a barra de
ferramentas serve de atalho para algumas dessas opções que são mais utilizadas.

Nos próximos tópicos, veremos a definição de cada opção dos menus.

Arquivo Top Previous Next

A figura a seguir exibe as opções do menu Arquivo do Father:

A exemplo do que ocorre na barra de ferramentas, algumas opções podem estar desabilitadas
por não se aplicarem ao contexto do momento da operação.

Novo projeto Top Previous Next

Esta opção serve para criar um novo projeto de sistema. Você deverá informar um nome para o
novo projeto e o Father criará e iniciará este novo projeto, carregando as opções padrões na árvore do
novo projeto.

~ 31 ~
MANUAL DO FATHER

Abrir projeto existente Top Previous Next

Esta opção serve para abrir um projeto já existente.

O botão na barra de ferramentas também executa esta ação.

~ 32 ~
MANUAL DO FATHER

Salvar como gabarito Top Previous Next

A qualquer momento da definição de um projeto com o Father, esta opção pode ser ativada para
salvar todas as definições como um gabarito de nome a ser especificado.

Diário de bordo Top Previous Next

Apresenta ou oculta o Diário de Bordo vinculado ao projeto. Esta opção tem um botão
correspondente na barra de ferramentas e só está disponível quando existe um projeto em definição.

~ 33 ~
MANUAL DO FATHER

Gerar fontes Top Previous Next

Esta opção aciona a geração dos programas fontes para a aplicação. Só aparece habilitada
quando todos os módulos da árvore do projeto estão completamente definidos.

Criar executáveis Top Previous Next

Esta opção aciona a interface de criação de programas executáveis necessários ao


funcionamento da aplicação gerada.

~ 34 ~
MANUAL DO FATHER

Reparar projeto Top Previous Next

Esta opção serve para corrigir problemas de integridade ou índices que, porventura, venham a
ocorrer nos projetos do Father. Esta opção só estará disponível para seleção se nenhum projeto estiver
carregado no Father. O tópico Reparação do Projeto apresenta mais detalhes.

Utilitários Top Previous Next

Esta opção abre um sub-menu de onde podem ser acionadas diversas opções de utilitários do
Father. Aqui também, algumas opções poderão não estar habilitadas para seleção por não se
aplicarem ao contexto do momento da operação. A figura a seguir mostra quais são as opções
disponíveis:

~ 35 ~
MANUAL DO FATHER

Criar programa instalador Top Previous Next

Também com um botão de funcionalidade idêntica na barra de ferramentas, esta opção aciona a
interface que cria o programa instalador para a aplicação final.

Imprimir diário de bordo Top Previous Next

Utilize esta opção para passar para a impressora as anotações referentes ao projeto existente no
Diário de Bordo.

~ 36 ~
MANUAL DO FATHER

Rever mensagem de geração Top Previous Next

Durante o processo de geração de programas fontes, o Father executa testes de consistência


sobre as definições do projeto. Qualquer incoerência é reportada em uma mensagem de erro com o
consequente cancelamento do processo de geração. você poderá, ao corrigir o problema, selecionar
esta opção para rever a última mensagem de erro reportada. A seguir, poderão estar aparecendo no
menu, os nomes de um ou mais projetos recentemente abertos. O Father armazena os nomes dos 3
últimos projetos que carregou, ficando o mais recente posicionado em primeiro lugar.

Editar Top Previous Next

A figura abaixo corresponde ao menu Editar. Algumas opções podem aparecer desabilitadas por
não se enquadrarem no contexto do momento da operação:

Todas as opções deste menu têm um botão com a mesma funcionalidade na barra de
ferramentas.

~ 37 ~
MANUAL DO FATHER

Inserir Top Previous Next

Esta opção serve para inserir módulos na árvore do projeto. Um módulo é inserido sempre
subordinado ao que estiver selecionado na árvore.

A inserção de módulos na árvore do projeto é detalhada no tópico Inserindo um Módulo.

Cortar Top Previous Next

Esta opção serve para transferir o texto selecionado no Editor de Programas do Father para a
área de transferência(clipboard).

~ 38 ~
MANUAL DO FATHER

Copiar Top Previous Next

Esta opção serve para copiar definições inteiras de módulos para um posterior aproveitamento
em outro módulo semelhante do mesmo ou de outro projeto. Se a janela ativa for o Editor de
Programas do Father, esta opção servirá para copiar o texto selecionado no Editor para a área de
transferência.

Colar Top Previous Next

Complementando a opção anterior, esta opção serve para dispor na árvore do projeto as
definições copiadas. Se a janela ativa for o Editor de Programas do Father, esta opção servirá para
colar o texto existente na área de transferência na janela de edição.

~ 39 ~
MANUAL DO FATHER

Apagar Top Previous Next

Esta opção serve para apagar o objeto selecionado no momento, pode ser um módulo da árvore
ou um objeto qualquer durante a formatação de telas. Se a janela ativa for o Editor de Programas do
Father, esta opção servirá para apagar o texto selecionado no Editor.

Procura Top Previous Next

Esta opção serve para ativar o diálogo de pesquisa de texto dentro da janela em edição do Editor
de Programas do Father.

~ 40 ~
MANUAL DO FATHER

Substitui Top Previous Next

Esta opção serve para ativar o diálogo de pesquisa e substituição de texto dentro da janela do
Editor de Programas do Father.

Desfaz Top Previous Next

Esta opção serve para desfazer, de modo ilimitado, quaisquer alterações que tenham sido
efetuadas no Editor de Programas do Father.

~ 41 ~
MANUAL DO FATHER

Refaz Top Previous Next

Esta opção serve para refazer alterações que tenham sido desfeitas no Editor de Programas do
Father.

Endenta Top Previous Next

Esta opção serve para endentar cada uma das linhas do bloco selecionado na tela de edição do
Editor de Programas do Father, proporcionando uma facilidade maior na formatação das estruturas da
linguagem definidas diretamente por você.

~ 42 ~
MANUAL DO FATHER

Desendenta Top Previous Next

Esta opção serve para retirar a endentação de cada uma das linhas do bloco selecionado na tela
de edição do Editor de Programas do Father, proporcionando uma facilidade maior na formatação das
estruturas da linguagem definidas diretamente por você.

Comenta Top Previous Next

Esta opção serve para comentar cada uma das linhas do bloco selecionado na tela de edição do
Editor de Programas do Father. Caso você não tenha selecionado algum bloco de linhas e pressione
este botão, o caracter de comentário (apóstrofo) será incluído no início da linha indicada.

~ 43 ~
MANUAL DO FATHER

Descomenta Top Previous Next

Esta opção serve para retirar o comentário de cada uma das linhas do bloco selecionado na tela
de edição do Editor de Programas do Father.

Editar código de programa Top Previous Next

Esta opção ativa o Editor de Programas do Father. Este recurso pode ser utilizado em diversos
pontos da definição do projeto.

~ 44 ~
MANUAL DO FATHER

Formatar relatório Top Previous Next

Esta opção ativa a interface de formatação do relatório ou etiqueta que está selecionado na
árvore.

Formatar tela Top Previous Next

Esta opção aciona o Editor de Telas para a formatação da tela de digitação para a janela de
dados selecionada na árvore.

~ 45 ~
MANUAL DO FATHER

Definir Top Previous Next

Abre a janela de definição do item selecionado.

Exibir Top Previous Next

Este menu apresenta algumas opções de exibição de peças da interface do Father.

A figura a seguir apresenta este menu:

Neste menu, encontramos:

Barra de ferramentas Top Previous Next

~ 46 ~
MANUAL DO FATHER

Clicando sobre esta opção, você poderá ocultar ou exibir a barra de ferramentas do Father. Como
todas as opções que se encontram na barra de ferramentas estão também disponíveis nas opções de
menus, quando aquela estiver oculta, a operação do Father poderá ser feita por essas opções, embora
com um pouco mais de dificuldade.

Banco de campos Top Previous Next

Utilizando o Banco de Campos, você poderá ocultar ou exibir o banco de campos disponíveis
para captura, que o Father monta a partir das informações existentes na estrutura definida. Esse
mesmo banco de campos relaciona a lista de variáveis, constantes e funções (function e sub)
disponíveis para o objeto em definição. O banco de campos só aparece habilitado no menu se a
situação de operação indicar a sua necessidade. Para facilitar a manipulação das informações nele
relacionadas, a janela do banco de campos apresenta um conjunto de botões com diversos
operadores, como mostrado na figura a seguir, inclusive transferência de dados como inteiro, quociente
e resto da divisão inteira, concatenação de strings, etc.

A tecla de atalho <F5> pode ser usada para exibir o Banco de campos.

O tópico Utilizando o Banco de Campos explica a utilização deste recurso.

~ 47 ~
MANUAL DO FATHER

Ferramentas da tela Top Previous Next

As ferramentas de formatação de telas ou barra de ferramentas são parte da interface do Editor


de Telas do Father, sendo que sua janela pode ser exibida ou ocultada por meio desta opção. Consulte
o tópico Editor de Telas para detalhes.

As ferramentas da tela estão disponíveis após executar a opção "Formatar tela". A tecla <F4>
pode ser usada para ocultar e exibir as ferramentas.

~ 48 ~
MANUAL DO FATHER

Diário em zoom Top Previous Next

Esta opção no menu Exibir só estará habilitada quando o Diário de Bordo estiver sendo exibido,
servindo para apresentá-lo em tamanho normal ou ampliado, ocupando toda a área de cliente do
Father.

Texto exemplo na tela Top Previous Next

Esta opção serve para ativar e desativar a apresentação de texto exemplo dentro dos campos
dispostos nas telas e relatórios. Este recurso auxilia a avaliação dos tamanhos dos campos a serem
deixados para o usuário digitar nas telas, auxiliando também a visualização de labels disponibilizados
em relatórios.

O texto a ser apresentado como exemplo pode ser definido em Opções/Configurações, na aba
"Telas e relatórios".

~ 49 ~
MANUAL DO FATHER

O resultado será:

Opções Top Previous Next

Este menu serve para configurar opções de operação.

Opções da Tela Padrão Top Previous Next

Por meio desta opção, você estabelece os parâmetros para a criação da tela padrão, disponível
no Editor de Telas. O tópico Definindo Opções da Tela Padrão aborda os detalhes desta operação.

~ 50 ~
MANUAL DO FATHER

Configurações Top Previous Next

As configurações de diversas fases da operação do Father estão divididas em uma interface com
quatro abas.

• Modelador
• Telas e relatórios
• Relatórios
• Diretórios

Modelador Top Previous Next

Nesta aba podem ser configuradas diversas opções do modelador do projeto. À medida que as
configurações vão sendo efetuadas, o seu efeito vai sendo mostrado imediatamente na janela de
amostra existente nesta janela:

~ 51 ~
MANUAL DO FATHER

Fontes do modelador Top Previous Next

Esta opção serve para configurar a fonte a ser utilizada na ávore do projeto. Para alterar a fonte,
utiliza o botão extensor .

Cores do módulo Top Previous Next

As cores utilizadas para identificar os módulos existentes na árvore do projeto pode ser
configurada da maneira que você julgar mais conveniente. Esta opção é útil para permitir a visualização
imediata do estágio em que se encontra o desenvolvimento do projeto. O Father permite que sejam
configuradas tipos de fontes e cores para as situações a seguir:

Definidos
Todo módulo que estiver totalmente pronto para ser gerado, aparecerá na cor aqui configurada.

Em definição
Os módulos que estejam incompletos na sua definição, aparecerão na cor configurada para este
item.

Preservados
Alguns módulos que você não deseja gerar, ele poderá marcar o desligamento da sua geração.
Isto se aplica a qualquer tipo de módulo que possa ser disponibilizado na árvore. Por exemplo, o tópico
Definindo uma janela de dados - Geral explica os detalhes desta opção. Módulos que você tenha
marcado para não serem gerados aparecerão na cor configurada para este item.

Todos
Esta opção serve para trocar, de uma só vez, os atributos de cor para as opções anteriores.

Telas e relatórios Top Previous Next

Nesta aba, aparecem algumas opções para utilizar em telas e relatórios, como mostra a figura a
seguir:

~ 52 ~
MANUAL DO FATHER

Tamanho da grade Top Previous Next

Ajuste o tamanho, em pixels, da grade a ser utilizada para a área de formatação de telas e
relatórios, quando esta estiver visível.

Texto exemplo Top Previous Next

Informe um texto a ser utilizado como exemplo nos campos dispostos nas telas e labels em
relatórios para a impressão de campos, quando a opção denominada Texto exemplo na tela, estiver
marcada.

Default para texto 3D Top Previous Next

Configure as opções default para os objetos 3D disponibilizados na tela ou relatório. Essas


opções se referem apenas à forma como esses objetos são disponibilizados na tela ou relatório. É
possível alterar individualmente essas propriedades no momento da formatação.

Fonte
Selecione o nome, tamanho e cor da fonte a ser utilizada para imprimir o texto 3D.

Sombra
Informe o tamanho em pixels da sombra a ser projetada pelo texto.

Ângulo
Informe o ângulo, de 0 a 359 graus, para ser utilizado na impressão do texto 3D.

Cor do contorno
Estabeleça uma cor para ser utilizada no contorno ou outline do texto 3D.

Cor da sombra
Escolha uma cor para a sombra a ser projetada pelo texto 3D.

Relatórios Top Previous Next

Nesta aba, como mostra a figura a seguir, aparecem as opções a serem configuradas
exclusivamente para os relatórios e etiquetas a serem formatados por meio do G-Reports do Father.

~ 53 ~
MANUAL DO FATHER

Cores das réguas Top Previous Next

Estabeleça os atributos de cores a serem utilizadas para exibir nas réguas auxiliares de
formatação.

Distância entre registros Top Previous Next

Especifique a distância, em milímetros, a ser utilizada como default da propriedade para separar
registros. Esta informação poderá ser reajustada posteriormente, no momento da formatação de
relatório.

Papel Top Previous Next

Informe o tipo de papel a ser utilizado para o relatório e também algumas medidas de margens
para cálculo da área útil da impressão.

Considerações sobre margens de papel


Existe, hoje, disponível no mercado, uma grande quantidade de marcas e modelos de
impressoras. Além de serem diferentes em aspectos como resolução, velocidade, qualidade, etc.,
essas impressoras diferem no aspecto do aproveitamento do papel. Todas elas só conseguem imprimir
dentro de uma área útil circunscrita por margens (topo, esquerda, direita e fundo). Essas margens
existem possivelmente por problemas de concepção, como, por exemplo, pela necessidade de tração
de papel. Elas podem ser maiores ou menores, de acordo com a impressora utilizada. Por meio da
função API GetDeviceCaps(), é possível recuperar os valores exatos dessas margens, desde que a
impressora esteja instalada na máquina. Como as impressoras dos equipamentos de desenvolvimento
nem sempre são as mesmas existentes nas máquinas onde a aplicação será executada, você deverá
estabelecer manualmente essas margens para que o Father disponibilize na área de formatação
somente a área útil calculada por meio dessas medidas.

Diretórios Top Previous Next

Finalmente, na última aba, mostrada na figura a seguir, podem ser configurados os diretórios dos
diversos utilitários com os quais o Father irá manter algum tipo de interface.

~ 54 ~
MANUAL DO FATHER

Informe, nos campos correspondentes, os diretórios onde se encontram os aplicativos. Utilize o

botão para localizar.

Tratamento de nomes Top Previous Next

Esta opção permite a você especificar como o Father trata os nomes das tabelas, campos e
apelidos que serão digitados durante a entrada de informações na definição da estrutura para o banco
de dados. As opções são:

Capitalizar
O Father irá capitalizar a primeira letra, ou seja, convertê-la em maiúscula.

Maiúsculas
Todas as informações digitadas serão transformadas em maiúsculas.

Minúsculas
Tudo o que for digitado será transformado para letras minúsculas.

Nenhum
Nenhum tratamento será dado pelo Father ao que você digitar para os nomes de tabelas e
campos.

Reparação do projeto Top Previous Next

Os projetos desenvolvidos pelo Father ficam armazenados em um arquivo de extensão .FTR. As


informações que vão sendo passadas por você, como, por exemplo, nomes de bancos de dados,
tabelas, campos, relações, índices, janelas de entrada de dados, estrutura hierárquica, diário de bordo,
enfim, toda a definição do projeto fica armazenada neste arquivo que, por sua vez, é um banco de

~ 55 ~
MANUAL DO FATHER

dados de formato MDB. E, por se tratar de um banco de dados com alto grau de dependência de
índices e relacionamentos, é possível que, por um motivo qualquer, haja a perda de índices ou de
relacionamentos, compromentendo a integridade do que foi definido para o projeto. Por esta razão, foi
disponibilizada, no Father, a opção "Reparar projeto", abaixo da opção de menu Arquivo. você poderá
utilizar esta opção para fazer a reparação do banco de dados do projeto, a fim de corrigir os possíveis
erros existentes.

Modelador de projetos Top Previous Next

O modelador do projeto é o módulo por meio do qual você define a hierarquia do seu projeto. O
módulo modelador se constitui de uma lista hierárquica representando a árvore do projeto.

A figura acima mostra um exemplo da Árvore Hierárquica ou Modelador de Projetos. Você pode
manipular a hierarquia do projeto em definição, inserindo, apagando ou movendo módulos.
Para essas operações, o Father possui recursos que facilitam o seu trabalho, por exemplo, o
clipboard para copiar definições inteiras de módulos para outros pontos da árvore do projeto ou,
mesmo, para outros projetos, e os recursos drag and drop (arrasta e solta) para movimentar troncos
inteiros por meio da árvore. Cada tipo de módulo tem uma figura diferente para representá-lo,
permitindo a sua identificação imediata, com uma rápida visualização.
À medida que os módulos são inseridos na árvore, o menu da aplicação final também vai sendo
naturalmente definido, pois a disposição dos módulos na árvore do projeto espelha exatamente o menu
da aplicação final. Os módulos inseridos imediatamente abaixo do título do projeto aparecerão no
primeiro nível do menu. Os demais, aparecerão em submenus.
Conforme vimos no tópico Opções para Personalizar a Operação do Father, para facilitar a você
visualizar o estágio em que se encontra o desenvolvimento do projeto, o Father permite a configuração
de cores para os módulos que já estão definidos (prontos para serem gerados) e para os módulos que
ainda não estão definidos. Os módulos que não serão gerados também podem aparecer em cores
diferentes.

~ 56 ~
MANUAL DO FATHER

Menu Pop-up Top Previous Next

Ao clicar com o botão direito do mouse sobre um módulo da árvore, um menu pop-up é
apresentado com algumas opções aplicáveis ao módulo, podendo ser utilizadas como
atalhos para as algumas das operações descritas a seguir.

Fechando o modelador Top Previous Next

O Modelador de Projetos pode ser fechado ao clicar no botão em destaque na figura abaixo:

~ 57 ~
MANUAL DO FATHER

Inserindo um Módulo Top Previous Next

Para inserir um módulo na árvore, você deverá proceder conforme segue:

1. Selecione, na árvore, o módulo sob o qual deseja inserir o novo módulo. Observe que, nem
todos os módulos podem ter subordinados na árvore. Somente os módulos Título do Projeto, Menus,
Janelas de Dados, Relatórios do G-Reports e Processos pré-definidos podem ter módulos inseridos de
forma subordinada;

2. Selecione as opções de menu "Editar/Inserir" ou clique diretamente sobre o botão de inserir

existente na barra de ferramentas , ou, ainda, clique com o botão direito do mouse sobre o
módulo, selecionando a opção "Insere novo módulo abaixo" existente no menu pop-up que surgirá;

3. Selecione no menu apresentado pela figura a seguir, o tipo de módulo a ser inserido;

~ 58 ~
MANUAL DO FATHER

4. Selecione a posição que o módulo deve ser inserido. O Father apresenta uma segunda árvore
contendo apenas os módulos de nível igual ou superior ao que está sendo inserido. Você deverá clicar

sobre o módulo após o qual o novo módulo será inserido e clicar no botão .

Os módulos que são inseridos no primeiro nível da árvore, ou seja, diretamente ligados ao título
do projeto, ficarão sempre visíveis no menu da aplicação final, aparecendo um ao lado do outro. É
aconselhável para uma melhor estética que você evite dispor palavras compostas (que contenham
espaços) para definir os títulos dos menus que aparecem neste primeiro nível. Os demais módulos
sempre aparecerão em submenus, um abaixo do outro, não sendo necessário este cuidado.

Movendo módulos Top Previous Next

Os módulos inseridos na árvore podem ter suas posições alteradas, utilizando-se as operações
de drag and drop (arrastar e soltar) disponíveis no modelador do projeto. Para trocar a posição de um
módulo e de todos os seus módulos subordinados, proceda como segue:

Clique com o botão esquerdo do mouse sobre o módulo cuja posição deseja alterar, mantendo-o
1. pressionado;

Arraste o módulo para a nova posição. Observe que nem todo tipo de módulo suporta itens
subordinados e, por isso, o ícone utilizado na operação de arrasto mudará para indicar a você onde
2. o novo módulo poderá ser inserido;

~ 59 ~
MANUAL DO FATHER

3. Libere o botão do mouse na posição desejada.

Cuidados especiais devem ser observados ao trocar a posição de janelas de dados, pois este
tipo de módulo pode possuir tabelas vinculadas com regras de integridade no banco de dados que
impedem a sua inserção em determinadas posições da árvore.

Copiando definições Top Previous Next

Definições já efetuadas para um módulo, banco de dados, tabelas e módulos do projeto podem
ser copiadas para o clipboard e depois inseridas em outros pontos da árvore ou, ainda, em outros
projetos do Father, a fim de se reaproveitar as informações. Para copiar um banco de dados, tabela ou
módulo para outro ponto da árvore ou para outro projeto, proceda conforme se segue:

1. Selecione o item que deseja copiar para o clipboard;

2. Selecione a opção de menu "Editar/Copiar" ou clique sobre o botão de copiar existente na


barra de ferramentas. Caso o item a ser copiado seja um módulo da árvore do projeto, isto é, não seja
um banco de dados ou tabela criados nas definições do projeto, você poderá, ainda, clicar com o botão
direito do mouse sobre o referido item e selecionar a opção Copiar presente no menu pop-up que
surgirá;

3. Caso você queira colar o item copiado para um projeto diferente, primeiramente o mesmo
deverá selecionar o projeto que receberá o módulo copiado. você deverá, ainda, selecionar o item sob
o qual (caso seja um módulo da árvore do projeto) ou a área correspondente (caso seja um banco de
dados ou tabela) onde deseja inserir o novo módulo;

4. Selecione a opção de menu "Editar/Colar" ou clique sobre o botão colar existente na barra de
ferramentas, caso esta esteja visível. Caso o item a ser colado seja um módulo da árvore do projeto,
isto é, não seja um banco de dados ou tabela criados nas definições do projeto, você poderá, ainda,
clicar com o botão direito do mouse sobre o item sob o qual o novo módulo será colado e selecionar a
opção Colar presente no menu pop-up que surgirá;

5. Neste ponto, o novo item terá herdado todas as definições que foram designadas para o item
copiado. Faça as modificações nas definições do novo item, conforme necessário. Cabe ressaltar que
os banco de dados e tabelas não possuem um clipboard comum com os módulos da árvore de projeto.
Assim sendo, poderá ser efetuada, por exemplo, a cópia do banco de dados e de um módulo da árvore
ao mesmo tempo.

~ 60 ~
MANUAL DO FATHER

Removendo módulos Top Previous Next

Para apagar um módulo existente na árvore do projeto, proceda da seguinte maneira:

1. Clique no módulo que deseja remover;

2. Pressione <Delete> ou clique sobre o botão remover existente na barra de ferramentas, ou


clique com o botão direito do mouse sobre o módulo, selecionando a opção "Apaga o módulo
selecionado" existente no menu pop-up que surgirá;

3. Confirme, quando solicitado, a remoção do módulo, clicando no botão .

Observe que a retirada de um módulo na árvore implica também, por consequência, na retirada
de todos os módulos que estejam a ele subordinados!

Definindo a Solução Top Previous Next

Para definir a solução, clique em "Solução" com o botão direito do mouse e em seguida,
selecione "Define o módulo selecionado".

A definição da solução é feita na aba "Estrutura":

~ 61 ~
MANUAL DO FATHER

Estrutura da solução Top Previous Next

Quando se possui apenas um projeto, a definição da solução é apresentada da seguinte forma:

Estrutura: A definição da estrutura dos bancos de dados e das tabelas que irão compor a
aplicação é a parte mais importante do desenvolvimento do projeto.
A figura acima apresenta a interface que o Father oferece para a definição do banco de dados:

~ 62 ~
MANUAL DO FATHER

Os seguintes botões devem ser utilizados nestas definições:

botão de gravação

botão de cancelamento

botão de inclusão

botão de exclusão

Pode-se, ainda, fazer uso das teclas de atalho CTRL-S, CTRL-A, CTRL-I e CTRL-E, assim como
ocorre na aplicação final gerada, para, respectivamente, salvar as alterações definidas, cancelar as
alterações efetuadas, incluir novas informações e excluir informações já existentes.

Ao clicar em cada uma das listas, a mesma se tornará ativa, e a parte inferior da mesma mudará
apresentado o frame respectivo a seleção de cada lista:

Definindo o Banco de dados Top Previous Next

Na janela de definição da solução você pode inserir novos bancos de dados para sua aplicação:

Definindo Banco: Primeiramente, você deve definir um nome para o banco de dados a ser
utilizado. Mais de um banco de dados pode ser especificado permitindo que você informe, por exemplo,
o nome de um banco de dados já existente com o qual a aplicação em definição poderá ter algum tipo
de integração. Para cadastrar bancos de dados deve-se selecionar a lista de bancos de dados e utilizar
o botão de inclusão.

Geral

~ 63 ~
MANUAL DO FATHER

Nome: É o nome físico que será dado ao banco de dados;

Apelido: É o nome interno da variável que será dado ao banco de dados, no código gerado.
Caso o desenvolvedor tenha o interesse de desenvolver rotinas manuais, este nome poderá ser
utilizado para referenciar-se ao banco de dados.

Principal - esta opção deverá ser marcada para somente um dos bancos de dados definidos, de
modo a informar ao Father onde estarão as tabelas especiais para gerenciamento de senhas e
controles de campos sequenciais que, porventura, venham a existir nas tabelas.

Multi Empresa - se esta opção estiver marcada, o Father gerará rotinas na aplicação para
realizar o controle multi empresa para o banco de dados selecionado. Uma vez definido que o banco
de dados terá o controle multi-empresa, será disponibilizada a opção para determinar quais tabelas
estarão sob esse controle. Pode-se, portanto, trabalhar com apenas algumas das tabelas de um banco
com o controle interno para multi empresa. O controle multi empresa disponibilizado é baseado em
uma tabela do banco que será escolhida como sendo a tabela de empresas que também conterá o
campo "Cod~Emp". Esse mesmo campo será criado de forma automática para todas as tabelas que
tiverm o controle multi empresa definido. Assim que o usuário tentar acessar o sistema será solicitada a
empresa que irá utilizar para trabalhar, e todos os registros inclusos ou lançados receberão de forma
automática o campo "Cod~Emp" de acordo com essa empresa selecionada.

Gerar log de atividade - se esta opção estiver marcada, o Father gerará rotinas na aplicação
para criar e manter um arquivo de log para o banco de dados em definição. No arquivo de log são
gravadas diversas informações - encriptadas - tais como, nome do usuário, tipo de transação efetuada
(execução de processos pré-definidos, manipulação de registros, relatórios, etc), data, hora e ainda as
informaçöes dos campos modificados com seus valores antes e depois das modificações.

Este recurso permite um gerenciamento perfeito da operação da aplicação. Mediante o


acionamento de um visualizador de log externo (LOGVIEW.EXE) fornecido juntamente com o Father, o
conteúdo do arquivo de log pode ser visto a qualquer momento pelo administrador do sistema,
utilizando uma senha master definida no campo Senha.

Senha: Caso tenha marcado a opção de Gerar log de atividade, o campo "senha" será habilitado
para que seja informado a senha para ser utilizada no arquivo de log a ser gerado.

Na versão Enterprise do Father, outros botões serão exibidos dentro desse espaço para permitir
a importação da estrutura completa de bancos de dados MDB ou SQL Server. Poderão ser importados,
por intermédio dessa opção, quantos bancos de dados você julgar necessários, não havendo
quaisquer limitações de quantidade.

~ 64 ~
MANUAL DO FATHER

Tipo BD
Tipo de banco de dados: Na versão Enterprise do Father, você poderá selecionar o tipo de
banco de dados a ser utilizado - as opções são Access (MDB) via DAO, Access (MDB) via ADO, SQL
Server, Oracle, Firebird ou MySql. Dependendo do banco de dados escolhido, algumas opções de
definição da estrutura aparecerão de maneira diferente. Em uma solução, é possivel definir quais os
tipos de bancos de dados a aplicação poderá utilizar. Com esta opção, caso seja definido mais de um
banco de dados, será criado na aplicação final a possibilidade de escolha, no momento da instalação,
qual o tipo de banco de dados será utilizado pela aplicação.

Você pode escolher qual ou quais bancos de dados sua aplicação irá funcionar. Com isto, é
oferecida a opção de escolha do banco no momento da instalação.

Mdb - DAO
DAO não é recomendado por ser muito antigo.

Mdb-ADO
ADO - (Active Data Objects) - é um sistema mais recente de acesso a arquivos

SQL Server: O Acesso ao banco de dados SQL Server por aplicações geradas, foram mantidos
e melhorados nesta versão. O código gerado é compativel com SQL Server 2000/2005. Além disto, o
código gerado é perfeitamente compatível com as versões gratuitas do SQL Server, conhecida como:
SQL Server 2005 Express Edition, e pode ser baixada diretamente no site do fabricante.

Oracle: O Acesso ao banco de dados Oracle por aplicações geradas, foram mantidos e
melhorados nesta versão. O código gerado é compatível com Oracle 8i/10g. Além disto, o código
gerado é perfeitamente compatível com as versões gratuitas do Oracle, sendo ela: Oracle 10g Express
Edition, e pode ser baixada diretamente no site do fabricante.

Firebird: Implementado nessa versão o acesso nativo ao banco de dados Firebird. Esta
implementação foi realizada tomando-se como base a versão 2.0 (Release Candidate 2) devido a
várias características presentes nessa versão que não existem na versão 1.5. Para maiores detalhes
sobre o projeto Firebird 2.0, acesse o site do desenvolvedor (http://www.firebirdsql.com). O driver
utilizado para conexão é o Firebird ODBC-JDBC v. 2.0.0.138. Para maiores detalhes sobre o projeto
Firebird ODBC-JDBC acesse ao site do desenvolvedor (http://www.praktik.km.ua/).

MySQL: Também implementado nessa versão o acesso nativo ao banco de dados MySQL. A
implementação foi realizada tomando-se como base a versão 5.0. O driver utilizado para conexão é o
MyOleDb v.3.9.

Acesso via Internet - na versão Enterprise do Father, você poderá utilizar-se dessa opção para
habilitar o uso do banco SQL Server ou Oracle via Internet. Para estabelecer o acesso em questão,
bastará ser informado à aplicação o IP ou host no qual o banco de dados se encontra. Opções para
script - na Versão Enterprise do Father, você tem a sua disposição, oferece opções avançadas para
personalização do script, as quais para alguns bancos de dados é interessante a sua definição, de
acordo com o configurado em uma base de dados criada ou a ser criada.

Conexão - na versão Enterprise do Father, você poderá determinar manualmente a string de


conexão ao banco SQL Server ou Oracle, caso não queira utilizar-se da string montada
automaticamente pelo Father. A string de conexão a ser determinada deve obedecer o padrão a seguir:

~ 65 ~
MANUAL DO FATHER

Para definição de usuário e senha:


Provejar=SQLOLEDB.1;Persist Security Info=False;DRIVER={Sql Server}
;SERVER=NOME_DO_SERVIDOR; uid=NOME_DO_USUARIO ;pwd=SENHA; DATAB
ASE=NOME_DO_BANCO; TRUSTED_CONNECTION=NO

Para assumir login da rede:


Provejar=SQLOLEDB.1;Persist Security Info=False;DRIVER={Sql Server};
SERVER=NOME_DO_SERVIDOR ;DATABASE= NOME_DO_BANCO; TRUSTED_CONN
ECTION=YES

Aba Projetos:
Projetos do banco de dados - Esta opção estará disponível apenas se a solução possuir mais de
um banco de dados e também mais de um projeto. Se esta condição for atendida, você poderá definir
quais os projetos (aplicações) utilizaram o banco de dados selecionado. Esta opção poderá ser definida
para cada banco de dados adicionado a solução.

Aba de descrição do banco de dados - digite informações sobre o banco de dados em


definição.

Definindo as tabelas Top Previous Next

A seguir, você deve cadastrar as tabelas que irão compor o banco de dados selecionado. Para
cadastrar uma tabela, basta clicar na lista de tabelas, clicar sobre o botão de inclusão e informar o seu
nome e apelido. Se desejar, você poderá também digitar um texto descritivo da tabela que está sendo
criada para que seja inserido na documentação do projeto. Se a tabela que está sendo definida for uma

~ 66 ~
MANUAL DO FATHER

tabela do tipo parâmetro, esta opção deverá ser assinalada nesta janela (veja Glossário). Informados
esses dados, você poderá pressionar o botão de gravação para salvar as informações.

1 - Permitir inclusão em consulta: caso esta opção esteja marcada, quando for construido uma
consulta, será possivel efetuar a inclusão de um novo registro.

2 - Permitir alteração em consultas: caso esta opção esteja marcada, quando for construido uma
consulta, será possivel efetuar a alteração de um registro existente.

3 - Permitir Exclusão em consultas: caso esta opção esteja marcada, quando for construido uma
consulta, será possivel efetuar a exclusão de um registro existente.

4 - Tipo empresa: Com esta opção marcada, a tabela será tratada com uma tabela de controle de
empresas. Esta tabela será utilizada para cadastrar os registros que o usuário quiser utilizar como
registro das empresas na entrada do programa.

5 - Multi empresa: Com esta opção marcada, esta tabela terá o controle de empresa em cada
registro cadastrado.

6 - Invisivel: Com esta opção marcada, a tabela não será apresentada ao usuário final.

Definindo campos Top Previous Next

Uma vez cadastrada uma tabela, você deverá definir a sua estrutura. Para isto, deve selecionar,
na lista de tabelas, a tabela a ser definida. A seguir, deverá clicar na lista de campos e adicionar o
campo, clicando sobre o botão de inclusão.

Quando um novo campo é adicionado à tabela, o diálogo da figura acima é apresentado para
permitir a definição deste campo. Neste momento, você deverá fornecer as seguintes informações:

Nome do campo

~ 67 ~
MANUAL DO FATHER

Esta informação se constitui na identificação do campo dentro do banco de dados. O nome do


campo pode conter espaços, acentos e outros caracteres. Alguns caracteres, no entanto, não poderão
constar do nome do campo, pois são utilizados no código fonte a ser gerado, como, por exemplo,
colchetes, exclamação, ponto, etc., sendo vetados automaticamente pelo Father no momento da
digitação. Os projetos do Father são dicionarizados, significando que os nomes dos campos
correspondentes em tabelas diferentes têm de ter o mesmo nome. Por exemplo, o campo Código do
Fornecedor em uma tabela de fornecedores tem de ser referenciado com este nome em todas as
tabelas onde venha a aparecer dentro do banco de dados. A contra-partida é que, quando você
necessitar alterar o nome de um campo ou qualquer um dos seus atributos, o Father faz
automaticamente todas as alterações necessárias nas demais tabelas definidas no projeto. Por esta
razão, caso o novo campo já exista em alguma outra tabela definida no projeto, você poderá selecionar
o campo desejado, ao invés de digitar suas informações. Com isto, todas as demais informações como
tipo, tamanho, máscara, etc., são automaticamente capturadas.

Título amigável
Ao contrário do campo Nome, esta informação se constitui na identificação do campo para o
usuário final. O título amigável é utilizado no processo de formatação da tela de uma janela de dados.
Para o usuário final, essa informação é exibida via janela de dados, mesmo quando esta é visualizada
na forma de grid. Para habilitar a utilização dos títulos amigáveis, você deverá marcar a opção Usar
títulos amigáveis na aba Miscelânea.

Tipo do campo
Ao informar o tipo do campo, você poderá utilizar os tipos de campos normais do Visual Basic ou,
ainda, os tipos de campos intrínsecos que o Father oferece, como, por exemplo, Multimídia, Lista
Interna, Rotativo, Optativo, CPF, CGC, CEP, UF, Hora, Fone, Fone com DDD, E-Mail, WebPage,
Cartão de Crédito e Códigos de barra diversos. Para definir um tipo de campo, basta capturar da lista o
tipo desejado. Se selecionar um dos tipos intrínsecos, o Father disponibilizará automaticamente todos
os demais atributos do tipo de campo selecionado. Caso seja selecionado o tipo de campo UF, o
Father preencherá automaticamente o item "Lista" com todas as Unidades da Federação, possibilitando
que o usuário do aplicativo final gerado utilize uma lista com todas as possibilidades. Se um campo já
estiver posicionado na janela de dados e o seu tipo for alterado, em alguns casos, ele irá desaparecer
da tela, após um aviso do Father. Isto se deve ao fato de que o tipo de campo está diretamente
relacionado com o tipo de objeto disponibilizado na tela. Por exemplo, um campo do tipo caractere
alterado para lógico irá desaparecer porque o primeiro usa uma textbox e o outro usa uma checkbox.

Lista
Esta informação só será solicitada se você tiver selecionado os tipos de campos Lista Interna ou
Optativo. Neste caso, esta informação deverá ser preenchida com as opções, separadas pelo caractere
"|" (pipe), como, por exemplo: Casado|Solteiro|Viúvo|Outros.

Apelido
Como o próprio nome indica, o apelido (ou alias) é uma maneira abreviada de se referir ao
campo. O Father sugere automaticamente um apelido para o campo em definição, o que pode ser,
naturalmente, modificado por você, se assim o desejar. O apelido será utilizado dentro dos programas
fontes gerados para efetuar referências a este campo.

Tamanho
Esta informação é passada ao Father para a criação, nos programas fontes, de rotina para
controlar a quantidade máxima de dígitos ou caracteres que poderão ser digitadas no campo.

~ 68 ~
MANUAL DO FATHER

Decimais
Caso o campo em definição seja do tipo numérico, você poderá especificar uma quantidade de
casas decimais a ser considerada para este campo. Se for especificado um número de casas decimais
maior do que 0, no tamanho já estará computado a posição da vírgula.

Máscara
Os programas fontes gerados pelo Father são providos de um módulo (classe) para controlar os
caracteres que estão sendo digitados no campo pelo usuário final. Este controle é efetuado segundo a
máscara que estiver sendo aqui definida.

Sequência
Se você dispor nesta informação um número diferente de zero, este campo será incrementado
automaticamente na quantidade especificada, quando for digitado na aplicação final. Os campos que
podem se autoincrementados são os do tipo numérico, data ou, ainda, caractere com máscara para
dígitos numéricos.

Descrição para empresa


Define se o campo será usado para armazenar o nome da empresa. Esta opção estará disponível
se o banco estiver marcado a opção "Multi empresa".

Permitir Nulo
Define se o campo permitirá que sejam gravados valores nulos. Muito utilizado em integridades.

Valor Default
Permite criar um valor default (padrão) para o campo. O valor default é registrado no banco de
dados, e será gravado quando nenhum valor for enviado ao campo.

Invisível
você deverá marcar esta opção se desejar criar um campo invisível dentro da tabela em
definição. Um campo invisível é, normalmente, criado com o objetivo de servir de alvo para
processamentos por meio de outras tabelas. Um campo com atributo invisível nunca poderá ser visto
por usuários, diferentemente da visibilidade estabelecida por condição, na qual a visibilidade está em
função de uma condição que é analisada para cada registro corrente e pode envolver o usuário,
campos de registros de tabelas relacionadas, etc.

Ajuda
Se você desejar apresentar ao usuário da aplicação algum tipo de ajuda específica (dica ou hint)
para o campo, deverá informar a mensagem desejada.

Descrição
Digite uma descrição para o campo.

Diversos campos poderão ser criados para uma tabela. Sempre que terminar a informação para
um campo, você deverá clicar sobre o botão de gravação para salvar as informações digitadas.
Informados todos os campos, você ainda poderá trocar a sua ordem dentro da tabela. Para isto, deverá
selecionar o campo desejado e utilizar as setas qua aparecem à direita da lista, para movimentá-lo
para cima ou para baixo, dentro da lista, alterando a sua posição ou ordem dentro da tabela.

Definindo índices Top Previous Next

Após definir as tabelas, você poderá também definir os seus índices. A definição de índices é
efetuada de maneira semelhante à definição de tabelas e campos, por meio do diálogo da figura
abaixo. Basta clicar sobre a lista de índices e sobre o botão de inclusão. Depois, basta fornecer as
informações adicionais:

~ 69 ~
MANUAL DO FATHER

Nome
Este campo representa a identificação do índice dentro dos programas fontes gerados. O nome
do índice pode conter espaços, acentos e outros caracteres. Alguns caracteres, no entanto, não
poderão constar do nome do campo, pois são utilizados no código fonte a ser gerado, como, por
exemplo, colchetes, exclamação, ponto, etc., sendo vetados automaticamente pelo Father no momento
da digitação.

Título amigável
Ao contrário do campo Nome, esta informação se constitui na identificação do índice para o
usuário final. Durante a operação da aplicação final, o usuário poderá selecionar o índice, por meio
deste nome, a ser utilizado na navegação dentro da tabela. Para habilitar a utilização dos títulos
amigáveis, você deverá marcar a opção Usar títulos amigáveis na aba Miscelânea.

Campos
A partir desta lista, podem ser selecionados os campos que constituirão a chave para o índice em
definição. Uma chave pode ser composta de diversos campos.

Primário
você deverá marcar esta opção, se este índice é de chave primária. Em uma tabela, somente um
índice primário poderá ser definido, não sendo, no entanto, obrigatório. Porém, se um índice primário
for definido, este, obrigatoriamente, deverá ser único (o Father marca automaticamente a opção
seguinte).

~ 70 ~
MANUAL DO FATHER

Único
você deverá marcar esta opção se a chave do índice em definição tem este tipo de atributo.
Diversos índices podem ser definidos como únicos para uma tabela.

Decrescente
No caso de utilização de banco de dados do Access (MDB), para cada campo selecionado na
lista de campos chaves, você poderá marcar se a ordem para o campo será crescente ou decrescente.
Deste modo, podem ser criadas chaves para os índices com diversos campos e direcionamentos
diferentes.

Tipo de índice
Esta opção e a seguinte (FillFactor) só estarão disponíveis no caso de utilização de banco de
dados SQL Server (versão Enterprise do Father). você deverá selecionar uma das opções:

CLUSTERED - Cria um objeto no qual a ordem física dos registros é a mesma da ordem do
índice primário criado e o nível leaf do índice (fundo) contém os dados reais dos registros.

NONCLUSTERED - Cria um índice que especifica a ordem lógica de uma tabela. Com este tipo
de índice, a ordem física dos registros não é a mesma da sua ordem indexada. O nível leaf de um
índice desse tipo contém registros do índice. Cada registro de índice contém o valor da chave
NONCLUSTERED e um ou mais localizadores de registros que apontam para o registro da tabela.

Fillfactor
Esta opção especifica um percentual que indica quanto o SQL Server deve encher o nível leaf de
cada página do índice, durante a sua criação. Quando uma página de índice fica cheia, o SQL Server
precisa ter um tempo para dividir a página do índice a fim de abrir lugar para novos registros, o que é
muito dispendioso. Para uma atualização intensiva de tabelas, um valor de FILLFACTOR bem
estabelecido leva a um ganho de performance.

Invisível
Possibilidade de definir, em tempo de projeto, um índice, entretanto, deixa-lo como invisivel, para
que o usuário não o veja em na opção de procura.

Ordem de índices
Pode-se definir, em tempo de projeto, a ordem que os índices vão aparecer na janela de procura
e na lista de índices da aplicação gerada.

Integridades Top Previous Next

Caso seja necessário, relações de integridade 1-N (pai/filhos) e 1-1 (referências) podem ser
definidas entre as tabelas. Essas relações são utilizadas para efetuar a integridade entre tabelas do
sistema bem como para efetuar integridades de validações onde certo tipo de informação só pode ser
digitada em uma tabela segundo a sua existência em outra. Uma relação é inserida no projeto da
mesma forma que é feita para as definições explicadas nos itens anteriores, observando que a tabela
básica a ser considerada no relacionamento é a tabela que estiver selecionada na lista de tabelas.

Observe a figura abaixo e clique sobre a lista de relações e sobre o botão , inserindo as demais
definições para vincular as tabelas:

~ 71 ~
MANUAL DO FATHER

Título amigável
Informe uma informação que identifica esta relação de integridade dentro do projeto.

Opções 1-1 e 1-N


Selecione o tipo de relação a ser efetuada.

Tabela/Campos estrangeiros
Escolha a tabela a ser relacionada e um de seus campos para sincronizar com a tabela base.

Campos da tabela base


Selecione um dos campos para sincronismo com o campo da tabela estrangeira. Para efetivar o
estabelecimento da integridade entre os campos selecionados, clique sobre o botão de concatenar
exibido a seguir: botão para concatenar definições Se existir mais de um campo definindo a
integridade, selecione os outros campos e pressione novamente este botão acima. O botão limpar,
mostrado a seguir, pode ser utilizado para recomeçar a seleção dos campos da relação de
integridades. botão para limpar definições Para o estabelecimento de uma integridade, você deve levar
em consideração os seguintes aspectos:
neste tipo de relacionamento, os campos dastabelas básica e estrangeira a serem ligadas não

precisam ter os mesmos nomes, mas devem apresentar as mesmas características (atributos).
a tabela estrangeira ou a tabela básica da integridade deverá ter índice primário ou único com os

campos que compõem a integridade.
se a integridade for 1-1, a tabela/campo estrangeiro deverá ter um índice primário ou único pelos
campos selecionados para constituir a integridade. Também, a integridade deve ser efetuada no
sentido da tabela original para a tabela consultada, como, por exemplo, de Saídas de produtos para
• a Tabela de produtos.
se a integridade for do tipo 1-N, a tabela básica da integridade (tabela selecionada na lista Tabelas)
deverá ter um índice primário ou único pelos campos selecionados para constituir a integridade.
Também, a integridade deve ser efetuada no sentido da tabela mãe para a tabela filha, como, por
• exemplo, de Notas para Itens de Notas.

Tipo de Integridade
Para todos os bancos que suportarem tal recurso, é possível definir o tipo de integridade, para
que seja construida utilizando trigger ou constraint.

~ 72 ~
MANUAL DO FATHER

Multi-Empresa Top Previous Next

Na definição da estrutura dos bancos de dados você pode realizar o controle multiempresa para
quaisquer bancos de dados.
Uma vez definido que o banco de dados terá controle multi- empresa, será disponibilizada a
opção para determinar quais tabelas estarão sob esse controle.

Pode-se, portanto, trabalhar com apenas algumas das tabelas de um banco com o controle
interno para multi-empresa. O controle multi empresa disponibilizado no Father é baseado em uma
tabela do banco que será escolhida como sendo a tabela de empresas que também conterá o campo
"Cod~Emp".
Esse mesmo campo será criado de forma automática para todas as tabelas que tiverem o
controle multi empresa definido. Assim que o usuário tentar acessar o sistema será solicitada a
empresa que irá utilizar para trabalhar:
Todos os registros inclusos ou lançados receberão de forma automática o campo Cod~Emp de
acordo com a empresa selecionada;

Ícones da solução Top Previous Next

O Father permite a você definir todos os ícones a serem utilizados na aplicação final. Por
intermédio de uma interface amigável, você poderá visualizar uma estrutura com a indicação onde
cada ícone será utilizado.
Para efetuar a troca de um ícone selecionado, basta proceder conforme segue:

1. Selecione, na estrutura de módulos, o ícone que deve ser trocado;

2. Clique sobre o botão Mudar;

~ 73 ~
MANUAL DO FATHER

3. Escolha o ícone desejado a partir do diálogo apresentado, confirmando sua troca.

O botão Restaura serve para restabelecer as mudanças que tenham sido efetuadas, retornando
as configurações "de fábrica" ou default.
Ao alterar quaisquer um dos ícones da aplicação, você poderá visualizar o ícone selecionado no
painel de preview apresentado na tela de seleção de arquivo que se abrirá, facilitando assim sua
identificação. A opção "Zoom" promoverá o redimensionamento da figura para o tamanho exato do
painel de preview.
O botão Restaura serve para restabelecer as mudanças que tenham sido efetuadas, retornando
as configurações "de fábrica" ou default.
Você ainda tem a opção de definir o diretório de figuras do projeto, bastando indicá-lo no campo
identificado como "Diretório para figuras do projeto" . Vários projetos poderão compartilhar o mesmo
diretório de figuras, o que permite manter uma melhor padronização dos sistemas desenvolvidos, além
de evitar a necessidade de replicar esse diretório para um dos projetos existentes.

Se a opção de botões estilo Internet, na aba intitulada Miscelânea, estiver configurada, a lista de
ícones apresentará também ícones marcados com (Hab) - para serem utilizados em estado normal - e
com (Atv) - a serem utilizados quando o mouse estiver sobre os botões. Assim, os ícones utilizados
marcados com (Atv) devem ser desenhados com cores mais claras, oferecendo o efeito de
"iluminação" do botão.

~ 74 ~
MANUAL DO FATHER

Histórico Top Previous Next

Você terá agora como verificar o histórico de todas as gerações que foram feitas para um projeto,
contendo a informação do número da versão, data e hora de geração, versão e release do Father
utilizada para a geração, além de um comentário descrito por você no momento da geração daquela
versão;

Instalação Top Previous Next

Nesta seção, é possível configurar os parâmetros da instalação da aplicação.

~ 75 ~
MANUAL DO FATHER

Dados genéricos Top Previous Next

Quando uma solução tem mais de um projeto, algumas abas a mais são apresentadas na
definição da solução.

A solução pode também ser um aplicativo, tipo um "centralizador" ou "gerente" onde será possivel
através dele acessar as aplicações. Por este motivo, é apresentada a aba de dados genéricos, onde as
informação sobre os dados constante no aplicativo são solicitados.

Titulo
Informe um título para a aplicação, que será utilizado como título do formulário principal (MDI),
quando a aplicação estiver sendo executada.

Nome executável (EXE)


Informe um nome para o programa executável da aplicação, sob o qual ela será ativada dentro do
ambiente Windows.

Nome da empresa
Informe o nome da empresa ou softwarehouse que desenvolve este projeto.

Analista/projetista
Informe seu nome ou o nome do Analista/projetista

Email
Informe o endereço de email. Este endereço é utilizado caso ocorra algum erro na aplicação,
quando o usuário clicar no botão para "Notificar o desenvolvedor".

Descrição do projeto
Digite informações sobre o projeto para que seja utilizada na documentação, gerada pelo Father.

Miscelânea Top Previous Next

Módulos extras: O Father permite a você adicionar, a um projeto, módulos (.BAS), formulários
(.FRM) e classes (.CLS). Por exemplo, você poderá adicionar a um projeto do Father um módulo no
qual já tenha escrito diversas funções e procedures para outras aplicações. Formulários também
poderão ser adicionados pelos mesmos motivos ou, ainda, para aproveitamento de interfaces. O

~ 76 ~
MANUAL DO FATHER

reaproveitamento de classes também poderá ser efetuado.

Quando um item .FRM, .BAS ou .CLS é inserido no projeto, o Father faz uma cópia deste item
para o diretório do projeto. No caso de inserção de formulário, qualquer arquivo .FRX a ele associado,
que porventura exista, também será copiado;
Objetos ou controles externos disponibilizados sobre formulários possuem referências que são
dispostas pelo Visual Basic no arquivo de definição do projeto .VBP. Se estiver adicionando um
formulário a um projeto do Father, certifique-se de que este formulário contenha somente controles
nativos do Visual Basic, pois as referências a controles externos não serão dispostas no arquivo .VBP
gerado pelo Father;
A única providência do Father com respeito a módulos adicionais é a inserção de sua referência
no arquivo de definição do projeto, de extensão .VBP, para ser carregado pelo Visual Basic;
Diferentemente de formulários avulsos e formulários existentes, que podem ser inseridos na
árvore do projeto para figurar opcionalmente no menu (veja tópico Integrando um formulário existente
ao projeto), os itens adicionais que são aqui anexados ao projeto não aparecem no menu da aplicação.
Qualquer chamada a funções ou apresentação de formulários na aplicação é de responsabilidade
exclusiva do projetista, que deverá programar esses eventos na propriedade "Ação no clique" de um
botão já existente na barra de ferramentas ou de um outro botão qualquer que seja disponibilizado na
barra ou nas telas para este fim;
Caso haja modificações nesses itens fora do diretório da aplicação, você deverá ter o cuidado de
copiá-los novamente para o diretório da aplicação, para atualizá-los. Em se tratando de formulário
(.FRM), deve-se copiar também arquivo .FRX a ele associado, caso exista.

Referências
O Father permite a você adicionar qualquer controle externo a seu projeto, seja ele criado pela
Father, por ele mesmo ou por terceiros. Isto abre um grande leque de possibilidades para uso e
inclusão de itens anteriormente não suportados pelo Father: HookMenus, componentes de músicas,
componentes de relatórios, grids, trees, progressbar.

Senha default da aplicação


Neste frame você poderá definir uma senha padrão, que será utilizado em todos os projetos da
solução. Essa opção dá a você a possibilidade de determinar o primeiro usuário e senha com o qual
será possível acessar o aplicativo gerado. Caso você queira, após instalado o aplicativo final gerado,
modificar a senha ou mesmo excluir o usuário aqui definidos, bastará acessar o plano de senhas
daquele aplicativo. Com a opção "usar plano de senhas" marcada, a solução utilizará o plano de
senhas para centralizar o cerceamento e liberações definidas no plano de senhas.

~ 77 ~
MANUAL DO FATHER

Chave encriptação
Em uma solução multi-projetos, é possível definir uma chave de encriptação que será utilizada
em todas as aplicações.

Default procura
Selecione uma das opções de operador para a execução das pesquisas de registros na aplicação
final, quando o usuário desejar procurar registros nas tabelas.

Opções
Dentro deste frame, você deverá marcar as opções para a geração da aplicação:

Comentários
Habilita a exibição de comentários explicativos nas linhas de código.

Deixar na senha
Marcando esta opção, os programas fontes conterão uma rotina que permitirá que a aplicação,
ao ser abandonada pelo usuário, fique estacionada na tela de solicitação de senha (caso esteja provida
deste recurso). Esta opção é útil para aplicações de ponto de vendas (PDV), onde diversos vendedores
utilizam a mesma estação da rede.

Sistema multiusuário
Marcando esta opção, o Father criará nos programas fontes todos os controles necessários aos
bloqueios de tabelas e registros, onde se fizer necessário.

Incrementar versão
Se selecionada, essa opção provoca, a cada nova geração dos programas fontes, o incremento
automático da release (número de revisão) do projeto, viabilizando a você um melhor controle da
versão do mesmo. Para maiores informações sobre o controle de versão do projeto, consulte o tópico
Geração de programas fontes.

Código nativo
Se esta opção estiver marcada, o Father passará ao Visual Basic a informação de que a
compilação do projeto é para ser feita gerando código nativo. Se estiver desmarcada, o código gerado
nas compilações será P-Code ou pseudo-código. Deve-se observar que a geração de código nativo
pelo Visual Basic é mais demorada, criando código consideravelmente maior, ainda que mais rápido e
eficiente.

Usar títulos amigáveis


Se marcada, essa opção habilitará o uso do recurso de título amigável para os campos, tabelas
eíndices. Esse recurso facilita a identificação desses itens quando a aplicação estiver sendo executada
pelo usuário final, inclusive em grids (consultas, etc).

Botões estilo internet


Permite que os botões inseridos tenham o estilo internet.

~ 78 ~
MANUAL DO FATHER

Hints
Você pode definir se na sua aplicação terá a ajuda on-line sobre cada campo que o usuário
posicionar o cursor.

Estilo balão
Caso esteja selecionada, essa opção habilitará o uso de ajuda (hint) no formato de balão para os
campos.

Cor frente e Cor fundo


você poderá ainda determinar as cores de frente (texto) e fundo para os hints, bastando alterá-las
apropriadamente.

Endentação
Informe a quantidade de caracteres para endentar os programas fontes, ou seja, a quantidade de
espaços a ser utilizada para formatar as estruturas da linguagem Visual Basic.

Aplicar filtro automaticamente nos Grids


Permite que filtros pré-definidos sejam utilizados nos Grids de forma automática.

Atualizar dados ao abrir listas externas


Habilita a atualização dos dados quando listas externas forem utilizadas.

Usar resources (RES)


Habilita o uso de resources para a aplicação.

Permitir abertura de múltiplas janelas


Habilita a exibição de várias janelas no caso de vários projetos em uma mesma solução.

Criando uma Tela inicial Top Previous Next

É comum, nas aplicações Windows, a utilização de uma janela mais elaborada, com uma imagem
ligada ao contexto da aplicação para ser exibida ao usuário antes que apareça a sua janela principal.
Mais do que uma simples tela de apresentação, na verdade, é uma técnica ou artifício chamado splash
screen utilizado para permitir a carga inicial da aplicação, em background, o que, às vezes, pode ser
demorada devido à abertura de bancos de dados, carga de formulários, configurações, etc., expondo
algo agradável para o usuário. A utilização desta técnica passa a impressão de que a aplicação é
instantaneamente carregada assim que a tela inicial desaparece. Uma imagem pode ser utilizada como
tela de apresentação ou splash screen da aplicação, sendo definida por meio da aba intitulada "Tela
Inicial", na definição do projeto, conforme mostrado na figura abaixo.

~ 79 ~
MANUAL DO FATHER

Inserindo uma nova figura Top Previous Next

Para inserir uma figura na tela inicial basta clicar sobre o botão em destaque abaixo.

~ 80 ~
MANUAL DO FATHER

Em seguida, abra a pasta onde está o arquivo de figura que será usado e selecione-o.

Se a opção "Zoom" estiver marcada, será possível visualizar a figura.

Você ainda tem a opção de utilizar um diretório único de figuras para todos os projetos, o que
permite manter uma melhor padronização dos sistemas desenvolvidos, além de evitar a necessidade
de replicação desse diretório para cada um dos projetos existentes. Esse recurso é especialmente
válido para utilizar a mesma tela inicial em todos os projetos. Para definir o diretório unificado de
figuras para os projetos, basta indicá-lo no campo identificado como "Diretório para figuras do projeto",
disponível na aba Ícones da Definição da solução.

~ 81 ~
MANUAL DO FATHER

Removendo uma figura Top Previous Next

Para remover a figura, utilize o botão "Remover" em destaque na figura abaixo:

Alterando o tamanho da tela inicial Top Previous Next

Para alterar o tamanho da tela inicial, basta utilizar a barra de rolagem para estabelecer o
percentual em relação ao tamanho total da tela que deverá ocupar.

Cores e aspecto da moldura Top Previous Next

O aspecto da moldura utilizada para apresentar a tela inicial pode ser configurada, alterando-se
os valores das opções:

~ 82 ~
MANUAL DO FATHER

Você pode selecionar o tipo de moldura na lista:

E o botão para selecionar a cor desejada.

Formatando a tela da solução Top Previous Next

Para formatar a tela automaticamente, pressione <ALT> + T.

A seguinte mensagem será exibida:

Ao clicar em "OK", os controles serão inseridos automaticamente, de acordo com a


disponibilidade dos campos na tabela básica da página.

Gerenciamento de projetos Top Previous Next

Além de gerenciar os projetos, o módulo de solução pode ser usado para gerar fontes de
um aplicativo, que controle os outros executáveis e as rotinas globais a todos os outros
projetos.
Top Previ
Formatando a tela do projeto ous Next

Para formatar a tela do projeto você pode incluir botões com ações para determinadas
funcionalidades, inserir uma imagem no fundo e também inserir um logotipo para o projeto. Consulte
os tópicos seguintes para detalhes.

Desenhando barra de ferramentas Top Previous Next

O Father disponibiliza na aplicação final uma barra de ferramentas contendo todos os botões e
objetos necessários ao seu funcionamento. No entanto, se você desejar, poderá reconfigurá-la
totalmente, por meio do Editor de Telas que serve tanto para a formatação da barra de ferramentas
quanto para a formatação de telas para as janelas de dados, conforme descrito no tópico Utilizando o
Editor de Telas, neste manual. Para executar a formatação da barra de ferramentas, proceda
conforme se segue:

Selecione o Título do Projeto:

~ 83 ~
MANUAL DO FATHER

Selecione "Editar/Formatar tela" no menu ou clique sobre o botão de formatação de tela ,


existente na barra de ferramentas do Father ou clique com o botão direito do mouse sobre o módulo e
escolha a opção "Formata tela".

Isto ativará o Editor de Telas do Father. A janela da figura a seguir é apresentada como default
para a formatação da barra de ferramentas da aplicação.

Ação para um botão Top Previous Next

Os novos botões criados por você durante a formatação da barra de ferramentas ou das
janelas de dados não possuem quaisquer ações préprogramadas. Já os botões possíveis de serem
inseridos na barra de ferramentas da aplicação (aqueles que o Father oferece) têm funções
préprogramadas geradas pelo Father, segundo a sua finalidade específica. Em qualquer desses
tipos de botões, se você desejar, poderá elaborar, em sua propriedade "Ação no clique", uma
função para ser executada da seguinte maneira:

1. Selecione o botão desejado, que tanto pode ser um novo botão quanto um dos pré-
programados que o Father oferece;

~ 84 ~
MANUAL DO FATHER

2. Selecione a propriedade "Ação no clique" deste botão, na janela Ferramentas da tela;

3. Ative o Editor de Programas através de um duplo clique na linha "Ação no clique";

A seguinte mensagem irá aparecer:

4. Clique em ;

5. Insira a função desejada no Editor:

No caso dos botões normais da barra de ferramentas, que já possuem uma função específica,

~ 85 ~
MANUAL DO FATHER

a rotina que você escrever para associar à propriedade "Ação no clique" será executada somente
se a função pré-programada for executada com sucesso.

Apesar dos aplicativos gerados apresentarem interface MDI, os botões que possuem funções
pré-programadas pelo Father e presentes na barra de ferramentas do aplicativo final podem ser
disponibilizados livremente nos formulários do referido aplicativo. Com o Father, tais botões
préprogramados serão automaticamente habilitados/desabilitados de acordo com o status das
opções de menu/barra de ferramentas do MDI.

No que se refere a chamadas a janela de dados por meio de uma Ação no clique de botão,
pode-se, inclusive, efetuar as mais diversas filtragens necessárias, de forma que sejam
apresentados somente os dados convenientes.

Em se tratando do botão de abandonar a aplicação (sair), a função escrita por você será
disponibilizada na sub-rotina QueryUnload do formulário principal, que é o penúltimo fragmento de
código executado pela aplicação, antes de retornar ao Windows.

Botão Sair da aplicação

As Ferramentas da tela também aparecem ao lado do Editor de Telas. As ferramentas podem


ser ocultas e exibidas através do atalho <F4>.

Ao formatar a barra de ferramentas da aplicação, você estará, na verdade, definindo não só a


sua funcionalidade como também a sua aparência final. A barra de ferramentas poderá estar alinhada
em qualquer posição da janela principal e poderá conter os botões que você desejar oferecer ao
usuário, nas posições que julgue conveniente. Usando o Editor de Telas, você poderá:

• Selecionar um controle ou a própria barra de ferramentas, clicando com o mouse;


Selecionar mais de um controle de uma só vez, utilizando o clique do mouse com a tecla <Ctrl>
• pressionada;
Designar propriedades para controles selecionados, por meio da lista de propriedades. O
• tópico Propriedades dos objetos de tela trata exclusivamente dessas propriedades;
Alterar a posição de um ou mais controles selecionados, utilizando a função arrasta e solta (drag
• and drop) do mouse ou por meio das teclas CTRL + Setas;

~ 86 ~
MANUAL DO FATHER

Alterar o tamanho de um ou mais controles selecionados, utilizando o mouse ou as teclas


• SHIFT + Setas ou diretamente na lista de propriedades;
Você pode também adicionar outros controles na sua barra de ferramentas. Os controles extras
estão disponíveis na Lista de Controles nas Propriedades. Os controles que não estão marcados
• podem também ser disponibilizados, basta selecioná-los. Observe:

Disponibilizar, na tela, o controle "Contador de Registros", que apresenta a quantidade de


registros existente em uma tabela ou consulta selecionada na aplicação final. Para utilizar este objeto,
basta inserí-lo na barra de ferramentas. Este objeto tem diversas propriedades que podem ser
designadas;

Atenção especial deve ser dispensada à propriedade Título deste objeto, que terá que conter,
obrigatoriamente, o caractere # , a ser substituído pela quantidade de registros existente na tabela ou
consulta, quando a aplicação final estiver sendo executada.

Você pode exibir e ocultar os controles, ao marcar e desmarcar seus respectivos nomes na lista
exibida acima.

Menu Pop-up em botões Top Previous Next

Você pode inserir menus de atalho nos botões. Cada opção de menu pode ter também sua
ação personalizada.

1. Com o botão selecionado, clique no segundo botão extensor da propriedade "Ação no


clique";

A seguinte tela é exibida.

~ 87 ~
MANUAL DO FATHER

2. Digite um título para a opção de menu.

3. Clique em para adicionar outra opção de menu.

4. Clique em para apagar a opção de menu.

5. Para personalizar uma função para a opção de menu, dê um clique duplo no título inserido e
o Editor de Programas será exibido:

~ 88 ~
MANUAL DO FATHER

Inserindo logotipo Top Previous Next

Você também pode selecionar um logotipo para sua aplicação:

Preencha as seguintes propriedades conforme desejar:

Título do Logotipo Top Previous Next

Informe a frase que será exibida no logotipo à esquerda da janela.

Fonte do Logotipo Top Previous Next

Selecione a fonte a ser utilizada para exibir o título. Somente fontes do tipo true-type podem ser
selecionadas.

Largura do Logotipo Top Previous Next

Informe a largura a ser aplicada no logotipo.

Cor inicial do Logotipo Top Previous Next

Selecione a cor inicial para a formação do efeito dégradé do logotipo.

Cor final do Logotipo Top Previous Next

Selecione a cor final para a formação do efeito dégradé do logotipo.

Inserindo imagem no fundo Top Previous Next

Um padrão de textura ou imagem pode ser disposto nas janelas da aplicação, ajustando-se a
propriedade Textura com um nome de arquivo existente. A propriedade Exibir textura também poderá
ser manipulada para alterar a disposição da figura definida como textura.

~ 89 ~
MANUAL DO FATHER

Inserindo figura transparente Top Previous Next

Uma figura transparente pode ser disposta nas janelas da aplicação, ajustando-se a propriedade
Figura transparente com um nome de arquivo existente.

O Father tomará a cor do primeiro pixel da figura como sendo a cor de transparência.

Encolhendo e expandindo módulos Top Previous Next

Os módulos que possuem submódulos apresentam um pequeno quadrado à esquerda com os


sinais de mais e menos. O sinal "+" surgirá quando os seus submódulos não estiverem visíveis e o
sinal "-" quando seus submódulos estiverem visíveis. Você pode clicar no sinal + ou - para expandir ou
para recolher o módulo, respectivamente.

Observe a figura abaixo:

~ 90 ~
MANUAL DO FATHER

Definindo módulos Top Previous Next

Uma vez que um módulo tenha sido inserido na árvore do projeto, é necessário efetuar a sua
definição. Para definir um módulo existente na árvore, selecione as opções de menu "Editar/Definir" ou
clique diretamente sobre o botão de propriedades existente na barra de ferramentas, caso esta esteja
visível ou, ainda, clique com o botão direito do mouse sobre o módulo, selecionando a opção "Define o
módulo selecionado".

Módulo "Menu" Top Previous Next

Este tipo de módulo é bastante fácil de definir. Serão necessárias ao Father apenas duas
informações, como mostra a interface da figura abaixo:

~ 91 ~
MANUAL DO FATHER

Título do menu: Refere-se ao texto que aparecerá no menu oferecido ao usuário. O caractere "&"
poderá ser utilizado para criar o atalho para esta opção de menu. A letra que precede este caractere
• será o atalho e aparecerá sublinhada no menu.

Nome do controle: É um nome utilizado para referenciar este item de menu dentro dos programas
• fontes.

Visível: Informe uma condição que, se avaliada como verdade, permitirá que o usuário visualize este
módulo no menu. Este recurso pode ser utilizado para cercear módulos a certos usuários, em
sistemas multi-usuário com plano de senhas. Para a entrada desta informação, você poderá utilizar
tabelas, variáveis, constantes ou funções globais do sistema ou mesmo o Editor de Programas
• Interno do Father.
Se preferir, você pode inserir a opção "False" para que o menu não seja visível durante a
execução da aplicação.

Pré-validação: Informe uma condição que, se avaliada como verdade, permitirá ao usuário acessar o
item de menu (visível) referente a essa janela de dados. Essa condição está submissa à condição de
visibilidade definida no item anterior. Assim como aquele, este recurso pode ser também utilizado
para cercear módulos a certos usuários, em sistemas multi-usuário com plano de senhas. Para a
entrada desta informação, você poderá utilizar tabelas, variáveis, constantes ou funções globais do
• sistema ou mesmo o Editor de Programas Interno do Father.

Atalho: Trata-se da tecla escolhida para que ao pressionada ative o módulo em questão. É exibido
• uma lista contendo todas as teclas possíveis para se utilizar como atalho para este módulo.

Criar lista de janelas: Marque se, neste menu, estará vinculada a lista de janelas abertas. Em
aplicações MDI, é comumente necessário que um dos menus da aplicação contenha a lista das
janelas que estão abertas na área de cliente da aplicação, de forma a facilitar o acesso às mesmas
pelo usuário. Todo formulário que é aberto na área de cliente, é adicionado automaticamente nesta
lista, sendo removido no momento em que o usuário fechá-lo. O Father dispõe, por default, esta lista
• no menu Janelas, que é disposto na árvore do projeto.

Em vista de somente um dos menus poder conter esta lista, a marcação desta opção para uma
janela desmarca, automaticamente, aquela que tiver sido efetuada anteriormente em outro menu.

~ 92 ~
MANUAL DO FATHER

Janela de dados Top Previous Next

O módulo do tipo Janela de Dados, além de ser o que mais comumente aparece na árvore do
projeto, é o que requer maiores detalhes para ser definido. Sua definição é efetuada em cinco etapas,
na interface da acima. Após a definição de um módulo do tipo Janela de Dados, é necessário executar
a formatação da tela de digitação para esta janela.

Geral: Na primeira aba da interface de definição de uma janela de dados, os aspectos gerais podem
• ser definidos.
Titulo do Menu: Deve ser informado o titulo do menu para este modulo. Este titulo facilitará a
identificação deste modulo durante o desenvolvimento do seu projeto. É o texto que aparecerá no
• menu da aplicação para disponibilizar esta opção ao usuário final.
• Titulo da Janela: É o texto a ser utilizado no título da janela de entrada de dados.
Nome do Modulo: Corresponde ao nome do arquivo, de extensão .FRM, no qual serão gravadas as
• informações das definições deste módulo ou formulário.
Banco/Esquema: Deve ser informado qual o banco de dados ou esquema, está a tabela que irá se
utilizada neste módulo. É o nome de um dos bancos de dados ou esquema definidos para a
• aplicação.
Tabela básica: É uma das tabelas já definidas no projeto, quando da definição da estrutura do banco
de dados, que servirá como base para esta janela de dados. Basta selecionar uma das tabelas
• existentes na lista.
Apelido: É uma variável utilizada para se referir à tabela básica aberta dentro dos programas fontes
gerados. Este apelido deve ser utilizado preferencialmente em processos pré-definidos, tabelas em
grid e relatórios. Em janelas de dados (pai), deve-se usar a variável vgTb como apelido da tabela
• básica do módulo.
• Dentro da aba geral, algumas opções podem ainda ser selecionadas se necessário:
Módulo pronto: Marque somente quando todas as definições para este módulo estiverem
completamente prontas. Isto informará ao Father que as rotinas deste módulo poderão ser geradas,
• quando for solicitada a geração de programas fontes.
Não gerar este módulo: Esta opção existe em todos os tipos de módulos e serve para você dizer ao
Father para não gerar mais os programas deste módulo, a fim de ganhar tempo. Isto poderá ocorrer
• quando já tenham sido gerados pelo menos uma vez e caso não haja modificações.
Cupom fiscal: Marque essa opção se esse módulo irá se comportar como emissor de cupom fiscal.
Vale lembrar que, além dessa opção marcada, diversas propriedades devem ser ajustadas durante a
formatação da janela de dados para que a emissão funcione corretamente. Uma vez marcada esta
• opção, este módulo só servirá para a inclusão de registros, ficando desabilitadas e ignoradas as

~ 93 ~
MANUAL DO FATHER

outras opções.
Sempre preservar este item: Marque essa opção, quando desejar efetuar uma alteração manual no
código fonte, diretamente pelo VB, e não quiser mais que o Father gere os fontes deste módulo,
preservando o que você fez. Desta forma, o Father irá ignorar a geração deste módulo, e usar
• sempre o código que você alterou e gravou na respectiva pasta, com o mesmo nome do formulário.
• Opções "Permitir": Estas opções quando marcadas, habilitam o modulo a permitir a opção desejada.
Não vincular a dados: Com esta opção marcada, o formulário será aberto sem efetuar a abertura do
banco de dados. Desta forma, o acesso ao banco de dados não será feito no momento da abertura.
Isto dá um ganho de velocidade, principalmente em aplicações cujo banco de dados está sendo
acesso em um local remoto, na internet, ou com bases de dados que contém muitos registros. Em
formulário cujo interesse seja apenas a inclusão de registros, esta opção é muito interessante, pois
• trará um ganho enorme de velocidade na abertura.
Aba Menu - Nesta aba, serão adicionado informações sobre o menu disponibilizado em sua
• aplicação para acesso ao módulo que está sendo definido.
Nome do controle: É um nome utilizado para referenciar este item de menu dentro dos programas
• fontes.
Ocultar: Esta opção existe em alguns dos módulos inseridos na árvore, como, por exemplo, janelas
• de dados, relatórios, etiquetas, etc. Se estiver marcada, este módulo não irá aparecer em menus.
Visível: Informe uma condição que, se avaliada como verdade, permitirá que o usuário visualize este
módulo no menu. Este recurso pode ser utilizado para cercear módulos a certos usuários, em
sistemas multi-usuário com plano de senhas. Para a entrada desta informação, você poderá utilizar
tabelas, variáveis, constantes ou funções globais do sistema ou mesmo o Editor de Programas
• Interno do Father.
Pré-validação: Informe uma condição que, se avaliada como verdade, permitirá ao usuário acessar o
item de menu (visível) referente a essa janela de dados. Essa condição está submissa à condição de
visibilidade definida no item anterior. Assim como aquele, este recurso pode ser também utilizado
para cercear módulos a certos usuários, em sistemas multi-usuário com plano de senhas. Para a
entrada desta informação, você poderá utilizar tabelas, variáveis, constantes ou funções globais do
• sistema ou mesmo o Editor de Programas Interno do Father.
Atalho: Trata-se da tecla escolhida para que ao pressionada ative o módulo em questão. É exibido
• uma lista contendo todas as teclas possíveis para se utilizar como atalho para este módulo.
Identificação do Formulário: A moldura intitulada Identificação mostra duas informações relevantes
• que podem ser utilizadas nos programas fontes para identificar um formulário:
Nome do formulário: É um nome montado pelo Father, a partir do nome do módulo informado por
você, para referenciar este formulário dentro dos programas fontes por meio da propriedade Name
• ou referenciando-se diretamente ao objeto por essa identificação.
Número do formulário: É um número criado para identificar o formulário dentro dos programas fontes
• por meio da propriedade vgFormID, que o Father cria para este formulário.

Quando necessária a identificação de formulários, o Father utiliza essas informações nos


programas fontes, da seguinte maneira:
IF ActiveForm.Name = "frmProdutos" Then ...
ActiveForm.Left = 0
...
IF ActiveForm.vgFormID = 6 Then ...
ActiveForm.Left = 0
...
ou ...
IF Not frmProdutos is Nothing Then ...
frmProdutos.Left = 0
...
Alguns formulários são constantes nas aplicações, sendo gerados automaticamente pelo Father,
por exemplo, o formulário para montagem de consultas, o de filtragem, informações de banco de
dados, senhas, etc. Nestes casos, os seus nomes e números identificadores já estão fixados na forma
que aparecem na tabela a seguir:

Nome Número
mdiXXXX.frm 1
Browse.frm 2
ConfGraf.frm 3
Grafico.frm 4
Help.frm 5
InfoDB.frm 6
MontaSQL.frm 7

~ 94 ~
MANUAL DO FATHER

Procura.frm 8
Relat.frm 9
SelQuery.frm 10
Senhas.frm 11
Sobre.frm 12
Apresent.frm 13
Controle.frm 14
Filtra.frm 15
Gauge.frm 16
GMCalc.frm 17
Cale.frm 18
EcfAux.frm 19
EcfCanc.frm 20
EcfDesc,frm 21
EcfPgto.frm 22
FrmMM.frm 23
Preview.frm 24

Uma vez definida esta primeira aba - Geral, você poderá gravar ou cancelar as informações
digitadas, clicando sobre os botões correspondentes.

• Tabelas Auxiliares

A aba representada serve para forçar a abertura e disponibilização de outras tabelas (tabelas
estrangeiras) definidas no projeto, para serem consultadas, processadas ou, ainda, para servirem de
alvo de lançamentos a partir da digitação de informações na tabela básica definida na aba anterior.

Para inserir uma tabela auxiliar na lista, proceda conforme se segue:

• Clique sobre o botão intitulado Adiciona, para adicionar uma tabela auxiliar;
• Selecione a tabela desejada a partir da lista intitulada "Tabela auxiliar";
• Selecione um dos índices para a tabela escolhida, a partir da lista intitulada Índice;
Escolha um campo para unir a tabela básica à nova tabela auxiliar adicionada, a partir da lista
apresentada. Na área intitulada "Ordem dos campos", aparecem, em sequência, os campos
escolhidos para a união das tabelas. O botão Limpa pode ser utilizado para reinicializar as
• informações desta área;

Se a opção "Forçar relacionamento" estiver marcada, o Father criará rotina na aplicação para
tentar posicionar no registro da tabela estrangeira. Esta operação é necessária se um processamento
será definido nesta tabela auxiliar, para que seja modificado o registro correto. Já no caso de um
lançamento, este posicionamento é desnecessário, pois as modificações serão efetuadas sempre
sobre o novo registro que é criado.
Se o relacionamento estiver sendo forçado (opção "Forçar relacionamento" marcada), você
poderá, ainda, marcar a opção Criticar. Neste caso, o Father criará rotina na aplicação para apresentar
a mensagem definida no campo "Mensagem de crítica", caso não consiga fazer orelacionamento
durante a execução.
Lembre-se que, se esta tabela auxiliar estiver sendo aberta como alvo de um lançamento, este
lançamento só será executado após a inclusão do registro na tabela básica (origem do lançamento)
razão pela qual deve-se ter um cuidado especial com a opção Criticar, pois ela será executada antes
que o lançamento seja efetivado. Na maioria dos casos, as tabelas auxiliares que sejam alvo de

~ 95 ~
MANUAL DO FATHER

lançamentos devem estar com esta opção desmarcada.

• Lançamentos

Se você relacionou uma ou mais tabelas auxiliares, a interface estará habilitada para a definição
de lançamentos. Para criar um lançamento em uma tabela auxiliar, proceda conforme se segue:
• Clique sobre o botão para criar um novo lançamento;
• Digite uma identificação para o lançamento no campo denominado Título;
• Selecione, na lista intitulada "Tabela alvo", a tabela que irá receber o lançamento.

Lembre-se que este lançamento só será executado após a inclusão do registro na tabela básica
(origem do lançamento) razão pela qual deve-se ter um cuidado especial sobre o modo como foi
aberta esta tabela-alvo (na aba "Tabelas auxiliares"), no que diz respeito à opção Criticar, pois esta
crítica será executada antes que o lançamento seja efetivado. Na grande maioria dos casos, as
• tabelas auxiliares que serão alvo de lançamentos devem estar com a opção Criticar desmarcada.
Informe, no campo Quantidade, a quantidade de lançamentos que deverá ser efetuada. Observe que
• este valor pode ser informado, por você, de diversas formas:
• Informando diretamente um número;
• Informando uma variável que tenha criado e designado;
• Capturando um campo qualquer do banco de campos;
• Informando uma fórmula que envolva um ou mais campos;
Invocando o Editor do Father (duplo clique no campo ou por meio do botão presente na barra de
ferramentas) para elaborar uma função que retorne um valor a ser utilizado. Esta flexibilidade é útil,
por exemplo, quando são efetuados diversos lançamentos em uma tabela, de acordo com o número
• de parcelas de pagamento de mercadorias.
Conforme o caso exigir, marque a opção "Excluir lançamento", para que o Father crie rotinas na
aplicação final para apagar o registro alvo do lançamento, quando o registro que o gerou for
• apagado;

Se desejar, você pode estabelecer duas condições envolvendo o lançamento em definição:

~ 96 ~
MANUAL DO FATHER

Para que o lançamento seja efetivado. Esta condição pode ser estabelecida preenchendo-se o
campo "Condição de inclusão de lançamento", utilizando os mesmos recursos existentes para a
criação das validações e prévalidações explicadas anteriormente neste tópico. Uma vez estabelecida
1. uma condição, o lançamento só será criado quando esta condição for atendida;
Para que o lançamento seja retirado. Esta condição pode ser estabelecida preenchendo- se o campo
intitulado "Condição de exclusão", utilizando aqueles mesmos recursos. Uma vez estabelecida uma
2. condição, o lançamento só será retirado se a mesma for atendida;

Finalmente, fazendo uso da coluna "Expressão a ser colocada no campo alvo", para cada campo
alvo, estabeleça uma expressão para processálo. Esta expressão pode ser definida utilizandose o
banco de campos ou mesmo invocando o Editor do Father para elaborar uma função para retornar o
• valor desejado.

Quando o campo alvo do lançamento for um campo sequencial, deve-se utilizar a função
PegaSequencia, exemplificada a seguir, para que o mesmo seja incrementado automaticamente; caso
contrário, ele não será incrementado.
PegaSequencia([Nome BD],"<Nome Tab Alvo do Lançam>", "<Nome Campo
Alvo>", Default, <Incremento>)
O parâmetro "Nome BD" só será utilizado se existir mais de um banco de dados envolvido. Para
remover da lista um lançamento que tenha sido criado, basta selecioná-lo, clicar sobre o botão Remove
e confirmar a sua exclusão. Quando existir mais de um lançamento, a ordem de execução dos mesmos
é determinada pela sua ordem na lista de lançamentos. Por isso, se desejar modificar esta ordem,
utilize as setas (para cima e para baixo) que aparecem ao lado da lista de lançamentos.
Em toda janela de dados inserida no projeto cuja tabela básica seja alvo de lançamento, o Father
cria uma variável de sistema como propriedade do form, de nome vgRegLancado, para controlar se o
registro presente na janela (registro corrente) foi criado por um lançamento (não foi digitado). Durante a
execução da aplicação, esta variável é inicializada a cada vez que um novo registro se torna corrente
na janela e você poderá, em validações, pré-validações, condições especiais, etc., consultar o seu
valor. Para maiores detalhes, consulte o tópico Variáveis de Sistema neste manual.

• Processos

Caso você tenha definido tabelas auxiliares relacionadas, a interface da figura abaixo estará
disponível para que se possa definir processamentos naquelas tabelas. A definição de processamentos
é muito semelhante à definição de lançamentos, explicado no item anterior. A principal diferença é que,
no lançamento, um registro novo é criado na tabela alvo e seus campos são modificados. Já no
processamento, um registro deverá ser localizado e posicionado na tabela alvo para que um ou mais
de seus campos sejam modificados.

Desenhando telas para entrada de dados Top Previous Next

Uma vez que uma janela de dados tenha sido inserida na árvore e esteja totalmente definida, é
necessário desenhar a sua janela de entrada de dados. O Father possui um Editor de Telas
especialmente criado para permitir a você uma completa liberdade de formatação das telas de
entrada de dados. Para um completo detalhamento da sua utilização, consulte o tópico Editor de
Telas.
Durante a formatação de telas para digitação, botões podem ser criados e posicionados na tela
para executar uma ação qualquer que você venha a definir.

~ 97 ~
MANUAL DO FATHER

Inserindo campos na tela Top Previous Next

A formatação da tela de uma janela de dados consiste basicamente na disponibilização de


objetos para receber os campos definidos na tabela básica. Para disponibilizar campos na tela de
entrada de dados, proceda da seguinte forma:

• Clique sobre o painel de fundo para selecioná-lo;


• A partir da janela de Ferramentas da tela, selecione o campo desejado.

Ao clicar sobre o nome do campo, um objeto é disponibilizado sobre o painel de fundo


previamente selecionado. A partir daí, você poderá utilizar o mouse para posicionar este campo,
arrastando-o para a posição desejada, modificar suas dimensões, etc. Consulte o tópico Editor de
Telas para um detalhamento mais completo dessas operações. Dependendo do tipo de campo, o
Father dispõe de objetos variados, segundo a necessidade.
desenhar a sua janela de entrada de dados. O Father possui um Editor de Telas especialmente
criado para permitir a você uma completa liberdade de formatação das telas de entrada de dados.
Para um completo detalhamento da sua utilização, consulte o tópico Editor de Telas.
Durante a formatação de telas para digitação, botões podem ser criados e posicionados na tela
para executar uma ação qualquer que você venha a definir.

Os passos para a definição de um processo são os seguintes:


• Clique sobre o botão para criar um novo processamento;
• Identifique o processamento, preenchendo o campo de nome Título;
Selecione, por intermédio da lista intitulada "Tabela alvo", a tabela-alvo na qual o processamento
• será efetuado;
• Selecione o campo-alvo, ou seja, um campo da tabela-alvo que deverá sofrer o processamento;

~ 98 ~
MANUAL DO FATHER

Se necessitar, você poderá executar o processamento em definição antes que os dados sejam
gravados efetivamente, devendo para isso marcar a opção "Executar antes de gravar o registro
• efetivamente".

Essa opção abre um enorme leque de possibilidades no que se refere à execução do


processamento, sendo este executado antes do primeiro update da tabela básica. Essa opção é
habilitada somente se o processamento for efetuado sobre a tabela básica da janela de dados, visto
que nas tabelas auxiliares, essa opção não tem motivo para ser utilizada; • se desejar, você poderá
utilizar o campo intitulado "Condição para fórmula direta" e estabelecer uma condição para que o
processamento seja efetivado. Esta condição pode ser estabelecida utilizando-se os mesmos recursos
existentes para a criação das validações e pré-validações, explicadas anteriormente neste tópico. Uma
vez estabelecida uma condição, o processamento só será executado quando esta condição for
atendida;

Informe, no campo intitulado "Fórmula direta", uma fórmula ou expressão para ser inserida no
campo-alvo durante a inclusão de registros na tabela básica. As mesmas facilidades do Banco de
• Campos e Editor de Programas estão disponíveis para você estabelecer esta expressão;
Caso seja necessário, utilize o campo "Condição para fórmula inversa" e estabeleça uma condição
• para que a fórmula inversa, a ser definida, seja executada.
Informe, no campo intitulado "Fórmula inversa", uma expressão para ser executada quando ocorrer
exclusão de registros na tabela básica. Esta fórmula ou expressão deverá ser exatamente a inversa
• da fórmula direta para desfazer ou anular completamente a operação efetuada pela mesma.

Para apagar as definições de um processamento, basta selecionar o processamento desejado na


lista, clicar sobre o botão Remove e confirmar a retirada do mesmo. Quando existir mais de um
processo, a ordem de execução dos mesmos é determinada pela sua ordem na lista de processos. Por
isso, se desejar modificar esta ordem, utilize as setas (para cima e para baixo) que aparecem ao lado
da lista de processos.

Definindo atributos de campos Top Previous Next

Uma vez que um campo seja inserido na tela, seus atributos podem ser definidos, selecionando-
se o campo na tela e o atributo a ser definido, a partir da grade existente na janela Ferramentas da tela.
Os atributos do campo são informações que você deverá passar ao Father para definir como este
campo deverá ser digitado (ou mesmo se será digitado), que tipo de dado será aceito para este campo,
etc.

Pré-validação Top Previous Next

A pré-validação se constitui no estabelecimento de uma expressão que, sendo atendida, o


usuário poderá acessar o campo e digitar informações. Caso não seja atendida, o usuário não poderá
acessar o campo.

~ 99 ~
MANUAL DO FATHER

Validação Top Previous Next

A validação deve conter a expressão que determinará se o dado informado pelo usuário é ou não
válido, de acordo com o que você desejar. Caso seja inválido, o usuário visualizará uma mensagem
para digitar a informação correta para o campo. Para a definição destas expressões, você poderá:

Digitar diretamente uma expressão em Visual Basic. Se for necessário utilizar campos da tabela
básica ou de tabelas auxiliares, estes poderão ser capturados do banco de campos oferecido pelo
Father por meio da janela da figura seguinte. Sempre que for necessária a captura de campos, basta
dispor o cursor na posição desejada para inserir o nome do campo, selecionar o banco de campos e
um duplo clique sobre o campo a ser capturado. O banco de campos também permite a captura de
variáveis, constantes e funções (function e sub) para que sejam inseridas na expressão que define a
• validação;
• Executar o Editor de Programas do Father para elaborar uma função em Visual Basic;
• Clicar sobre o botão marcado com reticências (...), situado à direita da propriedade "Validação".

~ 100 ~
MANUAL DO FATHER

Existem diversas expressões pré-definidas que você poderá montar apenas com alguns cliques
do mouse. Por exemplo, para evitar que um campo seja deixado em branco pelo usuário (validação),
basta selecionar o campo desejado, selecionar a opção Vazio, clicar em "Negar condição" e concatenar
a expressão. A opção "Registro de lançamento" permite testar a variável de sistema vgRegLancado
(veja tópico Variáveis de Sistema, neste manual).

Se estiver definindo uma pré-validação, você poderá ainda marcar a opção "Limpar campo", se
desejar que o campo seja inicializado, mesmo que já contenha uma informação anterior, caso a
expressão de pré-validação não seja atendida.

Na segunda aba desta interface, representada pela figura acima, você pode definir expressões
envolvendo as tabelas auxiliares relacionadas, caso tenham sido definidas. A definição das tabelas
auxiliares é feita na definição do projeto, na aba "Tabelas auxiliares".

~ 101 ~
MANUAL DO FATHER

Para montar uma expressão segundo a existência de um registro relacionado em uma das
tabelas auxiliares, basta selecionar a tabela, o índice desejado e o campo a ser utilizado na pesquisa e,
em seguida, concatenar a expressão montada pelo Father.

Validação imediata Top Previous Next

A validação definida para cada campo de um formulário pode ser do tipo imediata, dessa maneira
assim que o usuário abandonar o campo em questão a validação será executada, não necessitando
mais que todos os campos sejam preenchidos e depois o registro seja gravado;

Somente dois valores são possíveis para esta propriedade: "Sim" e "Não".

~ 102 ~
MANUAL DO FATHER

Mensagem Top Previous Next

Para este atributo, informe o texto que deseja apresentar ao usuário, caso a expressão de
validação falhe, ou seja, quando o usuário digitar informações que não podem ser aceitas.
Para esta informação, se desejar, você poderá executar o Editor de Programas e elaborar uma
função para retornar uma mensagem. Isto pode ser interessante quando existirem diversas expressões
de validação concatenadas para o campo e você queira depurar melhor a mensagem a ser exibida ao
usuário.

Valor inicial Top Previous Next

Informe um valor a ser sugerido ao usuário, sempre que o mesmo desejar acessar este campo.
Este valor pode, inclusive, ser um campo de um arquivo de parâmetros existente na aplicação. Neste
caso, basta capturar o campo desejado por meio do banco de campos.

Visível Top Previous Next

Informe uma condição para a visibilidade do campo. Os mesmos recursos de montagem de


expressões explicados anteriormente valem para este atributo. Quando da definição da estrutura dos
bancos de dados, no tópico Definição do projeto visto anteriormente, existe uma opção que, se
marcada, inibe definitivamente a visibilidade do campo, o que é diferente da condição aqui
estabelecida, a qual é analisada a cada registro acessado. Outras propriedades e atributos podem ser
alteradas, utilizando-se os recursos aqui descritos.

Inserindo fórmulas nas telas Top Previous Next

Durante a formatação de janelas para a digitação de dados (ou na formatação da barra de


ferramentas da aplicação), você poderá estabelecer fórmulas ou outras informações para serem
exibidas ao usuário. Os controles label, gMask, frame e imagem são os únicos que podem ser
utilizados para exibir essas informações. Para efetuar esta operação, você deverá proceder da
seguinte maneira:

Clique na janela de Ferramentas da tela sobre um botão do tipo label, gMask, frame ou imagem para
• inserir um desses objetos na tela:
Selecione na janela Ferramentas da tela, na grade de propriedades, a propriedade Fórmula e
• estabeleça a fórmula que será exibida.

No caso de fórmulas disponibilizadas no controle do tipo imagem, só serão aceitos campos de


arquivos relacionados, abertos na aba "Tabelas auxiliares", que sejam do tipo multimídia. Fórmulas
tanto podem ser resultados de operações entre campos numéricos quanto campos de tabelas
estrangeiras relacionadas que necessitam ser exibidos na tela. Por exemplo, ao digitar o código do
fornecedor em uma Nota Fiscal, você poderá exibir o nome do fornecedor, que se encontra em uma
outra tabela relacionada.
Em se tratando de um resultado numérico, a fórmula precisa ser tratada por você, que poderá
utilizar a função STR$( ) do Visual Basic ou outra qualquer que transforme este resultado em uma
expressão do tipo caractere, sendo aceita na propriedade do controle.

Exemplos:
Str$([Produtos em estoque].Qde * 10)
"Preço: " + Format$(Produtos.Preço, ", "##,##0.00")

Condições especiais Top Previous Next

Selecionando-se o painel de fundo da tela em elaboração (basta clicar com o mouse sobre o
painel), três definições importantes podem ser efetuadas para a digitação nesta tabela, criando-se
condições por meio de qualquer um dos métodos explicados anteriormente:

~ 103 ~
MANUAL DO FATHER

Condição para incluir Top Previous Next

Caso seja necessário, você poderá estabelecer uma condição para que haja inclusão de registros
na tabela básica. Se esta condição não for atendida o usuário não poderá digitar registros nesta tabela.

Condição para excluir Top Previous Next

Caso necessário, informe uma condição para permitir exclusões de registros nesta tabela básica.

Condição para alterar Top Previous Next

Informe, se necessário, uma condição para permitir que registros sejam alterados pelo usuário
nesta tabela básica.

Grid Top Previous Next

Este tipo de módulo pode ser inserido somente abaixo de uma janela de dados ou sob um outro
módulo de tabela em grid, compondo a parte "N" de um relacionamento 1-N que você
preferencialmente deverá ter criado na estrutura do banco de dados. A rigor, uma tabela pode ser
exibida em grid sempre que estiver relacionada na árvore a uma outra tabela mãe, mesmo que no
banco de dados não exista especificamente este relacionamento. Porém, na aplicação final, a única
forma de garantir a exclusão de registros filhos por integridade referencial é criando-se o
relacionamento no banco de dados. Nenhum outro tipo de módulo pode ser inserido abaixo de uma
tabela em grid, exceto uma outra tabela em grid.
Uma vez que uma tabela seja apresentada em grid na aplicação final gerada, todos os tipos de
campos podem ser digitados dentro do próprio grid, inclusive campos do tipo listas externas e internas,
rotativos, lógicos, memo, etc. Todos os recursos de edição, como, por exemplo, a digitação com
máscaras são disponibilizados para os campos digitados no grid. A cada nova linha incluída ou
alterada no grid, todos os processos e lançamentos definidos são disparados automaticamente e todos
os forms visíveis no momento são imediatamente atualizados para espelhar os novos valores que,
porventura, tenham sido alterados. Também, podem ser definidas fórmulas para serem apresentadas
nas colunas, sendo atualizadas simultaneamente no momento da digitação. Naturalmente, essas
fórmulas podem envolver campos de qualquer um dos bancos de dados manipulados pela aplicação.
Com isto, o Father oferece duas maneiras de trabalhar com relacionamento 1-N: da forma onde a
tabela mãe e filha aparecem em forms separados e a forma onde as tabelas filhas são disponibilizadas
em grids dentro do mesmo form no qual é exibida a tabela mãe.
Os passos para adicionar um grid a um projeto, é bastante simples, e pode ser feito nesta
sequencia:
1 - Inserir uma tabela em grid: Escolha a janela de dados ao qual deseja adicionar o grid, e com o
botão direito do mouse, clique e escolha a opção "adicionar novo modulo". Na sequencia, será exibido
outro menu, com a opção de "tabela em grid".
2 - Configurar o novo modulo: Após adicionar o novo modulo, um novo "menu" é adcionado a
árvore, ficando o mesmo logo abaixo da janela de dados ao qual o mesmo será incluido. Selecione o
novo modulo, e com o lado direito do mouse, escolha a opção de "Definir modulo selecionado". Será
apresentado, um formulário com algumas "abas", que devem ser preenchidas com informações para a
definição deste novo modulo. As abas principais são:

Aba Geral - Contém as mesmas solicitações da janela de dados, todas as informações estão
disponíveis em: Definindo um Módulo - Aba Geral

Aba Tabelas Auxiliares - Contém as mesmas solicitações da janela de dados, todas as


informações estão disponíveis em: Definindo um Módulo - Aba Tabelas Auxiliares
Aba Opções - Caso o módulo em definição seja uma "Tabela em grid", uma aba extra
denominada Opções estará presente. A figura abaixo representa essas opções.

~ 104 ~
MANUAL DO FATHER

Para estabelecer a expressão de ligação com o pai (relacionamento 1-N), proceda do seguinte
modo:

Selecione, na lista "Cps do filho...", o campo comum às duas tabelas a ser utilizado para fazer a
ligação;

Caso exista, na lista "Cps do pai...", um campo com um mesmo nome e mesmos atributos, o
Father selecionará automaticamente este campo. Se o campo de ligação não for este, você tem a
liberdade de selecionar outro;

Após selecionados os campos nas duas listas, utilize o botão de concatenação para confirmar a
expressão;

Se a ligação for efetuada em função de mais de um campo, repita os passos anteriores;

O botão a seguir tem por finalidade limpar a expressão, permitindo recomeçar a sua definição.

Sem ligação com o pai: Esta opção, quando marcada, ignora a ligação com este grid. Esta opção
é útil quando se tratar de um grid totalmente independente, onde os registros não dependam de um
registro pai. O grid será criado sem nenhum vinculo com a tabela pai deste modulo.

Aba Lançamentos - Contém as mesmas solicitações da janela de dados, todas as informações


estão disponíveis em: Definindo um Módulo - Aba Lançamentos

Aba Processos - Contém as mesmas solicitações da janela de dados, todas as informações estão
disponíveis em: Definindo um Módulo - Aba Processos

~ 105 ~
MANUAL DO FATHER

Outras Informações:
Acessando o item Tempo refresh da seção [Opcoes] do arquivo de inicialização (.INI) da
aplicação final, seja via código ou depois de instalada a aplicação, você poderá manipular o tempo de
refresh dos grids da mesma.

A fim de proporcionar maior flexibilidade na digitação de dados no grid, agora, ao pressionar


ENTER em qualquer célula do mesmo, o cursor se direcionará de acordo com a última movimentação
efetuada por intermédio das setas cursoras no grid (para cima, para a direita - convencional, para
esquerda, etc).

Inserindo um Grid Top Previous Next

Não existe formatação de tela para um módulo do tipo Tabela em grid. A tela é formatada no
módulo pai, sobre a qual é inserido um objeto gDbGrid. Para inserir grids na tela, proceda da seguinte
maneira:
Insira um ou mais módulos do tipo "Tabela em grid" na árvore e defina as tabelas básicas e a ligação
• com o pai de cada um deles;
Acesse a tela definida para o módulo pai e coloque os grids necessários, por meio do botão
exibido a seguir, existente na janela de Ferramentas da tela;

botão para inserir grid na tela

A primeira propriedade que deve ser designada para este objeto é Tabela. Clicando no botão
extensor desta propriedade (com reticências), você verá todas as tabelas que você definiu para serem
disponibilizadas em grid. Após definida esta propriedade, todos os campos do grid serão preenchidos
automaticamente com os campos da tabela selecioda, exceto aqueles utilizados na ligação com o
módulo-pai;
Utilizando os botões da janela Ferramentas da tela, você poderá agora inserir ou apagar colunas do
• grid, conforme explicado no tópico Utilizando o Editor de Telas, mais adiante, neste manual;
Clique em cada uma das colunas (campos) para definir os atributos necessários, como validação,
• mensagens, etc.

Características do Grid Top Previous Next

Nesta versão(Father), foi desenvolvido um controle GRID totalmente novo para utilização nas
janelas de dados e consultas da aplicação gerada. O novo controle, que tem como base a ListView
(não mais o dbgrid), está muito mais rápido, versátil e sofisticado. Utiliza técnicas de subclasse e
controle "owner draw" com aquisição de dados em modo virtual. O conjunto dessas técnicas possibilita
uma extrema economia de memória e uma ótima performance. Apenas os dados que estão sendo
mostrados no grid estão carregados efetivamente na memória do controle. Se o driver utilizado para
conexão com o banco de dados permitir o grid também poderá utilizar o preenchimento gradual.
Dessa maneira, enquanto os registros estiverem sendo retornados da base de dados, o grid já
poderá mostrar a parte dos registros que já foram adquiridos.
Este novo controle permite a definição de cor para fundo e texto individualmente para cada
célula. Assim, você tem a possibilidade de determinar, por exemplo, condições para determinação da
cor de fundo ou de texto de alguma informação. Também estará disponível nessa versão do controle
recursos específicos para colunas numéricas: o usuário poderá ver na barra de status do grid
informações de total, máximo, mínimo e média das informações. Agora também é possível selecionar
várias linhas no grid para para operar com eles, por exemplo, para excluir, grafar, etc.
O controle permitirá que o usuário modifique a ordem de apresentação das colunas, bem como
determinar a ordenação de registros (crescente/decrescente) clicando sobre o título de uma ou de
várias colunas. Também foi embutido no controle uma barra de filtro (antes era externa), que poderá
ser habilitada ou não pelo usuário em tempo de execução. Será possível ainda definir a quantidade de
registros que serão retornados pela query (TOP). Todos os recursos comentados aqui estarão
disponíveis tanto em grids de consultas como em grids filhos (em janelas de dados);
Algumas caraterísticas novas:
1 - Linhas zebradas com configuração das cores;
2 - A barra de filtro possibilitando a filtragem de várias colunas;
3 - Opção de Soma, Média, Mínimo e Máximo para as colunas numéricas com habilitação /
desabilitação;

~ 106 ~
MANUAL DO FATHER

4 - Possibilidade de deletar várias linhas intercaladas simultaneamente;


5 - Arrastar uma coluna para outra posição;
6 - Apagar uma coluna (basta marcá-la e teclar DELETE);
7 - Recuperar a coluna deletada (basta ir na linha separadora de colunas que onde tiver coluna
oculta o cursor do mouse mudará, indicando que pode-se expandir uma coluna oculta naquela
posição);
8 - Uso de CTRL-Home, CTRL End, CTRL PgUp e CTRL PgDown para navegação no GRID.
9 - Adicionado a propriedade: "Ação no duplo click". Agora é possivel definir uma função a ser
executada no duplo click do grid.

Propriedades do Grid Top Previous Next

Com o grid selecionado, pressionado a tecla F4, você tem a disposição o form de Ferramentas da
tela:
As propriedades exclusivas do componente grid são:
• Aparência(cores): Nesta categoria, é possível definir a aparência dos itens disponíveis no grid

Propriedade Descrição
Fonte Esta propriedade determina a fonte da linha referente aos registros
do grid.
Fundo barra de filtro Determina a cor de fundo que terá a barra de filtro
Fundo barra lateral Determina a cor de fundo da barra lateral esquerda
Fundo barra máximo Determina a cor de fundo barra máximo
Fundo barra média Determina a cor de da propriedade em questão
Fundo barra mínimo Determina a cor de da propriedade em questão
Fundo barra Determina a cor de da propriedade em questão
somatório
Fundo barra status Determina a cor de da propriedade em questão
Fundo coluna Determina a cor de da propriedade em questão
Fundo coluna ativa Determina a cor de da propriedade em questão
Fundo célula Determina a cor de da propriedade em questão
Fundo célula edição Determina a cor de da propriedade em questão
Fundo célula selec. Determina a cor de da propriedade em questão
Fundo célula zebra Determina a cor de da propriedade em questão
Fundo grid Determina a cor de da propriedade em questão
Fundo linha Determina a cor de da propriedade em questão
Fundo título coluna Determina a cor de da propriedade em questão
Fundo título grid Determina a cor de da propriedade em questão
Fundo título colunas Determina a cor de da propriedade em questão
Linha de grid Determina a cor de da propriedade em questão
Texto barra filtro Determina a cor de da propriedade em questão
Texto barra média Determina a cor de da propriedade em questão
Texto barra mínimo Determina a cor de da propriedade em questão
Texto barra máximo Determina a cor de da propriedade em questão
Texto barra status Determina a cor de da propriedade em questão
Texto barra Determina a cor de da propriedade em questão
somatório
Texto coluna Determina a cor de da propriedade em questão
Texto coluna ativa Determina a cor de da propriedade em questão
Texto célula Determina a cor de da propriedade em questão
Texto célula selec. Determina a cor de da propriedade em questão
Texto célula edição Determina a cor de da propriedade em questão
Texto célula zebra Determina a cor de da propriedade em questão
Texto linha Determina a cor de da propriedade em questão
Texto título coluna Determina a cor de da propriedade em questão
Texto título grid Determina a cor de da propriedade em questão
Texto título colunas Determina a cor de da propriedade em questão
Auto incluir registro Determina a cor de da propriedade em questão

Outras propriedades, estão disponíveis no tóico Lista de Propriedades

~ 107 ~
MANUAL DO FATHER

Definindo rotinas manuais Top Previous Next

Para definir uma rotina avulsa a ser integrada a um projeto do Father, você utiliza a interface da
figura a seguir, devendo proceder conforme segue:
Informe o título a ser oferecido ao usuário da forma que deverá ser exibido no menu. O caractere
"&" poderá ser utilizado para criar o atalho para esta opção de menu - a letra que o precede será o
atalho e aparecerá sublinhada no menu;

Selecione "Editar/Editar código de programa" no menu, tecle F9 ou, então, clique no botão abaixo
para executar o Editor de Programas do Father;

botão para ativar o Editor

Elabore a rotina em Visual Basic;

Marque a opção módulo pronto, quando acabar de elaborar a sua rotina para informar ao Father
que este módulo poderá ser gerado, quando for solicitada a geração de fontes.

~ 108 ~
MANUAL DO FATHER

Definindo processo pré-definido Top Previous Next

Este tipo de módulo permite a definição de processamentos especiais, pré-definidos por você,
para executar certas tarefas, como, por exemplo, fechamento de mês, cálculo de folha de pagamento,
baixas em estoque, históricos, etc. Na definição desses módulos, você tem total flexibilidade para
envolver outros bancos de dados, efetuar cálculos, apagar registros, etc., percorrendo uma mesma
tabela quantas vezes se fizer necessário e efetuando processos diferentes a cada passagem. Telas
complementares podem ser criadas para serem apresentadas antes dos processos, de modo a permitir
o estabelecimentos de filtros e condições de processos e lançamentos.
Mesmo que não haja uma tela definida para o processo pré-definido em questão, você poderá
definir mensagens a serem exibidas no início e fim do processamento. Para isso, basta defini-las
respectivamente por meio das propriedades Mensagem inicial e Mensagem final do painel de fundo da
tela do processo prédefinido. Para obter maiores detalhes, consulte o tópico Propriedades dos objetos
de tela. Um processo pré-definido é definido em duas etapas:

Cabeçalho do processo pré-definido Top Previous Next

A primeira dela é a definição do módulo-pai, que é uma espécie de cabeçalho do processo


prédefinido, no qual são definidos alguns aspectos de natureza geral, utilizando-se a interface
representada na figura abaixo

A maior parte dos aspectos de definição do cabeçalho dos processos pré-definidos é idêntica aos
da definição de Janela de dados.

~ 109 ~
MANUAL DO FATHER

Cupom Fiscal Top Previous Next

Marque essa opção se este módulo irá comportar como emissor de cupom fiscal. Neste caso, os
itens vendidos deverão ser inclusos por meio de lançamentos.
A aba "Tabelas auxiliares", representada na figura abaixo, serve para relacionar tabelas com os
campos que, porventura, tenham sido inseridos em uma tela complementar criada previamente para
receber informações a serem utilizadas durante o processamento. Uma tela complementar para
receber variáveis antes de processos é criada.

Processo pré-definido Top Previous Next

Após definido o módulo de cabeçalho do processo pré-definido, outros módulos de processos


prédefinidos podem ser inseridos, efetuando um relacionamento 1-N. A figura abaixo representa a
interface para definição do processo pré-definido.

~ 110 ~
MANUAL DO FATHER

Na aba Geral, as definições são semelhantes às dos demais módulos descritos anteriormente. A
informação do campo Apelido pode ser utilizada como apelido da tabela básica na definição dos
processos e lançamentos que, porventura, venham a ser estabelecidos.

Na aba "Tabelas auxiliares" são definidos os relacionamentos entre tabelas que sejam
necessários ao estabelecimento do processo prédefinido. Observe que, a interface de estabelecimento
de "ligação com o pai" só estará disponível se a tabela em definição estiver inserida abaixo
(subordinada) a um outro processo.

O campo "Filtro inicial" deve ser preenchido com uma expressão válida que determinará a seleção
dos registros, diferenciando-se do campo "Condição para processar o registro"pelo fato deste último
• não ser agregado à cláusula WHERE;
O campo "Condição para processar o registro" deve ser preenchido com uma expressão válida que
determina se o registro será ou não processado. Utilize o botão marcado com reticências para
• montar esta expressão de uma maneira mais fácil;
Caso você deseje a exclusão do registro da tabela básica após o processamento, marque a opção
• "Excluir registro da tabela básica";
Caso tenha marcado a opção acima, você ainda poderá definir uma condição para que este registro
seja excluído. Esta condição pode ser estabelecida da mesma maneira descrita anteriormente para
• "Condição para processar o registro";
você ainda poderá definir a ordem de execução dos processos pré-definidos (para um mesmo grupo
de registros a serem processados) por meio da lista "Ordem", na qual deverão ser selecionados os
• campos para a referida ordenação.
• Quando terminar, utilize o botão Grava para salvar as informações.

Definindo uma consulta Top Previous Next

Esta definição é efetuada por meio de uma interface com três abas. A primeira delas,
denominada Geral é definida da mesma forma como é utilizado para os módulos descritos
anteriormente.
A segunda aba, denominada "Tabelas auxiliares" só deverá ser utilizada se uma tela
complementar tiver sido definida anteriormente.

~ 111 ~
MANUAL DO FATHER

A terceira aba, que aparece na figura abaixo, serve para acessar a interface de montagem da
expressão que define a consulta (SQL).

A área denominada "Expressão que define a consulta" conterá a expressão SQL a ser montada
pela interface da figura acima. Se desejar, você poderá manualmente editar esta área e construir a
expressão SQL que desejar. No entanto, ao fazer isto, o Father desabilitará a interface automática para
lhe dar maior liberdade. Para voltar a utilizar a interface automática, você terá que recomeçá-la,
apagando a expressão. A opção "Query Externa" permite a você definir uma query manualmente sem
que o Father faça qualquer tipo de tratamento quanto a nomes de campos, apelidos, etc. Com isso, o
código será gerado exatamente como você o definir.

Convém lembrar que a expressão que define a consulta deve conter uma sintaxe correta no
padrão SQL, pois esta será avaliada somente durante a execução da aplicação final, resultando em
erros de execução, caso não esteja correta. Os botões existentes na janela da figura acima têm as
seguintes funções:

Prosseguir
Tem por finalidade aceitar a expressão montada e transferí-la para a tela anterior, na aba
Conteúdo.

Cancela
Tem por finalidade cancelar a operação de montagem da expressão da consulta.

Limpar seleção
Tem por finalidade retirar da expressão somente a cláusula de seleção (WHERE).

Limpa
Tem por finalidade limpar toda a expressão que está sendo montada, permitindo recomeçar toda
a definição.

~ 112 ~
MANUAL DO FATHER

Conteúdos Top Previous Next

Para a montagem desta expressão, você deverá efetuar os passos que se seguem:

Selecione uma tabela na lista Tabelas. Com isto, a lista "Campos a mostrar" é preenchida com os
• campos da tabela selecionada;

A seguir, selecione na lista "Campos a mostrar" os campos que deseja visualizar na consulta. Desta
maneira, diversas tabelas e campos podem ser selecionados para a consulta. À medida que um
campo é selecionado, o mesmo será inserido automaticamente na expressão que é apresentada no
espaço "Expressão que define a consulta". Se for selecionado um campo já inserido, este é
automaticamente retirado da expressão. Essas definições acrescentam à expressão SQL da
consulta, respectivamente, as cláusulas FROM e SELECT. Consulte o Glossário para maiores
• detalhes sobre esses termos.

Grupos e ordenação Top Previous Next

Caso seja necessário, você poderá estabelecer agrupamentos para sumarização da consulta,
bem como a ordem em que os registros deverão aparecer. Estas informações adicionam,
respectivamente, a cláusula GROUP BY e ORDER BY à expressão SQL que define a consulta.

Caso você esteja elaborando um agrupamento, deve ter em mente que todos os registros que
contenham o mesmo campo escolhido para agrupar serão sumarizados como se fossem um único
registro. Portanto, todos os campos que compõem a consulta deverão ser, obrigatoriamente, do tipo
numérico, exceto aqueles utilizados para efetuar o agrupamento. Devido a esta particularidade,
agrupamento não deve ser confundido com "quebra". Você deverá selecionar, na lista "Agrupar por", os
campos que comandarão o agrupamento de sumarização, devendo ter o cuidado de selecionar estes
mesmos campos, na lista Ordenação, para comandar a ordem dos registros. Após selecionar os
campos para ordenação, você poderá também estabelecer se ela será Ascendente ou Descendente,
selecionando a opção correspondente.

O usuário do aplicativo final gerado poderá ainda estabelecer ordenações a seu critério, tendo
como base os campos exibidos na consulta.

Seleção Top Previous Next

Caso a opção Selecionar ou a opção "Unir tabelas" esteja marcada, a expressão estabelecida irá
compor a cláusula WHERE da expressão SQL. Se a opção Filtrar estiver selecionada, a expressão
estabelecida não irá fazer parte da cláusula WHERE, não sendo, portanto, gravada no banco de dados.
O filtro estabelecido por esta opção terá seu conteúdo avaliado na hora e seu resultado passado para
as devidas propriedades da consulta ou relatório (propriedade Filter do recordset, etc). Qualquer que
seja a opção selecionada, este passo irá definir quais registros irão participar da consulta.

Criação de filtragem Top Previous Next

Para estabelecer uma seleção, você deverá proceder conforme se segue:

1. Marque a opção Filtrar;


2. Selecione um campo na lista "Nome do Campo";
3. Selecione o operador desejado na lista Operadores;
4. Informe, na lista Valor, o valor a ser comparado.

Desta lista podem também ser selecionados campos das tabelas que estejam relacionadas para
utilizar como valor de comparação (veja União de tabelas mais adiante, neste tópico).

Em "Os primeiros...", você poderá informar um número e selecionar uma das opções. Isto permitirá
que os primeiros N registros ou N porcento dos registros que atendem à expressão SQL sejam
• considerados;

~ 113 ~
MANUAL DO FATHER

União de tabelas Top Previous Next

Se mais de uma tabela foi selecionada para a consulta ou sendo necessária a criação de
relacionamento entre elas, você poderá selecionar a opção "Unir tabelas" e os campos das diversas
tabelas que devem ser iguais. Para aglomerar diversas filtragens em uma mesma expressão, você
deverá fazer uso do botão Concatena.

Definindo relatório ou etiqueta Top Previous Next

Você pode definir os relatórios G-Reports com base em expressão SQL para definir a query a ser
utilizada no relatório. Esse recurso proporciona uma flexibilidade enorme na elaboração dos relatórios,
uma vez que você poderá utilizar todo o poder da linguagem SQL, como funções agregadas, junção de
tabelas, ordenação por campo de outra tabela, etc. O conjunto de dados (recordset) a ser utilizado
como base do relatório pode ser totalmente flexibilizado.

Geral Top Previous Next

A interface da figura abaixo é destinada à definição de algumas das informações dos relatórios,
as quais serão abordadas a seguir.

A maior parte dos aspectos de definição de relatórios é idêntica aos da definição de Consultas.
Os aspectos particulares à definição dos relatórios serão explanados a seguir:

~ 114 ~
MANUAL DO FATHER

Nome do .RPT Top Previous Next

Se relatório do tipo Crystal Reports, informe um nome de arquivo a ser utilizado pelo Crystal
Reports para guardar as informações referentes à formatação do relatório. Posteriormente, quando da
execução da aplicação gerada, este arquivo deverá estar disponível no equipamento do usuário, pois o
Crystal Reports utilizará as informações nele contidas para imprimir o relatório.

Tabela básica Top Previous Next

Esta informação está presente somente em relatórios do G-Reports. Selecione a tabela básica do
relatório a ser formatado.

Apelido Top Previous Next

Presente também somente em relatórios a serem formatados pelo G-Reports. Informe o apelido
para ser utilizado em referências à tabela básica do relatório

Cupom fiscal Top Previous Next

Somente para relatórios do G-Reports, informe se este relatório deverá ser enviado para
impressora fiscal.

Tabelas auxliares e Conteúdo Top Previous Next

Esses dois aspectos da definição do relatório são idênticos aos da definição de Consultas.

Convém observar que a seleção ou filtragem de registros estabelecida para um relatório é uma
seleção primária e permanente, pois, ao executar a aplicação final, o usuário sempre poderá
estabelecer novos critérios de filtragem sempre subordinados (concatenados) ao que foi aqui definido
por você. Portanto, se você quiser dar plena liberdade ao usuário, não deverá estabelecer filtros para
relatórios em tempo

Formatação de relatórios Top Previous Next

Uma vez que o relatório tenha sido definido, pode-se ativar a sua formatação, clicando-se sobre o
botão a seguir, presente na barra de ferramentas:

O Father saberá distinguir o formatador de relatórios que deverá ativar. Caso um relatório do tipo
Crystal Reports tenha sido definido e, se o relatório estiver sendo acessado pela primeira vez, antes de
executar o Crystal Reports, o Father apresenta um diálogo informando qual o banco de dados e query
a ser utilizada, bem como o nome do arquivo RPT a ser gravado. Nas demais oportunidades, quando
este relatório estiver sendo acessado para qualquer alteração que se fizer necessária, o Father não
mais apresentará este diálogo.

Ainda com respeito aos relatórios do Crystal Reports, convém observar que, em tempo de
projeto, na maioria das vezes, o banco de dados da aplicação ainda não existe! Por isso, o Father
sempre cria um banco de dados temporário, de nome DBTEMP.MDB, com a estrutura até o momento
definida, para que o Crystal Reports possa ter as referências de que necessita. Portanto, é uma boa
idéia deixar a definição dos relatórios para uma fase mais ao final do projeto, quando toda a estrutura
do banco de dados já estiver completamente definida, não necessitando mais de modificações. Os
detalhes da utilização do Crystal Reports devem ser obtidos na própria documentação daquele
programa utilitário.

~ 115 ~
MANUAL DO FATHER

Criando um relatório padrão Top Previous Next

De maneira semelhante ao que é feito nas telas da aplicação, os relatórios padrão também
podem ser criados. As opções de configuração para este tipo de relatório podem também ser
acionadas por meio de "Opções/Opções de tela padrão".

Ao acionar o botão para gerar a tela padrão, o Father cria um relatório padrão na área de
formatação, tentando alocar tantos campos quanto possível. Este relatório pode então ser utilizado
como ponto de partida para a formatação do relatório desejado.

Formatando um relatório Top Previous Next

Para a formatação de um novo relatório, alguns ajustes preliminares devem ser efetuados por
meio da janela de propriedades, que conhecemos da formatação de telas.

Propriedades do relatório Top Previous Next

As propriedades a seguir deverão ser ajustadas para o relatório. Clicando-se no fundo da área de
formatação do relatório, você deverá conferir as suas propriedades:

Propriedade Descrição
É ajustada automaticamente pelo Father. Todas as impressoras
trabalham com uma área útil do papel que é obtida por meio dos
descontos das quatro margens (topo, esquerda, direita e fundo), onde a
impressora não consegue imprimir informações (espaço deixado para
Altura e largura útil do
tracionamento do papel, etc). Essas margens variam de acordo com a
papel
marca e modelo da impressora. O Father assume para a área de
formatação somente a área útil do papel, ou seja, desconta as margens e
considera apenas a área onde a impressora efetivamente disponibiliza
informações.
Esta propriedade, aplicada ao relatório, é utilizada para determinar
se o registro básico do relatório será impresso. Aqui, pode ser utilizada
Condição de uma expressão diretamente na área apropriada ou por intermédio do
impressão Editor de Programas do Father. Se existir uma condição especificada, o
Father criará no programa fonte a instrução "IF.." para testar se o registro
será ou não impresso.
Esta propriedade é semelhante à anterior. O que as diferencia é o
fato de que, na anterior, um "IF..." é criado permitindo maior flexibilidade,
sendo porém mais lenta. Já nesta, a expressão de filtragem será
incorporada à expressão SQL do relatório (cláusula WHERE). Por isso,
Filtro inicial este filtro é limitado aos seguintes detalhes:
O primeiro operando da expressão tem que ser um campo da

tabela básica do relatório;
O segundo operando pode ser qualquer um dos campos das

tabelas relacionadas, campos recebidos na tela, etc.
Informe a distância, em milímetros, entre um registro e outro do
Distância entre relatório. Observe que, se existirem outras informações impressas entre
registros um registro e outro (como, por exemplo, um subrelatório), esta medida
será aplicada sempre após estas informações terem sido impressas.
Estabelece a fonte default para os objetos a serem disponibilizados
Fonte no relatório. Logicamente, podem ser alteradas, posteriormente, em nível
do próprio objeto.
Estabelece a ordem a ser obedecida para a impressão dos registros
do relatório. Vários campos podem ser concatenados para formar a
expressão de ordenação do relatório. A partir da janela que permite o
Ordem
acionamento da tela de preview para relatórios e etiquetas, o usuário do
aplicativo final gerado poderá ainda estabelecer ordenações a seu
critério, tendo como base os campos envolvidos no relatório.

~ 116 ~
MANUAL DO FATHER

Estabelece a posição do papel a ser utilizada durante a formatação


Orientação e impressão do relatório. As opções são retrato (vertical) e paisagem
(horizontal).
É a posição mais baixa da folha a ser considerada para imprimir
informações que não sejam ajustadas como máscara de página, isto é,
estabelece o limite para se imprimir informações que variam de posição
Posição máxima para
(impressas a cada registro). Normalmente, esta propriedade já vem
dados
ajustada igual à altura útil da página do relatório. O ajuste dessa
propriedade para um número um pouco menor, possibilita a inserção de
rodapés nas páginas
É utilizada para estabelecer se, após a impressão de um registro,
Saltar página
uma página deverá ser saltada.
Selecione o tamanho do papel (tipo utilizado pela maioria das
impressoras - A4, Letter, etc.). Esta propriedade irá influenciar as
propriedades altura e largura útil do papel.
A área de formatação de relatório é bastante semelhante à área de
formatação de telas, com a diferença de que, no caso de relatórios, duas
réguas, uma vertical e outra horizontal são disponibilizadas, com
marcação em milímetros, de modo a facilitar a você a inserção de objetos
na área. Ao ser movido um objeto nesta área, uma fina linha é projetada
Tamanho do papel
sobre a régua, permitindo a visualização correta de sua posição. Os
relatórios são formatados por meio da inserção de objetos e do ajuste de
suas propriedades.
Objetos do tipo label ou texto3d são utilizados para a impressão de
informações textuais ao passo que objetos do tipo imagem são utilizados
para exibir imagens. Essas informações poderão ou não estar vinculadas
aos campos das tabelas eleitas para o relatório. Linhas também podem
ser inseridas para melhorar a apresentação

Propriedades do relatório Top Previous Next

As propriedades a seguir deverão ser ajustadas para o relatório. Clicando-se no fundo da área de
formatação do relatório, você deverá conferir as suas propriedades:

Propriedade Descrição
É ajustada automaticamente pelo Father. Todas as impressoras
trabalham com uma área útil do papel que é obtida por meio dos descontos
das quatro margens (topo, esquerda, direita e fundo), onde a impressora
Altura e largura útil do não consegue imprimir informações (espaço deixado para tracionamento
papel do papel, etc). Essas margens variam de acordo com a marca e modelo da
impressora. O Father assume para a área de formatação somente a área
útil do papel, ou seja, desconta as margens e considera apenas a área
onde a impressora efetivamente disponibiliza informações.
Esta propriedade, aplicada ao relatório, é utilizada para determinar se
o registro básico do relatório será impresso. Aqui, pode ser utilizada uma
expressão diretamente na área apropriada ou por intermédio do Editor de
Condição de impressão
Programas do Father. Se existir uma condição especificada, o Father criará
no programa fonte a instrução "IF.." para testar se o registro será ou não
impresso.
Esta propriedade é semelhante à anterior. O que as diferencia é o
fato de que, na anterior, um "IF..." é criado permitindo maior flexibilidade,
sendo porém mais lenta. Já nesta, a expressão de filtragem será
incorporada à expressão SQL do relatório (cláusula WHERE). Por isso,
Filtro inicial este filtro é limitado aos seguintes detalhes:
O primeiro operando da expressão tem que ser um campo da

tabela básica do relatório;
O segundo operando pode ser qualquer um dos campos das

tabelas relacionadas, campos recebidos na tela, etc.
Informe a distância, em milímetros, entre um registro e outro do
Distância entre
relatório. Observe que, se existirem outras informações impressas entre um
registros
registro e outro (como, por exemplo, um subrelatório), esta medida será

~ 117 ~
MANUAL DO FATHER

aplicada sempre após estas informações terem sido impressas.


Estabelece a fonte default para os objetos a serem disponibilizados
Fonte no relatório. Logicamente, podem ser alteradas, posteriormente, em nível
do próprio objeto.
Estabelece a ordem a ser obedecida para a impressão dos registros
do relatório. Vários campos podem ser concatenados para formar a
expressão de ordenação do relatório. A partir da janela que permite o
Ordem
acionamento da tela de preview para relatórios e etiquetas, o usuário do
aplicativo final gerado poderá ainda estabelecer ordenações a seu critério,
tendo como base os campos envolvidos no relatório.
Estabelece a posição do papel a ser utilizada durante a formatação e
Orientação impressão do relatório. As opções são retrato (vertical) e paisagem
(horizontal).
É a posição mais baixa da folha a ser considerada para imprimir
informações que não sejam ajustadas como máscara de página, isto é,
estabelece o limite para se imprimir informações que variam de posição
Posição máxima para
(impressas a cada registro). Normalmente, esta propriedade já vem
dados
ajustada igual à altura útil da página do relatório. O ajuste dessa
propriedade para um número um pouco menor, possibilita a inserção de
rodapés nas páginas
É utilizada para estabelecer se, após a impressão de um registro,
Saltar página
uma página deverá ser saltada.
Selecione o tamanho do papel (tipo utilizado pela maioria das
impressoras - A4, Letter, etc.). Esta propriedade irá influenciar as
propriedades altura e largura útil do papel.
A área de formatação de relatório é bastante semelhante à área de
formatação de telas, com a diferença de que, no caso de relatórios, duas
réguas, uma vertical e outra horizontal são disponibilizadas, com marcação
em milímetros, de modo a facilitar a você a inserção de objetos na área. Ao
ser movido um objeto nesta área, uma fina linha é projetada sobre a régua,
Tamanho do papel
permitindo a visualização correta de sua posição. Os relatórios são
formatados por meio da inserção de objetos e do ajuste de suas
propriedades.
Objetos do tipo label ou texto3d são utilizados para a impressão de
informações textuais ao passo que objetos do tipo imagem são utilizados
para exibir imagens. Essas informações poderão ou não estar vinculadas
aos campos das tabelas eleitas para o relatório. Linhas também podem ser
inseridas para melhorar a apresentação

Seleção de controles com "retângulo de Top Previous Next


seleção"

Para facilitar o design de formulários e relatórios o Father permite que você possa fazer seleção
de múltiplos controles utilizando caixa se seleção definida com o mouse (clicando no fundo e
arrastando), como acontece na interface de formatação do Visual Studio bem como de outras
ferramentas;

Múltiplos filtros Top Previous Next

Para todos os filtros definidos, janelas de dados, grids ou relatórios, você tem a opção de definir
vários filtros distintos, de um mesmo módulo, segundo condições definidas;

Inserindo um campo no relatório Top Previous Next

Os campos disponíveis nas tabelas selecionadas para o relatório podem ser capturados por
meio da lista (combobox) existente na janela de propriedades. Quando um campo é disponibilizado na
tela, desta maneira, dois objetos do tipo label são utilizados - um para o título do campo e outro para o
conteúdo. Algumas propriedades como, por exemplo, máscara, alinhamento, imprimir a cada registro,
etc. já vêm pré-ajustadas. Outra maneira de disponibilizar campos na tela é selecionar um objeto na
tela de ferramentas de relatório e ajustar a sua propriedade Campo para o campo desejado. Os três
objetos existentes para se imprimir informações no relatório são label, texto 3d, imagem e linhas:

~ 118 ~
MANUAL DO FATHER

Label
Utilizado para exibir informações. Pode ser vinculadas a um campo. As propriedades possíveis
para este objeto são:

Alinhamento - Estabelece se a informação impressa será alinhada à esquerda ou à direita ou,


ainda, se será centralizada ou justificada (ambos os lados). Em se tratando de campos numéricos, o
GAS já dispõe automaticamente um alinhamento à direita.
Altura - Determina a altura do label em milímetros.

Apelido - É o apelido do campo que, porventura, esteja associado ao label. O conteúdo do


campo ou da fórmula deste label é associado a este apelido e o mesmo poderá ser referenciado em
outros labels ou texto3D, como parte de cálculos de fórmulas.
Campo - Poderá ser preenchida com um nome de campo existente nas tabelas eleitas para o
relatório. Todas as informações definidas para este campo são utilizadas para preencher outras
propriedades inerentes a esse label, como, por exemplo, máscara, imprimir, largura, etc.
Cor do fundo - Utilize esta propriedade se desejar imprimir a informação dentro de um retângulo
em cor diferente. Normalmente, esta propriedade é utilizada em conjunto com a propriedade "Tipo de
borda" para que informações sejam impressas em um retângulo colorido.
Esquerda - Distância em milímetros do controle em relação à borda esquerda do papel (início da
área útil).

Expandir - Estabelece se a informação contida no label irá ser truncada na largura deixada por
você para o mesmo ou se será expandida de modo a imprimir toda a informação. Se esta propriedade
for ajustada para Sim, nos campos que não forem do tipo memo, o texto será impresso na totalidade de
sua largura, independentemente de se sobrepor a outro campo que estiver à frente. Em campos do tipo
memo, esta expansão é considerada verticalmente.

Fonte do título - Estabelece a fonte a ser utilizada para imprimir a informação.

Fórmula - Utilize esta propriedade para exibir fórmulas envolvendo campos, operações
aritméticas, concatenação de strings, ou, até mesmo, criar funções complexas em Visual Basic,
utilizando o editor do Father, as quais retornem valores a serem impressos no relatório.

Imprimir - Tem por finalidade estabelecer o momento em que a informação deverá ser impressa.
Esta propriedade deve ser observada com bastante atenção, pois é a que, provavelmente, levantará
maior quantidade de dúvidas. As opções são:

Como máscara de página - Se esta opção for selecionada, a informação será impressa de
maneira estática na página. Informações impressas como máscara de página são dispostas antes de
qualquer outra informação. Por isso, esta ajustagem deve ser utilizada sempre quando a informação for
estática e for aparecer em um ponto fixo de cada uma das páginas do relatório, como, por exemplo,
uma linha, uma imagem não vinculada a campo, um texto que você queira imprimir em todas as
páginas naquela posição, título do relatório, cabeçalho de colunas, rodapés, etc.;

Início da página - Utilizada para imprimir informações uma única vez em cada página, diferindo
da opção anterior pelo aspecto de poder ser impressa em posição variável. É utilizada normalmente
para informações do tipo, por exemplo, "Saldo da página anterior";

Início do relatório - Esta opção deve ser escolhida se a informação deve ser impressa, uma
única vez, no início do relatório (somente na primeira folha), logo após o cabeçalho. Da segunda folha
em diante, essa informação é suprimida e todas as informações subsequentes ajustadas com posição
variável "sobem", ou seja, são impressas mais acima, ocupando o seu lugar;

A cada registro - Esta é a informação que deve ser utilizada para imprimir conteúdos de campos
oriundos do banco de dados. Observe cuidados especiais ao utilizar esta opção em relatórios que
possuam quebras. Neste caso, se esta opção for utilizada, a informação será impressa como se fosse
um cabeçalho de quebra (semelhante à opção 7, como máscara da quebra);

Fim do relatório - Utilize esta opção para informações que serão impressas, uma única vez, na
última folha do relatório. Normalmente, é utilizada para impressão de dados como "Total Geral", por
exemplo, podendo ter posição variável, o que possibilita a sua impressão logo abaixo da última
informação impressa;

Fim da página - Semelhante ao anterior; porém, considerando a página do relatório.

~ 119 ~
MANUAL DO FATHER

Normalmente, utilizado para dados como "Total da Página", por exemplo, podendo também ter posição
variável;

Como máscara Quebra N - Se o relatório contiver quebras, este ajuste deve ser utilizado para
imprimir informações estáticas pertencentes à quebra, como, por exemplo, o cabeçalho da quebra;

Início Quebra N - Utilizada para imprimir informações, uma única vez, a cada quebra N, diferindo
da opção anterior pelo aspecto de poder ser impressa em posição variável;

A cada registro da Quebra N - Se o relatório possui quebras, esta opção deve ser ajustada para
todas as informações que serão impressas na referida quebra;
Fim da quebra N - Utilize esta opção para imprimir informações como "Total da Quebra" ou
rodapés de quebra.

Inicializar - Utilizada somente quando a propriedade Totalizador estiver ajustada para uma opção
diferente de Não. Determina em que ponto do relatório a variável que controla o totalizador será
inicializada com 0 ou com o valor estabelecido pela propriedade "Valor inicial".
Largura - É a largura, em milímetros, que será assumida para a impressão da informação, que é
a própria largura do label disponibilizado na área de formatação. Se a propriedade Expandir estiver
ajustada para Não, a informação será truncada nessa largura.

Máscara - Informe a máscara para formatar a informação a ser impressa. Podem ser utilizadas
as mesmas máscaras disponíveis quando da definição de campos para as tabelas.

Omitir se igual - Esta informação é utilizada para inibir a impressão de informações iguais nos
registros subsequentes. É normalmente utilizada em agrupamentos de registros para inibir informações
repetitivas. As opções são:

Não - A informação será sempre impressa com relação aos registros subsequentes;

No relatório - Se o conteúdo deste campo não for alterado durante a emissão do relatório, essa
informação nunca mais será impressa;

Na página - Se o conteúdo deste campo não se alterar dentro da mesma página, só voltará a ser
impresso na página seguinte;

Em quebra N - Se o conteúdo deste campo não se alterar dentro da mesma quebra, só será
impresso nos registros da quebra seguinte.

Posição - Designa se a informação será impressa de modo fixo, ou seja, sempre na mesma
posição dentro da página ou se a sua posição irá variar de acordo com os registros impressos. Quando
um campo é vinculado a um label, o Father automaticamente ajusta essa propriedade para 1 (variável).
Há casos em que você poderá querer que um campo seja impresso em posição fixa, como, por
exemplo, em cabeçalho ou rodapé (máscara de página). Neste caso, deverá alterar essa propriedade
para 0 (fixa).

Tipo de borda - Ajustando-se esta propriedade para 1 (Sim), a informação será impressa em um
retângulo. A propriedade "Cor do fundo" pode ser utilizada para colorir este retângulo.
Tipo de dado - Informe o tipo de dado a ser impresso por meio do label. Essa propriedade altera
a propridade Alinhamento, de acordo com o tipo de dado escolhido.
Topo - Representa a distância, em milímetros, do label em relação à borda de cima do papel
(início da área útil);
Totalizador - Estabelece o momento em que o conteúdo (propriedade Campo ou Fórmula) deste
label será totalizado. Essa informação pode ser ajustada para 0 (Não) ou pode, ainda, ser ajustada
como totalizador a cada registro ou a cada registro de quebras.

Transparente - Esta propriedade, quando é ajustada para 1 (Sim), permite que se imprima texto
sobre outros objetos, como, por exemplo, imagens, de modo transparente, ou seja, as letras serão
recortadas e disponibilizadas sobre o objeto que estiver abaixo.

Título - É utilizada para determinar a informação que será impressa no label. Se um campo
estiver vinculado por meio da propriedade Campo, o conteúdo deste campo oriundo da tabela é que
será impresso no lugar desta propriedade. É mais utilizada para imprimir títulos de relatórios, colunas,
etc.

~ 120 ~
MANUAL DO FATHER

Valor inicial - Somente é utilizado no caso de totalizadores, onde uma expressão ou função pode
ser utilizada como valor inicial do totalizador, como, por exemplo, transporte de valor do mês passado,
etc.

Visível - Informe uma expressão para que a informação seja impressa ou não.

Texto 3D
Este objeto pode também ser utilizado para a impressão de informações textuais em relatórios,
com efeitos visuais mais interessantes. A sua utilização é semelhante à do label, descrito no item
anterior. A maioria de suas propriedades são idênticas às daquele objeto, sendo, portanto, utilizadas da
mesma forma. A seguir, estão descritas apenas as propriedades aplicadas exclusivamente a este
objeto:

Ângulo - Especifique o ângulo, em graus, a ser utilizado para imprimir a informação. A faixa
aceitável é de 0 (normal) até 359 graus.
Contorno - Determina se o texto a ser impresso irá apresentar uma linha de contorno (outline).
Cor do contorno - Caso a primeira propriedade esteja ajustada para 1 (Sim), esta propriedade
determina a cor a ser utilizada para colorir o contorno das letras.
Cor da sombra - Especifica a cor da sombra a ser projetada pelo texto, caso a propriedade
"Tamanho da sombra", a ser vista mais adiante, esteja ajustada para um número maior do que zero.
Figura - Permite a designação de uma imagem para ser exibida no fundo do texto 3D.
Fonte - Determina a fonte, tamanho e cor a ser utilizada na informação a ser impressa.
Tamanho da sombra - Especifique o tamanho (em pontos) da sombra a ser projetada pelo texto
impresso.

Imagem
Este objeto pode ser utilizado para imprimir nos relatórios, campos do tipo multimídia contendo
imagens ou mesmo imagens estáticas não vinculadas a campos das tabelas selecionadas para o
relatório. Todas de suas propriedades podem ser utilizadas exatamente como as propriedades dos
labels ou texto 3D. O que existe de diferente neste objeto é a propriedade "Expande figura" que, se
ajustada para 1 (Sim), determina que a imagem deve ser ajustada ao tamanho deixado por você na
área de formatação.
Linha
Este objeto imprimirá uma linha em seu relatório. As propriedades são algumas das
disponibilizadas para labels ou texto 3D. A propriedade diferente, trata-se da:

Direção - Determina a direção da linha, podendo ser:

• Horizontal
• Vertical
• Diagonal para baixo
• Diagonal para cima

Inserindo sub-relatórios Top Previous Next

Diversos sub-relatórios com relacionamento 1-N podem ser facilmente inseridos nos relatórios
formatados pelo G-Reports do Father. Para inserir sub-relatórios, proceda conforme se segue:
Na árvore do projeto, insira um sub-relatório abaixo de um módulo do tipo relatório;

Da mesma forma descrita para módulos do tipo tabela, explicada anteriormente neste manual,
informe, se necessário, as informações nas abas correspondentes a Geral, Tabelas auxiliares e
Opções, sendo que nesta última se deve estabelecer a relação de ligação com o módulo pai. Se esta
ligação não for estabelecida, todos os registros constantes na tabela básica do subrelatório serão
impressos na sua totalidade, ou seja, não aparecem vinculados 1-N;
Selecione, na árvore do projeto, o módulo principal do relatório (pai) e acesse a formatação do
relatório por meio do botão apropriado, que se encontra na barra de ferramentas do Father;

Posicione, na área de formatação, os campos do módulo pai, ajustando todas as suas


propriedades, conforme necessário;
Insira um sub-relatório na área de formatação, clicando sobre o botão apresentado abaixo,
existente na barra de ferramentas de relatório;

~ 121 ~
MANUAL DO FATHER

Vincule uma tabela ao sub-relatório, por meio da propriedade Tabela. Note que esta propriedade
pode ser preenchida somente com as tabelas inseridas na árvore abaixo do módulo pai.
Posicione os campos dessa tabela na área de formatação do sub-relatório, ajustando as suas
propriedades conforme necessário. Essas propriedades são semelhantes às descritas no tópico
Propriedades do relatório. Vale salientar que a facilidade do relatório padrão poderá também ser
utilizada para o posicionamento dos campos no subrelatório, bastando selecionar a área de formatação
do subrelatório e acionar a geração do relatório padrão.

Inserindo um totalizador no relatório Top Previous Next

Para criar um totalizador de uma coluna, você deve criar um label com o valor a ser impresso
(normalmente, já está posicionado no relatório). Deverá também criar um segundo label e ajustar as
propriedades:

Campo
Estabeleça o campo numérico que deverá ser totalizado por meio do label inserido na área de
formatação. Este é o mesmo campo que consta no label da coluna a ser totalizada;

Totalizador
Estabeleça o tipo de totalização desejada;

Posição
Estabeleça também a posição onde deverá aparecer o total ou subtotal. Observe que as posições
dos totalizadores não estão presas a posições exatamente abaixo de campos totalizados na mesma
página. Por exemplo, desde que o resultado de uma totalização esteja dentro de uma mesma página, o
seu valor poderá ser impresso nesta página, inclusive em cabeçalhos e rodapés.

Inserindo uma quebra no relatório Top Previous Next

Qualquer quantidade de quebras podem ser inseridas em um relatório do G-Reports. Quebras


são estabelecidas da seguinte maneira: Por meio da barra de ferramantas de relatórios, selecione o
objeto Quebra, representado pelo botão a seguir:

Defina as suas propriedades que são, praticamente, as mesmas já descritas para os demais
objetos com exceção de:

Expressão
Defina a expressão que comandará a quebra;

Saltar página
Designa se uma página deve ser saltada a cada quebra.

É importante observar que, após inseridas as quebras, as propriedades inerentes aos campos,
especialmente a propriedade Imprimir... pode apresentar a necessidade de ser alterada para atender
às necessidades.

Imprimindo um código de barra em Top Previous Next


relatório ou etiqueta

A inserção de códigos de barras em relatórios ou, mais frequentemente em etiquetas, é bastante


simples. A SSI Tecnologia desenvolveu oito conjuntos de fontes true-type para a impressão dos
seguintes códigos de barras: EAN-13, EAN-8, UPC-A, cada uma delas com dois estilos (normal e

~ 122 ~
MANUAL DO FATHER

curto) e, ainda, o Código 2/5 interleaved e o Código 3 de 9. Além disso, o Father contempla tipos de
campos instrínsecos para informação dos diversos códigos de barras. Para disponibilizar um código de
barras no relatório, proceda conforme se segue:

1. Insira um label na posição desejada;

2. Vincule-o a um campo de código de barras que tenha sido definido nas tabelas eleitas para o
relatório;

3. Ajuste a sua fonte e tamanho para o código desejado. Na realidade, o segundo passo não é
obrigatório. Qualquer informação pode ser utilizada para imprimir códigos de barras, desde que sejam
obedecidas as regras a seguir:

Tipos EAN-13, EAN-8 e UPC-A aceitam somente dígitos numéricos e têm de ter o tamanho exato
de 13, 8 e 12 caracteres, respectivamente, incluindo o dígito verificador.

Tipo 2/5 interleaved também aceita somente números; porém, não está limitado a tamanho,
embora, dependendo da quantidade de informação, pode ficar impraticável a sua leitura.

Tipo 3 de 9 pode também aceitar letras (maiúsculas), também não tendo limite teórico de
tamanho, embora, na prática, uma certa quantidade de caracteres pode ocasionar dificuldades de
leitura para recuperação do código. O tamanho das fontes utilizadas para impressão de códigos de
barras, normalmente, devem ser ajustados em valores bem maiores do que o normal. Tipicamente,
apenas como sugestão, as fontes 2/5 interleaved e 3/9 apresentam bom resultados nos tamanhos
entre 20 e 22 pontos, enquanto as demais podem precisar de ajustes com valores acima de 28 pontos.

Imprimindo valores em cores diferentes Top Previous Next


no relatório
Posicionando dois labels em posições idênticas e ajustando-se as condições de visiblidade por
meio da propriedade Visível e, ainda, manipulando-se a cor da fonte a ser utilizada para imprimir a
informação, fica bastante fácil imprimir-se, por exemplo, valores negativos em vermelho e positivos em
preto.
Considerações sobre o funcionamento intrínseco dos relatórios
Em linhas gerais, os relatórios são gerados da seguinte forma:
Após o relatório ter sido definido, o Father separa os objetos e campos em grupos definidos pela
propriedade Imprimir ("Como máscara da página", "Início do relatório", "Início da página", "A cada
registro", etc). Os grupos são impressos na seguinte ordem:

Como máscara da página;


Início do relatório;
Início da página;
A cada registro;

4. 1 Como máscara de quebra;


4. 2 Início de quebra;
4. 3 A cada reg quebra;
4. 4 Fim de quebra;
5. Fim da página;
6. Fim do relatório.

No momento apropriado à impressão de cada um dos grupos, estes são separados em três
subgrupos: sub-relatórios, campos memo e outros (restante dos objetos). Os subgrupos são sempre
gerados na seguinte ordem:
1. Subgrupos outros;
2. Subgrupos de campos memo;
3. Subgrupos de sub-relatórios.

Os campos memo de cada grupo são sempre impressos simultaneamente, podendo inserí-los um
ao lado do outro que serão impressos normalmente. Entretanto, você deverá tomar cuidados especiais
quando quiser inserí-los abaixo um do outro, pois poderá ocorrer sobreposição dos mesmos. Existem
duas formas para inserir um campo memo abaixo de outro. A primeira é inserir o campo memo superior
com a propriedade Expandir definida como Não. Desta forma, você determinará o tamanho máximo

~ 123 ~
MANUAL DO FATHER

para este campo. A segunda forma é definir um sub-relatório que utiliza a mesma tabela base do
relatório e, nele, inserir o campo memo desejado. Por meio desta segunda opção, você não terá
sobreposição de campos e os campos memo serão impressos em sua totalidade. No caso dos sub-
relatórios, estes também são divididos em grupos e subgrupos, obedecendo a mesma regra descrita
acima.

Formatando etiquetas Top Previous Next

Os procedimentos para a definição e formatação de etiquetas são idênticos aos adotados para a
confecção de relatórios convencionais. Também no caso das etiquetas, se você quiser proporcionar
janela de previsão (preview) na aplicação final, terá de criar uma tela inicial (pode utilizar a tela padrão),
a partir da qual o usuário fará o acionamento da janela de previsão. Pela sua natureza, as propriedades
de relatórios do tipo etiquetas diferem das dos relatórios convencionais. Para vê-las, você deverá clicar
na área de formatação da etiqueta. A seguir, apenas as propriedades inerentes às etiquetas serão
descritas.
Altura da etiqueta - Informe a altura, em milímetros, das etiquetas existentes no formulário a ser
impresso;
Distância carreiras - Informe a distância vertical, em milímetros, entre uma etiqueta e a que está à
sua direita;
Distância colunas - Esta propriedade define a distância horizontal, em milímetros, entre uma
etiqueta e outra, que esteja imediatamente abaixo;
Duplicatas - Informe a quantidade de etiquetas idênticas que devem ser impressas para cada
registro lido do banco de dados, ou seja, é a quantidade de etiquetas a ser impressa para o mesmo
produto;
Largura da etiqueta - Informe a largura, em milímetros, da etiqueta a ser utilizada na impressão.
Margem esquerda - É a medida horizontal, em milímetros, da primeira posição útil do papel até a
primeira etiqueta;
Margem superior - É a medida vertical, em milímetros, da primeira posição útil do papel até a
primeira etiqueta;
Quantidade de carreiras - No sentido vertical, é a quantidade de carreiras de etiquetas existentes
no formulário;
Quantidade de colunas - Informe a quantidade de colunas de etiquetas existentes no papel.

Definindo um programa executável Top Previous Next

Se você desejar acionar um programa executável de algum ponto do menu da aplicação, onde
tenha inserido na árvore do projeto, esta definição deve ser efetuada da seguinte maneira:

~ 124 ~
MANUAL DO FATHER

Título no menu Top Previous Next

Informe um título para constar na opção do menu da aplicação final que irá acionar o programa.

Programa executável Top Previous Next

Informe o nome completo (drive, path e nome) do programa executável a ser acionado. Se
desejar, você poderá clicar sobre o botão com reticências para abrir o diálogo de localização deste
programa.

Módulo pronto Top Previous Next

Marque esta opção para informar ao Father que este módulo está pronto para ser gerado quando
solicitada a geração dos programas fontes da aplicação..

Integrando um formulário existente ao Top Previous Next


projeto
Título no menu
Informe um título para que este formulário seja acionado na aplicação.

Nome do formulário
Informe o nome do formulário a ser integrado ao projeto. Se desejar, você poderá clicar sobre o
botão com reticências para abrir o diálogo de procura do formulário desejado.

Módulo pronto
Marque esta opção para informar ao Father que este módulo já poderá ser gerado.

Um formulário existente integrado a um projeto irá figurar no menu da aplicação final e o Father
criará uma linha para exibí-lo, assim que o usuário clicar sobre a opção. É possível também, inserir
módulos (.BAS), formulários (.FRM) e classes (.CLS) nos projetos do Father, sem que apareçam no
menu, bastando clicar na aba denominada Miscelânea, na definição do projeto. Consulte o tópico
Inserindo Módulos e Formulários Adicionais neste manual.

Nenhuma verificação de integridade e compatibilidade com o resto do projeto será efetuada pelo

~ 125 ~
MANUAL DO FATHER

Father, que irá simplesmente integrar este módulo no menu da aplicação. Por isso, você deverá ter a
certeza de que o código escrito para este formulário é compatível com o resto dos módulos,
principalmente no compartilhamento de variáveis, funções públicas, etc.

Todos os forms não modais das aplicações do Father necessitam que algumas variáveis públicas
sejam nele definidas. Essas variáveis armazenam características ou situações do mesmo. Por isso, os
forms existentes integrados ao projeto têm que, obrigatoriamente, conter essas variáveis para evitar
erros em rotinas internas e genéricas da aplicação. Essas variáveis têm de ser declaradas como
Públicas no módulo genérico do form:

Variável Valor a ser atribuído


vgSituacao ACAO_NAVEGANDO
vgCaracteristica F_COMUM
vgTipo TP_COMUM
vgFormID (um número negativo
qualquer)

Criando um formulário avulso no projeto Top Previous Next

Para criar um formulário avulso no projeto de uma aplicação, você deverá preencher com as
informações:

Geral e Tabelas auxiliares Top Previous Next

Esses dois aspectos da definição de um formulário avulso são idênticos aos da definição dos
módulos explicados anteriormente. Neste módulo é obrigatório você criar uma tela complementar para
receber as variáveis desejadas e que justifique a criação do form.

~ 126 ~
MANUAL DO FATHER

Criando uma tela complementar Top Previous Next

A criação de telas complementares serve para propocionar um meio de captação de variáveis


cujos conteúdos são utilizados em alguns tipos de módulos gerados pelo Father, como, por exemplo,
relatórios, etiquetas, processos pré-definidos, consultas, etc. Para a criação deste tipo de tela, você
deve proceder de maneira semelhante à descrita para a criação de janelas para entrada de dados,
contando com as facilidades do Editor de Telas. Algumas diferenças básicas devem, no entanto, serem
observadas:
As telas complementares não apresentam campos do banco de dados na lista para serem
posicionados na tela. As variáveis devem ser recebidas por meio do objeto gMask, que pode ser
inserido na tela e ter as suas propriedades designadas;

A propriedade Campo, ao ser atribuída ao objeto gMask, não vincula o campo selecionado a
nenhuma tabela do banco de dados, servindo apenas para captar as características desse campo,
como máscaras, validações, etc.
Ao invés da lista de campos existente nas janelas para entrada de dados, é apresentada uma
lista contendo dois objetos pré-programados, que podem ser disponibilizados na tela:

Botão continua Top Previous Next

Se inserido na tela, este botão irá automaticamente executar todas as críticas e validações das
variáveis designadas para serem recebidas na tela e para as quais tenham sido designadas as
propriedades Validação, Mensagem, etc. A propriedade "Ação no clique", que deve ser designada e
programada por você, será executada logo após essas validações.

Botão cancela Top Previous Next

Se inserido na tela, este botão estará préprogramado para simplesmente descarregar o form.

No caso de módulos do tipo Relatório ou Etiqueta, mais alguns objetos estarão disponíveis para,
opcionalmente, serem inseridos na tela, permitindo a criação de uma interface bastante elaborada.
Todos esses objetos já estão pré-programados segundo a sua função:

Número de cópias Top Previous Next

Campo do tipo rotativo para que o usuário informe o número de cópias a serem emitidas do
relatório ou etiqueta.

Destino do relatório Top Previous Next

É disponibilizado um frame e 3 botões de opção para que o usuário selecione o destino do


relatório, ou seja, selecione se a saída será para janela, arquivo ou impressora.

Formato do arquivo Top Previous Next

Você poderá disponibilizar este objeto para permitir ao usuário designar o formato do arquivo a
ser exportado, caso tenha escolhido destinar o relatório para um arquivo. Diversos formatos estão
disponíveis.

Arquivo de saída Top Previous Next

Caso o usuário tenha selecionado destinar o relatório para um arquivo, este objeto é utilizado
para receber o nome do arquivo a ser gerado. Já vem com interface completa constante de um objeto
gMask, com título e botão para ativar o diálogo de arquivos.

~ 127 ~
MANUAL DO FATHER

Impressora padrão Top Previous Next

Você pode disponibilizar este objeto na tela para exibir qual a impressora configurada como
padrão no Windows.

Critério Top Previous Next

Este objeto deve ser inserido na tela para exibir o critério de seleção de registros (expressão
SQL), caso o botão filtra a seguir tenha também sido inserido.

Botão Filtra Top Previous Next

Este botão, se inserido na tela, serve para o usuário ativar a interface de montagem da expressão
SQL que define a seleção de registros do relatório ou etiqueta.

Configura impressora Top Previous Next

Este botão, se inserido na tela, permite ao usuário ativar o diálogo padrão do Windows para
configurar impressoras.

Módulos de apoio à Emissão de Cupom Top Previous Next


Fiscal e TEF
Os módulos de apoio à Emissão de Cupom Fiscal e TEF Discada têm por finalidade proporcionar
maior flexibilidade na manutenção da impressora fiscal, efetuando diversas operações fiscais, tais
como fechamento de caixa, alteração de horário de verão, sangria, cancelamento de itens, etc.

Definindo rotina de backup para a Top Previous Next


aplicação
Você poderá definir rotina de backup do banco de dados da aplicação final de modo fácil e
intuitivo.

A execução do serviço pode ser feita diretamente da aplicação, com isto, você oferece maior
controle ao usuário de seus sistemas, visto que é possível ativar e desativar o serviço de backup, bem
como visualizar se o mesmo encontra-se ativo.
Para habilitar tal rotina, você deverá inserir, sob o menu Arquivo da árvore do projeto, a opção
Configurações de backup.

Além de inserir a opção acima referenciada, você deverá instalar o serviço de backup no
ambiente do usuário final. Para isso, é disponibilizado junto com a instalação do Father o utilitário
BACKUPSERVICE.EXE, que é incorporado automaticamente ao kit de instalação do aplicativo final
gerado. Para instalar o serviço de backup, instalação tal que deverá ser efetuada no servidor de
arquivos, você deverá:
Primeiramente, copiar o arquivo BACKUPSERVICE.EXE para um diretório do servidor. Como a
configuração desse serviço será efetuada a partir do aplicativo final gerado, utilizado nas estações de
trabalho, ao menos um usuário deverá ter permissão de escrita no diretório do serviço.
Após copiar o arquivo, via menu "Iniciar/Executar" do Windows, execute a linha de comando
<diretório do serviço>\backupservice.exe -i. Após instalado o serviço, será exibida uma janela
mencionando o sucesso da instalação do mesmo.
Cabe ressaltar que não há restrições de instalação do serviço de backup no Windows 9X e ME,
devendo ser informada a mesma linha decomando para instalação do mesmo.
Caso o servidor do usuário final utilize o Windows NT, 2000, XP ou outras variantes NT, uma vez
que o serviço esteja instalado, você deverá inicializá-lo da primeira vez. Para isso, os procedimentos a
seguir devem ser observados:

Windows 2000 ou XP - Acessar o menu Iniciar/Configurações/Painel de controle/ Ferramentas


1. Administrativas/Serviços, clicar com o botão direito do mouse sobre o serviço denominado Father

~ 128 ~
MANUAL DO FATHER

Backup Service e então clicar em "Iniciar" para rodar o serviço.

Windows NT - Acessar o menu Iniciar/Configurações/Painel de controle/Serviços, selecionar o


2. serviço denominado Father Backup Service e então clicar em "Iniciar" para rodar o serviço.

Instalado e inicializado o serviço no servidor, a rotina de backup deverá ser configurada em uma
estação de trabalho, a partir da qual seja possível acessar o diretório do serviço. A configuração de
uma boa rotina de backup permitirá manter a integridade do banco de dados da aplicação, em caso
de perda ou corrupção da base original. Daí advém a vital importância de se utilizar bem esse
recurso. A configuração da rotina de backup está disponível no menu Arquivo/Configurações de
3. backup.

Geral Top Previous Next

Arquivo de configurações
Esse campo permite designar o caminho e nome do arquivo de configuração do backup. Ao
efetuar quaisquer alterações nas opções de backup, essas são automaticamente gravadas nesse
arquivo e disponibilizadas para o serviço de backup. É aconselhável que o endereço seja discriminado
nesse campo utilizando-se o padrão UNC (\\servidor\c$\gasbackup\...) e não por drive remoto, uma vez
que aquele padrão garante que todos os usuários acessem por um mesmo endereço o diretório do
serviço no servidor para que as alterações das configurações do backup possam ser escritas.
Quando o diretório do banco de dados for solicitado ao usuário do aplicativo final gerado, ao ser
este executado pela primeira vez, é de extrema importância para o funcionamento da rotina de backup
que a indicação desse diretório seja feita no padrão UNC (\\servidor\compartilhamento\...). Esse
caminho, gravado no arquivo .INI do aplicativo, é passado no arquivo de configurações do backup para
que o serviço possa acessar o banco de dados.

Nome do usuário
Esse campo permite designar o nome do usuário responsável pela realização do backup. Além
de ser utilizada nos comentários do arquivo de backup a ser criado, essa informação também será
utilizada na notificação a ser encaminhada para os endereços configurados na aba "Notificação".

Senha para compactação


Esse campo designará a senha, de até 20 caracteres, que será utilizada na criação do backup do
banco de dados. Caso seja necessária a restauração futura do backup, o usuário deverá deverá
informar a referida senha para descompactar o backup criado. Caso o campo em questão não seja
preenchido, não será utilizada senha alguma na compactação.

Complemento
Esse campo define os comentários que serão inseridos nos arquivos de backup para referência
futura. O conteúdo desse campo será exibido, por exemplo, logo ao abrir o arquivo de backup e no
email de notificação de execução do backup.

Habilitar backup
Essa opção define se a rotina de backup será ou não utilizada. Ao desmarcar essa opção,
nenhum dos backups agendados serão executados

Armazenamento Top Previous Next

Diretório para backup


Esse campo designa o diretório no qual serão gravados os backups agendados. A critério do
usuário do aplicativo final gerado, os arquivos debackup criados poderão ser gravados pelo serviço em
um outro servidor (storage), bastando indicar adequadamente o caminho nesse campo.

Arquivo de backup
Esse campo designa as primeiras letras do nome do arquivo de backup. Os demais caracteres
que formarão o nome do arquivo serão estabelecidos de acordo com a periodicidade do mesmo. Para
exemplificar a nomenclatura utilizada para esses nomes, suponha que esse campo seja preenchido
com a informação "bkp_estoque_bd" e que ainda não tenha sido feito nenhum backup diário ou

~ 129 ~
MANUAL DO FATHER

mensal. Assim sendo, o nome do arquivo de backup diário do dia 20/05/2003 será "bkp_estoque_bd-
D0001-2003-05-20.zip". Já o arquivo de backup do mês de maio de 2003 será "bkp_estoque_bd-M001-
MES-05-2003.zip".
Armazenar backups... Semanalmente, Mensalmente, Anualmente Essa opção determina quais
serão as periodicidades utilizadas no processo de backup, além do diário. Obviamente, caso sejam
marcadas respectivamente as opções “Semanalmente”, “ ensalmente” e “Anualmente”, serão ativados
os backups semanais, mensais e anuais do banco de dados.
Cabe salientar que esses backups serão realizados na primeira oportunidade que surgir para que
sejam feitos. Assim sendo, para que a lógica desse processo fique mais intelegível, vamos exemplificar
esse processo. Suponha que não existam quaisquer backups, sejam eles diários, semanais, mensais
ou anuais. No primeiro agendamento, o serviço de backup verificará se existe backup diário (para o dia
corrente), disparando o processo caso não exista. Caso exista, o serviço de backup verificará se o
número máximo de backups armazenados para o período é menor ou igual à quantidade designada no
campo "Quantidade de backups que serão armazenados a cada...", disparando a execução do backup
e convenientemente excluindo ou movendo aqueles mais antigos.
Após fazer o backup diário, o serviço verificará se já existe um backup semanal para a semana
corrente, mensal para o mês corrente e anual para o ano corrente, executando cada um deles caso
não existam. Por outro lado, caso existam backups para a semana, mês e ano correntes, os backups
para os referidos períodos não mais serão feitos. Somente quando houver uma virada de período, seja
ele semanal, mensal ou anual, o bakcup será novamente executado. Quando houver, por exemplo,
uma virada de semana para outra (sábado para domingo), o serviço de backup perceberá que já iniciou
uma nova semana e fará o backup na primeira oportunidade que tiver (logo após o backup diário ser
executado). Caso mesmo no domingo seja efetuado um backup diário, o semanal também o será.
Assim, é muito importante salientar que caso se deseje restaurar um backup da 35a semana do ano,
por exemplo, deverá ser restaurado o backup realizado no primeiro agendamento da 36a semana, que
logicamente corresponderá à semana anterior. Essa mesma lógica servirá para os backups mensais e
anuais. Para clarificar com mais um exemplo, caso seja necessário restaurar o backup do mês de maio
(eventos e informações naquele mês gerados), por exemplo, a restauração deverá ser efetuada
tomando como base o primeiro backup realizado no mês de junho, que logicamente corresponderá ao
mês de maio.
Quantidade de backups que serão armazenados a cada... Esse campo múltiplo permite designar
a quantidade de últimos backups diários, semanais, mensais e anuais que serão preservados. A atitude
a ser tomada em relação aos backups que se fizerem antigos por esse campo poderá ser determinada
pelo campo "Ação com arquivos de backup antigos".
Ação com arquivos de backup antigos
A ação a ser tomada com os arquivos de backup que não mais atenderem às condições
especificadas no campo "Quantidade de backups..." poderá ser:
• Excluir arquivo - provoca a exclusão sumária do arquivo de backup.
• Mover para a pasta - provoca a remoção do arquivo de backup para o diretório aqui designado.

Notificação Top Previous Next

Enviar e-mail de notificação


Essa opção determina se o envio de notificação de backup estará habilitado ou não. Essa
notificação se faz muito pertinente por reunir diversas informações, como horário de início e fim do
backup, ações realizadas no decorrer do processo, etc. A notificação, em caso de erros ocorridos
durante a execução do backup, também reúne informações que levaram à ocorrência dos problemas.

Servidor SMTP
Esse campo permite designar o servidor de envio de mensagens que permita o envio da
notificação.

Enviar para
Permite designar o endereço de e-mail para o qual será enviada a notificação. Caso queira enviá-
la para mais de um endereço de e-mail, basta digitálos neste campo, separando-os com ponto-evírgula
(;).

Endereço remetente
Permite designar o endereço de e-mail a ser utilizado como origem da notificação.

Assunto (sucesso)

~ 130 ~
MANUAL DO FATHER

Permite designar o Subject da mensagem de notificação, caso o processo de backup transcorra


com sucesso, permitindo ao usuário uma melhor identificação do teor da mensagem enviada.

Assunto (erro)
Permite designar o Subject da mensagem de notificação, caso ocorra algum erro nodecorrer do
processo de backup, permitindo ao usuário uma melhor identificação do teor da mensagem enviada.

Mensagem adicional
Permite personalizar uma mensagem a ser inserida no corpo da mensagem de notificação de
backup.

Agendamento Top Previous Next

Dia da semana / Horário


Por meio desses dois campos, o usuário pode personalizar os horários e dias para execução do
backup, podendo este ser realizado em dias e horários específicos durante a semana ou mesmo
diariamente. É plenamente possível estabelecer múltiplos horários, em dias diferentes ou não, para que
o backup seja efetuado.
Para inserir um novo agendamento, o usuário deverá clicar no botão de inserção de
agendamento mostrado a seguir e definir o dia da semana e horário em que o backup será efetuado.

Caso opte ainda por excluir algum agendamento já cadastrado, o usuário deverá utilizar o botão
de exclusão mostrado a seguir.

Editor de programas Top Previous Next

O Father dispõe de um editor que pode ser utilizado por você para elaborar suas próprias rotinas
avulsas e funções que serão integradas à aplicação. Este editor é acionado selecionando-se o menu
"Editar/Editar código de programa", pela tecla F9 (hot key), aplicando-se um duplo clique em um campo
onde seja possível o seu acionamento ou, ainda, por meio da barra de ferramentas, clicando-se no
botão que aparece a seguir: botão para ativar o editor de programas Este recurso é importante não só
para elaborar rotinas avulsas a serem integradas ao projeto como também em diversos pontos da sua
definição, como, por exemplo, no estabelecimento de validações e pré-validações de campos,
condições especiais, etc.

Caso você defina no Editor de Programas uma função com o mesmo nome de uma função
gerada automaticamente, o código fonte do aplicativo será gerado com a função definida por você e
não mais com a função default. Esse recurso é válido para as janelas de dados, processos pré-
definidos, relatórios, etiquetas, consultas, formulários avulsos e módulos (modulo.bas e modulo2.bas).
O Editor de Programas do Father apresenta algumas facilidades para auxiliar você, como, por exemplo,
capitalização automática de palavras-chaves, utilização de cores diferentes para apresentar
comentários, texto e palavraschaves da sintaxe do Visual Basic. Possui também recursos de clipboard
além de procura e substituição de texto, bem como a manipulação de endentação e comentários.

A utilização do Editor de Programas requer que você tenha algum conhecimento da linguagem
Visual Basic. Quando você posiciona o cursor em um campo da definição do projeto onde possa haver
a necessidade de edição, o Editor de Programas poderá ser executado com um duplo clique do mouse
sobre este campo.

~ 131 ~
MANUAL DO FATHER

As três divisões do editor, separadas por uma linha em vermelho, representam áreas de edição,
tendo, cada uma, a sua finalidade:

Variáveis ou funções externas Top Previous Next

A primeira área de edição serve para você declarar variáveis e constantes que terão escopo
(serão "vistas") dentro do módulo que estiver selecionado na árvore. No caso de ser este o Título do
Projeto, essas variáveis ou constantes terão escopo global dentro do projeto, devendo, portanto, serem
declaradas com as palavras Public, Public Const, etc., sendo disponibilizadas em um módulo (.BAS) da
aplicação. Nesta área também têm que ser declaradas quaisquer funções externas, residentes em DLL
(Windows API). Se o módulo selecionado for uma janela de dados, as variáveis serão vistas somente
dentro deste módulo, podendo ser declaradas com a palavra Dim, sendo inserida na área de
declarações do módulo.
Exemplos:
Public Const MAX_MOD = 3'declara constante pública
Public DirAplic As String'declara variável pública
Dim QdeModulos As Integer'declara variável de módulo

Designações de variáveis Top Previous Next

A segunda área de edição está reservada para as designações (atribuição de valores iniciais) das
variáveis criadas na primeira área. Em se tratando do Título do Projeto, o conteúdo aqui digitado será
inserido dentro da função MAIN( ) do módulo principal da aplicação. No caso de Janela de Dados, será
inserido na procedure FORM_LOAD( ) do módulo selecionado.

~ 132 ~
MANUAL DO FATHER

Funções e rotinas globais Top Previous Next

Finalmente, a terceira área de edição deve ser utilizada para a criação das funções e rotinas
(sub)
que terão escopo dentro do módulo selecionado. Aqui, também, se o módulo selecionado for o
Título do Projeto, essas rotinas ou funções terão escopo global no projeto, devendo serem declaradas
com a palavra Public e sendo inseridas em um módulo (.BAS) da aplicação. Em módulos do tipo
"Janela de Dados", essas funções são declaradas com a palavra chave Private e são inseridas dentro
da área General do módulo (.FRM).
Exemplos:
' cria função pública
Public Function Fatorial (Numero As Integer) As Long
...
End Function
' cria função com escopo de módulo
Private Function ContaPalavras(St As String) As Long
...
End Function

Banco de campos Top Previous Next

De vez em quando, durante a definição do projeto, você poderá ter a necessidade de se referir a
campos de outras tabelas no preenchimento de informações, como, por exemplo, validações, fórmulas
para processamentos e lançamentos, etc. Além disso, poderá haver necessidade de referenciar
variáveis, constantes e funções (function e sub) presentes no projeto. Com essa finalidade, o Father
disponibiliza um banco de campos para captura sempre que detectar esta necessidade, apresentando
uma tela semelhante a que aparece, a seguir:

~ 133 ~
MANUAL DO FATHER

Além dos campos, esse mesmo banco de campos relaciona a lista de variáveis, constantes e
funções (function e sub) disponíveis para o objeto em definição. Esta janela é constituída por uma série
de abas nas quais estão disponíveis não só variáveis, constantes e funções (function e sub)
disponíveis para o objeto ou campo em definição, mas também os campos das diversas tabelas que
estão, no momento, relacionadas à situação. Sobre esta lista, convém observar que:

O nome do campo aparece nesta lista, seguido do alias (apelido), entre parênteses, definido para
o mesmo;
Para facilitar a visualização, os campos da tabela básica sempre são exibidos na cor preta. A
partir disso, o Father utiliza duas outras cores, alternando-as, para diferenciar cada nova tabela
relacionada;
Nas abas de variáveis, constantes e funções, para facilitar a identificação dos itens, o Father
exibirá na cor preta aqueles itens que sejam globais para todo o sistema, na cor vermelha aqueles que
sejam globais para o módulo em questão e na cor azul aqueles que forem privados.
Outras informações são exibidas, como tipo, tamanho e máscara do campo, para que você possa
saber com que tipo de informação está trabalhando no momento. A partir desta janela, você poderá
capturar informações já definidas no projeto, devendo primeiro clicar sobre o campo que receberá a
captura e depois aplicar um duplo clique no item que deseja capturar.

Para facilitar a manipulação das informações, a janela do banco de campos apresenta vários
botões de operadores, inclusive transferência de dados como inteiro, quociente e resto da divisão
inteira, concatenação de strings, etc.

Controles do editor na barra de Top Previous Next


ferramentas

Sempre que o editor é executado, a barra de ferramentas do Father apresenta um grupo de


botões exclusivamente para serem utilizados na operação do editor:

Botão procura Top Previous Next

Tem por finalidade ativar o diálogo de procura de texto no editor.

~ 134 ~
MANUAL DO FATHER

Neste diálogo, podem ser marcadas as opções de "Palavra inteira" e "Considerar caixa",
respectivamente, para que a pesquisa considere apenas palavras completas e diferencie letras
maiúsculas das minúsculas. Os botões existentes neste diálogo podem estar disponíveis ou não, pois
atendem também as opções de substituição, explicada a seguir. Em particular, o botão intitulado
"Marca todos" marcará todas as ocorrências do texto procurado nas áreas do Editor de Programas.

Botão procura/substitui Top Previous Next

Tem por finalidade ativar o diálogo de procura/substituição de texto no editor:

A opção "Preservar caixa" permite que a definição de letras maiúsculas e minúsculas das
ocorências encontradas sejam preservadas no momento da substituição. Já a moldura intitulada
"Substituir em" permitirá a você definir a região na qual a substituição será efetuada: apenas no texto
selecionado ou no texto inteiro.

Botões para desfazer/refazer Top Previous Next


modificações
Têm por finalidade desfazer e refazer, de modo ilimitado, quaisquer alterações que tenham sido
efetuadas no Editor de Programas do Father.

Botões para manipular endentações Top Previous Next

Têm por finalidade endentar ou retirar a endentação de cada uma das linhas do bloco
selecionado, proporcionando uma facilidade maior na formatação das estruturas da linguagem
definidas diretamente por você.

~ 135 ~
MANUAL DO FATHER

Botões para manipular comentários Top Previous Next

Têm por finalidade comentar ou retirar o comentário de cada uma das linhas do bloco
selecionado. Caso você não tenha selecionado algum bloco de linhas e pressione o botão de inserir
comentário, o caracter de comentário (apóstrofo) será incluído no início da linha indicada.

Além desses botões, existe também, na janela do editor, a lista contendo os módulos da árvore
que suportam código escrito por você, bastando selecionar qualquer uma das opções e elaborar o
código necessário.

Utilizando o botão direito do mouse sobre a área de edição do Editor de Programas, você poderá
ainda selecionar todo o texto exibido da área de edição corrente (Designações de variáveis,
Declarações de variáveis ou funções externas e Funções e rotinas globais), remover todos os
marcadores do texto, inserir arquivos de diversos formatos, inserir quaisquer caracteresda tabela ASCII
ou editar as propriedades do editor, as quais veremos no tópico a seguir.

Opções de configuração do Editor de Top Previous Next


Programas
Para alterar a aparência do Editor, você pode utilizar a opção Propriedades do menu de atalho
(botão direito do mouse):

~ 136 ~
MANUAL DO FATHER

Em seguida, você poderá alterar conforme desejar:

Ajuste de cores Top Previous Next

Por meio dessa moldura, você poderá ajustar as cores de primeiro e segundo planos para os
itens Número de páginas, Strings, Texto, Números, Funções API, Palavras escopo e Janela. O estilo
de fonte (normal, negrito, itálico, dentre outros) também poderá ser estabelecido para cada um
desses itens por meio da lista"Estilo de fonte".

Endentação Top Previous Next

Esta opção permite a você definir o padrão do número de caracteres para a endentação no
Editor de Programas. O valor padrão é 1.

Fonte Top Previous Next

Esta opção permite a você manipular o tipo de fonte para a edição no Editor de Programas. Para
alterá-lo, basta pressionar o botão "Mudar..." e selecionar a melhor combinação de fonte e tamanho
que lhe convier. Outras opções também existentes são "Número de linhas" e "Margem esquerda" que
permitem respectivamente inserir o número de linhas na margem esquerda da janela do editor e exibir
ou não a margem esquerda da mesma janela.

Editor de Telas Top Previous Next

O Editor de Telas do Father permite a criação das janelas da aplicação final. Essas janelas
podem ser, tanto a janela principal - MDI (mais especificamente a sua Barra de Ferramentas) quanto
qualquer uma das Janelas de Dados, utilizadas para a digitação e edição de informações nas tabelas
da aplicação. Para utilizar o Editor de Telas, selecione a opção de menu "Editar/Formatar tela" ou
clique sobre o botão em destaque, existente na barra de ferramentas do Father.

~ 137 ~
MANUAL DO FATHER

Se o primeiro item da árvore (Solução) estiver selecionado no momento e esta solução possuir
mais de um projeto, você poderá executar a formatação da tela de solução, que irá acessar os
aplicativos dos projetos inclusos na solução, funcionando como um "gerente" dos módulos criados.
Consulte o tópico Desenhando a tela da solução para obter maiores detalhes.

Se o segundo nível da árvore (Título do Projeto) estiver selecionado no momento, você poderá
executar a formatação da barra de ferramentas da janela principal da aplicação. Uma barra default é
apresentada como ponto de partida para as modificações que se fizerem necessárias. Consulte o
tópico Desenhando a barra de ferramentas da aplicação para obter maiores detalhes.

Se um módulo do tipo "Janela de Dados" estiver selecionado na árvore do projeto, o Editor de


Telas é executado para a formatação da janela de entrada de dados da tabela básica referente ao
módulo selecionado.

Se um módulo do tipo Consulta, Relatório, Etiqueta, Processo pré-definido ou Formulário avulso


estiver selecionado na árvore do projeto, o Editor de Telas é executado para a formatação de uma tela
complementar, utilizada para receber variáveis de memória digitadas pelo usuário da aplicação.

Nas explicações a seguir, o termo tela será utilizado para se referir aos dois casos (tela ou barra
de ferramentas), visto que não há diferenças no aspecto operacional de sua formatação. O Editor de
Telas proporciona diversas facilidades, como, por exemplo, selecionar diversos controles de uma só
vez, drag and drop (arrasta e solta), designação de propriedades para os objetos, inserção de novos
controles, etc.

Formatando a tela Top Previous Next

As Ferramentas da tela fazem parte do Editor de Telas do Father. Trata-se de uma janela
flutuante, que fica sempre por cima das demais, a partir da qual você pode selecionar os controles e
campos que deseja inserir na tela, bem como designar suas propriedades, dentre outras facilidades.

~ 138 ~
MANUAL DO FATHER

As propriedades existentes nesta lista aparecem, por default, categorizadas segundo a sua
natureza. Se desejar, você poderá também apresentá-la em ordem alfabética, utilizando o botão que
aparece a seguir:

Para detalhes, consulte o Propriedades dos objetos de tela.


Top Previous Next
Ferramentas de tela
Diversos outros controles podem ser inseridos na tela que esteja sendo formatada. Dependendo
do tipo de módulo selecionado na árvore, alguns deles podem não estar disponíveis. A figura abaixo
apresenta os objetos que podem ser inseridos. A função de cada um deles, seguindo a ordem da
esquerda para a direita, será descrita a seguir.

Top Previous Next


Abas (Tabs)

Este objeto ou controle pode ser utilizado para conter outros controles organizados em páginas
ou abas. Por exemplo, os dados pessoais de um funcionário podem ser digitados na primeira página e
os seus dados funcionais na segunda, etc.
Top Previous Next
Label

Este controle tem por finalidade exibir mensagens nas janelas de entrada de dados, como, por
exemplo, uma fórmula qualquer envolvendo um ou mais campos das tabelas relacionadas. Para

~ 139 ~
MANUAL DO FATHER

Top Previous Next


Botão

Um botão é, normalmente, inserido na tela para acionar uma rotina avulsa, que você deseja
elaborar. Para utilizar este recurso, proceda da seguinte forma:
1. Insira o botão na tela ou na barra de ferramentas;

2. Utilizando a grade de propriedades, designe o seu aspecto, como figura, altura, largura, etc.;

Designe a sua propriedade "Ação no clique", elaborando uma função para apresentar a janela
3. desejada com o auxílio do Editor de Programas.

Top Previous Next


Imagem

Utilize este controle para inserir imagens


Top Previous Next
Painel

Este tipo de controle pode ser utilizado para agrupar outros controles ou campos. Pode também
ser utilizado para conter uma figura para pano de fundo da tela.
Top Previous Next
Frame

Um Frame pode ser utilizado para agrupar outros controles em uma determinada área da tela.
Para este controle, pode-se também designar a propriedade Fórmula, da mesma maneira que é feita
para o label. O resultado da fórmula aparecerá no título do frame.
Top Previous Next
Gmask

Este tipo de objeto é um controle genérico de edição desenvolvido pela SSI Tecnologia, que
serve virtualmente para receber qualquer tipo de dado, como, por exemplo, campos numéricos com
calculadora, campos data com calendário, imagens, etc.

~ 140 ~
MANUAL DO FATHER

Top Previous Next


Grid

Este tipo de objeto é um controle especial desenvolvido pela SSI Tecnologia para possibilitar a
digitação de registros em tabelas filhas (com relacionamento 1-N). As suas células possuem os
mesmos recursos do objeto gMask descrito anteriormente. Só estará disponível para utilização se o
módulo em definição for uma janela de dados que esteja subordinada a uma outra em relação 1-N.

Top Previous Next


Sub-relatório

Este tipo de objeto é utilizado somente na formatação de relatórios e tem por finalidade inserir um
sub-relatório na área de formatação.
Top Previous Next
Quebra

Este tipo de objeto também é utilizado somente em relatórios e tem por finalidade inserir uma
quebra (agrupamento) no relatório em formatação.
Top Previous Next
Linha

Este tipo de objeto é utilizado, normalmente, para traçar linhas na tela, separando objetos com
efeito puramente estético.
Top Previous Next
Shape

A exemplo do objeto anteriormente descrito, o shape pode ser utilizado para inserir formas na tela
também com finalidades estéticas ou por qualquer outra razão que você julgar conveniente.
Top Previous Next
Texto 3D

Este tipo de objeto é utilizado, normalmente, para inserir textos com efeitos especiais em 3D, com
sombra, contorno e um ângulo de impressão qualquer.

~ 141 ~
MANUAL DO FATHER

Top Previous Next


Picture

Este tipo de objeto pode ser utilizado para inserir imagens nas telas em formatação. Pode
também ser utilizado como container (área onde outros objetos podem ser posicionados).
Top Previous Next
Insere Gráfico

Permite inserir um gráfico na tela


Top Previous Next
Gravação da tela

Deve ser acionada para gravar a tela após a sua formatação. É aconselhável utilizar este botão,
quando a formatação da janela for muito demorada, evitando assim perda de trabalho.
Top Previous Next
Restauração da tela

Utilizada para restabelecer a última situação em que se encontrava a tela, na última vez em que
foi gravada.
Top Previous Next
Ordem de acesso aos controles

Este botão estabelece automaticamente, da esquerda para a direita e de cima para baixo, a
ordem com que os controles são acessados quando o usuário da aplicação pressionar a tecla <TAB.>.
Top Previous Next
Criação de tela padrão

~ 142 ~
MANUAL DO FATHER

Esta operação formata automaticamente uma tela padrão. No caso de formatação de barra de
ferramentas, apresenta a barra que o Father disponibiliza como default para a aplicação a ser gerada.
No caso de formatação de uma janela para entrada de dados, o Father apresenta uma tela padrão na
qual tenta posicionar todos os campos definidos para a tabela básica, obedecendo ao que estiver
estabelecido nas opções da tela padrão (veja tópico Definindo as Opções de Tela Padrão, um pouco
mais adiante) que podem ser visualizadas e alteradas clicando-se com o botão direito do mouse no
botão apresentado a seguir ou selecionando-se "Opções/Opções da tela padrão" por meio do menu.
É importante observar que, ao construir a tela padrão, o Father tentará posicionar, a partir do
primeiro campo da tabela básica, quantos campos forem possíveis de serem posicionados. Com isto,
poderá ocorrer que você tenha que posicionar manualmente os campos finais, que o Father não tenha
conseguido fixar. Uma vez que os campos estejam posicionados, o Father insere um check antes do
nome do campo na janela de Ferramentas da tela para indicar que esse já está posicionado.
Em se tratando de uma tela de arquivo subordinado (filho), que você não deseje inserir em grid,
você terá que retirar, manualmente, os campos correspondentes às chaves de relacionamento com a
tabela pai (normalmente os primeiros da tela), cujos valores não são digitados pelo usuário, pois são
preenchidos automaticamente por rotinas da aplicação.
Top Previous Next
Seleciona todos

Este botão tem por finalidade selecionar, de uma só vez, todos os controles posicionados na tela,
permitindo que sejam trabalhados em conjunto.
Top Previous Next
Apagar coluna do Grid

Este controle só estará disponível se o módulo em definição for do tipo Tabela em grid, tendo por
finalide apagar a coluna (campo) que esteja selecionado no grid.
Top Previous Next
Inserir coluna no Grid - Após

Este controle também só estará disponível se o módulo em definição for do tipo Tabela em grid,
tendo por finalidade inserir uma nova coluna (campo) imediatamente após a coluna selecionada.
Top Previous Next
Inserir coluna no Grid - Antes

Também este controle estará disponível somente se o módulo em definição for do tipo Tabela em
grid, tendo por finalidade inserir uma coluna (campo) imediatamente antes da coluna selecionada no
grid.

~ 143 ~
MANUAL DO FATHER

Top Previous Next


Alinhar à esquerda

Este controle só estará disponível se mais de um controle estiver selecionado na tela, tendo por
finalidade alinhar, verticalmente, à esquerda os controles selecionados.
Top Previous Next
Alinhar à direita

A exemplo do controle anterior, este também só estará disponível se mais de um controle estiver
selecionado na tela, tendo por finalidade alinhar, verticalmente, à direita os controles selecionados.
Top Previous Next
Alinhar pelo topo

Também este controle, a exemplo dos dois controles anteriores, só estará disponível se mais de
um controle estiver selecionado na tela, tendo por finalidade alinhar ao topo os controles selecionados.
Top Previous Next
Travar os controles

Este botão bloqueia os controles posicionados na tela, não permitindo que sejam movidos. Após
terminar a formatação, você poderá desejar clicar sobre este botão para evitar que sejam
movimentados involuntariamente.
Top Previous Next
Categorização de propriedades

Por default, a lista de propriedades da janela de Ferramentas da tela aparece dividida em


categorias, segundo as características das propriedades. Este botão, que tem dois estágios, se estiver
ligado, força a apresentação alfabética das propriedades.

~ 144 ~
MANUAL DO FATHER

Top Previous Next


Inserir ou retirar grade de formatação

Este botão tem por finalidade ligar ou desligar a apresentação da grade auxiliar de formatação de
telas e relatórios. O seu tamanho é configurável por meio do menu "Opções/Configurações/Telas e
relatórios".
Top Previous Next
Faz Skin

Cria um template de Skin para ser usado em outro controle.


Top Previous Next
Selecionando controle na tela
Para selecionar um controle na tela em formatação, basta clicar sobre o controle desejado.
Quando um controle fica selecionado, oito pequenos objetos quadrados aparecem nos seus cantos e
bordas. Uma vez selecionado um controle, pode-se alterar a sua posição, designar suas propriedades,
retirá-lo da tela, etc.

Top Previous Next


Selecionando múltiplos controles
Múltiplos controles podem ser selecionados, de uma só vez, para serem trabalhados em
conjunto. Para selecionar diversos controles de uma só vez, proceda conforme se segue:
1. Clique sobre um dos controles, selecionando-o;

2. Pressione a tecla <Ctrl>, retendo-a;

3. Clique sobre os demais controles que deseja selecionar.

Os múltiplos controles selecionados apresentam, cada um deles, um retângulo que os contorna.


Outra forma de selecionar múltiplos controles é clicar sobre o botão especial para selecionar todos os
controles,em destaque na figura abaixo:

~ 145 ~
MANUAL DO FATHER

Existem controles disponibilizados na tela que são capazes de conter outros controles, sendo, por
isso, chamados de containers. Esses controles são o Tab, Frame e o Painel. Só é possível selecionar
múltiplos controles que tenham um container comum, ou seja, que estejam posicionados dentro do
mesmo container.
Também é possível utilizar o mouse, mantendo pressionado o botão de seleção e arrastando o
mesmo sobre os objetos, de forma a criar um "retangulo de seleção" e em seguida liberando o botão.
Desta forma, os controles que estiverem nesta área serão selecionados. Caso estes controles estejam
dentro de um frame ou outro objeto, utilize o mesmo procedimento com a tecla <Ctrl> pressionada, que
a seleção abrangerá o que está dentro do objeto em questão apenas.
Top Previous Next
Removendo controles
Para remover um ou mais controles da tela, faça o seguinte:
1. Selecione um ou mais controles;
2. Pressione a tecla <Delete>. A figura abaixo será exibida:

3. Clique em para confirmar.


Top Previous Next
Movendo controles
Uma vez selecionados, os controles podem ser movidos para outros pontos da tela, utilizando-se
a operação conhecida como drag and drop (arrastar e soltar). Para alterar a posição de um ou mais
controles selecionados, proceda conforme se segue:
1. Clique com o botão esquerdo do mouse sobre um dos controles selecionados, mantendo o
botão pressionado;
2. Arraste o controle para a posição desejada;
3. Libere o botão do mouse.
Uma outra maneira de alterar a posição de um ou mais controles selecionados é manter a tecla
<Ctrl> pressionada e usar as setas de direção no teclado.
Top Previous Next
Alterando tamanho dos controles
Para alterar o tamanho de um controle, posicione o mouse em um dos seletores da borda do

~ 146 ~
MANUAL DO FATHER

controle e mova o mouse com o botão pressionado. Uma outra maneira de alterar o tamanho de um ou
mais controles selecionados ao mesmo tempo é manter a tecla <Shift> pressionada e acionar as setas
cursoras.

Top Previous Next


Inserindo controles pré-programados
Quando o Father apresenta a barra de ferramentas para ser formatada, disponibiliza
automaticamente, como default, diversos controles com funções pré-programadas.

Qualquer uma das janelas de dados, relatórios, consultas, etc., definidas no projeto pode ter um
botão de acesso na barra de ferramentas, além da opção de menu que o Father dispõe
automaticamente para ativá-la.
Um botão de acesso deste tipo pode ser inserido selecionando-se, o recurso que se deseja
acessar por meio do novo botão.
Dependendo do tipo de módulo, esta lista poderá estar apresentando campos de tabelas.
Ao selecionar a janela de dados, um botão é criado na barra de ferramentas bastando que você
modifique, se desejar, as demais propriedades deste botão.
Se estiver formatando uma barra de ferramentas, você visualizará nesta lista somente os botões
e outros objetos que podem ser nela inseridos.
Se estiver formatando uma tela para entrada de dados, os campos definidos na tabela básica
estarão nela disponíveis para seleção. Uma vez que os campos estejam posicionados, o Father insere
um check antes do nome do campo para indicar que esse já está posicionado na tela, como mostra a
figura a seguir.

~ 147 ~
MANUAL DO FATHER

Nenhum controle é inserido na tela como default.


Top Previous Next
Alterando as propriedades dos controles
A grade de propriedades tem por finalidade alterar o comportamento e aspecto dos controles que
são inseridos na tela durante a sua formatação. Quando um controle é selecionado, o conteúdo desta
grade se altera para espelhar as propriedades possíveis de serem designadas para ele. Se você
selecionar múltiplos controles, esta grade apresentará apenas as propriedades que são comuns aos
controles selecionados, podendo uma propriedade ser designada para os controles selecionados, de
uma só vez.
Top Previous Next
Definindo campo não-editável

A definição de um campo não editável (que o usuário nunca pode digitar) é possível
selecionando-se o controle tipo textbox correspondente ao campo e designando a sua propriedade
Editável para o valor Não.

~ 148 ~
MANUAL DO FATHER

Top Previous Next


Condição de visibilidade de campos

Por meio da propriedade Visível pode-se estabelecer uma condição segundo a qual o campo
será visível ou não. Este recurso tem inúmeras possibilidades e é muito útil, por exemplo, para
esconder um campo de um usuário ou grupo de usuários, utilizando-se na expressão da condição o
nome do usuário ou nome do grupo de usuários. Esta condição poderá também envolver campos das
tabelas relacionadas para que um campo apareça ou não quando o conteúdo de um campo qualquer
apresentar um determinado valor.
Top Previous Next
Exibindo e ocultando ferramentas
A janela de Ferramentas da tela pode ser ocultada ou exibida, de acordo com a necessidade.
Para exibir ou ocultar esta janela, marque a opção de menu "Exibir/Ferramentas da tela" ou pressione a
tecla F4.

~ 149 ~
MANUAL DO FATHER

Top Previous Next


Usando o Clipboard
Durante a formatação de telas você poderá necessitar efetuar cópias de controles de
um projeto para outro, de uma tela para outra de um mesmo projeto ou, ainda, de um
container para outro de uma mesma tela. As operações normais de clipboard podem ser
utilizadas para cortar, copiar, colar e apagar controles que estejam selecionados. Para essas
operações, pode-se utilizar as teclas de atalho padrão do Windows (CTRL+X, CTRL+C,
CTRL+V e tecla DEL, respectivamente) ou, ainda, os botões de clipboard da barra de
ferramentas do Father:

Propriedades dos objetos Top Previous Next


de tela
O Editor de Telas é usado na elaboração de telas para a entrada de dados e barra de
ferramentas. Uma das partes mais importantes do Editor de Telas é a sua janela de ferramentas de
tela, através da qual se pode inserir objetos na tela e ajustar as suas propriedades através da lista de
propriedades. Cada objeto possui suas próprias propriedades.

~ 150 ~
MANUAL DO FATHER

Top Previous Next


Tab
As propriedades do Tab são as seguintes:

Top Previous Next


Abas por linha
Determina o número de abas em uma mesma linha.
Se houver um número menor do que o que ajustado para a propriedade Qde de abas, mais de
uma linha de abas aparecerá no controle Tab.
Top Previous Next
Altura das abas
Determina a altura das abas.
Top Previous Next
Cor do fundo
Determina a cor do fundo do controle (BackColor).
Top Previous Next
Estilo
Define o estilo do controle. Possui duas opções: Windows 95 e MS-Office.

O valor padrão é Windows 95.

~ 151 ~
MANUAL DO FATHER

Top Previous Next


Orientação
Determina o sentido em que as abas serão exibidas. Possui as opções: Em cima, Em baixo, Na
esquerda e Na direita.

O valor padrão desta propriedade é : Em cima.


Top Previous Next
Qde de abas
Determina a quantidade de abas do controle. Se for designado com um valor maior do que o
valor da propriedade Abas por linha, o controle irá apresentar mais de uma fileira de abas.
O valor padrão desta propriedade é 3.
Top Previous Next
Pré-validação
Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto corrente pode ou não ser acessado durante a operação da
aplicação. Esta condição é avaliada quando o cursor sai do objeto (evento LostFocus). Pode-se utilizar
o Editor de Programas do Father para criar esta função.
A janela Monta expressão pode ser usada para criar a expressão de pré-validação.

Top Previous Next


Texto de ajuda
Nesta propriedade você pode inserir um Hint, ou texto de ajuda para explicar a função do controle
ao usuário. O caracter "|" (pipe) pode ser utilizado para forçar a quebra de linha.
Top Previous Next
Ordem do Tab
Estabelece a sequência de acesso aos objetos na tela, quando o usuário pressiona a tecla tab
ou, durante a digitação, a tecla Enter.
Top Previous Next
Parar com Tab
Determina se um objeto receberá ou não foco por meio da tecla TAB.

~ 152 ~
MANUAL DO FATHER

Top Previous Next


Visível
Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto será ou não visível ao usuário. Esta condição é avaliada quando
o cursor sai do objeto (evento LostFocus). Pode-se utilizar o Editor de Programas do Father para criar
esta função.
Top Previous Next
Apelido
Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Nome do controle
Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.
Top Previous Next
Altura
Determina a altura do controle.
Top Previous Next
Esquerda
Determina a posição da margem esquerda do objeto, em relação ao seu container
Top Previous Next
Largura
Determina a largura do controle.
Top Previous Next
Topo
Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Fonte do título
Designa os atributos da fonte a ser utilizada no título do objeto.
Top Previous Next
Título
Determina um texto que será exibido como título do objeto selecionado.
Top Previous Next
Label
As propriedades do Label são as seguintes:

~ 153 ~
MANUAL DO FATHER

Top Previous Next


Aparência
Determina a aparência do objeto label, que pode ser Plana ou 3D.
Top Previous Next
Cor do fundo
Determina uma cor a ser utilizada para o fundo do objeto (Backcolor).
Top Previous Next
Pré-validação
Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto corrente pode ou não ser acessado durante a operação da
aplicação. Esta condição é avaliada quando o cursor sai do objeto (evento LostFocus). Pode-se utilizar
o Editor de Programas do Father para criar esta função.
Top Previous Next
Tipo da borda
Define o tipo de borda (contorno) do controle.
As opções são:
Nenhuma
Simples
Top Previous Next
Auto ajuste
Determina se o label irá se ajustar automaticamente para o tamanho do seu título, determinado
pela propriedade Título.
Top Previous Next
Visível
Permite montar uma expressão de condição que será executada para que o controle se torne
visível durante a execução da aplicação. Esta expressão pode ser montada através da janela "Monta
expressão", exibida após clicar no botão extensor da propriedade Visível.

~ 154 ~
MANUAL DO FATHER

Top Previous Next


Apelido
Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Fórmula
Deve ser preenchida com uma expressão que retorne um valor caracter a ser exibido no objeto.
Normalmente, serve para mostrar resultados de cálculos que envolvam campos das tabelas. No caso
do objeto imagem, somente campos do tipo multimídia poderão ser disponibilizados.
Top Previous Next
Nome do controle
Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.
Top Previous Next
Altura
Determina a altura do controle.
Top Previous Next
Esquerda
Determina a posição da margem esquerda do objeto, em relação ao seu container.
Top Previous Next
Largura
Determina a largura do controle.
Top Previous Next
Topo
Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Alinhamento
Determina a posição onde deverá aparecer o título do objeto. Se o objeto for do tipo label,
existem 3 tipos de alinhamento que são Esquerda, Direita e Centro. Caso o objeto for do tipo botão,
existem mais duas possibilidades: Em baixo e Em cima. Ainda sobre o botão, se a propriedade
configurada não for Centro e se uma das propriedades de figura estiver designada, a figura é
deslocada em sentido contrário a uma distância definida pela propriedade Distância título.
Top Previous Next
Fonte do título
Designa os atributos da fonte a ser utilizada no título do objeto.
Top Previous Next
Título
Determina um texto que será exibido como título do objeto selecionado.

~ 155 ~
MANUAL DO FATHER

Top Previous Next


Botão

Top Previous Next


Estilo

Determina o estilo a ser aplicado no objeto. As opções são: Normal ou Internet. Se o objeto for
Tab, os valores possíveis são Windows 95 ou MS-Office.
Top Previous Next
Junta separadores

Determina a maneira como será feita a interseção dos separadores estabelecidos pelas
propriedades Separador esq e Separador topo. As opções são Nenhum, Horizontal e Vertical.
Top Previous Next
Separador Esq.

Determina se o botão irá apresentar uma linha separadora à sua esquerda, que poderá ser
utilizada na separação de grupos de botões que tenham finalidades semelhantes.
Top Previous Next
Separador Topo

Determina se o botão irá apresentar uma linha separadora na sua parte superior, que poderá ser
utilizada na separação de grupos de botões que tenham finalidades semelhantes.

~ 156 ~
MANUAL DO FATHER

Top Previous Next


Pré-validação

Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto corrente pode ou não ser acessado durante a operação da
aplicação. Esta condição é avaliada quando o cursor sai do objeto (evento LostFocus). Pode-se utilizar
o Editor de Programas do Father para criar esta função.

A janela Monta expressão pode ser usada para criar a expressão de pré-validação.

Top Previous Next


Texto de ajuda

Nesta propriedade você pode inserir um Hint, ou texto de ajuda para explicar a função do controle
ao usuário. O caracter "|" (pipe) pode ser utilizado para forçar a quebra de linha.
Top Previous Next
Ordem do Tab

Estabelece a sequência de acesso aos objetos na tela, quando o usuário pressiona a tecla tab
ou, durante a digitação, a tecla Enter.
Top Previous Next
Parar com Tab

Determina se um objeto receberá ou não foco por meio da tecla TAB.


Top Previous Next
Tipo

Determina se o botão funcionará de maneira convencional ou como dois estágios, ou seja,


quando pressionado, o mesmo poderá ficar ou não em baixo relevo até que um novo clique do mouse
seja nele aplicado. Este tipo de botão pode ser utilizado para apresentar valores do tipo liga/desliga por
intermédio de sua propriedade Value.
Top Previous Next
Visível

~ 157 ~
MANUAL DO FATHER

Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto será ou não visível ao usuário. Esta condição é avaliada quando
o cursor sai do objeto (evento LostFocus). Pode-se utilizar o Editor de Programas do Father para criar
esta função.
Top Previous Next
Ação no clique

Pode ser preenchida com uma expressão em Visual Basic para ser executada dentro do evento
ButtonClick (que é o clique no botão extensor do gMask) e no evento Click do botão.
Top Previous Next
Figura
Define o nome de um arquivo do tipo .BMP, .ICO ou .WMF que contém a figura a ser
apresentada no objeto. Quando é designada, o Father copia esta figura para o diretório de figuras
indicado no campo identificado como "Diretório para figuras do projeto", disponível na aba Ícones da
Definição do projeto. Esse diretório poderá reunir ainda as figuras e ícones de todos os projetos
desenvolvidos, promovendo uma melhor padronização dos sistemas desenvolvidos. Ao alterar
quaisquer uma das figuras ou ícones da aplicação, você poderá visualizar o arquivo selecionado no
painel de preview apresentado na tela de seleção de arquivo que se abrirá, facilitando assim sua
identificação. A opção "Zoom" promoverá o redimensionamento da figura para o tamanho exato do
painel de preview.
Top Previous Next
Figura desativado

Serve para designar o nome de um arquivo do tipo .BMP, .ICO ou .WMF que contém a figura a
ser apresentada no botão quando o mesmo estiver desativado. As mesmas observações descritas para
a propriedade Figura, referentes ao diretório de figuras, o painel de preview também são válidas para
essa propriedade
Top Previous Next
Figura em baixo

Serve para designar o nome de um arquivo do tipo .BMP, .ICO ou .WMF que contém a figura a
ser apresentada no botão quando o mesmo estiver sendo pressionado com o mouse. As mesmas
observações descritas para a propriedade Figura, referentes ao diretório de figuras, o painel de preview
e também são válidas para essa propriedade.
Top Previous Next
Figura iluminado

Serve para designar o nome de um arquivo do tipo .BMP, .ICO ou .WMF que contém a figura a
ser apresentada no botão quando o mouse estiver passando por cima do mesmo. Só tem efeito se a
propriedade Estilo estiver ajustada para InterNet. As mesmas observações descritas para a
propriedade Figura, referentes ao diretório de figuras, o painel de preview também são válidas para
essa propriedade.
Top Previous Next
Apelido

Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Nome do controle

Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.

~ 158 ~
MANUAL DO FATHER

Top Previous Next


Altura
Determina a altura do controle.
Top Previous Next
Esquerda
Determina a posição da margem esquerda do objeto, em relação ao seu container.
Top Previous Next
Largura
Determina a largura do controle.
Top Previous Next
Topo
Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Alinhamento
Determina a posição onde deverá aparecer o título do objeto. Se o objeto for do tipo label,
existem 3 tipos de alinhamento que são Esquerda, Direita e Centro. Caso o objeto for do tipo botão,
existem mais duas possibilidades: Em baixo e Em cima. Ainda sobre o botão, se a propriedade
configurada não for Centro e se uma das propriedades de figura estiver designada, a figura é
deslocada em sentido contrário a uma distância definida pela propriedade Distância título.
Top Previous Next
Distância título
Define a distância do título da margem do botão de acordo com o alinhamento definido na
propriedade Alinhamento.
Top Previous Next
Fonte do título
Designa os atributos da fonte a ser utilizada no título do objeto.

Top Previous Next


Título
Determina um texto que será exibido como título do objeto selecionado.

Top Previous Next


Imagem

~ 159 ~
MANUAL DO FATHER

Top Previous Next


Aparência

Determina a aparência do controle. As opções são Plana ou 3D.


Top Previous Next
Cor do fundo

Serve para designar uma cor a ser utilizada para encher o fundo do objeto (backcolor).
Top Previous Next
Tipo da borda

Define o tipo da linha de contorno do controle.


Top Previous Next
Visível
Permite montar uma expressão de condição que será executada para que o controle se torne
visível durante a execução da aplicação. Esta expressão pode ser montada através da janela "Monta
expressão", exibida após clicar no botão extensor da propriedade Visível.

Top Previous Next


Campo

Contém o nome do campo da tabela em definição que deverá ser associado ao objeto. Ao ser
selecionada , todas as propriedades de atributos referentes a este campo serão automaticamente
preenchidas; porém, não são disponibilizadas para modificação. Qualquer modificação necessária
nesses atributos deverá ser efetuada por intermédio da interface de definição do banco de dados. Em
módulos do tipo form avulso e telascomplementares, servirá somente para preencher as propriedades
de atributos, sendo a propriedade Campo automaticamente removida após a sua definição.

~ 160 ~
MANUAL DO FATHER

Top Previous Next


Expande figura

Determina se a figura disponibilizada sobre o objeto poderá ser expandida até o tamanho total do
objeto. O efeito poderá causar distorção na imagem, caso não haja proporcionalidade entre a imagem
e as dimensões do objeto.
Top Previous Next
Figura
Serve para designar o nome de um arquivo do tipo .BMP, .ICO ou .WMF que contém a figura a
ser apresentada no objeto. Quando é designada, o Father copia esta figura para o diretório de figuras
indicado no campo identificado como "Diretório para figuras do projeto", disponível na aba Ícones da
Definição do projeto. Esse diretório poderá reunir ainda as figuras e ícones de todos os projetos
desenvolvidos, promovendo uma melhor padronização dos sistemas desenvolvidos. Ao alterar
quaisquer uma das figuras ou ícones da aplicação, você poderá visualizar o arquivo selecionado no
painel de preview apresentado na tela de seleção de arquivo que se abrirá, facilitando assim sua
identificação. A opção "Zoom" promoverá o redimensionamento da figura para o tamanho exato do
painel de preview.
Top Previous Next
Apelido

Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Fórmula

Deve ser preenchida com uma expressão que retorne um valor caracter a ser exibido no objeto.
Normalmente, serve para mostrar resultados de cálculos que envolvam campos das tabelas. No caso
do objeto imagem, somente campos do tipo multimídia poderão ser disponibilizados.
Top Previous Next
Nome do controle

Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.
Top Previous Next
Altura

Determina a altura do controle.


Top Previous Next
Esquerda

Determina a posição da margem esquerda do objeto, em relação ao seu container.


Top Previous Next
Largura

Determina a largura do controle.


Top Previous Next
Topo

Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Painel
As propriedades do controle Painel são as seguintes:

~ 161 ~
MANUAL DO FATHER

Top Previous Next


Cor do fundo

Serve para designar uma cor a ser utilizada para encher o fundo do objeto (backcolor).
Top Previous Next
Ação último campo

Permite inserir uma ação para ser executada após o preenchimento do último campo dentro do
Painel.
Dentre as ações disponíveis podemos optar por "Salvar e incluir", o que é bastante útil para
formulários em que a inclusão de registro ocorrerá de forma contínua e sequencial.

Top Previous Next


Forma de abertura

Determina como o Painel será aberto. As opções são:


No primeiro registro: desta forma o Painel será aberto diretamente com o cursor no primeiro
registro da tabela.
No último registro: Utilizando esta opção, o Painel será aberto com o cursor no último registro
da tabela.
Abrir incluindo: Nesta opção, um novo registro será criado automaticamente e o cursor será
posicionado no primeiro campo editável do Painel.

Top Previous Next


Pré-validação

~ 162 ~
MANUAL DO FATHER

Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto corrente pode ou não ser acessado durante a operação da
aplicação. Esta condição é avaliada quando o cursor sai do objeto (evento LostFocus). Pode-se utilizar
o Editor de Programas do Father para criar esta função.
Top Previous Next
Texto de ajuda

Nesta propriedade você pode inserir um Hint, ou texto de ajuda para explicar a função do controle
ao usuário. O caracter "|" (pipe) pode ser utilizado para forçar a quebra de linha.
Top Previous Next
Chanfro externo

Serve para designar o tipo de chanfro a ser aplicado do lado externo do objeto painel
disponibilizado na tela.
Os valores possíveis são:
Alto-relevo, Baixo-relevo ou Nenhum.
Top Previous Next
Chanfro interno
Define o tipo de chanfro a ser aplicado do lado interno do objeto painel colocado na tela. Os
valoresossíveis são Alto-relevo, Baixo-relevo ou Nenhum.
Top Previous Next
Largura da borda

Permite definir a espessura da borda do controle.


Top Previous Next
Largura do chanfro

Define a largura do chanfro selecionado

Top Previous Next


Visível
Permite montar uma expressão de condição que será executada para que o controle se torne
visível durante a execução da aplicação. Esta expressão pode ser montada através da janela "Monta
expressão", exibida após clicar no botão extensor da propriedade Visível.

~ 163 ~
MANUAL DO FATHER

Top Previous Next


Expande figura

Determina se a figura disponibilizada sobre o objeto poderá ser expandida até o tamanho total do
objeto. O efeito poderá causar distorção na imagem, caso não haja proporcionalidade entre a imagem
e as dimensões do objeto.
Top Previous Next
Figura
Serve para designar o nome de um arquivo do tipo .BMP, .ICO ou .WMF que contém a figura a
ser apresentada no objeto. Quando é designada, o Father copia esta figura para o diretório de figuras
indicado no campo identificado como "Diretório para figuras do projeto", disponível na aba Ícones da
Definição do projeto. Esse diretório poderá reunir ainda as figuras e ícones de todos os projetos
desenvolvidos, promovendo uma melhor padronização dos sistemas desenvolvidos. Ao alterar
quaisquer uma das figuras ou ícones da aplicação, você poderá visualizar o arquivo selecionado no
painel de preview apresentado na tela de seleção de arquivo que se abrirá, facilitando assim sua
identificação. A opção "Zoom" promoverá o redimensionamento da figura para o tamanho exato do
painel de preview.
Top Previous Next
Apelido

Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Nome do controle

Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.
Top Previous Next
Altura

Determina a altura do controle.


Top Previous Next
Esquerda

Determina a posição da margem esquerda do objeto, em relação ao seu container.


Top Previous Next
Largura

Determina a largura do controle.


Top Previous Next
Topo

Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Frame

As propriedades do controle Frame são as seguintes:

~ 164 ~
MANUAL DO FATHER

Top Previous Next


Pré-validação

Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto corrente pode ou não ser acessado durante a operação da
aplicação. Esta condição é avaliada quando o cursor sai do objeto (evento LostFocus). Pode-se utilizar
o Editor de Programas do Father para criar esta função.

A janela Monta expressão pode ser usada para criar a expressão de pré-validação.

Top Previous Next


Texto de ajuda

Nesta propriedade você pode inserir um Hint, ou texto de ajuda para explicar a função do controle

~ 165 ~
MANUAL DO FATHER

ao usuário. O caracter "|" (pipe) pode ser utilizado para forçar a quebra de linha.
Top Previous Next
Visível

Permite montar uma expressão de condição que será executada para que o controle se torne
visível durante a execução da aplicação. Esta expressão pode ser montada através da janela "Monta
expressão", exibida após clicar no botão extensor da propriedade Visível.

Top Previous Next


Apelido

Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Fórmula

Deve ser preenchida com uma expressão que retorne um valor caracter a ser exibido no objeto.
Normalmente, serve para mostrar resultados de cálculos que envolvam campos das tabelas. No caso
do objeto imagem, somente campos do tipo multimídia poderão ser disponibilizados.
Top Previous Next
Nome do controle

Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.
Top Previous Next
Altura

Determina a altura do controle.


Top Previous Next
Esquerda
~ 166 ~
MANUAL DO FATHER

Determina a posição da margem esquerda do objeto, em relação ao seu container.


Top Previous Next
Largura

Determina a largura do controle.


Top Previous Next
Topo

Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Fonte do título

Designa os atributos da fonte a ser utilizada no título do objeto.

Top Previous Next


Título

Determina um texto que será exibido como título do objeto selecionado.

Top Previous Next


Caixa de texto

As propriedades do controle Caixa de texto são as seguintes:

~ 167 ~
MANUAL DO FATHER

~ 168 ~
MANUAL DO FATHER

Top Previous Next


Aparência

Determina a aparência do controle. As opções são Plana ou 3D.


Top Previous Next
Cor do fundo

Serve para designar uma cor a ser utilizada para encher o fundo do objeto (backcolor).
Top Previous Next
Enchimento

Define um tipo de preenchimento para o título do controle.


Top Previous Next
Fonte

Define uma fonte para o texto do controle.


Top Previous Next
Formato

Determina um formato para a Caixa de texto.


Top Previous Next
Limpar campo

Determina se a informação contida no objeto será apagada, caso a expressão disponibilizada na


propriedade Pré-validação não seja atendida.
Top Previous Next
Mensagem Validação

Permite inserir uma mensagem que é exibida quando a validação é executada.


Top Previous Next
Mostrar valor inicial

Habilita a exibição do valor inicial.


Top Previous Next
Máscara

Define uma máscara para os dados do controle.


Top Previous Next
Permitir repetição

Habilita os campos para os quais o usuário final poderá utilizar a repetição automática do registro
anteriormente digitado. Esta função é especialmente útil quando se faz digitações de informações que
podem estar repetidas em diversos registros, como cidade, Estado, etc. Para utilizar esse recurso,
basta que você selecione os campos de repetição e altere a propriedade Permitir repetição para "Sim".
Uma vez que, na aplicação final gerada, os dados estejam presentes na tela, basta que o operador
pressione o botão de repetição de campos mostrado a seguir para aproveitar estes dados. Quando
esta função não for mais desejada, basta pressionar o botão novamente.
Top Previous Next
Pré-validação

Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto corrente pode ou não ser acessado durante a operação da

~ 169 ~
MANUAL DO FATHER

aplicação. Esta condição é avaliada quando o cursor sai do objeto (evento LostFocus). Pode-se utilizar
o Editor de Programas do Father para criar esta função.
Top Previous Next
Tamanho máximo

Define a quantidade máxima de caracteres para inserir no controle.


Top Previous Next
Texto de ajuda

Nesta propriedade você pode inserir um Hint, ou texto de ajuda para explicar a função do controle
ao usuário. O caracter "|" (pipe) pode ser utilizado para forçar a quebra de linha.
Top Previous Next
Tipo de dado

Define que tipo de dado poderá ser inserido no controle.


Top Previous Next
Validação
Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se a informação digitada no objeto é ou não válida. Esta condição é avaliada
no momento em que o usuário clica sobre o botão de gravação ou sobre o botão de prosseguir (em
forms que não tenham vinculação direta com dados). Pode-se utilizar o Editor de Programas do Father
para criar tal função.
Top Previous Next
Validação imediata

Executa a validação no momento da digitação.


Top Previous Next
Valor inicial

Define um valor inicial para o controle.


Top Previous Next
Estilo da borda

Determina o estilo da borda.


Top Previous Next
Largura da borda

Define a espessura da borda.


Top Previous Next
Tipo da borda

Permite definir o tipo de borda para o controle.


Top Previous Next
Alinhamento

Define o alinhamento do texto no controle.


Top Previous Next
Editável

Determina se o controle poderá ser editado ou não durante a execução da aplicação.

~ 170 ~
MANUAL DO FATHER

Top Previous Next


Extensor

Determina se o objeto apresentará o botão extensor à direita do objeto. Este botão é,


normalmente, utilizado para apresentar um diálogo extra, como, por exemplo, calculadora ou
calendário, quando o usuário acioná-lo, disparando o evento Ação no clique. Os valores possíveis são:
DropDown e Reticências.
Top Previous Next
Ordem do TAB

Estabelece a sequência de acesso aos objetos na tela, quando o usuário pressiona a tecla tab
ou, durante a digitação, a tecla Enter.
Top Previous Next
Para com TAB

Determina se um objeto receberá ou não foco por meio da tecla TAB.


Top Previous Next
Visível

Deve ser preenchida com uma expressão ou função em Visual Basic que retorne um valor lógico
(True ou False), indicando se o objeto será ou não visível ao usuário. Esta condição é avaliada quando
o cursor sai do objeto (evento LostFocus). Pode-se utilizar o Editor de Programas do Father para criar
esta função.
Top Previous Next
Campo

Define o nome do campo onde serão armazenado os dados digitados no controle.


Top Previous Next
Ação Change

Permite inserir uma ação que será executada quando os dados da Caixa de texto forem
alterados.
Top Previous Next
Ação GotFocus

Permite inserir uma ação para ser executada quando o controle Caixa de texto ganhar o foco.
Top Previous Next
Ação KeyDown
Pode ser preenchida com uma expressão em Visual Basic para ser executada dentro do evento
KeyDown do gMask.
Top Previous Next
Ação KeyPress
Semelhante à propriedade KeyDown, o diferencial é que este evento é executado dentro do
evento KeyPress do gMask.
Top Previous Next
Ação KeyUp
Permite inserir uma ação que será executada quando uma tecla for liberada.

Top Previous Next


Ação LostFocus

Permite inserir uma ação que será executada quando uma o controle perder o foco.

~ 171 ~
MANUAL DO FATHER

Top Previous Next


Ação no clique

Permite inserir uma ação que será executada quando clicar o mouse.
Top Previous Next
BD Estrangeiro

É o nome do banco de dados que fornecerá os dados para encher a lista a ser apresentada no
objeto.
Top Previous Next
Campo a capturar

Define o campo cujo valor será capturado.


Top Previous Next
Campo a mostrar

Define o campo cujo valor será mostrado no controle durante a execução da aplicação.
Top Previous Next
Campo para ordenar

Contém o nome dos campos utilizados para comandar a ordem de apresentação da lista de
campos estrangeiros.

Top Previous Next


Extensor

Determina se o objeto apresentará o botão extensor à direita do objeto. Este botão é,


normalmente, utilizado para apresentar um diálogo extra, como, por exemplo, calculadora ou
calendário, quando o usuário acioná-lo, disparando o evento Ação no clique. Os valores possíveis são:
DropDown e Reticências.
Top Previous Next
Filtro
Serve para selecionar os registros que aparecerão dentro de uma lista externa. Se não for
utilizada, todos os registros da tabela estrangeira associada serão mostrados e disponibilizados para
seleção.
Top Previous Next
Lista de opções
Estabelece a lista a ser apresentada no objeto. Os itens devem ser digitados, lado a lado,
separados pelo caractere "|" (pipe). Esta lista só será aberta se a propriedade Extensor estiver definida.
Nos objetos nos quais é definida, não podem ser digitadas informações diretamente e as setas
cursoras podem ser utilizadas para efetuar a rolagem dos itens.
Top Previous Next
Relacionamento
Permite inserir uma expressão de relacionamento entre campos.
Top Previous Next
Tabela estrangeira
Define o nome da tabela estrangeira que pertence ao banco de dados estrangeiro.
Top Previous Next
Banco

Define qual será o banco de dados utilizado para armazenamento dos dados digitados no
controle Caixa de texto.

~ 172 ~
MANUAL DO FATHER

Top Previous Next


Campo a capturar

Define qual campo da tabela será capturado para exibir as informações.


Top Previous Next
Campo a capturar

Define qual campo da tabela será capturado para exibir as informações.


Top Previous Next
Expressão SQL

Permite inserir uma expressão SQL para preencher o controle.


Top Previous Next
Extensor

Determina se o objeto apresentará o botão extensor à direita do objeto. Este botão é,


normalmente, utilizado para apresentar um diálogo extra, como, por exemplo, calculadora ou
calendário, quando o usuário acioná-lo, disparando o evento Ação no clique. Os valores possíveis são:
DropDown e Reticências.

Top Previous Next


Modo de abertura

Define o modo de abertura do controle. As opções são: ComboBox e Janela.


Top Previous Next
Apelido

Determina o apelido para o valor do campo ou fórmula vinculada ao controle. O apelido vai ter o
mesmo tipo de dado correspondente ao campo ou fórmula.
Top Previous Next
Fórmula

Deve ser preenchida com uma expressão que retorne um valor caracter a ser exibido no objeto.
Normalmente, serve para mostrar resultados de cálculos que envolvam campos das tabelas.
Top Previous Next
Nome do controle

Designa um nome a ser utilizado em uma associação com o controle dentro do código do
programa.
Top Previous Next
Altura

Determina a altura do controle.


Top Previous Next
Esquerda

Determina a posição da margem esquerda do objeto, em relação ao seu container.


Top Previous Next
Largura

Determina a largura do controle.

~ 173 ~
MANUAL DO FATHER

Top Previous Next


Topo

Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Cor título c/ foco

Define a cor do título quando o controle está com foco.


Top Previous Next
Cor título s/ foco

Define a cor do título quando o controle não estiver com foco.


Top Previous Next
Distância título

Define a distância entre o título e a Caixa de texto.


Top Previous Next
Fonte do título

Designa os atributos da fonte a ser utilizada no título do objeto.

Top Previous Next


Posição do título

Define a posição do título da Caixa de texto.

Top Previous Next


Título

Determina um texto que será exibido como título do objeto selecionado.

Top Previous Next


Lista das propriedades

Sempre que um objeto é selecionado na tela (ou na combobox que aparece na parte superior da
janela de ferramentas de tela), a lista de propriedades é enchida com as propriedades válidas para este
objeto. Esta lista aparece, normalmente, por default, categorizada segundo a natureza da propriedade.
Se você desejar, poderá utilizar o botão que aparece a seguir para mostrá-las alfabeticamente
ordenadas.

Algumas propriedades podem ser ajustadas diretamente na própria lista. Outras possuem um
botão extensor marcado com reticências (...) que pode ser utilizado para ativar algum diálogo padrão,
como, por exemplo, para seleção de fontes, cores ou mesmo para ativar o Editor de Programas do
Father, usado para escrever alguma função a ser integrada ao código fonte a ser gerado.

A sequência a ser obedecida para o ajuste de propriedades é a seguinte:

~ 174 ~
MANUAL DO FATHER

• selecionar um ou mais objetos na tela;

• localizar a propriedade na lista e clicar sobre a mesma;

• designar o seu valor.

Se mais de um controle estiver selecionado simultaneamente, a lista de propriedades espelhará


somente aquelas propriedades que são comuns aos objetos selecionados. A seguir, em ordem
alfabética, aparece a descrição de todas as propriedades existentes, os objetos a que se aplicam, tipo
de valor que armazenam e para que servem. Para todas as propriedades que tenham Evento por
categoria, o Editor de Programas do Father poderá ser utilizado para criar rotinas ou trechos de
programa para executar uma determinada tarefa e serão acionadas após a execução dos
procedimentos normais gerados pelo Father, excetuando-se aqui apenas a Ação FormUnload, a qual é
acionada antes da execução dos procedimentos normais gerados pelo Father. Algumas propriedades
do objeto gMask são dependentes da propriedade Tipo de dado; por isso, algumas poderão não estar
disponíveis em determinado momento. O mesmo pode acontecer com relação ao objeto Painel,
quando este for utilizado como fundo da tela, sobre o qual os demais controles são colocados.

Lista de propriedades
Propriedade Descrição
determina o número de abas em uma mesma carreira para o
controle tab. Se tiver um número menor do que o que estiver ajustado
Abas por linha
para a propriedade Qde de abas, mais de uma carreira de abas aparecerá
no controle tab.
pode ser preenchida com uma expressão em Visual Basic para ser
executada logo após a alteração de registros no form ou grid. Além disso,
Ação após alteração poderão ser executados formulários presentes na aplicação, inclusive para
emissão de relatórios, ou executadas ações pré-definidas como "Enviar E-
Mail", "Abrir WebPage", "Executar arquivo", etc.
pode ser preenchida com uma expressão em Visual Basic para ser
executada logo após a exclusão de registros no form ou grid. Além disso,
Ação após exclusão poderão ser executados formulários presentes na aplicação, inclusive para
emissão de relatórios, ou executadas ações pré-definidas como "Enviar E-
Mail", "Abrir WebPage", "Executar arquivo", etc.
pode ser preenchida com uma expressão em Visual Basic para ser
executada logo após a inclusão de registros no form ou grid. Além disso,
Ação após inclusão poderão ser executados formulários presentes na aplicação, inclusive para
emissão de relatórios, ou executadas ações pré-definidas como "Enviar E-
Mail", "Abrir WebPage", "Executar arquivo", etc.
pode ser preenchida com uma expressão em Visual Basic para ser
executada quando o cancelamento de cupons de venda for acionado,
após a execução dos procedimentos normais gerados pelo Father em
Ação Cancela Cupom aplicações que utilizam da Emissão de Cupom Fiscal. Disponível apenas
para o terceiro modo de compatibilização com ECF, permite a você
programar, por exemplo, o cancelamento de cupons de venda no próprio
banco de dados dentre outras providências que você julgar necessárias.
pode ser preenchida com uma expressão em Visual Basic para ser
executada quando o cancelamento de itens de venda for acionado, após a
execução dos procedimentos normais gerados pelo Father em aplicações
Ação Cancela Item queutilizam da Emissão de Cupom Fiscal. Disponível apenas para o
terceiro modo de compatibilização com ECF, permite a você programar,
por exemplo, o cancelamento de itens de venda no próprio banco de
dados dentre outras providências que você julgar necessárias.
pode ser preenchida com uma expressão em Visual Basic para ser
Ação Change
executada quando o evento Change do controle é acionado
pode ser preenchida com uma expressão em Visual Basic para ser
executada após serem definidas todas as informações referentes ao
cupom fiscal em aplicações que utilizam da Emissão de Cupom Fiscal,
Ação Forma Pgto
para que se possa, por exemplo, gravar no banco de dados determinadas
informações referentes à forma de pagamento e outras que você julgar
necessárias. Cabe ressaltar que tal ação recebe as variáveis vgDescricao,

~ 175 ~
MANUAL DO FATHER

do tipo caractere (string), e vgValor , do tipo numérico (precisão dupla). A


primeira corresponde à descrição da forma de pagamento atualmente em
uso no pagamento do cupom fiscal, enquanto a segunda corresponde ao
valordo pagamento de cada uma das formas de pagamento utilizadas no
cupom fiscal corrente.
pode ser preenchida com uma expressão em Visual Basic para ser
executada quando este evento do form é acionado. Essa propriedade só
Ação FormActivate
estará disponível no painel de fundo sobre o qual os outros objetos são
disponibilizados
Semelhante à propriedade FormActivate, o diferencial é que este
evento é executado dentro do evento Form_Load do form criado para o
Ação Formload
módulo em definição. Essa propriedade também só estará disponível no
painel de fundo sobre o qual os outros objetos são disponibilizados
Semelhante à propriedade FormActivate, o diferencial é que este
evento é executado dentro do evento Form_Resize do form criado para o
Ação FormResize
módulo em definição. Essa propriedade também só estará disponível no
painel de fundo sobre o qual os outros objetos são disponibilizados.
Semelhante à propriedade FormActivate, o diferencial é que este
evento é executado dentro do evento Form_Unload do form criado para o
Ação FormUnload módulo em definição, antes da execução dos procedimentos normais
gerados pelo Father. Essa propriedade também só estará disponível no
painel de fundo sobre o qual os outros objetos são disponibilizados.
pode ser preenchida com uma expressão em Visual Basic para ser
Ação GotFocus
executada dentro do evento GotFocus do controle
pode ser preenchida com uma expressão em Visual Basic para ser
Ação KeyDown
executada dentro do evento KeyDown do gMask
Semelhante à propriedade KeyDown, o diferencial é que este evento
Ação KeyPress
é executado dentro do evento KeyPress do gMask.
pode ser preenchida com uma expressão em Visual Basic para ser
executada dentro do evento ButtonClick (que é o clique no botão extensor
Ação no Clique
do gMask) e no evento Click do botão. No caso do gDbGrid, refere-se ao
clique no extensor da coluna (campo) selecionada.
pode ser preenchida com uma expressão em Visual Basic para ser
ativada quando este evento é executado. O evento PrepBotoes ocorre
Ação PrepBotoes
sempre que é alterado o status dos botões da barra de ferramentas da
aplicação gerada.
pode ser preenchida com uma expressão em Visual Basic para ser
Ação Reposition executada sempre que o recordset tem seu ponteiro de registros
modificado, ou seja, quando ele altera de um registro para outro.
Dentre as ações disponíveis podemos optar por "Salvar e incluir", o
que é bastante útil para formulários em que a inclusão de registro ocorrerá
Ação Último campo
de forma contínua e sequencial. O usuário terá uma agilidade muito maior
para essa ação;
determina o campo ou controle por intermédio do qual será
determinado acréscimo ou desconto para cupons fiscais em aplicações
que utilizam da Emissão de Cupom Fiscal. As possibilidades são: 0 -
Acréscimo/Desconto Acréscimo e 1 (ou quaisquer outros valores) - Desconto. Uma vez
estabelecido um conteúdo para essa propriedade, deve-se
obrigatoriamente determinar conteúdos para as propriedades Tipo
acrésc/desc e Valor acrésc/desc.
Determina a posição onde deverá aparecer o título do objeto. Se o
objeto for do tipo label, existem 3 tipos de alinhamento que são Esquerda,
Direita e Centro. Caso o objeto for do tipo botão, existem mais duas
Alinhamento possibilidades: Em baixo e Em cima. Ainda sobre o botão, se a
propriedade configurada não for Centro e se uma das propriedades de
figura estiver designada, a figura é deslocada em sentido contrário a uma
distância definida pela propriedade Distância título.
Altura Determina a altura que o controle deverá ter.
determina a altura, em milímetros, das etiquetas existentes no
Altura da etiqueta
formulário a ser impresso.
determina a altura, em pixels, de cada uma das linhas (registro) de
Altura da linha um grid. Deve-se observar que o Visual Basic irá limitar o seu número ao
tamanho da fonte utilizada.

~ 176 ~
MANUAL DO FATHER

Altura das abas determina a altura que deverá ter as abas do controle tab.
determina, nos relatórios elaborados por intermédio do G-Reports, a
Altura útil do papel altura útil do papel, fora da qual a impressora não consegue inserir
informações (espaço deixado para tracionamento do papel, etc).
determina, em graus, o ângulo a ser utilizado para dispor a
Ângulo informação contida no controle, podendo variar de 0 (normal) até 359
graus.
Aparência Determina a aparência do objeto label, que pode ser Plana ou 3D.
Determina o apelido para o valor do campo ou fórmula vinculada ao
controle. O apelido vai ter o mesmo tipo de dado correspondente ao
Apelido
campo ou fórmula. No caso do gDbGrid, refere-se ao apelido da coluna
(campo ou fórmula) selecionada
Determina se o label irá se ajustar automaticamente para o tamanho
Auto ajuste
do seu título, determinado pela propriedade Título.
Determina a quantidade a ser incrementada no valor do controle
quando a barra de rolagem é clicada. Este valor deverá ser ajustado entre
Avanço da barra 1 e 32.767, devendo ser definido com um número maior do que o valor da
propriedade Avanço do botão. No caso do gDbGrid, refere-se à coluna
(campo) selecionada.
Determina a quantidade a ser incrementado no valor do controle
quando o botão da barra de rolagem é clicado. Normalmente, este valor
Avanço do botão
deve ser configurado como 1. No caso do gDbGrid, refere-se à coluna
(campo) selecionada
É o nome do banco de dados que fornecerá os dados para encher a
BD estrangeiro lista a ser apresentada no objeto. No caso do gDbGrid, refere-se à coluna
(campo) selecionada.
Contém o nome do campo da tabela em definição que deverá ser
associado ao objeto. Ao ser selecionada , todas as propriedades de
atributos referentes a este campo serão automaticamente preenchidas;
porém, não são disponibilizadas para modificação. Qualquer modificação
necessária nesses atributos deverá ser efetuada por intermédio da
Campo
interface de definição do banco de dados. Em módulos do tipo form avulso
e telascomplementares, servirá somente para preencher as propriedades
de atributos, sendo a propriedade Campo automaticamente removida após
a sua definição. No caso do gDbGrid, refere-se à coluna (campo)
selecionada.
é o nome do campo que terá o seu valor gravado no banco de
dados, independentemente de figurar ou não na lista de campos
Campo a capturar
estrangeiros. No caso do gDbGrid, refere-se à coluna (campo)
selecionada.
contém os nomes dos campos a serem apresentados em uma lista
externa. Clique no botão extensor d e escolha um ou mais campos para
Campo a mostrar
fazer parte desta lista. No caso do gDbGrid, refere-se à coluna (campo)
selecionada..
contém o nome dos campos utilizados para comandar a ordem de
apresentação da lista de campos estrangeiros. Clique no botão extensor d
e escolha um ou mais campos para fazer parte desta lista. No caso do
Campo para ordenar gDbGrid, refere-se à coluna (campo) selecionada.
você ainda poderá ordenar um campo de forma descendente,
bastando para isso selecionar na lista o campo com sinal de menos à
frente.
tem por finalidade definir um caractere a ser utilizado para preencher
a parte esquerda do campo, forçando um tamanho igual ao que foi
Caracter à esquerda definido pela propriedade "Tamanho máximo". Normalmente, é utilizada
para forçar zeros ou espaços à esquerda de um valor do tipo caracter. No
caso do gDbGrid, refere-se à coluna (campo) selecionada.
serve para designar o tipo de chanfro a ser aplicado do lado externo
Chanfro externo do objeto painel disponibilizado na tela. Os valores possíveis são Alto-
relevo, Baixo-relevo ou Nenhum.
A exemplo da propriedade anterior, esta serve para designar o tipo
Chanfro interno de chanfro a ser aplicado do lado interno do objeto painel colocado na tela.
Os valores possíveis são Alto-relevo, Baixo-relevo ou Nenhum.
Código do item determina o campo ou controle por intermédio do qual serão

~ 177 ~
MANUAL DO FATHER

determinados os códigos de itens de venda em aplicações que utilizam da


Emissão de Cupom Fiscal, sendo de preenchimento obrigatório.
indica a coluna em definição dentro de um objeto gDbGrid
Coluna atual
disponibilizado na tela.
deve ser preenchida com uma expressão ou função em Visual Basic
que retorne um valor lógico (True ou False), indicando se o registro
atualmente na tela pode ou não ser alterado. Normalmente, o Editor de
Condição alterar Programas do Father é utilizado para criar esta função. Esta condição é
avaliada dentro do evento Reposition do DataControl. No caso do objeto
Painel, se aplica somente para o painel de fundo, sobre o qual são
dispostos os outros objetos.
deve ser preenchida com uma expressão ou função em Visual Basic
que retorne um valor lógico (True ou False), indicando se o registro
atualmente na tela pode ou não ser excluído. Esta condição é avaliada a
cada registro disponibilizado na tela, habilitando ou desabilitando o botão
Condição excluir de excluir (e a opção de menu correspondente) na barra de ferramentas.
Normalmente, o Editor de Programas do Father é utilizado para criar esta
função. Esta condição é avaliada dentro do evento Reposition do
DataControl. No caso do objeto Painel, se aplica somente para o painel
de fundo, sobre o qual são dispostos os outros objetos.
, aplicada ao relatório, é utilizada para determinar se o registro
básico do relatório será impresso. Aqui, pode ser utilizada uma expressão
Condição impressão diretamente na área apropriada ou por intermédio do Editor de Programas
do Father.Se existir uma condição especificada, o Father criará a instrução
"IF.." no programa fonte para testar se o registro será ou não impresso.
deve ser preenchida com uma expressão ou função em Visual Basic
que retorne um valor lógico (True ou False), indicando se registros podem
ser ou não incluídos na tabela atual. Normalmente, o Editor de Programas
Condição incluir do Father é utilizado para criar esta função. Esta condição é avaliada
dentro do evento Reposition do DataControl. No caso do objeto Painel, se
aplica somente para o painel de fundo, sobre o qual são colocados os
outros objetos.
determina se o texto a ser impresso irá apresentar uma linha de
Contorno
contorno (outline).
tem por finalidade designar uma cor para ser utilizada na borda do
Cor da borda
objeto.
especifica a cor da sombra a ser projetada pelo texto, caso a
Cor da sombra propriedade Tamanho sombra esteja ajustada para um número maior do
que zero.
Caso a primeira propriedade esteja ajustada para 1 (sim), determina
Cor do contorno
a cor a ser utilizada para colorir o contorno das letras.
serve para designar uma cor a ser utilizada para encher a área
Cor do enchimento interna do objeto. só será aplicada se a propriedade Enchimento tiver um
valor diferente de Transparente.
serve para designar uma cor a ser utilizada para encher o fundo do
Cor do fundo
objeto (backcolor).
serve para designar uma cor a ser utilizada no texto do título do
Cor do título
objeto.
define a cor de fim do logotipo lateral. Será proporcionado um efeito
Cor fim logotipo de "dégradé" no referido logotipo se escolhida uma segunda cor para
início do logotipo.
define a cor de início do logotipo lateral. Será proporcionado um
Cor início logotipo efeito de "dégradé" no referido logotipo se escolhida uma segunda cor
para fim do logotipo.
serve para designar uma cor a ser utilizada para encher o formato do
título do objeto, quando o objeto gMask contiver o cursor (foco). não
Cor título c/ foco
oferecerá qualquer efeito se a propriedade Enchimento tiver valor definido
com Transparente ou se a propriedade Título não tiver sido definida.
serve para designar uma cor a ser utilizada para encher o formato do
título do objeto, quando o objeto gMask não contiver o cursor (foco). não
Cor título s/ foco
ofereceráqualquer efeito se a propriedade Enchimento tiver valor definido
com Transparente ou se a propriedade Título não tiver sido definida.
Venda item determina o campo ou controle por intermédio do qual serão

~ 178 ~
MANUAL DO FATHER

determinadas as descrições de itens de venda em aplicações que utilizam


da Emissão de Cupom Fiscal, sendo de preenchimento obrigatório
determina o campo de uma tabela (deve haver vínculo com tabela)
Descrição forma de por intermédio do qual serão determinadas as descrições de formas de
pgto pagamento em aplicações que utilizam da Emissão de Cupom Fiscal,
sendo de preenchimento obrigatório.
Designa um sentido para traçar a linha, dentro da área que a define.
Direção Os valores possíveis são: Horizontal, Vertical, Diagonal para baixo,
Diagonal para cima.
tem por finalidade informar a distância vertical, em milímetros, entre
Distância carreiras
uma etiqueta e a que está à sua direita.
define a distância horizontal, em milímetros, entre uma etiqueta e
Distância colunas
outra, que esteja imediatamente abaixo.
tem por finalidade informar a distância, em milímetros. entre um
registro e outro do relatório. É importante ressaltar que, se existirem outras
Distância entre regs informações impressas entre umregistro e outro (como por exemplo, um
subrelatório), esta medida será aplicada sempre após estas informações
ter sido impressas.
Define a distância a ser observada entre o título e a figura utilizada
Distância entre regs
no objeto (no caso de botão) ou caixa de texto (no caso do gMask).
tem por finalidade informar a quantidade de etiquetas idênticas que
Duplicatas devem ser impressas para cada registro lido do banco de dados, ou seja,
é a quantidade de etiquetas a ser impressa para o mesmo produto.
tem por finalidade permitir ou não a modificação e exclusão de
Editar em grade registros visualizados em grade, estando disponível apenas para o painel
de fundo sobre o qual os outros objetos são disponibilizados.
Define se o campo associado ao objeto ou à coluna atualmente
Editável selecionada no gDbGrid poderá ter seu valor modificado por intermédio de
digitação pelo usuário da aplicação.
Define o padrão a ser utilizado para encher o formato utilizado no
objeto. Os valores possíveis são Sólido, Transparente, Linha horizontal,
Enchimento Linha vertical, Diagonal para cima, Diagonal para baixo, Em cruz, Diagonal
em cruz. Se for designada como Transparente, apenas uma borda
contornando o objeto será visível.
Determina a posição da margem esquerda do objeto, em relação ao
Esquerda seu container. não está disponível para o painel de fundo, onde são
colocados os demais objetos na tela.
Determina o estilo a ser aplicado no objeto. Em se tratando de botão,
Estilo os valores possíveis são: Normal ou Internet. Se o objeto for Tab, os
valores possíveis são Windows 95 ou MS-Office.
Determina o estilo a ser aplicado na borda do objeto selecionado. Os
valores possíveis são: Sólido, Transparente, Traço, Ponto, Traço-ponto,
Estilo da borda
Traço-Traço-ponto e Sólido interno. O efeito d só será visto se a
propriedade Largura da borda for igual ou maior a 1.
Define a disposição da figura definida para textura será exibida no
Exibir textura formulário. Os valores possíveis são Lado-a-lado, Expandido e
Centralizado
Determina se a figura disponibilizada sobre o objeto poderá ser
expandida até o tamanho total do objeto. O efeito d poderá causar
Expande figura
distorção na imagem, caso não haja proporcionalidade entre a imagem e
as dimensões do objeto.
Estabelece se a informação contida no label irá ser truncada na
largura deixada por você para o mesmo ou se será expandida de modo a
imprimir toda a informação. Se for ajustada para "Sim", nos campos que
Expandir não forem do tipo memo, o texto será impresso na totalidade de sua
largura, independentemente de se sobrepor a outro campo que estiver à
frente. Em campos do tipo memo, esta expansão é considerada
verticalmente.
Expressão tem por finalidade definir a expressão que comandará a quebra.
Determina se o objeto apresentará o botão extensor à direita do
objeto. Este botão é, normalmente, utilizado para apresentar um diálogo
Extensor
extra, como, por exemplo, calculadora ou calendário, quando o usuário
acioná-lo, disparando o evento Ação no clique. Os valores possíveis são:

~ 179 ~
MANUAL DO FATHER

DropDown e Reticências.
serve para designar o nome de um arquivo do tipo .BMP, .ICO ou
.WMF que contém a figura a ser apresentada no objeto. Quando é
designada, o Father copia esta figura para o diretório de figuras indicado
no campo identificado como "Diretório para figuras do projeto", disponível
na aba Ícones da Definição do projeto. Esse diretório poderá reunir ainda
as figuras e ícones de todos os projetos desenvolvidos, promovendo uma
Figura melhor padronização dos sistemas desenvolvidos. Em se tratando do
objeto Tab, será aplicada na aba selecionada. Ao alterar quaisquer uma
das figuras ou ícones da aplicação, você poderá visualizar o arquivo
selecionado no painel de preview apresentado na tela de seleção de
arquivo que se abrirá, facilitando assim sua identificação. A opção "Zoom"
promoverá o redimensionamento da figura para o tamanho exato do painel
de preview.
serve para designar o nome de um arquivo do tipo .BMP, .ICO ou
.WMF que contém a figura a ser apresentada no botão quando o mesmo
Desativado estiver desativado. As mesmas observações descritas para a propriedade
Figura, referentes ao diretório de figuras, o painel de preview também são
válidas para essa propriedade.
serve para designar o nome de um arquivo do tipo .BMP, .ICO ou
.WMF que contém a figura a ser apresentada no botão quando o mesmo
Figura em baixo estiver sendo pressionado com o mouse. As mesmas observações
descritas para a propriedade Figura, referentes ao diretório de figuras, o
painel de preview e também são válidas para essa propriedade.
serve para designar o nome de um arquivo do tipo .BMP, .ICO ou
.WMF que contém a figura a ser apresentada no botão quando o mouse
estiver passando por cima do mesmo. só tem efeito se a propriedade
Figura iluminado
Estilo estiver ajustada para InterNet. As mesmas observações descritas
para a propriedade Figura, referentes ao diretório de figuras, o painel de
preview também são válidas para essa propriedade.
permite a definição de uma figura transparente a ser inserida, em
tamanho real, no centro do form. O Father tomará a cor do primeiro pixel
Figura transparente da figura como sendo a cor de transparência. As mesmas observações
descritas para a propriedade Figura, referentes ao diretório de figuras e o
painel de preview também são válidas para essa propriedade.
serve para selecionar os registros que aparecerão dentro de uma
lista externa. Se não for utilizada, todos os registros da tabela estrangeira
Filtro
associada serão mostrados e disponibilizados para seleção. Quando se
tratar do controle gDBGrid, se aplicará à coluna selecionada.
é semelhante à anterior. O que as diferencia é o fato de que, na
anterior, um "IF..." é criado proporcionando maior flexibilidade, sendo,
porém, mais lenta. Já nesta, a expressão de filtragem será incorporada à
expressão SQL do relatório (cláusula WHERE) e, por isso, este filtro é
limitado aos seguintes detalhes:
• o primeiro operando da expressão tem que ser um campo da tabela
Filtro inicial
básica do relatório;
• o segundo operando pode ser qualquer um dos campos das
tabelas relacionadas, campos recebidos na tela, etc.
Para os grids, determina a seleção de registros que serão listados,
possibilitando, por exemplo, a definição de
consultas a tabelas relacionadas ao grid.
designa os atributos da fonte a ser utilizada no objeto. No caso do
Fonte
gMask, será aplicada somente na caixa de texto associada.
Fonte do título designa os atributos da fonte a ser utilizada no título do objeto.
define a fonte que estará sendo utilizada no logotipo lateral do
Logotipo
formulário. Poderão ser utilizadas apenas fontes True Type.
designa a forma que terá o objeto. No caso do gMask, este formato
será
Formato aplicado na forma que envolve o título. Os valores possíveis são
Retângulo, Quadrado, Oval, Círculo, Retângulo arredondado e Quadrado
arredondado.
deve ser preenchida com uma expressão que retorne um valor
Fórmula caracter a ser exibido no objeto. Normalmente, serve para mostrar
resultados de cálculos que envolvam campos das tabelas. No caso do

~ 180 ~
MANUAL DO FATHER

objeto imagem, somente campos do tipo multimídia poderão ser


disponibilizados.
designa um nome utilizado para agrupar vários objetos
gMask. estará disponível somente se a propriedade Tipo de dado for
Grupo
designada como Optativo. A finalidade d é permitir que somente um item
deste grupo esteja selecionado a um determinado momento.
tem por finalidade estabelecer o momento em que a informação
deverá ser impressa, devendo ser observada com bastante atenção, pois
é a que, provavelmente, levantará maior quantidade de dúvidas. As
Imprimir
opções são: Como máscara de página, Início da página, Início do relatório,
A cada registro, Fim do relatório, Fim da página, Como máscara QuebraN,
Início Quebra N, A cada registro da Quebra N e Fim da quebra N.
Utilizada somente quando a propriedade Totalizador estiver ajustada
para uma opçãodiferente de "Não", essa propriedade determina em que
Inicializar
ponto do relatório a variável que controla o totalizador será inicializada, ou
com "0" ou com o valor estabelecido pela propriedade Valor inicial.
serve para designar um valor a ser retornado e testado no código
Item do grupo fonte, quando o objeto for selecionado. Este valor será gravado no banco
de dados.
determina a maneira como será feita a interseção dos separadores
Junta separadores estabelecidos pelas propriedades Separador esq e Separador topo. As
possibilidades são Nenhum, Horizontal e Vertical.
determina a largura do objeto selecionado. não se aplica ao painel
Largura
de fundo.
Largura coluna determina a largura da coluna selecionada no objeto gDbGrid.
designa a largura a ser aplicada na borda do objeto. No caso do
Largura da borda painel, é utilizada para estabelecer a largura entre os chanfros interno e
externo.
tem finalidade informar a largura, em milímetros, da etiqueta a ser
Largura da etiqueta
utilizada na impressão.
estabelece a largura a ser aplicada nos chanfros interno e externo do
Largura do chanfro
objeto painel.
tem por finalidade definir a expessura do logotipo lateral do
Largura logotipo
formulário
determina, nos relatórios elaborados por intermédio do G-Reports, a
Largura útil do papel largura útil do papel, fora da qual a impressora não consegue inserir
informações (espaço deixado para tracionamento do papel, etc).
determina se a informação contida no objeto será apagada, caso a
Limpar campo
expressão disponibilizada na propriedade Pré-validação não seja atendida.
em modo combobox:, será aberto junto ao campo, como um
combobox mesmo, mas se ao texto, apenas capturando. Isto pode ser
utilizado em um cadastro de bairro por exemplo, onde mostra os bairros
Lista\Pesquisa existentes de acordo com os clientes(Select bairros from clientes group by
bairros), mas, se for um novo bairro, o usuário poderá digitar a vontade.
em modo Janela: Será apresentado um formulário, como o form de
pesquisa, ideal para muitos registros (ex: tabela de preços).
estabelece a lista a ser apresentada no objeto. Os itens devem ser
digitados, lado a lado, separados pelo caractere "|" (pipe). Esta lista só
Lista de opções será aberta se a propriedade Extensor estiver definida. Nos objetos nos
quais é definida, não podem ser digitadas informações diretamente e as
setas cursoras podem ser utilizadas para efetuar a rolagem dos itens.
define a medida horizontal, em milímetros, da primeira posição útil
Margem esquerda
do papel até a primeira etiqueta.
define a distância horizontal, em pixels, da primeira posição do texto
Margem horizontal até a primeira posição do controle propriamente dito, independente do
ângulo aplicado ao texto do controle.
define a medida vertical, em milímetros, da primeira posição útil do
Margem superior
papel até a primeira etiqueta.
define a distância vertical, em pixels, da primeira posição do texto
Margem vertical até a primeira posição do controle propriamente dito, independente do
ângulo aplicado ao texto do controle.
estabelece o gabarito de digitação da informação associada ao
Máscara
objeto.

~ 181 ~
MANUAL DO FATHER

determina o texto a ser apresentado ao usuário ao final da execução


Mensagem final de um processo pré-definido, não devendo ser utilizada aspas nesta
informação.
determina o texto a ser apresentado ao usuário ao início da
execução de um processo pré-definido, não devendo ser utilizada aspas
Mensagem inicial
nesta informação. O texto default apresentado pelo Father é "Esta
operação poderá ser demorada! Deseja continuar?".
determina o campo ou controle por intermédio do qual será
Mensagem determinada a mensagem promocional, de até 492 caracteres, em
promocional aplicações que utilizam da Emissão de Cupom Fiscal, não sendo,
entretanto, de preenchimento obrigatório.
determina o texto a ser apresentado ao usuário caso a expressão
estabelecida na propriedade Validação não seja atendida, não devendo
Mensagem validação ser utilizada aspas nesta informação. Você pode também utilizar o Editor
de Programas do Father para escrever uma função que retorne um valor
caracter para ser aqui utilizado.
Serve para estabelecer o modo como a tela será apresentada.
Se for designada para "Sim", o usuário não poderá clicar fora desta tela
Modal
enquanto ela estiver sendo apresentada, ficando a execução da aplicação
temporariamente suspensa até que esta tela seja resolvida.
Determina se o campo Acréscimo / Desconto será ou não mostrado
na tela de Pagamentos em aplicações que utilizam a Emissão de Cupom
Mostra acresc / desc
Fiscal. Caso não seja exibido, o operador poderá acionar uma janela
específica de Acréscimo / Desconto, utilizando-se da hot-key SHIFT-F12.
estabelece se, na inclusão de registros, os valores iniciais de todos
os campos serão ou não exibidos de uma só vez. O valor padrão para
essa propriedade é "Não", o que faz com que os valores iniciais dos
campos só sejam exibidos quando estes recebem o foco. A utilização
Mostrar valor inicial
dessa propriedade permite, por vezes, automatizar o processo de entrada
de dados, visto que todos os objetos com valor inicial serão preenchidos
logo após o pressionamento do botão de inclusão e antes que qualquer
outro campo seja preenchido.
Designa um nome a ser utilizado em uma associação com o controle
dentro do código do programa. Esta associação permite que você se refira
Nome do controle a qualquer uma das propriedades do controle associado por intermédio do
nome d, a qual só é necessária se você estiver utilizando o Editor de
Programas do Father para escrever código de programa.
Esta informação é utilizada para inibir a impressão de informações
iguais nos registros subsequentes. É, normalmente, utilizada em
Omitir se igual
agrupamentos de registros para inibir informações repetitivas. As opções
são: Não, No relatório, Na página e Em quebra N.
estabelece a ordem a ser obedecida para a impressão dos registros
de relatórios elaborados pelo G-Reports. Vários campos podem ser
Ordem
concatenados para formar a expressão de ordenação do relatório. Para os
grids, estabelece a ordem de exibição dos registros listados.
estabelece a ordem a ser obedecida para a impressão dos sub-
relatórios ou quebras existentes em relatórios elaborados pelo G-Reports.
Para exemplificar, mesmo que um subrelatório esteja visualmente situado
abaixo de outro, aquele que estiver situado mais próximo ao rodapé do
relatório poderá ser impresso antes que o sub-relatório de cima o seja,
devendo designar uma ordem de impressão concernente a esta
Ordem de impressão
necessidade. Caso seja informado um valor para que extrapole, de
acordo com o número de sub-relatórios ou quebras, um número válido, o
Father irá ajustar, automaticamente, o referido valor. Para os labels e
textos 3D, essa propriedade estabelece sua ordem de apresentação, o
que proporciona enorme facilidade na determinação da ordem de cálculo
de fórmulas.
estabelece a sequência de acesso aos objetos na tela, quando o
Ordem do tab
usuário pressiona a tecla tab ou, durante a digitação, a tecla Enter.
, no caso do Tab, determina o sentido em que as abas aparecerão.
Os valores possíveis são: Em cima, Em baixo, Na esquerda e Na direita.
Orientação Já no caso do gMask, estará disponível somente se a propriedade Tipo
de dado estiver designada com tipo Rotativo, servindo para determinar o
sentido da barra de rolagem (Horizontal ou Vertical).

~ 182 ~
MANUAL DO FATHER

determina se um objeto receberá ou não foco por meio da tecla TAB.


Caso essa propriedade esteja definida como "Não" para um objeto,
Parar com tab
mesmo com a propriedade "Ordem do TAB" definida, este não receberá o
foco do cursor por meio da tecla TAB.
habilita os campos para os quais o usuário final poderá utilizar a
repetição automática do registro anteriormente digitado. Esta função é
especialmente útil quando se faz digitações de informações que podem
estar repetidas em diversos registros, como cidade, Estado, etc. Para
utilizar esse recurso, basta que você selecione os campos de repetição e
Permitir repetição
altere a propriedade Permitir repetição para "Sim". Uma vez que, na
aplicação final gerada, os dados estejam presentes na tela, basta que o
operador pressione o botão de repetição de campos mostrado a seguir
para aproveitar estes dados. Quando esta função não for mais desejada,
basta pressionar o botão novamente.
determina a posição mais baixa da folha a ser considerada para
imprimir informações que não sejam ajustadas como máscara de página,
isto é, estabelece o limite para se imprimir informações que variam de
Pos máx p/ dados
posição (impressas a cada registro). Normalmente, já vem ajustada igual
à altura útil da página do relatório. O ajuste dessa propriedade para um
número um pouco menor, possibilida a inserção de rodapés nas páginas.
designa, para os relatórios, se a informação será impressa de modo
fixo, ou seja, sempre na mesma posição dentro da página ou se a sua
posição irá variar de acordo com os registros impressos. Quando um
campo é vinculado a um label, o Father automaticamente ajusta essa
propriedade para 1 (variável). Há casos em que você poderá querer que
Posição um campo seja impresso em posição fixa, como, por exemplo, em
cabeçalhos ou rodapés (máscara de página). Neste caso, deverá alterar
essa propriedade para 0 (fixa). Para o painel, essa propriedade determina
a posição onde o painel utilizado como barra de ferramentas da aplicação
aparecerá posicionado, determinação também válida para os outros tipos
de controles.
Determina a posição na qual o título deverá ser posicionado em
Posição do título relação à caixa de texto. Os valores possíveis são Em cima, Em baixo, À
esquerda e À direita.
Deve ser preenchida com uma expressão ou função em Visual Basic
que retorne um valor lógico (True ou False), indicando se o objeto corrente
Pré-validação pode ou não ser acessado durante a operação da aplicação. Esta
condição é avaliada quando o cursor sai do objeto (evento LostFocus).
Pode-se utilizar o Editor de Programas do Father para criar esta função.
Determina a quantidade de abas que o objeto tab irá apresentar.
Qde de abas Se for designada com um valor maior do que o valor da propriedade Abas
por linha, o controle irá apresentar mais de uma carreira de abas.
Define a quantidade de carreiras de etiquetas existentes no
Qde de carreiras
formulário a ser impresso.
Determina a quantidade de colunas apresentadas pelo gDbGrid
Qde de colunas
disponibilizado na tela.
Determina o campo ou controle por intermédio do qual será
determinada a quantidade de itens de venda em aplicações que utilizam
da Emissão de Cupom Fiscal, não sendo, entretanto, de preenchimento
obrigatório. Se e somente se não for informado um campo ou controle
Qde do item
para indicar a quantidade de itens de venda, o controle desse campo será
efetuado de forma interna ao sistema, devendo ser acionada a tecla *
(asterisco) pelo operador do sistema logo após a digitação da referida
quantidade.
Determina se a picturebox disponibilizada na tela (venda de itens) irá
espelhar exatamente os itens impressos na impressora fiscal em
aplicações que utilizam da Emissão de Cupom Fiscal. Para reproduzir
melhor a impressão do cupom fiscal na referida picturebox, deve-se dar
Retorno da ECF
preferência às fontes monoespaçadas, como a Courier New, e
dimensionar sua largura para 50 posições, largura essa que também é
utilizada nos cupons fiscais emitidos pela Bematech e que são
compatíveis com os da Yanco.
Determina se, após a impressão de um registro ou quebra, uma
Saltar página
página deverá ser saltada. É importante observar que, após inseridas as

~ 183 ~
MANUAL DO FATHER

quebras, as propriedades inerentes aos campos, especialmente a


propriedade "Imprimir...", podem apresentar a necessidade de serem
alteradas para atender às necessidades.
Determina se as dimensões intrínsecas ao gDbGrid (largura das
colunas e altura das linhas) serão salvas com base nasdimensões que o
usuário definir, em run-time, para tal controle. Cabe ressaltar que a
Salvar colunas grid
personalização das dimensões do gDbGrid ocorrerá a nível de usuário,
proporcionando um grau de customização mais elevado para o aplicativo
final.
Determina se o filtro estabelecido para determinada janela de dados
será salvo com base nos filtros especificados, em design-time, por você e,
Salvar filtro em run-time, pelo usuário. Cabe ressaltar que a personalização desses
filtros também ocorrerá a nível de usuário, proporcionando um grau de
customização mais elevado para o aplicativo final.
Determina se o botão irá apresentar uma linha separadora à sua
Separador esq esquerda, linha tal que poderá ser utilizada na separação de grupos de
botões que tenham finalidades semelhantes.
determina se o botão irá apresentar uma linha separadora na sua
Separador topo parte superior, linha tal que poderá ser utilizada na separação de grupos
de botões que tenham finalidades semelhantes.
determina o campo ou controle por intermédio do qual será
determinada a situação tributária (Isento, Sujeito a ISS, Sujeito a ICMS,
Situação tributária
Substituição tributária, etc) dos itens de venda em aplicações que utilizam
da Emissão de Cupom Fiscal, sendo de preenchimento obrigatório.
deverá conter o nome de uma tabela inserida na estrutura do projeto
em módulos do tipo Tabela em grid. Quando é designada, o Father
Tabela preenche automaticamente o objeto gDbGrid inserido na tela com os
campos desta tabela, exceto os campos definidos como de ligação com o
módulo-pai.
deverá conter o nome de uma tabela do banco de dados selecionado
Tabela estrangeira na propriedade "BD estrangeiro", cujos campos serão exibidos em uma
lista externa.
determina o tamanho, em pixels, da sombra a ser projetada pelo
Tamanho da sombra
texto.
determina o tamanho do papel (tipo utilizado pela maioria das
Tamanho do papel impressoras - A4, Letter, etc.), influenciando as propriedades "Altura útil" e
"Largura útil" do papel.
serve para determinar a quantidade de caracteres que podem ser
Tamanho máximo digitados em um objeto gMask. é desprezada caso a propriedade
"Máscara" for designada com um valor que não contenha o caractere "@".
determina se a forma de pagamento necessitará de comunicação ou
não com o gerenciador padrão da TEF Discada, quando utilizadas a
segunda ou terceira formas de compatibilização com a ECF. A ela podem
ser atribuídos os seguintes valores:• 0 (zero) - forma de pagamento
normal, em que não há necessidade de comunicação com o gerenciador
padrão, como ocorre em pagamento em dinheiro, tickets, etc;
1 - forma de pagamento vinculada às vendas com cartão de crédito
TEF / Cheque
ou débito e que, portanto, necessitarão de comunicação com o
eletrônico
gerenciador padrão;
2 - forma de pagamento vinculada às consultas de cheque eletrônico
e que, portanto, necessitarão de comunicação com o gerenciador padrão.
Ressaltamos o termo consultas de cheque eletrônico em função
dessa forma de pagamento funcionar apenas como consulta, não
impedindo que, mesmo no caso de uma resposta negativa para o cheque
em questão, o operador dê continuidade à venda em andamento.
deverá conter a frase a ser utilizada como ajuda do objeto, quando o
Texto de ajuda mouse estaciona sobre o mesmo. O caracter "|" (pipe) pode ser utilizado
para forçar a quebra de linha.
permite a definição de uma textura de fundo para todos os
Textura formulários da aplicação final, correspondendo à propriedade Tile do
Visual Basic.
determina se o botão funcionará de maneira convencional ou como
Tipo dois estágios, ou seja, quando pressionado, o mesmo poderá ficar ou não
em baixo relevo até que um novo clique do mouse seja nele aplicado. Este

~ 184 ~
MANUAL DO FATHER

tipo de botão pode ser utilizado para apresentar valores do tipo liga/desliga
por intermédio de sua propriedade Value.
determina o campo ou controle por intermédio do qual será
determinado o tipo de acréscimo ou desconto dos cupons fiscais em
aplicações que utilizam da Emissão de Cupom Fiscal, não sendo,
entretanto, de preenchimento obrigatório. As possibilidades são: 0 - Valor
Tipo acrésc/desc
e 1 (ou quaisquer outros valores) - Porcentagem. Uma vez estabelecido
um conteúdo para essa propriedade, deve-se obrigatoriamente determinar
conteúdos para as propriedades "Acréscimo/desconto" e "Valor
acrésc/desc".
Determina se o objeto, inclusive formulário, apresentará uma linha
Tipo da borda
de contorno.
Designa o tipo de informação que o objeto irá manipular na aplicação
Tipo de dado final. As possibilidades são Caractere, Numérico, Data/hora, Rotativo,
Memo, Lógico, Optativo e Multimídia.
determina o campo ou controle por intermédio do qual será
determinado o tipo de tributo a ser aplicado aos itens de venda em
Tipo de tributo aplicações que utilizam da Emissão de Cupom Fiscal, não sendo,
entretanto, de preenchimento obrigatório. As possibilidades são: 0 - ISS e
1 (ou quaisquer outros valores) - ICMS.
determina o campo ou controle por intermédio do qual será
determinado o tipo de desconto dos itens de venda em aplicações que
utilizam da Emissão de Cupom Fiscal, não sendo, entretanto, de
Tipo desconto item preenchimento obrigatório. As possibilidades são: 0 - Valor e 1 (ou
quaisquer outros valores) - Porcentagem. Uma vez estabelecido um
conteúdo para essa propriedade, deve-se obrigatoriamente determinar
conteúdo para a propriedade "Valor desconto item".
determina um texto que será exibido como título do objeto
Título
selecionado.
determina um texto que será exibido no título da coluna selecionada
Título da coluna
no objeto gDbGrid.
determina um texto que será exibido como título do logotipo lateral
Título logotipo
do form.
Serve para determinar a distância entre a margem do topo do objeto
Topo selecionado em relação ao seu container. não está disponível para o
painel de fundo sobre o qual os outros objetos são disponibilizados.
estabelece o momento em que o conteúdo (propriedade "Campo" ou
Totalizador "Fórmula") do controle será totalizado. As possibilidades são: 0 - Não ou 1
- A cada registro (de quebras ou não).
Se estiver ajustada para Sim, determina que o objeto apresentará
Transparente transparência em relação ao seu container. Se estiver designada para
Não, o objeto será opaco.
deve ser preenchida com uma expressão ou função em Visual Basic
que retorne um valor lógico (True ou False), indicando se a informação
digitada no objeto é ou não válida. Esta condição é avaliada no momento
Validação
em que o usuário clica sobre o botão de gravação ou sobre o botão de
prosseguir (em forms que não tenham vinculação direta com dados).
Pode-se utilizar o Editor de Programas do Father para criar tal função.
determina o campo ou controle por intermédio do qual será
determinado o valor do desconto ou acréscimo dos cupons fiscais em
aplicações que utilizam da Emissão de Cupom Fiscal, não sendo,
Valor acrésc/desc entretanto, de preenchimento obrigatório. Uma vez estabelecido um
conteúdo para essa propriedade, deve-se obrigatoriamente determinar
conteúdos para as propriedades "Acréscimo/desconto" e "Tipo
acrésc/desc".
determina o campo ou controle por intermédio do qual será
determinado o valor do desconto dos itens de venda em aplicações que
utilizam da Emissão de Cupom Fiscal, não sendo, entretanto, de
preenchimento obrigatório. Uma vez estabelecido um conteúdo para essa
Valor desconto item propriedade, deve-se obrigatoriamente determinar conteúdo para as
propriedade "Tipo desconto item". Se e somente se não for informado um
campo ou controle para indicar o valor de desconto dos itens de venda, o
controle desse campo será efetuado de forma interna ao sistema, devendo
ser acionada a tecla F11 pelo operador do sistema para que, então, seja

~ 185 ~
MANUAL DO FATHER

efetuada a digitação do referido desconto.


determina o campo ou controle por intermédio do qual será
determinado o valor pago por intermédio de cada uma das formas de
Valor forma pgto
pagamento utilizadas nas vendas em aplicações que utilizam da Emissão
de Cupom Fiscal, sendo de preenchimento obrigatório.
designa uma expressão a ser utilizada como default para o conteúdo
do objeto. você deverá estar atento ao designar , pois o valor retornado
Valor inicial tem de ser compatível ao valor estabelecido na propriedade "Tipo de
dado". Pode-se utilizar o Editor de Programas do Father para criar tal
função.
determina o campo ou controle por intermédio do qual será
informado o valor unitário de cada um dos itens de venda em aplicações
Valor item unitário
que utilizam da Emissão de Cupom Fiscal, sendo de preenchimento
obrigatório.
Estabelece um valor máximo aceitável pelo controle, quando
Valor máximo
utilizada barra de rolagem.
Estabelece um valor mínimo aceitável pelo controle, quando utilizada
Valor mínimo
barra de rolagem.
deve ser preenchida com uma expressão ou função em Visual Basic
que retorne um valor lógico (True ou False), indicando se o objeto será ou
Visível não visível ao usuário. Esta condição é avaliada quando o cursor sai do
objeto (evento LostFocus). Pode-se utilizar o Editor de Programas do
Father para criar esta função.
tem por finalidade permitir ou não a visualização de uma janela de
dados em forma de grade (F4), estando disponível apenas para o painel
de fundo sobre o qual os outros objetos são disponibilizados. Quando
definida como Sim, mesmo que a janela de dados não esteja sendo
visualizada em grade (F4), é disponibilizado um grid no referido formulário
para que, quando solicitado, tal janela de dados possa ser visualizada no
referido formato. No entanto, a presença do grid no formulário em questão
pode causar certa lentidão, pois é necessária a leitura de toda a base de
Visualizar em grade
dados para preenchê-lo, obedecendo ou não aos filtros estabelecidos por
você. A presença de filtros para abertura de janelas de dados pode
degradar, ainda mais, o desempenho do aplicativo final em tal processo.
Definindo essa propriedade para Não, a abertura do formulário referente à
janela de dados tornar-se-á mais rápida, visto que não mais será
necessária a leitura de toda a base de dados e o preenchimento do
referido grid, independente dos eventuais filtros que tenham sido
estabelecidos.

Top Previous Next


Definindo opções da tela padrão

~ 186 ~
MANUAL DO FATHER

Como já vimos, durante a criação da barra de ferramentas ou de telas para entrada de dados,
você poderá solicitar ao Father a criação de uma tela padrão por meio do botão:

Na criação de uma tela padrão, o Father tenta posicionar os campos da tabela ou botões da barra
de ferramentas, de acordo com algumas especificações que você pode estabelecer. Essas
especificações são efetuadas na figura abaixo, que pode ser acionada selecionado-se a opção de
menu "Opções/Opções da tela padrão" ou, ainda, clicando com o botão direito do mouse sobre o botão
de criação da tela padrão, exibido neste tópico.

Top Previous Next


Disposição dos Títulos

Selecione a posição na qual o Father deverá dispor os labels (rótulos) que contêm os títulos dos
campos. As opções disponíveis são: "Sobre o campo" e "Ao lado do campo" (à esquerda).

Dimensões memo/texto Top Previous Next

A exemplo da opção de dimensionamento de imagens, informe a quantidade de pixels a serem


considerados para dimensionar a altura e a largura iniciais da área de digitação de campos do tipo
memo, caso existam na tabela cuja janela de dados será formatada.

~ 187 ~
MANUAL DO FATHER

Margens e distâncias Top Previous Next

Nestas opções podem ser definidos alguns aspectos que o Father deverá respeitar:

Maior controle Top Previous Next

Especifique a quantidade máxima de pixels a ser considerada na altura e largura para alocar um
controle na tela.

Distância Top Previous Next

Especifique a distância, em pixels, a ser considerada na separação de controles na tela (distância


entre um controle e outro).

Margem esquerda Top Previous Next

Especifique a distância, em pixels, a ser considerada entre a borda esquerda da tela e os


controles alocados na tela.

Margem do topo Top Previous Next

Especifique a distância, em pixels, a ser considerada entre a borda superior da tela e os controles
alocados na tela.

~ 188 ~
MANUAL DO FATHER

Quantidade de colunas Top Previous Next

Informe a quantidade máxima de colunas de campos que o Father deverá criar na janela padrão.

Top Previous Next


Recalcular tamanho da tela

Se esta opção estiver marcada, o Father irá, caso necessário, ajustar o tamanho da janela
segundo a quantidade de campos alocados na tela. Se esta opção não estiver marcada, você deverá
dimensionar manualmente o tamanho desejado. Neste caso, a área definida será respeitada pelo
Father.

Top Previous Next


Fonte dos títulos

Determina a fonte default para os objetos (Labels) a serem inseridos nas telas e relatórios, sendo
utilizadas apenas as fontes True Type. A propriedade Fonte do título dos labels pode ser alterada
individualmente durante a formatação.

Top Previous Next


Fonte dos campos

Determina a fonte default de digitação para os campos a serem inseridos nas telas, sendo
utilizadas apenas as fontes True Type. A propriedade Fonte pode ser alterada individualmente durante
a formatação. Existem ainda três botões que você poderá utilizar para Aceitar, Cancelar ou, ainda,
Restaurar as configurações "de fábrica".

Top Previous Next


Diário de Bordo

~ 189 ~
MANUAL DO FATHER

O Diário de Bordo é um livro de notas criado para reunir, em um só lugar, todas as anotações que
você deseje ou necessite fazer em referência a um projeto de sistema do Father. Neste livro, há quatro
páginas, cada uma delas podendo conter até 64 KB de texto. Nelas podem ser anotados todos os
detalhes do desenvolvimento do projeto, como, por exemplo, os nomes das pessoas de contato e seus
telefones, fórmulas, memórias de cálculos, lembretes, etc.

Na barra de ferramentas, o botão pode ser utilizado para exibir o Diário de Bordo.

Uma vez anotada no Diário de Bordo, a informação é automaticamente gravada e vinculada ao


projeto que está sendo definido, evitando a utilização de papéis com anotações que se perdem
facilmente.

~ 190 ~
MANUAL DO FATHER

Top Previous Next


Diário em zoom

O Diário de Bordo pode ser apresentado em zoom, selecionando-se a opção de menu


"Exibir/Diário em zoom". Quando o Diário de Bordo é exibido em zoom, ocupará toda a área de cliente
do Father. Para exibí-lo em tamanho normal, basta desmarcar esta opção.

Top Previous Next


Imprimir Diário de Bordo

O conteúdo do diário de bordo pode ser enviado para a impressora padrão do Windows,
selecionando-se as opções "Arquivo/Utilitários/ Imprimir Diário de Bordo".

~ 191 ~
MANUAL DO FATHER

Top Previous Next


Importando banco de dados

Para importar um banco SQL ou MDB, utilize a opção desejada na Definição da Solução:

~ 192 ~
MANUAL DO FATHER

Top Previous Next


Importando banco SQL

Para importar bancos SQL, utilize a opção em destaque na figura abaixo, na definição da
Solução.

Em seguida, será necessário informar o servidor, a instância, o nome do banco e os dados de


autenticação, usuário e senha, se a opção "Assumir login da rede" estiver desmarcada.

~ 193 ~
MANUAL DO FATHER

Top Previous Next


Geração de programas fontes

Uma vez que todo o projeto da aplicação tenha sido definido, o Father habilitará o botão para que
você possa disparar a geração dos programas fontes necessários ao funcionamento da aplicação.

Os programas fontes gerados podem estar distribuídos em diversos módulos, gravados em


arquivos com as extensões:
• .BAS

• .FRM

• .FRX

• .VBP

• .DEF

• .SQL

• .RC

• .HHK - .HHP - .HHC - .HTM

Top Previous Next


Disparando a geração de fontes

~ 194 ~
MANUAL DO FATHER

Por intermédio do diálogo da figura acima, você poderá disparar a geração dos programas fontes.
Eventualmente, a geração de módulos pode ser desligada, desmarcando-se a opção correspondente.
Os botões existentes na borda direita desta janela servem para marcar ou desmarcar todos os
módulos, respectivamente.

Existe também a possibilidade de proteção de determinados módulos da árvore para não serem
gerados, mesmo que você clique o botão "Gerar todos" no módulo de geração. Este recurso para evitar
a geração indevida de determinados módulos, principalmente em forms que foram feitas alterações
manuais e você deseja preservar este item.

Caso a opção seja "Sim" o modulo é desmarcado para geração neste momento e marcado como
preservado e não mais será gerado pelo Father, até que o usuário mude esta opção na definição do
modulo.

Caso a opção seja "Não" o modulo é desmarcado para geração neste momento, mas não é
marcado como preservado. Este recurso é interessante em projetos grandes, ganhando velocidade na
geração dos fontes, pois evita a geração novamente. Isto é recomendado apenas para ganho de
velocidade e em módulos que não sofreram alteração.

Ao marcar a opção de "Gerar todos", todos os módulos serão gerados, exceto os que estão
marcados como preservados.

Antes de iniciar a geração dos programas fontes o Father efetua uma verificação de consistência
nas especificações do projeto. Encontrando alguma inconsistência ou falta de informações
imprescindíveis, o mesmo interrompe o processo de geração e apresenta mensagem relativa à
inconsistência encontrada. você deverá voltar às definições do projeto e corrigir o problema.

Durante esta operação, se desejar rever a última mensagem de erro informada pelo Father
durante a geração, você poderá selecionar o menu: Arquivo/Utilitários/Rever mensagem erro de
geração.

~ 195 ~
MANUAL DO FATHER

Na interface para escolha dos módulos definidos para geração, você tem um preview idêntico à
árvore do projeto, facilitando assim a escolha ou não de módulos para geração.

Você poderá ainda criar e gerenciar um número de versão para o projeto, por meio da moldura
intitulada Versão. São três os campos que controlam a versão, os quais podemos denominar:

Principal - Número principal da versão do projeto, podendo variar de 0 a 999.


Secundário - Número secundário da versão do projeto, podendo também variar de 0 a 999.
Revisão - Número de revisão do projeto, podendo variar de 0 a 99999.

Caso a opção "Auto-incrementar versão" esteja marcada, o próprio Father se encarregará de


incrementar os números de versão. Mesmo com essa opção marcada, caso lhe convier, você poderá
ainda intervir manualmente na definição desses números. Para maiores informações, clique aqui.
Top Previous Next
Histórico de geração de fontes

Você pode verificar o histórico de todas as gerações que foram feitas para um projeto, contendo a
informação do número da versão, data e hora de geração, versão e release do Father utilizada para a
geração, além de um comentário descrito por você. no momento da geração daquela versão;

Após a geração nos casos em que a opção manter histórico esteja ativada, o histórico da geração
de fontes é gravado na aba histórico da definição do projeto.

~ 196 ~
MANUAL DO FATHER

Top Previous Next


Geração de executáveis

Antes de disparar a criação dos executáveis, você poderá configurar uma ação para o Father
executar após a geração dos executáveis.

A opção selecionada é gravada no arquivo do projeto de modo que, da próxima vez em que esta
janela for acionada, a mesma opção será oferecida.

Top Previous Next


Estabelecendo uma ação pós-compilação

Antes de disparar a criação dos executáveis, você poderá configurar uma ação para o Father
executar após a geração dos executáveis.

A opção selecionada é gravada no arquivo do projeto de modo que, da próxima vez em que esta
janela for acionada, a mesma opção será oferecida.

Gerar
Nenhuma ação será executada além da geração dos executáveis, propriamente dita.

~ 197 ~
MANUAL DO FATHER

Gerar e executar
Após gerar cada um dos executáveis marcados, o Father os executará em modo síncrono, ou
seja, ficará esperando o término da execução para reassumir o controle.

Gerar, executar e sair do Father


O Father procederá de maneira semelhante ao descrito no item anterior; porém, finalizando a sua
operação e não mais assumindo o controle.

Gerar e abrir no VB
O Father procederá a geração dos arquivos de resource e outros, exceto o executável da
aplicação. Após a geração é executado a chamada ao Visual Basic abrindo o projeto da aplicação
dentro do mesmo. Este recurso é interessante para identificação de erros e para usuários mais
experientes, que queiram testar a aplicação para identificação de erros, antes da geração em definitiva
do executável.
Caso nas opções anteriores tenha sido mostrada tela de erro ao gerar o executável, esta opção
pode ser interessante para descobrir em que linha está o problema. Após executar a opção de "Gerar e
abrir no VB", já com o VB aberto no projeto em questão, basta utilizar as teclas "Control" + F5 para que
o VB faça uma teste na aplicação, e caso o erro seja na compilação, o titulo do erro é exibido, e o VB
estará com o cursor exatamente na linha onde o erro ocorreu, facilitando assim a correção na maioria
dos casos.

Top Previous Next


Executável da aplicação

O Visual Basic será executado para compilar o projeto, criando um único programa
executável, cujo nome é o mesmo do projeto com a extensão .EXE. Enquanto o Visual Basic
estiver trabalhando, o Father ficará gerenciando se o mesmo já acabou a tarefa, assumindo
novamente o controle quando isto acontecer.

Em casos de solução com mais de um projeto(Multi-Projetos), Cada projeto tem a sua


geração dos fontes de forma independente, ou seja, cada um tem o seu próprio executável,
entretanto, podendo estar interligados ou não.
Top Previous Next
Arquivo resource da aplicação

O utilitário resource compiler do Windows (RC.EXE) será ativado para compilar o arquivo
resource de mesmo nome do projeto e com a extensão .RC gerado pelo Father, gerando um arquivo
com a extensão .RES. Este utilitário é uma aplicação DOS. Por isso, uma janela do DOS poderá
aparecer por alguns instantes, quando este programa for ativado. O Father gerenciará se este
programa conseguiu compilar o arquivo resource.

O Father utiliza um formato proprietário de arquivo resource (.RES) que permite a vinculação de
quaisquer formatos de imagem e sem limite de tamanho. Além disso, o executável tende a diminuir
consideravelmente com o uso do arquivo resource, visto que as imagens não mais estarão vinculadas
diretamente no executável. O arquivo resource deve acompanhar o aplicativo final gerado para que
este possa funcionar.

Se ocorrer duplicação no número de resources gerados, o projetista deverá efetuar a geração


de todos os módulos que foram incluídos no projeto para que os números dos resources sejam
refeitos. Obedecendo à estrutura do arquivo .RC, o projetista poderá alterar seu conteúdo,
implementando novas referências a imagens e strings, utilizando-se das funções LoadGasPicture e
LoadGasString para recuperar essas informações.

Top Previous Next


Arquivo de ajuda on-line

O utilitário compilador de ajuda HTML Help Workshop (HHC.EXE) será ativado para compilar o
arquivo de ajuda on-line. Após a sua execução, o Father verificará se o arquivo de ajuda com o mesmo
nome da aplicação e com a extensão .CHM foi criado.

~ 198 ~
MANUAL DO FATHER

Top Previous Next


Adaptador de arquivos

Este programa (quando utilizado JET) ou script (quando utilizado SQL Server, MySQL, Firebird
ou Oracle) nem sempre estará disponível para ser selecionado e compilado. Sempre que o Father
detectar que ocorreram mudanças na estrutura do banco de dados durante a fase do projeto,
automaticamente será criado um projeto/script do utilitário adaptador de arquivos, disponibilizando a
sua compilação/geração. Se não houver necessidade, o Father não criará este utilitário nem habilitará
a sua compilação/geração.
Para mais detalhes, consulte o tópico Utilitário Adaptador de Arquivos.

Disparando a geração dos Top Previous Next


executáveis

Assim que você clicar sobre o botão , o Father irá executar os programas
compiladores para compilar o que for necessário. O VB para compilar os projetos, o RC.EXE para
compilar o arquivo resource, o HHC.EXE para compilar o arquivo de ajuda on-line. Se a compilação de
algum desses programas falhar, o Father apresentará uma mensagem e não tentará compilar as partes
restantes.
Top Previous Next
Compilação manual

Após o processo de compilação, o Father gera também três pequenos arquivos .BAT no diretório
da aplicação:
Top Previous Next
FAZ_EXE.BAT

Para compilar o executável da aplicação.


Top Previous Next
FAZ_HLP.BAT

Para compilar a ajuda on-line da aplicação.


Top Previous Next
FAZ_RES.BAT

Para compilar o arquivo resource da aplicação. Embora não faça uso de nenhum desses
arquivos, o Father os cria para permitir a você, se desejar ou por algum problema qualquer, compilar
manualmente o que for necessário, apenas executando esses arquivos de lote a partir de uma janela
DOS. Para utilizar qualquer desses arquivos, acione um atalho para o DOS, posicione-se no diretório
onde a aplicação foi gerada e digite o nome do arquivo desejado.

Geração do Instalador e Adaptador do Top Previous Next


Banco
Além de gerar todos os programas fontes da aplicação propriamente dita, o Father gera também
alguns programas auxiliares ou utilitários para complementar a aplicação.
Top Previous Next
Criando o Instalador da Aplicação

Escrever programas de instalação para aplicações em Windows requer um pouco mais do que
conhecimentos normais de programação. É uma tarefa que, embora aparentemente simples, pode se
tornar um pesadelo pela quantidade de informações que envolve. Quem se habilitar a escrever este
tipo de programa terá de lidar com o Registry do Windows (uma espécie de cartório que a Microsoft
criou para nós...), Windows API, estampas de versão dentro de programas, além de uma série de

~ 199 ~
MANUAL DO FATHER

outras informações não muito bem documentadas. Felizmente, o Father possui opção que pode tornar
este trabalho mais intuitivo, no qual, virtualmente, tem-se apenas que seguir algumas intruções.

São dois passos para criar a instalação, um na definição do projeto, e outro na criação da
instalação.

A definição será feita conforme mencionado na definição do projeto: Aba Instalação.

Na tela de geração de fontes, utilize a opção para gerar o programa instalador.

Top Previous Next


Utilitário Adaptador de Arquivos

Sempre que o Father detectar a existência de alterações na estrutura do banco de dados definido
para a aplicação, como por exemplo, a inserção e retirada de tabelas ou campos ou, ainda, alteração
de tamanho de campos, será criado automaticamente um programa utilitário adaptador de arquivos de
nome ADAPTA, totalmente independente, no momento de gerar os programas fontes da aplicação,
possibilitando a você selecionar a sua compilação por intermédio da janela de geração de executáveis.
Em se tratando de base de dados JET, uma vez compilado, o programa executável deste utilitário pode
ser levado, juntamente com o novo arquivo .DEF, para o equipamento do usuário da aplicação,
realizando a adaptação do .MDB existente. A presença do arquivo .DEF se faz necessária, pois nele
está contida a nova estrutura do banco de dados para a qual o arquivo MDB existente será convertido.
De forma análoga ao executável adaptador de arquivos (MDB), quando utilizado o Father Enterprise
com o SQL Server, MySQL, Firebird ou Oracle, é gerado o arquivo-script ADAPTA.SQL, a ser
executado via Query Analyzer ou SQL Plus, ferramentas respectivamente do SQL Server e Oracle,
para que então a adaptação necessária seja efetivada. Para os outros bancos, veja os aplicativos para
este fim com seus respectivos fabricantes. Para assegurar a incorruptibilidade do banco de dados,
recomendamos que se faça o backup do banco de dados antes que o script seja utilizado na adaptação
do referido banco. Em geral, o próprio SGBD oferece utilitário para a execução e restauração de
backup.

Se mais de um arquivo de dados estiver sendo utilizado pela aplicação, você deverá executar
este utilitário para adaptar cada um deles.

Basta informar diretamente no campo ou utilizar o botão com reticências para capturar o nome do
arquivo MDB a adaptar e clicar sobre o botão Ok. Durante o processo de adaptação, quando este
utilitário adaptador encontrar alguma incoerência entre as estruturas antiga e nova, apresentará
diálogos solicitando informações do usuário.

Você poderá ainda adicionar valores pré-fixados no momento da adaptação dos bancos de
dados, bastando para isso preencher o novo campo com o conteúdo desejado, sendo este replicado
para todos os registros da tabela. Após o término da conversão, o adaptador avisa que renomeou o
arquivo antigo para a extensão .ANT (anterior).
Top Previous Next
Controle de estoque

Neste tópico será demonstrada a utilização efetiva do Father na geração de um sistema exemplo
de Controle de Estoque elaborado somente para efeitos didáticos, sendo, no entanto, completamente
funcional. Este tipo de sistema foi escolhido para exemplo devido ao fato de que, pelas suas
características, nos dará a oportunidade de abordar os mais diversos recursos oferecidos pelo Father,
como a definição de validações, lançamentos, processamentos, campos não editáveis, plano de
senhas, etc.
Durante o processo de instalação do Father no equipamento, alguns exemplos são,
opcionalmente, instalados, inclusive o exemplo descrito neste tópico. O acompanhamento passo-a-
passo deste exemplo proporcionará subsídios para uma utilização mais eficiente do Father.
Recomendamos que os profissionais, mesmo com prática de programação, sigam os passos para a
execução desta aplicação, ganhando tempo no aprendizado dos diversos recursos disponíveis.
O primeiro passo para a criação de uma aplicação é a sua concepção: como desejamos que
funcione, o que vai e o que não vai fazer. Existem diversas metodologias para desenvolvimento de
projetos de sistemas e seria impossível, neste manual, discorrer sobre qualquer uma delas, mesmo
porque esse não é nosso objetivo. No entanto, qualquer que seja a metodologia empregada, o Father
será sempre uma ferramenta inestimável para a construção completa da aplicação final, com seus

~ 200 ~
MANUAL DO FATHER

programas fontes, documentação e ajuda on-line.


Vamos entender como o nosso exemplo de Controle de Estoques será estruturado. Nossa
aplicação exemplo manipulará um banco de dados com 9 tabelas. Nas explicações seguintes, a sigla
NF significa Nota Fiscal.

• Fornecedores - Dados dos Fornecedores

• Indexadores - Indexadores financeiros

• Parâmetros - Parâmetros da aplicação

• Notas fiscais - Dados genéricos das NFs

• Itens da NF - Itens digitados das NFs

• Saídas de mercadoria - Saídas de estoque

• Produtos em estoque - Cadastro de produtos

• Movimentação de produtos - Histórico entradas/saídas

• Contas a pagar - Contas a pagar (valores das NFs)

Aspectos do funcionamento da Top Previous Next


aplicação
A entrada de produtos em estoque será efetuada mediante a digitação da NF de fornecedor na
tabela Notas Fiscais. A cada item de produto digitado na tabela de Itens da NF, as quantidades
recebidas serão creditadas no estoque (tabela Produtos em Estoque) e o valor do item será operado
com a quantidade recebida e acumulado no valor total da NF (tabela Notas Fiscais).
Com as operações acima, ilustraremos a criação de processamentos de campos em tabelas
estrangeiras, a partir de digitação de informações em outras tabelas. Após a digitação de uma NF, um
registro de pagamento é criado na tabela de Contas a Pagar, no valor total da NF digitada. Também,
na tabela de Movimentação de produtos, é criado (caso não exista ainda) um registro para cada item
digitado e os seus campos são atualizados com as quantidades recebidas. Durante a digitação em
Saída de mercadorias, os campos desta tabela são também atualizados, de modo que possam
espelhar a quantidade de entradas e saídas de cada item de produto.
Com isto, estaremos conhecendo a definição de lançamentos em tabelas estrangeiras a partir de
digitação de informações em outras tabelas, inclusive com o estabelecimento de condições para que
lançamentos sejam criados (neste caso, sob a condição do registro não existir na tabela).
Top Previous Next
Definição do projeto

Conhecemos alguns aspectos gerais do funcionamento da aplicação exemplo que iremos criar.
Vamos, agora, iniciar a sua criação. Durante este processo, vamos nos ater somente ao aspecto da
criação propriamente dita para que as explicações não se extendam em demasia. Iremos comentar as
ações somente quando for estritamente necessário. É bom lembrar que, enquanto segue estas
instruções, você sempre poderá pressionar a tecla F1 para obter ajuda detalhada para o contexto ou,
ainda, para consultar os diversos tópicos da ajuda on-line do Father.
Acione o Father, aplicando um duplo clique sobre o seu ícone na pasta onde tenha sido instalado.
Ao abrí-lo, será apresentada a tela "Projetos do Father" a partir da qual deve ser selecionada a opção
Novo projeto localizada na aba denominada Novo.
A partir do diálogo padrão do Windows, informe o nome de arquivo C:\ESTOQUE\EST. Clique em
Salvar e em seguida confirme a criação do diretório que, por se tratar de um novo projeto, poderá não
existir em seu computador. Sempre que o Father trabalha com um novo projeto, ele cria um banco de

~ 201 ~
MANUAL DO FATHER

dados com o nome informado e com a extensão .FTR para que sejam armazenadas as definições que
serão digitadas para este novo projeto. Após a sua criação, ele carrega diversas definições default e as
apresenta na árvore ou modelador do projeto. A partir deste ponto, o trabalho de modelagem pode ser
iniciado.

Clique com o botão direito do mouse sobre o primeiro módulo da árvore (SEM NOME DEFINIDO)
e selecione a opção "Define o módulo selecionado". A janela de definição do projeto é apresentada.

~ 202 ~
MANUAL DO FATHER

Top Previous Next


Dados genéricos

Informe os dados necessários, na aba "Dados Genéricos".

Clique sobre o botão para salvar as informações.


Top Previous Next
Estrutura do BD

A seguir, clique na aba intitulada Estrutura. Aqui, vamos definir os aspectos mais importantes da
aplicação: o banco de dados e sua estrutura. Os botões existentes possuem as seguintes funções:

• Gravar as informações digitadas ;

• Cancelar as informações digitadas ;

• Adicionar item na lista, dependendo da que estiver selecionada ;

• Apagar um item da lista, dependendo da que estiver selecionada .

~ 203 ~
MANUAL DO FATHER

Vamos começar definindo um banco de dados de nome ESTOQUE. Em seguida vamos definir a
sua estrutura inserindo primeiramente as tabelas e, em cada uma delas, os campos que a comporão.
Convém observar que, a partir da definição das tabelas, não existe uma regra exata para executarmos
esta tarefa. Por exemplo, podemos adicionar primeiramente todas as tabelas e depois, selecionando
uma a uma, definir os seus campos, índices e integridades. Podemos também, a cada tabela inserida,
definir esses atributos imediatamente. Para facilitar as explicações, neste exemplo, vamos inserir
primeiramente todas as tabelas e depois trabalharemos com os seus atributos.
Top Previous Next
Banco de dados

Para criar um novo banco de dados, siga os passos abaixo:

1. Clique no quadro "Banco/Esquema"

~ 204 ~
MANUAL DO FATHER

2. Clique no botão ;

Informe o nome ESTOQUE no campo destinado ao nome do banco de dados.

A opção Principal deve ser marcada no caso da aplicação manipular mais de um banco de
dados, o que não é o caso do nosso exemplo. O banco de dados marcado como principal será aquele
em que o Father criará as tabelas de apoio ao sistema, que são as tabelas de senhas e a tabela de
controle de sequenciais.

3. Na aba Tipo BD, selecione o tipo de banco Access (Mdb-ADO).

4. Clique no botão para salvar as definições.

~ 205 ~
MANUAL DO FATHER

Top Previous Next


Tabelas

Clique sobre a lista tabelas e sobre o botão de adicionar para inserir as informações constantes
da tabela a seguir:

Observações:

Após a inserção de uma tabela, você deve clicar no botão para gravar as definições de cada
• tabela.

• Utilize o botão para adicionar uma nova tabela;

• O apelido para cada tabela é inserido automaticamente pelo Father.

Título Descrição da tabela


Fornecedores Tabela que contém os dados dos fornecedores de mercadorias controladas pelo
Indexadores Contém os indexadores financeiros utilizados pelo sistema
Notas fiscais Dados da NF de recebimento de mercadorias
Itens da nf Dados de quantidade e preço dos itens recebidos por meio da NF
Contas a pagar Informações de contas a pagar de recebimento de mercadorias
Movimentação de produtos Tabela para armazenar dados de histórico de entrada e saída de mercadorias
Produtos em estoque Cadastro com os dados dos produtos que são manipulados pela aplicação
Saídas de mercadorias Informações das saídas (baixas) de mercadorias do estoque
Parâmetros do sistema (*) Parâmetros utilizados pelo sistema

(*) A tabela Parâmetros do sistema é a única que deverá ser marcada como sendo do tipo
parâmetro. Observe a figura abaixo:

~ 206 ~
MANUAL DO FATHER

Top Previous Next


Campos da tabela

Agora que todas as tabelas estão criadas, selecione cada uma delas e defina
os seus campos. Os quadros a seguir indicam as informações que devem ser
digitadas para os campos de cada tabela. As regras para a entrada dessas
informações são:

1. Selecione a tabela na lista Tabelas;

2. Clique sobre a lista Campos;

~ 207 ~
MANUAL DO FATHER

3. Clique no botão ;

4. Digite as informações dos campos;

5. Clique sobre o botão para salvar as definições.

Observe que, quando um campo já tiver sido definido anteriormente em uma


tabela, basta selecioná-lo na combobox destinada a receber o nome do campo.

A seguir veremos os campos necessários


Top Previous Next
Fornecedores

Selecione a tabela Fornecedores, clique na lista de campos e, depois, no botão . Informe


os campos de Fornecedores. Para o atributo Ajuda, digite a informação que desejar ou aceite o que
o Father ofereceu como default:

Atributo Informe ou selecione


Nome Código do fornecedor
Tipo Numérico
Apelido Codigo_do_fornecedor
Tamanho 4
Máscara 9999
Sequência 1

Atributo informe ou selecione


Nome Nome do fornecedor
Tipo Caractere
Apelido Nome_do_fornecedor
Tamanho 40
Máscara @!

Atributo informe ou selecione


Nome Contato
Tipo Caracter
Apelido Contato

~ 208 ~
MANUAL DO FATHER

Tamanho 30
Máscara @!@A

Atributo informe ou selecione


Nome Telefone do fornecedor
Tipo Fone
Apelido Telefone_do_fornecedor
Tamanho 16
Máscara 999-99-#999-9999

Atributo informe ou selecione


Nome Ramal
Tipo Caracter
Apelido Ramal
Tamanho 3
Máscara @!

Atributo informe ou selecione


Nome Fax
Tipo Fone
Apelido Fax
Tamanho 16
Máscara 999-99-#999-9999

Observe na figura abaixo todos os campos da tabela Fornecedores:

Top Previous Next


Indexadores

Selecione a tabela Indexadores, clique na lista de campos e, depois, no

botão . Informe os campos da tabela Indexadores.

Atributo informe ou selecione


Nome Data
Tipo Data
Apelido Data
Máscara 99/99/9999

Atributo informe ou selecione


Nome Valor

~ 209 ~
MANUAL DO FATHER

Tipo Numérico
Apelido Valor
Tamanho 12
Decimais 2
Máscara 999.999.999,99

Top Previous Next


Parâmetros do sistema

Selecione a tabela Parâmetros, clique na lista de campos e, depois, no botão de


adicionar. Informe os campos da tabela "Parâmetros do sistema".

Atributo informe ou selecione


Nome Nome da moeda
Tipo Caractere
Apelido Nome_da_moeda
Tamanho 10
Máscara @!@A

Atributo informe ou selecione


Nome Sigla da moeda
Tipo Caractere
Apelido Sigla_da_moeda
Tamanho 3
Máscara @!

Top Previous Next


Produtos em estoque

Selecione a tabela Produtos em estoque, clique na lista de campos e, depois, no botão de


adicionar. Informe os campos da tabela "Produtos em estoque", que conterá os dados cadastrais dos
produtos, com quantidades, preços, etc.

Atributo informe ou selecione


Nome Código
Tipo Numérico
Apelido Codigo
Tamanho 3
Máscara 999
Sequência 1

Atributo informe ou selecione


Nome Descrição do produto
Tipo Caractere
Apelido Descricao_do_produto
Tamanho 30
Máscara @!

Atributo informe ou selecione


Nome Unidade
Tipo Lista interna
Lista Un|Cx|Lt|Mt
Apelido Unidade

Observe que o campo acima é de um tipo especial, onde as opções digitadas em Lista,
separadas pelo caractere "|", poderão ser selecionadas pelo usuário final, por meio de um objeto
denominado combobox, que é uma lista que aparece sempre fechada e que pode ser aberta para
seleção.

~ 210 ~
MANUAL DO FATHER

Atributo informe ou selecione


Nome Referência técnica
Tipo Memo
Apelido Referencia_tecnica

Este campo é do tipo texto, apresentado para digitação em uma área com múltiplas linhas
(textbox multiline).

Atributo informe ou selecione


Nome Quantidade em estoque
Tipo Numérico
Apelido Quantidade_em_estoque
Tamanho 6
Máscara 999.999

O campo acima receberá processamentos com as quantidades digitadas na NF e nas


movimentações de saída, sendo, por isso, definido mais adiante como "Não editável", ou seja, o
usuário nunca digitará informações neste campo. Campos não editáveis são definidos normalmente,
como qualquer outro tipo de campo, sendo que, quando o inserirmos na tela, designaremos a
propriedade Editável para o valor Não, como veremos mais adiante.

Atributo informe ou selecione


Nome Quantidade mínima
Tipo Rotativo
Apelido Quantidade_minima

O campo acima também é de um tipo especial. Um campo do tipo rotativo é sempre um valor
do tipo inteiro e, na tela, aparece com dois objetos associados: uma caixa de texto para digitação e
uma barra de rolagem, onde o usuário pode clicar para incrementar ou decrementar o valor numérico
existente no campo. Este campo do nosso exemplo conterá a quantidade mínima em estoque a ser
considerada para efetuar pedidos ao fornecedor.

Atributo informe ou selecione


Nome Preço de custo
Tipo Numérico
Apelido Preco_de_custo
Tamanho 12
Decimais 2
Máscara 999.999.999,99

Atributo informe ou selecione


Nome Preço indexado
Tipo Numérico
Apelido Preco_indexado
Tamanho 10
Decimais 2
Máscara 9.999.999,99

Atributo informe ou selecione


Nome Lucro bruto
Tipo Numérico
Apelido Lucro_bruto
Tamanho 6
Decimais 2
Máscara 999,99

Atributo informe ou selecione


Nome Perecível
Tipo Lógico
Apelido Perecivel

~ 211 ~
MANUAL DO FATHER

O campo acima também é de um tipo especial. Será apresentado em uma check box, na qual o
usuário marcará ou desmarcará a opção.

Atributo Informe ou selecione


Nome Localização do produto
Tipo Optativo
Lista Loja|Depósito|Fornecedor
Apelido Localizacao_do_produto

O campo acima também tem tipo especial, cujas informações inseridas em Lista, separadas
pelo caractere "|", aparecerão dentro de objetos tipo botões de rádio, circunscritas dentro de uma
moldura (frame) com o título do campo.

Atributo Informe ou selecione


Nome Foto do produto
Tipo Multimídia
Apelido Foto_do_produto

Campos do tipo multimídia, como o definido acima, aparecem com dois objetos associados
quando inseridos na tela: um para apresentar a multimídia e outro (botão) para permitir a carga da
multimídia. Neste nosso exemplo, inserimos este tipo de campo para exibir a figura do produto em
estoque.

Atributo Informe ou selecione


Nome Data última atualização
Tipo Data
Apelido Data_ultima_atualizacao
Máscara 99/99/9999

O campo acima receberá um processamento com a última data em que foi atualizado (entradas
e saídas) e será, por isso, definido como "Não editável", a exemplo do campo "Quantidade em
estoque" já definido nesta tabela. Lembre-se sempre que campos não editáveis são definidos
normalmente, como qualquer outro tipo de campo, sendo que, quando o inserirmos na tela,
designaremos a propriedade Editável para o valor Não, como veremos mais adiante.

Top Previous Next


Contas a pagar

Selecione a tabela Contas a pagar, clique na lista de campos e, depois, no botão de adicionar.
Informe os campos da tabela "Contas a pagar". Esta tabela receberá lançamentos de contas a
pagar, que, neste exemplo, serão representadas pelos valores totais dos itens digitados da NF.

Atributo informe ou selecione


Nome Número do lançamento
Tipo Numérico
Apelido Numero_da_lancamento
Tamanho 6
Máscara 999.999
Sequência 1

O primeiro campo desta tabela tem duas particularidades:


a primeira delas é que vamos definir este campo para ser incrementado automaticamente
• de 1 em 1. Por isso, definimos o valor 1 para Sequência;

a segunda é que este campo será definido como "Não editável", conforme já vimos em dois
• campos da tabela "Produtos em estoque", para que o usuário não tenha acesso.

Atributo informe ou selecione


Nome Número da nf

~ 212 ~
MANUAL DO FATHER

Tipo Numérico
Apelido Numero_da_nf
Tamanho 3
Máscara 999

Atributo Informe ou selecione


Nome Data
Tipo Data
Apelido Data
Máscara 99/99/9999

Atributo Informe ou selecione


Nome Valor
Tipo Numérico
Apelido Valor
Tamanho 12
Decimais 2
Máscara 999.999.999,99

Top Previous Next


Notas fiscais
Selecione a tabela "Notas Fiscais", clique na lista de campos e, depois, no botão de adicionar.
Informe os campos da tabela "Notas Fiscais". Esta tabela conterá os dados gerais das NF de
fornecedores para a entrada de mercadorias em estoque. Neste sistema, estará fazendo um
relacionamento 1-N (pai-filho) com a tabela que iremos definir daqui a pouco: "Itens da NF". As
tabelas são definidas normalmente, e o relacionamento é designado em uma etapa mais adiante.

Atributo Informe ou selecione


Nome Número da NF
Tipo Numérico
Apelido Numero_da_nf
Tamanho 3
Máscara 999

Atributo Informe ou selecione


Nome Data
Tipo Data
Apelido Data
Máscara 99/99/9999

Vamos abrir um parênteses para efetuarmos alguns comentários sobre este campo, o que se
aplica também a outros campos existentes nas diversas tabelas desta aplicação (Código do
fornecedor, Número da NF, etc). Observe que este campo existe em cinco tabelas:
• Indexadores

• Contas a pagar

• Notas Fiscais

• Movimentação de produtos, a ser definida mais adiante

• Saídas de mercadorias, também a ser definida

Na verdade eles têm correspondências diretas, pois as datas que nelas existem, na digitação
da "Nota Fiscal" e das "Saídas de mercadorias", são verificadas na tabela de Indexadores e, no
término da digitação da NF, esta data será inserida nas tabelas de "Contas a pagar" e
"Movimentação de produtos". Por esta razão, estes campos são tratados no dicionário de dados
do Father como sendo o mesmo campo, ou seja, se você alterar qualquer um de seus atributos,

~ 213 ~
MANUAL DO FATHER

como, por exemplo, o seu nome, o Father irá também alterá-lo, automaticamente nas demais tabelas
já definidas na aplicação, tanto na estrutura da tabela quanto em validações e rotinas escritas
manualmente; enfim, em qualquer ponto da definição onde apareça.

Atributo informe ou selecione


Nome Código do fornecedor
Tipo Numérico
Apelido Codigo_do_fornecedor
Tamanho 4
Máscara 9999

O campo acima definido também tem uma particularidade interessante. Trata-se de um campo
de "característica" Lista Externa, isto é, no momento da digitação desta informação pelo usuário,
uma lista com os nomes dos fornecedores estará disponível para seleção. Entretanto, apenas o
"Código do fornecedor" será gravado nesta tabela.
Você deve ter notado que o campo de "característica" Lista Externa, que mencionamos acima,
não aparece na lista de tipos de campos para ser selecionado, como aparece, por exemplo, a Lista
Interna. Acontece que um campo com esta característica pode ser de qualquer tipo, como, por
exemplo, numérico, data, caractere, etc., razão pela qual não aparece naquela lista e deve ser
definido de maneira diferente, quando da formatação da tela para esta tabela.

Atributo informe ou selecione


Nome Valor
Tipo Numérico
Apelido Valor
Tamanho 12
Decimais 2
Máscara 999.999.999,99

Este campo será destinado a sofrer um processamento a cada registro digitado na entrada de
produtos, com uma fórmula que acumule o valor total da NF. Será também definido como "Não
editável", quando o inserirmos na tela.
Top Previous Next
Itens da NF
Selecione a tabela "Itens da nf", clique na lista de campos e, depois, no botão de adicionar.
Informe os campos da tabela "Itens da NF". Esta tabela estará relacionada com a tabela "Notas
Fiscais", numa relação (filho-pai ou N-1), a ser estabelecida mais adiante.

Atributo Informe ou selecione


Nome Número da NF
Tipo Numérico
Apelido Numero_da_nf
Tamanho 3
Máscara 999

Este campo está sendo definido nesta tabela porque pretendemos criar um relacionamento N-1
com a tabela de "Notas Fiscais" definida anteriormente. Por isso, este campo é o mesmo que existe
naquela tabela e, no momento apropriado, utilizaremos este campo para unir essas duas tabelas.

O campo Código, que iremos definir a seguir, é o código do produto, ou seja, o mesmo
existente na tabela "Produtos em estoque".

Atributo Informe ou selecione


Nome Código
Tipo Numérico
Apelido Codigo
Tamanho 3
Máscara 999

Atributo Informe ou selecione


Nome Quantidade entrada

~ 214 ~
MANUAL DO FATHER

Tipo Numérico
Apelido Quantidade_entrada
Tamanho 4
Máscara 9.999

Atributo Informe ou selecione


Nome Valor
Tipo Numérico
Apelido Valor
Tamanho 12
Decimais 2
Máscara 999.999.999,99

Mais tarde, durante a definição dos processamentos, utilizaremos estes dois últimos campos
em operações para apurar o valor total da NF que atualizará as tabelas "Notas Fiscais" e "Contas a
pagar".
Top Previous Next
Movimentação de produtos

Selecione a tabela "Movimentação de produtos", clique na lista de campos e, depois, no botão


de adicionar. Informe os campos da tabela "Movimentação de produtos". No nosso exemplo, esta
tabela receberá lançamentos de entradas e saídas de produtos, mantendo um histórico de entradas
e saídas no período por produto.

Atributo Informe ou selecione


Nome Código
Tipo Numérico
Apelido Codigo
Tamanho 3
Máscara 999

Atributo Informe ou selecione


Nome Data
Tipo Data
Apelido Data
Máscara 99/99/9999

Atributo Informe ou selecione


Nome Entradas
Tipo Numérico
Apelido Entradas
Tamanho 6
Máscara 999.999

Atributo Informe ou selecione


Nome Saídas
Tipo Numérico
Apelido Saidas
Tamanho 6
Máscara 999.999

Top Previous Next


Saídas de mercadorias

Finalmente, selecione a tabela "Saídas de mercadorias", clique na lista de campos e, depois,


no botão de adicionar. Informe os campos da tabela "Saídas de mercadorias". Esta tabela será
utilizada para a digitação de requisições de mercadorias do estoque, efetuando o processamento
das baixas de estoque.

~ 215 ~
MANUAL DO FATHER

Atributo Informe ou selecione


Nome Código
Tipo Numérico
Apelido Codigo
Tamanho 3
Máscara 999

Atributo Informe ou selecione


Nome Data
Tipo Data
Apelido Data
Máscara 99/99/9999

Atributo Informe ou selecione


Nome Quantidade de saída
Tipo Numérico
Apelido Quantidade_de_saida
Tamanho 4
Máscara 9.999

Atributo Informe ou selecione


Nome Valor
Tipo Numérico
Apelido Valor
Tamanho 12
Decimais 2
Máscara 999.999.999,99

Até este ponto, já efetuamos as definições das tabelas e seus campos. Vamos, agora, definir
os índices e integridades entre as tabelas.
Top Previous Next
Índices das tabelas
Primeiramente vamos definir os índices. As regras de criação de índices são semelhantes às
utilizadas para os campos, ou seja:

• Selecione uma tabela na lista Tabelas;

• Clique na lista Índices;

• Clique no botão ;

• Digite as informações;

• Clique em .

Não existe a obrigatoriedade da criação de índices. Em alguns casos, eles são criados para
garantir a integridade e relacionamento entre tabelas ou, ainda, para proporcionar uma ordem de
navegação dentro da tabela correspondente, bem como pesquisas rápidas aos seus registros. No
entanto, o usuário da aplicação final gerada poderá estabelecer seu próprio critério de ordenação de
registros, independente dos índices criados por você. Existe, ainda, o caso especial da tabela do tipo
parâmetro, que não pode conter índice definido, uma vez que tabelas desse tipo contém somente
um registro.

~ 216 ~
MANUAL DO FATHER

Top Previous Next


Contas a pagar

Para esta primeira tabela, definiremos dois índices, cada um deles com um campo:

Título Tipo Campos


Lançamento Primário Único Número do lançamento
Tipo Único Número da NF

Índice: Lançamento

Índice: Tipo

Top Previous Next


Fornecedores

Definiremos também dois índices:

Título Tipo Campos


Código do fornecedor Primário Único Código do fornecedor
Nome decrescente Decresc Nome do fornecedor

A informação Decrescente deve ser marcada para cada campo selecionado para compor o
índice e antes de selecioná-lo. Esta marcação tem utilidade somente neste momento, não sendo
atualizada durante a visualização deste índice. Observe o sinal de menos (-) que é inserido à frente
do nome do campo que tenha a informação Decrescente na expressão do índice.

~ 217 ~
MANUAL DO FATHER

Índice: Código do fornecedor

Índice: Decrescente

Top Previous Next


Indexadores

Para indexadores, basta um índice simples por meio do campo Data:

Título Tipo Campos


Data Primário Único Data

Índice: Data

~ 218 ~
MANUAL DO FATHER

Top Previous Next


itens da NF

Para esta tabela, definiremos um só índice, sendo ele composto de dois campos:

Título Tipo Campos

Número da nf
Nf e produto Primário Único
Código

Índice: Itens da NF

Top Previous Next


Movimentação de produtos

Para esta tabela, definiremos um índice composto pelos campos Código do Produto e Data:

Título Tipo Campos


Código
Código e data Primário Único
Data

Índice: Código e data

~ 219 ~
MANUAL DO FATHER

Top Previous Next


Notas fiscais

A tabela Notas Fiscais conterá apenas um índice simples pelo campo "Número da NF":

Título Tipo Campos


Número da NF Primário Único Número da nf

Top Previous Next


Parâmetros do sistema

Para esta tabela não podemos definir índices. Para tabelas do tipo parâmetro não podem ser
definidos índices, pois tabelas desse tipo contém um só registro. Este registro é criado quando da
criação do próprio banco de dados e, posteriormente, o usuário só terá permissão para modificar este
registro e nunca incluir nesta tabela.
Top Previous Next
Produtos em estoque

Aqui, definiremos dois índices para permitir ao usuário navegar no cadastro de produtos em
função da ordem do "Código do produto" e da "Descrição do produto":

Título Tipo Campos


Código Primário Único Código
Descrição Descrição do
produto

Índice: Código

Índice: Descrição

~ 220 ~
MANUAL DO FATHER

Top Previous Next


Saídas de mercadorias

Nesta tabela, vamos observar algo diferente. Primeiramente, iremos definir para esta tabela um
índice composto de dois campos:

Título Tipo Campos


Código
Código e data de saída
Data

Como poderemos ter registros com um mesmo código de produto em uma mesma data (saídas
das mercadorias), este índice não pode ter atributos Primário ou Único. Isto acarretará o seguinte
comportamento na aplicação final, com referência a esta tabela: a operação de filtragem de registros
ficará desabilitada, não sendo possível o usuário selecioná-la. Isto acontece devido ao fato de que,
para a apresentação de um conjunto de registros referente a um critério de filtragem, é criado um
objeto (dynaset) que não trabalha diretamente com a tabela e, sim, com uma cópia de um subconjunto
de seus registros.
Sem um índice primário ou único nesta tabela, não há meios de, num tempo aceitável, vincular
um determinado registro do filtro com o registro daquela tabela.
Para solucionar este problema, faremos o seguinte:
Criaremos um campo invisível e sequencial nesta tabela;
Criaremos um outro índice para esta tabela, com atributo Único , em função deste novo campo.
Sendo assim, clique sobre a lista de campos e adicione o campo abaixo:

Atributo Informe ou selecione


Nome Controle de filtro
Tipo Numérico
Apelido Controle_de_filtro
Tamanho 4
Máscara 9999
Sequência 1
Invisível (marcar opção de invisibilidade)

~ 221 ~
MANUAL DO FATHER

Observe como deverá ficar:

Pronto! Agora, podemos criar um índice em função deste campo. Clique sobre índices e adicione:

Título Tipo Campos


Controle filtro Único Controle de filtro

No entanto, outro método para filtrar informações em consultas ou janelas de dados (visualizadas
na forma de grid) poderá ser utilizado. Esse método, denominado de filtragem dinâmica, poderá ser
acionado com o simples preenchimento do campo localizado sobre as colunas do grid.
Podemos, finalmente, criar as integridades de relacionamentos da aplicação.

As integridades

As integridades de relacionamentos podem ser criadas para assegurar o funcionamento correto


da aplicação. Esses relacionamentos podem ser 1-1 (referencial) e 1-N (pai e filho), conforme veremos
a seguir. As regras de criação das integridades são as seguintes:

1. Selecione uma tabela na lista Tabelas;

2. Clique na lista Integridades;

3. Clique em ;

4. Informe os dados necessários;

5. Clique em .
Top Previous Next
Notas Fiscais

Selecione esta tabela e clique na lista Integridades. Vamos criar duas integridades referenciais,
respectivamente, com Indexadores e Fornecedores, de modo que um registro de qualquer uma dessas
tabelas não possa ser apagado se estiver sendo referenciado por uma NF.

Tabela e campo
Título Tipo Campo da tabela base
estrangeiro
Indexadores 1-1 Indexadores/Data Data

Não se esqueça de, neste ponto, clicar sobre o botão de concatenação para que o campo
selecionado seja assumido como campo de união entre as tabelas.

~ 222 ~
MANUAL DO FATHER

Tabela e campo
Título Tipo Campo da tabela base
estrangeiro
Fornecedores/
Fornecedores 1-1 Código do fornecedor
Código do fornecedor

~ 223 ~
MANUAL DO FATHER

Agora, vamos criar uma outra integridade 1-N (pai-filho) com "Itens da NF". Neste tipo de
relacionamento, quando uma NF é excluída, todos os seus itens são excluídos automaticamente.

Tabela e campo
Título Tipo Campo da tabela base
estrangeiro
Itens da nf/
Itens 1-N Número da NF
Número da NF

~ 224 ~
MANUAL DO FATHER

Top Previous Next


Itens da NF

Selecione esta tabela, clique na lista Integridades e vamos adicionar uma integridade para
impedir o apagamento de registros dentro da tabela de "Produtos em Estoque" que estejam sendo
referenciados na tabela "Itens da nf".

Título Tipo Tabela e campo estrangeiro Campo da tabela base


Produtos 1-1 Produtos em estoque/ Código Código

~ 225 ~
MANUAL DO FATHER

Top Previous Next


Produtos em estoque

Selecione esta tabela, clique na lista Integridades e vamos adicionar uma integridade que
forçará o apagamento automático dos registros de "Movimentação de produtos" referentes a um
produto que tenha sido apagado do cadastro.

Campo da tabela
Título Tipo Tabela e campo estrangeiro
base
Movimentação de produtos/
Movimentação 1-N Código
Código

Top Previous Next


Saídas de mercadorias

Finalmente, selecione esta tabela, clique na lista Integridades e sobre o botão de adicionar para
criar mais uma integridade. Esta impedirá que um registro da tabela "Produtos em estoque" seja
apagado se existir um registro de saída para o mesmo.

Título Tipo Tabela e campo estrangeiro Campo da tabela base


Produtos em estoque/
Produtos 1-1 Código
Código
Após a entrada das informações da estrutura do banco de dados da nossa aplicação, podemos,
ainda, definir outros aspectos, dos quais, para este exemplo, vamos apenas criar a tela de
apresentação.

~ 226 ~
MANUAL DO FATHER

Top Previous Next


Tela inicial

Para definir a página inicial, clique com o botão direito sobre o nome do Projeto e selecione
"Define o módulo selecionado".

Em seguida, clique na aba intitulada "Tela inicial" para criar uma tela de apresentação para esta
nossa aplicação exemplo. Você poderá clicar no botão de adicionar imagem e selecionar um arquivo
qualquer de extensão .BMP ou .ICO por meio de um diálogo padrão do Windows.

~ 227 ~
MANUAL DO FATHER

Top Previous Next


Inserindo janelas de dados

Agora, cada uma das tabelas que foram definidas na estrutura do banco de dados precisa ser
inserida na árvore do projeto para que sejam definidos mais alguns aspectos, como, por exemplo,
validação de campos, telas para entrada de dados, etc. Para facilitar estas explicações, vamos inserí-
las, uma a uma, nas posições corretas e, depois, selecionaremos cada uma delas para entrarmos com
as definições pertinentes. Vamos clicar, agora, sobre o pequeno quadrado com o sinal de menos (-) à
esquerda dos nomes dos módulos Arquivo, Editar e Exibir. Isto fará com que esses módulos ocultem
os seus subordinados, facilitando as explicações seguintes.
Para inserir módulos na árvore do projeto, devemos primeiro selecionar o módulo de nível maior,
sob o qual inseriremos o novo módulo.
Primeiramente, vamos agrupar as tabelas Fornecedores e Indexadores abaixo de um menu, que
intitularemos Tabelas. Proceda conforme se segue:

1. Selecione o título do projeto - primeiro módulo da árvore;

2. Clique no botão e selecione o tipo Menu;

Em seguida, defina a posição do novo módulo:

~ 228 ~
MANUAL DO FATHER

Esta janela tem por finalidade definir a posição de inserção do novo módulo. Ela exibe só os
módulos que ficarão no mesmo nível do módulo inserido, permitindo a seleção do módulo após o qual
o novo módulo ficará. Efetue um clique duplo sobre Exibir. Observe que um módulo do tipo menu,
intitulado Menu foi inserido logo abaixo da opção Exibir.

Agora, selecione e clique sobre Menu e altere o seu nome para &Tabelas, na janela que aparece.

~ 229 ~
MANUAL DO FATHER

Observe que o caractere "&" é utilizado para indicar que a letra que o segue imediatamente será
utilizada como atalho (hot key) para a opção, aparecendo sublinhada no menu da aplicação final, pois a
estrutura que aparece na árvore do projeto espelha exatamente a estrutura de menus da aplicação
final.
Repita os passos a seguir, por duas vezes, observando que, na primeira vez, o passo 3 não será
necessário, bastando apenas confirmar a inclusão do novo módulo:

1. Selecione este novo módulo Tabelas;


2. Insira um módulo do tipo "Janela de dados" da maneira descrita anteriormente;
3. Dê duplo clique em Tabelas. Com isto, inserimos duas janelas de dados sob o menu Tabelas.

Até aqui, você deve ter observado que os módulos que acabamos de inserir aparecem em uma
cor diferente (normalmente a vermelha), dependendo do que estiver configurado no Father. Para
facilitar a visualização do andamento do trabalho no projeto, existe uma configuração de fontes de
letras para módulos ainda não definidos e para módulos já definidos. Vamos, agora, alterar os nomes
dessas janelas de dados. Selecione e clique sobre cada uma delas, alterando seus nomes para
&Fornecedores e &Indexadores, respectivamente.
A seguir, vamos inserir outro módulo do tipo menu para agrupar algumas tabelas que
chamaremos Movimentação. Procedendo da mesma forma explicada acima, vamos seguir os
seguintes passos:

1. Selecione o título do projeto - o primeiro módulo da árvore;


2. Insira uma opção de menu logo após o módulo Exibir;
3. Altere o seu nome para &Movimentação.
4. Agora, sempre selecionando Movimentação antes de cada inserção, insira três janelas de
dados e altere seus nomes para &Entrada de produtos, &Saída de mercadorias, e &Movimentação de
produtos, respectivamente.

Vamos, agora, inserir um módulo especial. Já vimos que os dados de "Notas Fiscais" têm um
relacionamento 1-N com seus itens. Quando o nosso usuário acabar de digitar os dados genéricos de
uma NF, gostaríamos que passasse automaticamente a digitar os dados de seus "N" itens. Para que
isto aconteça, temos de inserir na árvore do projeto, os itens da NF imediatamente abaixo da janela de
digitação dos dados da NF ("Entrada de produtos") de modo subordinado. Para isto, basta efetuar o
que segue:
1. Selecione o módulo "Entrada de produtos" e clique sobre o botão de definições para
estabelecermos a tabela básica desse módulo; selecione a tabela "Notas fiscais" na lista denominada
"Tabela básica";
2. Clique no módulo "Entrada de Produtos" para selecioná-lo;
3. Volte à arvore do projeto e insira, abaixo do módulo "Entrada de Produtos", um módulo do tipo
"Tabela em grid";
4. Altere o seu nome para "Itens da NF".
Nesta última inserção, você deve ter observado que, ao clicar sobre o botão de inserção, só duas
opções de tipo de módulo foram oferecidas. É que, abaixo de uma janela de dados, somente uma outra
janela de dados ou uma tabela em grid pode ser inserida, efetuando um relacionamento 1-N.
Precisamos, ainda, inserir mais três janelas de dados para que, depois, possamos defini-las uma
a uma:
1. Selecione o título do projeto e insira uma janela de dados logo após o módulo Movimentação,
alterando o seu nome para &Produtos;
Novamente, selecione o título do projeto e insira outra janela de dados logo após Tabelas,
denominando-a &Financeiro; agora, selecione o menu Arquivo e insira outra janela de dados, logo após
Arquivo, denominando-a &Parâmetros. Pronto! Todas as tabelas que criamos na estrutura do banco de
dados já têm o seu lugar correspondente na árvore do projeto, inclusive com os nomes que deverão
ser utilizados para o seu acionamento, durante a operação da aplicação final. Conforme já explicado,
feche (encolha) novamente o tronco Arquivo na árvore do projeto. Mais tarde, voltaremos a trabalhar
com este módulo.

Podemos, agora, entrar na parte de definição de cada uma das janelas de dados que inserimos
na árvore.

~ 230 ~
MANUAL DO FATHER

Top Previous Next


Definindo janelas de dados

Utilizando a opção ilustrada na figura abaixo, vamos definir os módulos de janelas de dados do
projeto.

Top Previous Next


Fornecedores

Selecione Fornecedores na árvore do projeto e, em seguida, clique sobre o botão de definição,


situado na barra de ferramentas:

Um clique com o botão direito do mouse sobre a opção Fornecedores e a seleção da opção
"Define o módulo selecionado" produzirá também o mesmo efeito.
Na primeira aba desta interface, selecione na lista "Tabela Básica", a tabela Fornecedores e
digite as informações necessárias. Observe a figura abaixo:

Os dados da identificação do form não precisam ser informados, pois são inseridos

~ 231 ~
MANUAL DO FATHER

automaticamente pelo Father.


O campo "Título no menu" permite a alteração do nome da opção de menu, que aparece na
árvore do projeto.

A informação Identificação será utilizada para criar o arquivo .FRM que armazena a interface
para esta janela;

A informação que aparece em "Título da janela" será utilizada como título do formulário (form)
correspondente a esta janela;

Clique sobre o botão para salvar estas informações.

Acabamos de informar os dados genéricos desta janela de dados. Agora, vamos definir a tela de
digitação e alteração dos registros da tabela Fornecedores, bem como os atributos dos campos que
serão digitados pelo usuário. A formatação de telas é efetuada ativando-se o Editor de Telas do
Father. Selecione o módulo Fornecedores e clique sobre o botão que aparece a seguir, situado na
barra de ferramentas do Father:

A janela de Ferramentas da tela deverá também aparecer. Caso não esteja presente, pressione a
tecla F4.
Além das ferramentas, uma outra janela vazia é também apresentada para que nela seja
projetada a tela de digitação dos registros.

~ 232 ~
MANUAL DO FATHER

Vamos iniciar a inserção dos campos na janela de digitação:


Abra a lista Campos, situada na janela de ferramentas de tela, e clique sobre o primeiro campo:
"Código do fornecedor";

Observe que dois objetos foram inseridos na tela, no canto superior esquerdo, ambos
selecionados (seleções múltiplas são efetuadas utilizando-se a tecla CTRL e um clique sobre o objeto
desejado). O objeto label contém o título do campo e o objeto TextBox será destinado à entrada de
informações para este campo. Selecione os controles e arraste para uma posição adequada.

Repita esses passos para todos os campos da tabela, selecionando cada um deles e
posicionando-os, de modo que, ao terminar o último campo, você obtenha uma tela semelhante à que
aparece na figura abaixo.

~ 233 ~
MANUAL DO FATHER

Agora, podemos definir alguns atributos para os campos inseridos na tela, como validações, pré-
validações, valores iniciais, etc.
Selecione o campo "Código do Fornecedor". Observe que a lista de propriedades da janela de
ferramentas de tela se alterou, espelhando as propriedades que podem ser designadas para este
objeto.
Vamos estabelecer uma expressão de validação para este campo, de modo que o usuário não
possa deixar este campo vazio ao digitar os dados. Procure na janela de propriedades a categoria
Atributos e clique sobre a propriedade Validação. Poderíamos digitar diretamente uma expressão
para efetuar a validação do campo. No entanto, vamos utilizar a interface do Father para montar esta
expressão. Por default, o Father já inseriu uma expressão de validação. Por isso, limpe a expressão
desse campo e clique sobre o botão extensor (com reticências), à direita do atributo Validação, e a tela
da figura abaixo será apresentada.

Para montar a nossa expressão de validação, faça o seguinte:


1. Selecione a a opção Vazio;
2. Clique sobre a opção "Negar condição";

3. Clique sobre o botão de concatenação :

Observe que a nossa expressão de validação já foi montada, aparecendo no espaço presente na
base da tela.

~ 234 ~
MANUAL DO FATHER

Agora, para aceitar, clique sobre o botão .


A expressão de validação é automaticamente transferida para a propriedade Validação. A seguir,
clique sobre a propriedade Mensagem Validação e digite a seguinte informação: CÓDIGO DO
FORNECEDOR não pode ser vazio. Esta mensagem será apresentada ao usuário quando a expressão
de validação falhar.
Limpe as validações dos campos Ramal e FAX que o Father inseriu automaticamente. Isto
permitirá ao usuário deixar esses campos em branco.
Para informar ao Father que já definimos Fornecedores, clique sobre o referido módulo na árvore
do projeto. Isto força a gravação da tela. Agora, clique com o botão direito do mouse no mesmo módulo
e selecione a opção "Define o módulo selecionado" para abrir o form de definição do módulo. Na aba
Geral, marque a opção "Módulo pronto" e acione o botão Grava.
Top Previous Next
Indexadores

Clique com o botão direito no item Indexadores, na árvore do projeto, selecione a opção "Define
o módulo selecionado" e informe o que aparece na tela da Figura abaixo.

Vamos elaborar a tela de digitação para os indexadores. Desta vez, vamos deixar que o Father a
crie para nós, automaticamente:
• Execute o Editor de Telas do Father, conforme explicado no item anterior;

• Clique com o botão direito do mouse sobre o botão de criação de tela ;

Altere os parâmetros "Margem esq" e "Margem topo" para o valor 250, clicando sobre o botão OK
• em seguida;

~ 235 ~
MANUAL DO FATHER

• Agora, clique sobre o botão de criação de tela padrão exibido ainda há pouco.

• A tela da Figura abaixo deverá ter sido criada pelo Father.

Após terminar as definições deste módulo, vamos acessar a aba Geral da definição da janela e
marcar a opção "Módulo pronto", gravando as informações.
Top Previous Next
Produtos

Vamos definir, agora, a janela de "Produtos em Estoque". As definições das janelas de dados
são semelhantes em muitos aspectos; porém, algumas necessitam maiores definições, razão pela qual
estamos começando pelas mais simples e nos direcionando, em seguida, às que apresentam um grau
maior de dificuldade. Clique com o botão direito sobre o item Produtos na árvore do projeto, selecione a
opção "Define o módulo selecionado" e informe os dados da aba Geral, conforme aparece na Figura
abaixo:

~ 236 ~
MANUAL DO FATHER

Clique na aba Processos para que a tela da Figura abaixo seja apresentada:

Agora, temos algo diferente. Como já vimos na definição da estrutura do banco de dados, há
nesta tabela básica, alguns campos que iremos definir como não editáveis. Esses campos não serão
digitados pelo usuário, sendo atualizados por meio de processamentos. Vamos definir, agora, um
desses processos. O campo "Data última atualização" vai ser atualizado com a data do sistema (hoje)
sempre que acontecer uma modificação no cadastro do produto. Portanto, vamos definir este
processamento para que, quando o usuário cadastrar um produto pela primeira vez, este campo seja
atualizado automaticamente (processamento na própria tabela).
Posteriormente, a partir de entradas e saídas de produtos que modificam esta tabela, definiremos
processos idênticos para alterar esta data.
Para criar este processamento, proceda conforme os passos abaixo:

1. Clique sobre o botão ;

2. Digite o título do processo: "Atualiza data";

3. Selecione a tabela alvo: "Produtos em estoque";


4. Selecione o campo alvo: "Data última atualização";
5. Digite no campo fórmula direta: Date;

~ 237 ~
MANUAL DO FATHER

6. Clique sobre o botão Grava para salvar as informações.

Podemos, agora, formatar a tela de digitação de dados para esta tabela, onde também veremos
algumas novidades. Clique no botão que já conhecemos para acionar o Editor de Telas do Father.

Para formatar a tela, utilize a experiência que adquiriu na formatação das telas anteriores, além
das seguintes dicas:
Os objetos painel, frame e tab podem ser utilizados como recipientes para agrupar outros
controles. Por isso, são denominados containers. Observe, por exemplo, o frame Quantidade: para
criar este grupo, você deverá tomar os cuidados a seguir.

• Coloque o container na tela, neste caso, um frame, e selecione-o;

• Clique, na janela ferramentas de tela, sobre o campo ou objeto que deseja disponibilizar.

Neste caso, selecione o campo "Quantidade em estoque" na lista. Observe que o campo inserido
fica restrito ao seu container, dentro do qual pode ser alinhado e posicionado;
• Repita os passos acima para o campo "Quantidade mínima".

• Designe a propriedade Título do container para Quantidade.

Esses campos, em relação à tela, são movimentados sempre por meio de seu container, o qual
você pode selecionar e arrastar para onde desejar.

~ 238 ~
MANUAL DO FATHER

Você deve ter observado, ao formatar esta tela, que os objetos associados aos campos variam
segundo o seus tipos.
O campo Localização, por exemplo, é um campo do tipo optativo, no qual é disponibilizado um
frame (container) e, dentro deste, os botões de radio correspondentes às opções. Para alterar a
posição deste campo, você deve selecionar e arrastar somente o frame (o seu conteúdo irá junto).
Vamos, agora, conhecer como se evita com que o usuário acesse um campo para digitação.
Nesta tabela há dois campos para os quais desejamos determinar esta situação.

Clique na caixa de texto destinada a receber a informação "Quantidade em estoque" para selecioná-
• la;

Localize a categoria Comportamento na lista de propriedades da janela de ferramentas de tela e


• selecione Editável;

• Clique no botão extensor (com reticências), à direita da propriedade, e selecione a opção Não;

• Repita os passos acima para o campo "Data última atualização".

A seguir, vamos definir diversos outros atributos de validação para os demais campos desta
janela. Selecionando cada um dos campos na tela, digite as informações constantes nos quadros a
seguir. Para essas definições, você poderá utilizar a interface de montagem de expressões que já
exibimos anteriormente, bem como poderá, sempre que desejar selecionar um nome de campo, utilizar
o banco de campos:

~ 239 ~
MANUAL DO FATHER

Se o banco de campos não for exibido, pressione a tecla F5.

Código
Validação Not Vazio(Codigo)
Mensagem Código não pode ser vazio

Descrição do produto
Validação Not Vazio(Descricao_do_produto)
Mensagem Descrição não pode ser vazio!

Quantidade Mínima
Validação Not Vazio(Quantidade_minima)
Mensagem Quantidade mínima ilegal!
Valor inicial 2

Preço de custo
Validação Preco_de_custo > 0
Mensagem Preço de custo deve ser maior que zero

Preço indexado
Validação Not Vazio(Preco_indexado)
Mensagem Preço indexado não pode ser vazio!

Lucro bruto
Validação Lucro_bruto > 0 AND Lucro_bruto <= 100
Mensagem Lucro bruto ilegal!
Valor 30
inicial

Limpe as validações dos campos a seguir, pois eles foram definidos como não editáveis:

• Quantidade em estoque;

• Data última atualização.

Finalmente, para terminar a definição da janela de dados "Produtos em estoque", acesse a aba
Geral da janela de definições e marque a opção "Módulo Pronto".

~ 240 ~
MANUAL DO FATHER

Top Previous Next


Entradas de Produtos

Definiremos, agora, a janela de "Entradas de produtos" que corresponde aos dados gerais das
Notas Fiscais de fornecedores. Clique com o botão direito sobre o item "Entradas de produtos" na
árvore do projeto, selecione a opção "Define o módulo selecionado" e informe os dados da aba Geral,
conforme aparece na figura abaixo.

A seguir, vamos utilizar pela primeira vez a aba Tabelas Auxiliares desta janela. Clique sobre esta
aba para iniciar a inserção das tabelas auxiliares.

~ 241 ~
MANUAL DO FATHER

Esta interface é utilizada para forçar a abertura de outras tabelas da aplicação, quando a tabela
básica estiver sendo acessada.

Neste nosso exemplo, quando o usuário estiver digitando informações na tabela básica desta
janela que estamos definindo ("Notas Fiscais"), outras tabelas deverão ser acessadas:
"Indexadores", pois necessitamos exibir uma mensagem mais elucidativa quando o usuário informar
uma data na NF que não tenha um indexador correspondente. Lembre-se que, durante a definição
da estrutura do banco de dados, criamos uma integridade entre "Notas Fiscais" e Indexadores, fato
• que, por si só, impede que uma NF com data inexistente em Indexadores seja digitada;

"Contas a Pagar", pois naquela tabela será criado um novo registro (lançamento) contendo o valor
total da NF digitada. Observe que, no caso desta tabela, quando digitarmos a NF, ainda não temos o
valor total da mesma, visto que este será acumulado a partir dos valores digitados para os itens da
NF. Assim, ao digitar a NF, um registro de lançamento será criado nesta tabela com o campo Valor
zerado e, durante a digitação de cada item da NF, um processamento que iremos definir em "Itens
da NF" irá alterar este campo. Poderíamos, também, efetuar tal procedimento de uma maneira
diferente: não criaríamos este lançamento a partir da digitação em "Notas Fiscais" e, sim, a partir da
digitação dos itens (arquivo filho). Neste caso, porém, teríamos que definir uma condição,
determinando que o lançamento fosse criado somente se não existisse (para evitar que cada item
• criasse um novo lançamento).

Para adicionar essas duas tabelas auxiliares, basta executar as seguintes regras:

~ 242 ~
MANUAL DO FATHER

1. Clique no botão ;

2. Selecione a tabela auxiliar a partir da lista "Tabela Auxiliar";

Deixe marcada a opção "Forçar relacionamento", caso deseje que a aplicação tente se posicionar no
registro da tabela auxiliar. No caso de Indexadores, esta opção deve ficar marcada. Já no de
"Contas a Pagar", esta opção deverá ficar desmarcada, pois esta tabela será aberta apenas para a
3. criação de um novo registro, não havendo a necessidade de relacionamento;

Selecione o índice a ser utilizado, a partir da lista Índice. No caso da tabela auxiliar "Contas a
Pagar", esta escolha e as três seguintes deverão estar desabilitadas, pois, como não forçaremos o
4. relacionamento, elas não se aplicarão;

5. Selecione o campo para unir a tabela básica e a tabela auxiliar;

Deixe marcada a opção Criticar para que uma mensagem seja exibida ao usuário, caso o
6. relacionamento não tenha sido efetuado com sucesso;

Digite no campo "Mensagem de crítica" a mensagem que deseja mostrar ao usuário, caso o
7. relacionamento não tenha sido efetuado com sucesso;

Clique sobre o botão Grava para salvar as informações. Inseridas essas duas tabelas auxiliares e
8. com a tabela Indexadores selecionada, a tela da figura abaixo deverá estar sendo exibida para você:

~ 243 ~
MANUAL DO FATHER

Agora, vamos definir o primeiro lançamento nesta aplicação, que é a criação de um registro na
tabela auxiliar "Contas a Pagar". Clique sobre a aba Lançamentos.

Os lançamentos são inseridos de maneira muito semelhante às demais informações inseridas até
agora. Para criar o lançamento necessário em "Contas a Pagar", proceda conforme se segue:

1. Clique no botão Adiciona;

2. No campo Título, informe "Contas a Pagar";

Na lista "Tabela alvo" estão as tabelas auxiliares que já determinamos. Selecione a tabela "Contas a
3. Pagar";

4. Em Quantidade, informe o número 1 para criarmos apenas um registro.

Efetuamos a primeira parte da definição do lançamento. Com isto, um registro em branco será
criado na tabela "Contas a Pagar". Agora, necessitamos determinar os valores que iremos inserir em
cada um dos campos deste novo registro.

Na parte inferior da tela de definição de lançamentos, é apresentada uma grade com os campos
da tabela alvo do lançamento e uma área intitulada "Expressão a ser colocada no campo alvo", a qual
utilizaremos agora.

~ 244 ~
MANUAL DO FATHER

Você deve se lembrar que definimos este campo, na estrutura do banco de dados, como um
campo sequencial (de incremento automático) e também que iríamos definí-lo como não editável.

Exclusivamente para atender a casos de campos sequenciais, o Father criará na aplicação,


automaticamente, a função PegaSequencia, que cuida deste detalhe para nós. Os parâmetros que
serão utilizados pelo Father nesta função serão, pela ordem:
• Nome da tabela que contém o campo sequencial;

• Nome do campo sequencial;

• Valor default para iniciar a sequência;

• Incremento a ser utilizado.

Assim sendo, basta que deixemos em branco o campo "Número de lançamento".


Clique, agora, na área correspondente ao campo "Número da nf" e, aplique um duploclique sobre o
• campo "Número da nf" (Numero_da_nf). Observe que o campo foi capturado do banco de campos;

• Clique na área correspondente ao campo Data e capture o campo Data (Data) do banco de campos;

~ 245 ~
MANUAL DO FATHER

Clique sobre o botão Grava para salvar as informações deste lançamento. Já explicamos que o
campo Valor será processado por meio da digitação na tabela "Itens da NF", razão pela qual não nos
• preocupamos, agora, com o seu valor.

Agora, para esta janela de dados, falta apenas criar a sua janela de digitação, conforme já
efetuamos para aquelas que definimos anteriormente. Porém, neste caso, não vamos fazê-la agora! A
razão é que esta tabela tem uma outra subordinada, que são os "Itens da nf" (observe na árvore do
projeto). Quando o inserimos na árvore do projeto, decidimos que o módulo filho seria do tipo Tabela
em grid, ou seja, decidimos oferecer ao usuário da nossa aplicação um grid para digitação dos itens da
Nota Fiscal. Necessitamos, primeiramente, definir o módulo inferior ("Itens da nf") para depois
voltarmos a este ponto do módulo pai ("Entradas de produtos") e formatarmos a sua tela, inserindo o
grid dos itens na mesma tela. O tópico "Colocando o grid na tela", um pouco mais adiante, descreverá
a continuação desta definição.
Top Previous Next
Itens da NF

A janela dos itens da NF corresponde aos dados de cada um dos itens de produto recebidos em
uma Nota Fiscal de fornecedor. Clique com o botão direito sobre o item "Itens da NF" na árvore do
projeto, selecione a opção "Define o módulo selecionado" e informe os dados necessários:

Clique na aba "Tabelas auxiliares" para definirmos as tabelas que necessitamos abrir quando os
itens da NF estiverem sendo digitados, procedendo de maneira semelhante ao que efetuamos para a
janela de dados anterior. Note que, várias tabelas já são inseridas automaticamente na lista de tabelas
auxiliares. Essas tabelas foram definidas anteriormente no módulo-pai, sendo aqui disponibilizadas.
Necessitamos abrir a tabela "Produtos em estoque" (cadastro de produtos) com relacionamento, pois
logo definiremos processamentos para creditar a quantidade que está sendo recebida por meio da NF
na quantidade do produto em estoque, além de outros processamentos.

~ 246 ~
MANUAL DO FATHER

Informação Conteúdo
Tabela auxiliar Produtos em estoque
Forçar relacionamento X
Índice Código
Campo par unir as tabelas Código(Codigo)
Criticar X
Mensagem Produto não cadastrado!

Necessitamos abrir a tabela de "Movimentação de Produtos", pois criaremos um lançamento


(quando não existir o produto na data de entrada da NF) e, em seguida, processaremos o campo
Entradas com a quantidade recebida do item. Observe que, neste caso, necessitamos forçar o
relacionamento sem controlar se foi ou não efetivado. Por isso, deixaremos desmarcada a opção
Criticar.

Informação Conteúdo
Tabela auxiliar Movimentação de produtos
Forçar relacionamento X
Índice Código e Data
Código(Codigo)
Campo par unir as tabelas
Notas_fiscais!Data

Nesta tela, vamos estabelecer quais são os campos de ligação com o módulo pai. Neste caso, o
"Número da nf" será utilizado. Na lista da esquerda (campos do filho), clique sobre o campo "Número
da nf".
Observe que o Father marca automaticamente o campo de mesmo nome na lista da direita, que

~ 247 ~
MANUAL DO FATHER

contém os campos do módulo pai. O Father sempre efetua esta seleção automática quando encontra
na lista da direita um campo com nome e atributos idênticos ao que foi selecionado na lista da
esquerda. você poderá aceitar ou não esta seleção. No caso do nosso exemplo, é exatamente isto que
necessitamos. Clique no botão de concatenação que já conhecemos e a expressão de ligação é
montada automaticamente. Em seguida, clique no botão Grava para salvar essas informações. Clique
na aba Lançamentos para que possamos definir um lançamento na tabela de "Movimentação de
produtos".

Este lançamento deverá ser condicional, ou seja, deverá obedecer uma determinada condição
para ser efetuado. A tabela "Movimentação de produtos" mantém o controle das quantidades de
entrada e saída de cada um dos itens de produtos, diariamente. Sendo assim, quando estivermos
digitando um item de produto, vamos verificar se este item ainda não existe nesta tabela neste dia e, se
isto for verdade, criaremos um novo registro por meio deste lançamento.

A partir desta tela, vamos criar um lançamento procedendo da seguinte maneira:


• clique em Adiciona para criar um novo lançamento;

• para Título, informe Movimentação;

• na lista "Tabela alvo", selecione "Movimentacao_de_produtos";

• digite 1 no campo Quantidade;

clique no botão extensor (com reticências), no lado direito do campo "Condição inclusão
• lançamento";

a tela de montagem de expressões, já conhecida, será apresentada; porém, desta vez, utilizaremos a
sua segunda aba, pois montaremos uma expressão que testará a existência de registro dentro de
• uma das tabelas auxiliares que definimos anteriormente.

~ 248 ~
MANUAL DO FATHER

selecione a tabela "Movimentacao_de_produtos", a partir desta tela. Observe que a lista de campos
• disponíveis foi preenchida com campos que podem ser utilizados na expressão que criaremos;

em "Campos disponíveis", clique sobre o campo Código (Codigo) da tabela básica. Você deve
também ter observado que, ao lado do nome dos campos, o tipo dos mesmos vêm expressamente
• designados;

• marque o campo "Notas_fiscais!Data";

• marque também a opção "Negar condição";

• clique sobre o botão de concatenar, que já conhecemos;

• clique também sobre o botão de confirmação, para aceitar as informações.

Com isto, acabamos de montar a condição para que o lançamento seja efetuado. Agora, vamos
estabelecer também uma outra condição para que este lançamento seja retirado da tabela.
• marque a opção "Excluir lançamento";

• clique sobre o campo "Condição exclusão lançamento";

capture, com um duplo clique, o campo "Movimentacao_de_produtos!Entradas" a partir do banco de


• campos;

• após transferir este campo, complete para que fique conforme aparece no texto abaixo:

Movimentacao_de_produtos!Entradas = 0 AND
agora, posicione o cursor logo após a palavra AND e capture "Movimentacao_de_produtos!Saídas",
• da mesma forma aplicada anteriormente;

finalmente, complete a informação da condição de exclusão, digitando um igual seguido de um zero,


• conforme aparece a seguir:

... Movimentacao_de_produtos!Saídas = 0

Com isto, fica estabelecido que este lançamento somente será retirado quando os campos
Entradas e Saídas da tabela auxiliar apelidada de "Movimentacao_de_produtos" estiverem zerados.
Para terminar a definição deste lançamento, só nos resta designar os valores que serão inseridos nos
campos do novo registro por ele criado.
Na área "Expressão a ser colocada no campo alvo", clique na área correspondente ao campo
• Código;

• A partir do banco de campos, capture o campo Código (Codigo) da tabela básica;

Clique na área correspondente ao campo Data e capture o campo "Notas_fiscais!Data", a partir do


• banco de campos.

Clique sobre o botão Grava, pois acabamos de definir o lançamento. Observe que este lançamento
atualiza somente os dois primeiros campos do registro criado (Código e Data), ficando os outros dois
• campos para serem modificados por meio de processamentos que definiremos a seguir.

• Clique sobre a aba Processos:

Já utilizamos esta janela anteriormente, definindo um processamento para o campo "Data última
atualização" na janela de dados de "Produtos em estoque". Procedendo da mesma forma, vamos criar

~ 249 ~
MANUAL DO FATHER

6 processamentos para serem executados quando os itens da NF (tabela básica desta janela)
estiverem sendo digitados na aplicação final. Para criar esses processamentos, lembre-se de que você
poderá utilizar o banco de campos para capturar informações e que cada processamento é iniciado
clicando-se sobre o botão Adiciona e terminado clicando-se sobre o botão Grava.

Informação Conteúdo a informar/selecionar


Título Atualiza estoque
Tabela alvo Produtos_em_estoque
Campo alvo Quantidade_em_estoque
Fórmula direta Produtos_em_estoque![Quantidade em estoque] +
Quantidade_entrada
Fórmula inversa Produtos_em_estoque![Quantidade em estoque] -
Quantidade_entrada

Informação Conteúdo a informar/selecionar


Título Última atualização
Tabela alvo Produtos_em_estoque
Campo alvo Data última atualização
Fórmula direta Date

Informação Conteúdo a informar/selecionar


Título Preço de custo
Tabela alvo Produtos_em_estoque
Campo alvo Preço de custo
Fórmula direta Valor

Informação Conteúdo a informar/selecionar


Título Movimenta entrada
Tabela alvo Movimentacao_de_produtos
Campo alvo Entradas
Fórmula direta Movimentacao_de_produtos!Entradas + Quantidade_entrada
Fórmula inversa Movimentacao_de_produtos!Entradas - Quantidade_entrada

Informação Conteúdo a informar/selecionar


Título Atualiza contas a pagar
Tabela alvo Contas_a_pagar
Campo alvo Valor
Fórmula direta Contas_a_pagar!Valor + (Quantidade_entrada * Valor)
Fórmula inversa Contas_a_pagar!Valor - (Quantidade_entrada * Valor)

Informação Conteúdo a informar/selecionar


Título Valor da NF
Tabela alvo Notas_fiscais
Campo alvo Valor
Fórmula direta Notas_fiscais!Valor + (Quantidade_entrada * Valor)
Fórmula inversa Notas_fiscais!Valor - (Quantidade_entrada * Valor)

A figura abaixo mostra como ficarão os processos:

~ 250 ~
MANUAL DO FATHER

Terminados os processamentos, aproveite para clicar sobre a primeira aba Geral e marcar a
opção "Módulo pronto", clicando no botão Grava posteriormente.
Top Previous Next
Inserindo Grid na tela

Agora que já efetuamos as definições do módulo "Itens da nf", necessitamos oferecer uma
maneira do usuário inserir os dados. Como definimos que este módulo seria do tipo Tabela em grid,
teremos que inserir um objeto gDbGrid na tela do módulo pai. Portanto, selecione na árvore do projeto
o módulo "Entrada de produtos" e preparemos a tela de digitação dos dois módulos ao mesmo tempo.
Primeiramente, vamos criar a tela do módulo pai que são os dados de notas fiscais. Clique sobre o
botão de formatação da tela, já conhecido, na barra de ferramentas do Father e formate a tela. Lembre-
se de que você pode utilizar o botão de tela padrão (wizard) para criá-la, como já vimos anteriormente.

O campo "Código do fornecedor" será definido como lista externa, ou seja, apresentará uma lista
da tabela de fornecedores que o usuário poderá selecionar. Para informar isto ao Father, temos que
ajustar algumas propriedades, utilizando a janela de ferramentas de tela. Pressione F4 se ela não
estiver presente na tela e proceda conforme se segue:

~ 251 ~
MANUAL DO FATHER

• Selecione na tela o campo "Código do fornecedor";

Na lista de propriedades, localize a categoria Dados, clique sobre a propriedade "BD estrangeiro" e,
• utilizando o botão extensor (com reticências), selecione ESTOQUE;

• Na mesma categoria, clique sobre "Tabela estrangeira" e selecione a tabela Fornecedores;

Clique, agora, em "Campo a mostrar" e selecione "Nome do fornecedor". Repita esse mesmo
• procedimento para a propriedade "Campo a ordenar";

• Finalmente, clique em "Campo a capturar" e selecione o campo "Código do fornecedor".

O campo Valor, por definição nossa, será um campo não editável; porém, necessitamos informar,
neste momento, isto ao Father. Selecione na tela este campo e altere a sua propriedade Editável para
o valor Não.
Vamos, agora, definir atributos de validação para a janela de notas fiscais, como já efetuamos
anteriormente. Observe que o Father oferece, automaticamente, valores default para a maioria dessas
informações.

Número da NF
Mensagem Não pode ser vazio!

Data
Validação Not VAzio(Data)
Mensagem Data ilegal!
Valor inicial Date

Código do fornecedor
Validação Not Vazio(Codigo do fornecedor)
Mensagem Código não pode ser vazio!

Valor
Validação (retirar as informações sugeridas)
Mensagem (retirar as informações sugeridas)

Conforme já foi citado, o campo Valor será atualizado por intermédio de processamentos a partir
dos itens digitados para a NF. Por esta razão, você deve retirar as informações que foram sugeridas
automaticamente. Agora estamos prontos para inserir o grid para a digitação dos itens da nota fiscal.
Aumente o tamanho da tela que acabamos de criar, abrindo espaço para o posicionamento do grid.
Selecione o painel da tela e clique sobre o botão a seguir na janela de ferramentas de tela.

Um objeto gDbGrid será exibido no topo da tela. Arraste-o e redimensione-o.

Clique sobre o gDbGrid para selecioná-lo.Vamos ajustar algumas propriedades, a partir da lista de
• propriedades da janela de ferramentas de tela. Primeiramente, na categoria Dados, clique sobre a
propriedade Tabela e selecione "Itens_da_nf". Observe que o Father preenche, automaticamente, o

~ 252 ~
MANUAL DO FATHER

gDbGrid com os campos dos itens da nota fiscal, exceto o campo de ligação com o módulo-pai
("Número da nf"). Agora, vamos inserir uma coluna para conter uma fórmula para apurar o valor total
do item digitado, que é o produto da quantidade entrada pelo valor do item. Para inserir a nova
coluna, proceda conforme se segue:

• Selecione a coluna Valor;

• Clique sobre o botão de inserir coluna após, na janela de ferramentas de tela;

• Botão para inserir coluna após a selecionada

Inserida a coluna, selecione-a e designe a propriedade "Título da coluna" (categoria Título) para
• "Valor total";

Designe também a propriedade Título, nesta mesma categoria, para "Produtos da Nota Fiscal". Esta
• propriedade é aplicada no título do gDbGrid;

Na categoria Miscelânea, clique sobre a propriedade Fórmula e, por intermédio do botão extensor
• (com reticências), insira a seguinte fórmula: "Quantidade_entrada * Valor";

• na categoria Atributos, designe a propriedade Máscara para 999.999.999,99.

• Finalmente, redimensione os títulos do gDbGrid.

Nós podemos também definir o campo Código no grid como uma lista externa, como efetuamos
para o "Código do fornecedor":
Na lista de propriedades, localize a categoria Dados, clique sobre a propriedade "BD estrangeiro" e,
• utilizando o botão extensor (com reticências), selecione ESTOQUE;

~ 253 ~
MANUAL DO FATHER

• Na mesma categoria, clique sobre "Tabela estrangeira" e selecione a tabela "Produtos em estoque";

Clique, agora, em "Campo a mostrar" e selecione "Descrição do produto". Repita esse mesmo
• procedimento para a propriedade "Campo a ordenar";

• Finalmente, clique em "Campo a capturar" e selecione o campo "Código".

Note que para listas extenas em grids, a combo box não é exibida em tempo de projeto. Para
terminar esta definição, necessitamos somente marcar a opção "Módulo pronto", na aba Geral de
definições para informar ao Father que este módulo está pronto e gravar.
Top Previous Next
Financeiro

Vamos definir esta janela de dados elegendo como tabela básica a tabela de "Contas a Pagar",
que será alimentada por meio dos lançamentos e processamentos já estabelecidos nas janelas de
dados definidas anteriormente. Clique com o botão direito no item Financeiro, na árvore do projeto,
selecione a opção "Define o módulo selecionado" e informe os dados necessários:

Esta janela de dados será definida muito facilmente, pois, em virtude de ser alimentada por meio
de digitação em outras tabelas (lançamentos e processamentos), o que necessitamos, na verdade, é
formatar a sua tela conforme o seguinte, utilizando o recurso de Tela Padrão:

~ 254 ~
MANUAL DO FATHER

Da mesma forma como fora efetuado com as janelas de dados anteriores, marque a opção
"Módulo pronto" e salve as informações, clicando no botão Grava.
Top Previous Next
Saída de mercadorias

Agora, necessitamos definir o módulo responsável pela movimentação de saída de produtos em


estoque. Clique com o botão direito no item "Saída de mercadorias", na árvore do projeto, selecione a
opção "Define o módulo selecionado" e informe os dados necessários:

Para definir os lançamentos e processamentos necessários a partir desta tabela, necessitamos


forçar a abertura de duas tabelas auxiliares. Portanto, clique na aba "Tabelas auxiliares" e adicione as
informações que se seguem. Necessitamos abrir a tabela de "Produtos em estoque" com
relacionamento, pois logo definiremos processamentos para debitar a quantidade que está saindo da
quantidade do produto em estoque. Também definiremos um outro processo nesta tabela para
modificar o campo "Data última atualização" da mesma forma que efetuamos quando definimos a
entrada de produtos.

Informação Conteúdo a informar / selecionar


Tabela auxiliar Produtos em estoque
Forçar relacionamento X
Índice Código
Campo p/ unir tabelas Código(Codigo)
Criticar X
Mensagem Produto não cadastrado!

~ 255 ~
MANUAL DO FATHER

Necessitamos, ainda, abrir a tabela de "Movimentação de produtos", pois definiremos um


processamento no campo Saídas com a quantidade que está saindo do produto. Observe que, neste
caso, necessitamos forçar o relacionamento sem controlar se foi ou não conseguido. Por isso,
deixaremos desmarcada a opção Criticar.

Informação Conteúdo a informar / selecionar


Tabela auxiliar Movimentação de produtos
Forçar relacionamento X
Índice Código e Data
Código(Codigo)
Campo p/ unir tabelas
Data

• Clique na aba Lançamentos e proceda conforme se segue:

• Clique em Adiciona para criar um novo lançamento;

• Para Título, informe Movimentação;

• Na lista de nome "Tabela alvo", selecione o campo "Movimentacao_de_produtos";

• Em Quantidade, informe o número 1 para criarmos apenas um registro;

Clique no botão extensor (com reticências) do campo "Condição inclusão lançamento" e, em


• seguida, na aba "Em Tabela".

• Selecione a tabela "Movimentacao_de_produtos", a partir desta tela;

• Em "Campos disponíveis", clique sobre o campo Código da tabela básica;

~ 256 ~
MANUAL DO FATHER

• Clique no campo Data;

• Marque a opção "Negar condição";

• Clique sobre o botão de concatenar que já conhecemos;

• Clique sobre o botão de confirmação para aceitar as informações.

Com isto, acabamos de montar a condição para que o lançamento seja efetuado, ou seja, quando
um registro de produto não for encontrado na tabela alvo em uma data específica. Agora, vamos
estabelecer a condição para que este lançamento seja retirado da tabela.

Clique sobre a opção "Excluir lançamento" e sobre o campo "Condição exclusão lançamento";
Selecione "Movimentacao_de_produtos!Entradas" a partir do banco de campos;
Transfira este campo, aplicando um duplo clique sobre tal campo;
Após transferir este campo, complete a condição para que fique conforme aparece no texto
abaixo:

Movimentacao_de_produtos!Entradas = 0 AND

Agora, coloque o cursor logo após a palavra AND e capture "Movimentacao_de_produtos!Saídas"


da mesma forma efetuada anteriormente;
Finalmente, complete a informação da condição de exclusão, digitando um igual seguido de um
zero, conforme aparece a seguir:

Movimentacao_de_produtos!Saídas = 0

Com isto, fica estabelecido que este lançamento somente será retirado quando os campos
Entradas e Saídas da tabela auxiliar "Movimentacao_de_produtos" estiverem zerados. Para terminar a
definição deste lançamento, só nos resta designar os valores que serão inseridos nos campos do novo
registro por ele criado.
Na área "Expressão a ser colocada no campo alvo", clique na área correspondente ao campo
• Código;

• A partir do banco de campos, capture o campo Código;

Clique na área correspondente ao campo Data e capture o campo Data, a partir do banco de
• campos.

Clique sobre o botão Grava e assim, acabamos de definir o lançamento. Observe que este
lançamento atualiza somente os dois primeiros campos do registro criado (Código e Data), ficando os
outros dois campos para serem modificados por meio de processamentos que definiremos a seguir.
Utilizando a aba Processos, informe:

Informação Conteúdo a informar / selecionar


Título Atualiza estoque
Tabela alvo Produtos_em_estoque
Campo alvo Quantidade em estoque
Produtos_em_estoque![Quantidade em
Fórmula direta
estoque] - Quantidade_de_saida
Fórmula inversa Produtos_em_estoque![Quantidade em
estoque] + Quantidade_de_saida

Informação Conteúdo a informar / selecionar


Título Última atualização
Tabela alvo Produtos_em_estoque
Campo alvo Data última atualização
Fórmula direta Date

~ 257 ~
MANUAL DO FATHER

Informação Conteúdo a informar / selecionar


Título Movimenta saída
Tabela alvo Movimentacao_de_produtos
Campo alvo Saídas
Movimentacao_de_produtos!Saídas +
Fórmula direta
Quantidade_de_saida
Fórmula inversa Movimentacao_de_produtos!Saídas -
Quantidade_de_saida

Finalizando, vamos criar a tela para executar as saídas de estoque. Você já sabe como pedir ao
Father para criar, automaticamente, uma tela. Utilizando este recurso, faça uma tela semelhante à que
aparece na figura abaixo. Nesta tela, vamos inserir uma fórmula para exibir a descrição do produto cujo
código será digitado pelo usuário.

Para criar esta fórmula, insira um objeto label sobre a tela na posição que aparece na figura
abaixo:

Com este controle selecionado, localize a categoria Miscelânea na lista de propriedades e clique
sobre a propriedade Fórmula. Em seguida, a partir do banco de campos, selecione o campo
"Produtos_em_estoque![Descrição do produto]" e transfira-o para a propriedade, conforme já
efetuamos anteriormente. Aproveite para alterar também a propriedade Título, na categoria Título, para
"Descrição do produto".
Continuando, vamos estabelecer alguns atributos para os campos inseridos nesta tela. Conforme
já efetuamos anteriormente, clique sobre cada um dos campos inseridos na tela para selecioná-los e
informe os dados seguintes, lembrando-se de que a utilização do banco de campos é recurso valioso
para executar esta tarefa:

Código
Validação Not Vazio(Código)
Mensagem Código não pode ser vazio!

Data
Validação Not Vazio(Data)
Mensagem Data ilegal!
Valor Inicial Date

~ 258 ~
MANUAL DO FATHER

Quantidade de saída
Quantidade_de_saida > 0 AND
Validação Quantidade_de_saida <=
Produtos_em_estoque![Quantidade em estoque]
Mensagem Quantidade ilegal ou insuficiente!
Valor inicial 1

Valor
Validação Valor > 0
Mensagem Valor tem que ser maior do que zero!

Não esqueça de marcar a opção "Módulo pronto", na aba Geral da interface de definição de
janelas de dados e de gravar as informações.
Top Previous Next
Parâmetros do sistema

Temos uma última tabela para definir. Trata-se da tabela "Parâmetros do sistema" que, como
você deve se lembrar, foi inserida sob o menu Arquivo. Para definir a janela correspondente a esta
tabela, você terá que expandir o módulo Arquivo (clicando sobre o objeto marcado com "+" à esquerda
desta opção) e inserir as informações que aparecem na tela da figura a seguir:

Observe que diversas opções de acesso e abas foram desativadas. Isto se deve ao fato da tabela
básica desta janela ter sido definida como uma tabela do tipo parâmetro. Aproveite este momento e
marque a opção "Módulo pronto". Neste módulo, vamos aceitar tudo o que o Father oferece como
default. Clique no botão para ativar o Editor de Telas e crie uma tela padrão.

~ 259 ~
MANUAL DO FATHER

Top Previous Next


Movimentação dos produtos

Mais uma janela de dados temos que definir. Clique com o botão direito no item "Movimentação
de produtos", na árvore do projeto, selecione a opção "Define o módulo selecionado" e informe os
dados constantes da figura a seguir:

Observe que, diversas opções de acesso foram desmarcadas. Ocorre que esta tabela é
alimentada exclusivamente a partir de lançamentos, não devendo ser permitidas ao usuário as
operações de:

• Inclusão de registros;

• Alteração de registros;

• Exclusão de registros.

Aproveite e marque, de uma vez, a opção "Módulo pronto", pois esta definição será efetuada
rapidamente. Na aba "Tabelas auxiliares", vamos forçar a abertura da tabela "Produtos em estoque"
com relacionamento pela única razão de exibirmos uma fórmula na tela para apresentar a "Descrição
do produto". Assim, informe os dados que aparecem na tela da figura a seguir:

~ 260 ~
MANUAL DO FATHER

Finalmente, vamos definir uma tela para este módulo. Esta tela será utilizada exclusivamente
para visualização de registros, uma vez que as opções de manutenção nesta tabela estão vetadas.
Solicite ao Father que crie para você a tela da figura a seguir. O label que aparece selecionado deve
ser inserido manualmente para conter a fórmula "Descrição do produto", que você deve definir da
mesma forma descrita anteriormente.

Acesse a lista de propriedades e limpe as propriedades Validação e Msg de validação que o


Father possa ter inserido automaticamente.

~ 261 ~
MANUAL DO FATHER

Top Previous Next


Ajuste de estoque

Agora, para ilustrar nosso exemplo prático, vamos criar na aplicação uma maneira do usuário
atualizar a quantidade em estoque de produtos diretamente sobre a tabela "Produtos em estoque", cuja
janela de dados já definimos. Isto demonstrará que podemos acessar uma mesma tabela de outros
pontos da aplicação, disponibilizando apenas os campos que queremos e, ainda, inibindo certas ações
do usuário.

Primeiramente, insira uma nova janela de dados na árvore do projeto, procedendo conforme se
• segue:

• Clique sobre o módulo Movimentação para selecioná-lo. Vamos inserir abaixo desta opção de menu;

• Clique sobre o botão de inserção de módulos na árvore;

• Selecione o tipo de módulo "Janela de dados";

Quando solicitada a escolha da posição de inserção, aplique um duplo clique sobre "Saída de
• mercadorias";

Clique sobre o módulo recentemente inserido na árvore e altere o seu nome para &Ajuste de
• estoque.

Agora, clique com o botão direito neste item, na árvore do projeto, selecione a opção "Define o
módulo selecionado" e informe o que aparece na janela da figura abaixo. Observe que algumas opções
de operação foram alteradas, aparecendo de maneira diferente do que foi definido nas janelas de
dados anteriores:

A opção Permitir inclusão foi desmarcada. Isto significa que, a partir deste módulo, o usuário não
• poderá incluir registros na tabela básica;

A opção Permitir exclusão também foi desativada para que o usuário não possa efetuar exclusões
• por esse módulo.

~ 262 ~
MANUAL DO FATHER

Observe que a manutenção da tabela "Produtos em estoque" já foi totalmente estabelecida


anteriormente, de modo que, na janela que estamos agora definindo, nada mais necessitamos efetuar
do que criar uma tela que apresente somente os campos necessários para a identificação do registro e
alteração do campo de nosso interesse, que são, respectivamente, o Código, "Descrição do produto" e
a "Quantidade em estoque".

Sendo assim, marque a opção "Módulo pronto" e ative o Editor de Telas do Father e crie a tela da
figura a seguir:

Você deve ter observado que, neste caso, é mais produtivo criar esta tela manualmente, ao invés
de utilizar os recursos de tela padrão do Father.
Para o label que aparece selecionado, você deve ajustar a sua propriedade Fórmula de modo
que exiba a descrição do produto correspondente ao código digitado pelo usuário.
Top Previous Next
Formulários sem vínculos de dados

Todas as janelas de dados definidas terão a opção de trabalho sem vínculo de dados. Quando
definida essa opção, o formulário será aberto sem mostrar nenhum dado da base, sendo sua abertura,
portanto, extremamente rápida. Essa opção é extremamente útil para formulários cuja principal função
é a inclusão de registros (em tabelas com um grande volume de informações) ou para formulários em

~ 263 ~
MANUAL DO FATHER

que serão realizados, obrigatoriamente, filtros para a aquisição de dados;

Um excelente recurso é a possibilidade de abrir um form desvinculado dos dados, dando mais
velocidade, ideal para bancos em servidores na internet:

Formulários com alteração bloqueada Top Previous Next


por default
Você poderá agora determinar que um formulário não permita a alteração de seus registros até
que o usuário explicitamente informe que deseja essa função, tendo, para isso, que pressionar um
botão de liberação na barra de ferramentas. Essa funcionalidade é muito útil para usuários não muito
atentos que, às vezes, alteram um registro de determinada tabela com o intuito de incluir um novo
registro;
Top Previous Next
Gerando programas fontes

A nossa aplicação está toda definida. Vamos gerar os fontes para executar a aplicação. Siga os
passos abaixo:

1. Clique em para iniciar a geração dos programas fontes.

O botão de geração de fontes só estará habilitado se todos os módulos da árvore estiverem


sendo exibidos na cor de módulos definidos, conforme esteja configurado no Father. Se este botão não
estiver disponível, verifique se você não se esqueceu de marcar a opção "Módulo pronto" em qualquer
um dos módulos da aplicação. Observe que o título do projeto - primeiro módulo da árvore - só aparece
na cor definida para módulo pronto quando todos os demais módulos da árvore estiverem marcados
como prontos.

~ 264 ~
MANUAL DO FATHER

Esta janela está dividida em duas partes: a primeira delas, a de módulos auxiliares, estão
contidos os módulos genéricos que são sempre gerados pelo Father para apoiar a aplicação e na
segunda são agrupados os módulos efetivamente definidos por você. Em ambas as partes, a geração
de módulos pode ser ligada ou desligada por você a seu critério. Naturalmente, na primeira vez que
uma aplicação é gerada, nenhum módulo pode ser desligado, sob pena da aplicação não compilar
corretamente.

Na interface para escolha dos módulos definidos para geração, você tem um preview idêntico à
árvore do projeto, facilitando assim a escolha de módulos para geração.

2. Clique sobre o botão para disparar a geração dos programas fontes.

Caso não haja problemas na geração de fontes, a seguinte mensagem será exibida:

3. Clique em para continuar.

Se a estrutura do banco de dados da solução tiver sido alterada, a mensagem abaixo aparecerá:

4. Clique em para continuar.

Observe, na tela a seguir, que a opção "Adaptador de arquivos" foi marcada automaticamente.

~ 265 ~
MANUAL DO FATHER

5. Clique em ;

A tela com informações da conexão com o banco de dados será exibida.

6. Preencha com os dados necessários e clique em .

7. Na caixa de confirmação, clique em ;

~ 266 ~
MANUAL DO FATHER

No caso de adaptação do banco de dados, por causa de alterações na estrutura, defina o


caminho do banco a ser adaptado.

8. Clique em ;

9. Em seguida, insira o usuário e a senha de acordo com o que foi cadastrado na aba Miscelânea
na definição do projeto.

10. Clique em e a primeira tela do projeto será exibida:

~ 267 ~
MANUAL DO FATHER

Top Previous Next


Gerando programas executáveis

Uma vez que os programas fontes tenham sido gerados a tela da figura abaixo é apresentada.

Clique sobre o botão desta tela para disparar a geração dos executáveis. Se o
Visual Basic estiver instalado corretamente, todos os programas executáveis da nossa aplicação
estarão disponíveis para execução após esse processo.
Top Previous Next
Vendas

Neste tópico veremos a modelagem e configuração de uma solução de vendas para controle de
estoque, exibida no vídeo:

http://youtu.be/Y1wNBZ5dgEA

As especificações da aplicação são as seguintes:

• Banco de dados SQL Server;

• 03 tabelas: Produtos, Vendas e Vendas_itens;

• Cadastro de produtos;

• Cadastro de vendas;

• Usuário não pode alterar o total de vendas;

• Gráfico na tela de Vendas para mostrar Produtos x Quantidade;

• Na tela de Vendas, haverá um Grid para inserção de novas vendas;

• Na tela de produtos haverá campo para inclusão da quantidade do produto;


No Grid Vendas_itens haverá uma coluna para mostrar o total valor x quantidade. Esta coluna não

~ 268 ~
MANUAL DO FATHER

estará vinculada a nenhum campo;

Ao incluir uma venda no Grid, o estoque (quantidade) do produto será decrementado na tabela
• Produtos;

• 02 relatórios: um de produtos e outro de vendas.

Top Previous Next


Criando o projeto

Para criar o projeto:

1. Abra o menu Arquivo e clique em Novo:

2. Clique em Novo projeto e em seguida, em ;

~ 269 ~
MANUAL DO FATHER

3. Digite "Vendas" para o nome do projeto e clique em ;

A tela abaixo será exibida, com a estrutura do novo projeto.

~ 270 ~
MANUAL DO FATHER

Nosso próximo passo será definir o projeto.

Top Previous Next


Definindo o projeto

Agora, vamos definir o projeto Vendas:

1. Dê um clique duplo em "SEM NOME DEFINIDO";

2. Preencha a aba de Dados Genéricos com o nome do projeto e o nome do executável,


conforme abaixo:

3. Clique em e feche a janela de Definição do projeto.

~ 271 ~
MANUAL DO FATHER

Top Previous Next


Definindo o banco de dados

Nossa aplicação terá somente um banco de dados que usará a plataforma SQL Server.

Na definição do banco, seguiremos a seguinte sequência:


1º - Inserir o nome para o banco;
2º - Definir o tipo do banco;
3º - Inserir e definir as tabelas;
4º - Inserir e definir os campos;
5º - Inserir e definir os índices;
6º - Inserir e definir os relacionamentos, se necessários.

1. Dê um clique duplo em SOLUÇÃO;

A seguinte tela será exibida:

2. Na aba Geral, digite o nome do banco. Observe que o apelido será preenchido e a opção
"Principal' será marcada automaticamente.

~ 272 ~
MANUAL DO FATHER

3. Na aba Tipo BD, marque a opção SQL Server;

4. Clique em para gravar;

Precisamos agora criar as 03 tabelas necessárias para nosso projeto.

Top Previous Next


Definindo as tabelas

Nosso projeto terá 03 tabelas:

• tbProdutos: Será utilizada para o cadastro de produtos e a quantidade de produtos em estoque;

• tbVenda: Será usada para cadastrar novas vendas com 03 campos;

• tbVenda_item: Será a tabela para o Grid utilizado para cadastrar os produtos de cada venda.

Para cada tabela nova a ser definida, é necessário clicar no quadro "Tabelas" e no botão ;

~ 273 ~
MANUAL DO FATHER

A definição de cada tabela compreende a definição de seus campos e índices, com suas
respectivas propriedades.

Veremos a definição de cada tabela em tópicos separados.

Utilizando o quadro "Integridades", vamos inserir 02 relacionamentos. Cada um em tópico


separado.

Top Previous Next


Tabela Tbprodutos

1. Clique no quadro Tabelas para inserirmos a primeira tabela;

~ 274 ~
MANUAL DO FATHER

2. No campo "Nome", digite Tbprodutos. Nesta tabela serão inseridos os produtos. Em

seguida, clique em ;

Agora vamos inserir 03 campos para a tabela Tbprodutos:

O primeiro da tabela Tbprodutos será Produto_id, que receberá o código do produto.

3. Clique no quadro "Campos" e preencha as propriedades do campo conforme abaixo:

~ 275 ~
MANUAL DO FATHER

4. Clique em para gravar as definições;

O segundo campo será Produto_nome, que receberá a descrição do produto.

5. Clique em para inserir um novo campo e preencha conforme as propriedades abaixo.

Logo em seguida, clique em ;

O terceiro e último campo da tabela Tbprodutos será Produto_est, que receberá a quantidade
do produto em estoque.

6. Clique em para inserir um novo campo e preencha conforme as propriedades abaixo. Em

seguida, clique em ;

~ 276 ~
MANUAL DO FATHER

Agora vamos criar um índice primário para a tabela Tbprodutos.

7. Clique no quadro "Índices" e em seguida, no botão ;

Não é necessário digitar o nome do índice. O campo escolhido como índice será utilizado.

8. Marque a opção "Primário" e em seguida selecione o campo "Produto_id" na lista de campos:

Top Previous Next


Tabela Tbvenda

1. Clique no quadro Tabelas para inserirmos a segunda tabela;

~ 277 ~
MANUAL DO FATHER

2. No campo "Nome", digite Tbvenda. Nesta tabela serão inseridas as vendas. Em seguida,

clique em ;

Agora vamos inserir 03 campos para a tabela Tbvenda.

O primeiro campo da tabela Tbvenda será Venda_id, que receberá o código da venda. Este
código será incrementado automaticamente a cada nova venda.

3. Clique no quadro "Campos" e preencha as propriedades do campo conforme abaixo:

4. Clique em para gravar as definições;

O segundo campo será Venda_data, que receberá a data que cada venda é cadastrada.

~ 278 ~
MANUAL DO FATHER

5. Clique em para inserir um novo campo e preencha conforme as propriedades abaixo.

Logo em seguida, clique em ;

O terceiro e último campo da tabela Tbvenda será Venda_total, que receberá o total dos valores
dos produtos cadastrados no Grid de Venda_itens.
Lembre-se de inserir 02 casas decimais para este campo.

6. Clique em para inserir um novo campo e preencha conforme as propriedades abaixo. Em

seguida, clique em ;

Agora vamos criar um índice primário para a tabela Tbvenda.

7. Clique no quadro "Índices" e em seguida, no botão ;

Top Previous Next


Tabela Tbvenda_item

1. Clique no quadro Tabelas para inserirmos a terceira tabela;

~ 279 ~
MANUAL DO FATHER

2. No campo "Nome", digite Tbvenda_item. Em seguida, clique em ;

Agora vamos inserir 03 campos para a tabela Tbvenda_item.

O primeiro campo da tabela Tbvenda_item será Item_id, que receberá o código do item de
venda. Este código será incrementado automaticamente. Este campo não será exibido na tela.

3. Clique no quadro "Campos" e preencha as propriedades do campo conforme abaixo:

4. Clique em para gravar as definições;

O segundo campo será Venda_id, que será usado em relacionamento com a tabela Vendas.
Como este campo já foi inserido na Tbvendas, é necessário digitar somente o nome. As
outras propriedades são preenchidas automaticamente.

~ 280 ~
MANUAL DO FATHER

5. Clique em para inserir um novo campo e preencha conforme as propriedades abaixo.

Logo em seguida, clique em ;

O terceiro campo desta tabela será Produto_id, utilizado em relacionamento com a tabela
Tbprodutos. Novamente, é necessário preencher somente o nome do campo.

6. Clique em para inserir um novo campo e preencha conforme as propriedades abaixo.

Em seguida, clique em ;

O próximo campo, Item_quantidade, será utilizado para receber a quantidade de cada item
vendido.

7. Clique em para inserir o novo campo e preencha conforme as propriedades abaixo. Em

seguida, clique em ;

O próximo campo, item_valor, será usado para o valor unitário de cada item vendido. Lembre-
se de adicionar 02 decimais.

~ 281 ~
MANUAL DO FATHER

8. Clique em para inserir o novo campo e preencha conforme as propriedades abaixo. Em

seguida, clique em ;

Observe a lista de todos os campos da tabela Tbvenda_item:

9. Clique no quadro "Índices" e em seguida, no botão ;

Não é necessário digitar o nome do índice. O campo escolhido como índice será utilizado.

10. Marque a opção "Primário" e em seguida selecione o campo "Item_id" na lista de campos:

~ 282 ~
MANUAL DO FATHER

No próximo tópico veremos como definir 02 relacionamentos.

Não é necessário digitar o nome do índice. O campo escolhido como índice será utilizado.

8. Marque a opção "Primário" e em seguida selecione o campo "Venda_id" na lista de campos:

Nosso próximo passo agora será definir a última tabela, Venda_item.

~ 283 ~
MANUAL DO FATHER

Top Previous Next


Relacionamento: Tbvenda_item:Tbprodutos

A tabela Tbvenda_item terá um relacionamento com a tabela Tbprodutos. Para isso, utilizaremos
o campo Produto_id que está inserido em ambas as tabelas. Este relacionamento será do tipo "Um-
para-um" ou "1-1", pois cada item de venda não poderá ter dois produtos iguais.

1. Com a tabela Tbvenda selecionada, clique no quadro "Integridades" para inserir o


relacionamento;

2. Na opção "Tabela/Campo estrangeiro", selecione a tabela Tbprodutos.

3. Em "Campos da tabela base", selecione o campo "Produto_id" e clique em ;

Observe no quadro "Campos da relação" o relacionamento que foi definido entre os campos
Produto_id da tabela Tbprodutos (Tabela estrangeira) e o campo de mesmo nome, Produto_id, da

~ 284 ~
MANUAL DO FATHER

tabela Tbvenda_item (Tabela base).

4. Clique em ;

Nosso primeiro relacionamento está pronto. Agora, precisamos inserir mais um relacionamento:
entre a tabela Tbvenda e TbVenda_item.
Top Previous Next
Relacionamento: Tbvenda:Tbvenda_item

A tabela Tbvenda terá um relacionamento com a tabela Tbvenda_item. Para isso, utilizaremos o
campo Venda_id que está inserido em ambas as tabelas. Este relacionamento será do tipo "Um-para-
muitos" ou "1-N", pois cada venda poderá ter muitos itens cadastrados.

1. Com a tabela Tbvenda selecionada, clique no quadro "Integridades" para inserir o


relacionamento;

2. Na opção "Tabela/Campo estrangeiro", selecione a tabela Tbvenda_item.

~ 285 ~
MANUAL DO FATHER

3. Em "Campos da tabela base", selecione o campo "Venda_id" e clique em ;

Observe no quadro "Campos da relação" o relacionamento que foi definido entre os campos
Venda_id da tabela Tbvenda_item (Tabela estrangeira) e o campo de mesmo nome, Venda_id, da
tabela Tbvenda (Tabela base).

4. No quadro "Forma de integridade", marque a opção "1-N (filho)", pois o relacionamento será
do tipo um-para-muitos.

5. Clique em ;

Top Previous Next


Consulta ( View )

Esta consulta será utilizada na tela de Vendas para exibir o gráfico de itens de venda. Vamos
utilizar para esta consulta todos os campos da tabela Tbvenda_item e o campo Produto_nome, da
tabela Tbprodutos.

1. Clique em "Consultas" e em seguida, no botão ;

~ 286 ~
MANUAL DO FATHER

2. Preencha o nome da View digitando "Vw_venda_item", conforme abaixo e clique em ;

3. Selecione a aba "Script" e marque a opção "Gerar Script";

4. Em seguida, clique no botão , para criar a expressão SQL usada para definir quais
serão os campos da View;

5. Na caixa "Expressão SQL que define o módulo", selecione Tbvenda_item no quadro Tabelas;

~ 287 ~
MANUAL DO FATHER

6. Na lista de "Campos a mostrar", clique em todos os campos da tabela Tbvenda_item, um de


cada vez;

Observe como deverá ficar a expressão, por enquanto:

Precisamos incluir a descrição do produto na consulta.

7. Selecione a tabela Tbprodutos e clique no campo Produto_nome. Observe a expressão SQL.

~ 288 ~
MANUAL DO FATHER

Agora vamos criar uma união (Join) entre a tabela Tbvenda_item e a tabela Tbprodutos.

8. Clique na aba Seleção e marque a opção "Unir tabelas";

~ 289 ~
MANUAL DO FATHER

Precisamos de um campo para essa união. Tanto na tabela Tbprodutos quanto na tabela
Tbvenda_item, existe o campo Produto_id. Este campo será utilizado para a união (Join).

Siga a seguinte sequência:

9. Em "Nome do campo", selecione Tbvenda_item.Produto_id;

10. Em "Valor", selecione Tbprodutos.Produto_id;

11. Clique no botão para montar a expressão SQL;

Observe como ficou a expressão SQL, agora completa:

12. Clique em ;

Observe como ficou a definição da View, com a expressão SQL:

~ 290 ~
MANUAL DO FATHER

13. Clique em para gravar as definições.

Agora, após termos definido as tabelas, os relacionamentos e a View, podemos inserir os menus
para construção das telas de cadastro.

Top Previous Next


Criando o menu Cadastros

1. Para inserir os menus, selecione o nome do projeto "Vendas" e clique no botão ;

2. Clique em "Menu", na lista de módulos;

~ 291 ~
MANUAL DO FATHER

3. Dê um clique duplo em "Arquivo", desta forma o menu será inserido logo abaixo do menu
Arquivo]

4. Dê um clique duplo em "Menu", para as definições do módulo;

5. Em "Título no menu" digite: Cadastros e feche a caixa de definição.

~ 292 ~
MANUAL DO FATHER

Top Previous Next


Janela de dados Produtos

Vamos agora inserir e definir a janela de dados Produtos. Esta tela terá como tabela básica a
tabela Tbprodutos

1. Com o menu Cadastros selecionado, clique no botão para abrir a lista de módulos;

2. Clique em "Janela de dados" e em seguida, clique em ;

Observe que o módulo foi inserido dentro do menu Cadastros.

3. Dê um clique duplo em "Janela de dados" para definir o módulo. Preencha as propriedades


conforme a tela abaixo:

~ 293 ~
MANUAL DO FATHER

4. Clique em ;

Top Previous Next


Formatando a tela Produtos

Agora que a janela de dados Produtos já possuí uma tabela básica (Tbprodutos), vamos
formatar a tela Produtos.

1. Clique em Produtos com o botão direito do mouse e selecione "Formata tela";

Observe que também são exibidas as ferramentas de tela.

~ 294 ~
MANUAL DO FATHER

2. Pressione simultaneamente <Alt> + T, para formatar a tela de forma padrão de acordo com
os campos da tabela básica selecionada anteriormente;

O resultado será:

Foram inseridos no formulário 03 controles Label e 03 controles Textbox. Os textos dos


controles Label correspondem aos nomes dos campos digitados na definição dos campos da tabela
Tbprodutos.

3. Feche a janela de dados Produtos. Vamos utilizar esta tela na execução da aplicação quando
formos incluir produtos.

Top Previous Next


Janela de dados Vendas

1. Com o menu Cadastros selecionado, clique no botão para abrir a lista de módulos;

2. Clique em "Janela de dados";

3. Dê um clique duplo em "Produtos";

Observe que o módulo foi inserido dentro do menu Cadastros, abaixo de "Produtos";

~ 295 ~
MANUAL DO FATHER

Agora vamos definir o novo módulo inserido. Este módulo será usado para cadastro de vendas.

4. Dê um clique duplo em "Janela de dados" e preencha os 03 campos em destaque na figura


abaixo:

5. Clique em .

Observe que agora temos 02 janelas de dados no menu Cadastros:

~ 296 ~
MANUAL DO FATHER

Agora vamos inserir o Grid para a tela Vendas.

Top Previous Next


Inserindo o Grid de vendas

O Grid na tela Vendas será utilizado para selecionar o produto, inserir a quantidade e o valor un
coluna no Grid para exibir o total resultante da multiplicação entre o valor do produto e sua quantidade.

Vamos seguir os passos abaixo para inserirmos o Grid de vendas.

1. Com o módulo "Vendas" selecionado, clique no botão . Selecione "Tabela em grid";

2. Na confirmação abaixo, clique em ;

~ 297 ~
MANUAL DO FATHER

O resultado será:

Agora vamos definir uma tabela básica para o Grid.

3. Clique com o botão direito do mouse em "Tabela em grid" e em seguida, selecione "Define o mód

4. Siga a sequência abaixo, definindo o título, a tabela básica e as definições padrões para o módulo

~ 298 ~
MANUAL DO FATHER

5. Clique em ;

Precisamos agora criar um relacionamento entre a tabela filha (Tbvenda_item) e a tabela pai (Tbven

6. Ainda na janela de definições, clique na aba Opções.


Observe a disposição dos campos à esquerda, da tabela filha (Tbvenda_item) e os campos à dire
Ambas possuem um campo em comum: Venda_id. Este campo será utilizado para o relacionamento entr

7. No lado esquerdo, clique em Venda_id. O campo correspondente da tabela filha no lado direito,
automaticamente.

~ 299 ~
MANUAL DO FATHER

8. Clique em , para montar a expressão;

Observe a expressão de ligação que foi montada:

9. Clique em e feche a janela de definições.

Após a definição do Grid, vamos formatar a tela de vendas.

Top Previo
Formatando a tela Vendas

1. Clique no módulo "Vendas" com o botão direito e selecione "Formata tela";

2. Em seguida, utilize o atalho <Alt> + T para formatar a tela seguindo a formatação padrão do Fath

~ 300 ~
MANUAL DO FATHER

Observe, abaixo, a tela de Vendas e as Ferramentas de tela:

O Grid de vendas e um gráfico serão inseridos nesta mesma tela, portanto, precisamos ampliar as

3. Amplie o tamanho da tela de modo apropriado para comportar o Grid e o gráfico:

~ 301 ~
MANUAL DO FATHER

O campo Venda_total, que exibe o total das vendas, não poderá ser editado durante a execuç
vamos alterar o valor da propriedade de edição do controle.

4. Na tela Vendas, selecione o Textbox do campo Venda_total e, nas propriedades da tela (pre
propriedades não estiver visível), altere o valor da propriedade Editável para "Não";
Utilize o botão extensor para alterar o valor da propriedade ou então um duplo clique sobre o val

~ 302 ~
MANUAL DO FATHER

Agora vamos inserir um controle Grid na tela Vendas.

5. Nas Ferramentas de tela, clique no controle Grid. O controle será inserido na tela Vendas;

6. Arraste e redimensione o Grid de modo que fique conforme a figura abaixo:

~ 303 ~
MANUAL DO FATHER

Vamos definir agora a tabela para o Grid.

7. Com o Grid selecionado, clique na propriedade Tabela em Ferramentas:

8. Selecione a tabela Tbvenda_item na propriedade Tabela;

~ 304 ~
MANUAL DO FATHER

Observe que agora o Grid possui 04 colunas.

Não será necessária a exibição da primeira coluna - Item_id - portanto, vamos removê-la.

9. Selecione a primeira coluna do Grid ( Item_id ) e clique no botão para remover a coluna, em des

~ 305 ~
MANUAL DO FATHER

10. Vamos ampliar a largura da coluna Produto_id. Esta coluna será vinculada ao campo
Tbprodutos;

A coluna Produto_id irá mostrar os produtos cadastrados na tabela Tbprodutos. Para isso, precisam
controle Combo, mostrando uma lista de produtos, da qual escolheremos 01 produto de cada vez.

11. Com a coluna Produto_id selecionada, defina os valores das 04 propriedades abaixo, conform

~ 306 ~
MANUAL DO FATHER

Agora precisamos inserir uma coluna no Grid para exibir o total, ou seja, o resultado da multiplica
produto e o valor unitário.

12. Selecione a última coluna do Grid ( Item_valor ) e utilize o botão "Insere coluna após", co
abaixo:

13. Na propriedade Título da coluna, digite "Total";

~ 307 ~
MANUAL DO FATHER

Agora vamos configurar a coluna Total para mostrar o resultado da multiplicação entre a quantidad

14. Selecione a coluna Total, que acabamos de inserir, e selecione a propriedade Fórmula:

Precisamos agora escolher quais os campos envolvidos na Fórmula.

14. Pressione <F5> para exibir o Banco de campos;

~ 308 ~
MANUAL DO FATHER

15. Primeiro, dê um clique duplo em item_quantidade para inserir o campo. Em seguida, clique no
e por fim, dê um clique duplo no campo Item_valor.

A propriedade Fórmula deverá conter a seguinte expressão:

Nosso próximo passo será inserir um gráfico na tela de Vendas.

16. Utilizando o botão de inserir gráfico na caixa Ferramentas, insira e dimensione o gráfico conform

~ 309 ~
MANUAL DO FATHER

A consulta (View) de Venda_item será utilizada para fornecer os dados para o gráfico.

17. Selecione o gráfico e clique no botão extensor da propriedade Expressão SQL;

A caixa Expressão SQL será exibida para montarmos a expressão para o gráfico.

18. Na lista de Tabelas, selecione a view Vw_venda_item e em "Campos a mostrar", selecione pri
e em seguida, selecione Item_quantidade;

~ 310 ~
MANUAL DO FATHER

Observe como ficou a expressão, por enquanto:

19. Clique em ;

20. Em seguida, clique em para gravar a tela;

~ 311 ~
MANUAL DO FATHER

Agora vamos acrescentar uma expressão de Filtro à expressão SQL. Queremos que seja exibida
gráfico.

21. Clique novamente no botão extensor de Expressão SQL;

22. Na caixa de definição da Expressão SQL, clique na aba "Seleção" e siga a sequência enumera

Observe como ficou a expressão, agora completa:

~ 312 ~
MANUAL DO FATHER

23. Clique em .

24. Na propriedade "Tipo do gráfico", você pode selecionar um tipo para o gráfico. Como sugestão,

Definido o gráfico, o Grid e a tela de vendas, vamos agora inserir os processos para os cálculos qu

T
Inserindo processo para atualizar total

Para definirmos o processo que irá atualizar o total no Grid, vamos seguir as seguintes
instruções:

1. Clique com o botão direito em "Venda_item" e em seguida, "Define o módulo


selecionado".

~ 313 ~
MANUAL DO FATHER

2. Na aba de definição do módulo, clique na aba Processos;

3. Preencha as definições do processo de acordo com a figura abaixo. Para inserir as


fórmulas, você pode utilizar o Banco de campos (Atalho F5) e efetuar duplo clique nos
campos, clicando também nos operadores necessários.

Lembre-se que na Fórmula inversa, o sinal é invertido (de adição para subtração). A
fórmula inversa será usada no caso de exclusão de registro.

~ 314 ~
MANUAL DO FATHER

4. Clique em .

O próximo processo será usado para atualização da quantidade de produtos em


estoque.

Inserindo processo para Top Previous Next


atualizar estoque
Vamos agora inserir o processo para atualizar o estoque de produtos, na tabela
Tbprodutos. O campo alvo deste processo será o produtos_est.

Primeiro precisamos inserir uma tabela auxiliar - Tbprodutos - para o Grid.

1. Na tela de definição do módulo "Tabela em grid", clique na aba "Tabelas auxiliares";

2. Siga a sequência enumerada na figura abaixo para inserir a tabela Tbprodutos


como tabela auxiliar para o Grid e determinar o campo para relacionamento com a tabela
do Grid - Tbvendas_item.

~ 315 ~
MANUAL DO FATHER

No passo nº 4, na figura acima, é feita a definição do campo utilizado para o


relacionamento entre as duas tabelas, a Tbvendas_item, do Grid, e a Tbprodutos, que é a
tabela básica da Janela de dados Produtos.
Quando clicar no campo especificado no passo nº 4, o quadro "Ordem dos campos"
será preenchido:

3. Clique em .

Agora que a tabela Tbprodutos já foi inserida como tabela auxiliar para a
Tbvenda_item, podemos definir um processo que irá alterar a quantidade de produtos em
estoque conforme a inclusão/exclusão na tela vendas. Para isso precisamos definir
Fórmulas: a fórmula direta, quando o registro é incluído, e a fórmula indireta, quando o
registro é excluído.

4. Clique na aba Processos;

5. Clique em ;

6. Preencha conforme abaixo. Para inserir as duas fórmulas, você pode utilizar o
duplo-clique nos campos do Banco de campos (atalho F5). Lembre-se que na Fórmula
inversa o sinal de subtração será substituído por adição.

~ 316 ~
MANUAL DO FATHER

7. Clique em .

Nosso último passo antes de executar a aplicação será inserir 02 relatórios.

Top Previous Next


Inserindo os relatórios

Nesta aplicação vamos precisar de dois relatórios:

• Vendas;

• Produtos.

Primeiro, vamos inserir um menu onde ficarão os dois relatórios.

1. Selecione o módulo Vendas e clique em ;

~ 317 ~
MANUAL DO FATHER

2. Na caixa de posição do novo módulo, dê um clique duplo em "Cadastros". O módulo de


relatórios será inserido logo abaixo do módulo Cadastros.

3. Com o botão direito, clique em "Menu" e em seguida, clique em "Define o módulo


selecionado";

4. Na opção "Título no menu", digite: Relatórios.

~ 318 ~
MANUAL DO FATHER

Agora vamos inserir e definir um relatório de produtos no menu Relatórios.

Top Previous Next


Relatório de Produtos

Para inserir e definir o relatório de produtos, siga os passos abaixo:

1. Com o módulo Relatórios selecionado, clique em ;

2. Selecione "Relatório" e clique em "Utilizar G-Reports";

~ 319 ~
MANUAL DO FATHER

3. Clique em ;

4. Dê um clique duplo em "Relatório do G-Reports";

5. Preencha conforme a figura abaixo:

6. Após marcar a opção "Módulo pronto", clique em .

Precisamos agora formatar a tela de configurações do relatório.

7. Clique com o botão direito em "Produtos" e em seguida, em Formata tela;

~ 320 ~
MANUAL DO FATHER

8. Para aceitar as configurações padrões de tela, utilize o atalho <Alt> + T para formatar a
tela:

Em seguida, vamos formatar a tela de impressão do relatório.

9. Clique com o botão direito em Produtos e logo em seguida, clique em Formata relatório;

~ 321 ~
MANUAL DO FATHER

10. Novamente, aceitando as configurações padrões de tela do Father, utilize o atalho <Alt>
+ T para formatar a tela de impressão do relatório:

11. Na pergunta sobre a perda da tela atual, clique em ;

A tela de impressão do relatório será semelhante à figura abaixo:

Agora, prosseguiremos para a criação e definição do relatório de vendas.

Top Previous Next


Relatório de Vendas

Para inserir e definir o relatório de vendas, vamos seguir os passos abaixo:

1. Com o módulo Relatórios selecionado, clique em ;

2. Selecione "Relatório" e clique em "Utilizar G-Reports";

~ 322 ~
MANUAL DO FATHER

3. Em Posição do novo módulo, dê um clique duplo em Produtos. Desta forma, o módulo será
inserido logo abaixo de Produtos.

4. Dê um clique duplo em "Relatório do G-Reports";

5. Preencha conforme a figura abaixo:

~ 323 ~
MANUAL DO FATHER

6. Após marcar a opção "Módulo pronto", clique em .

Precisamos agora formatar a tela de configurações do relatório.

7. Clique com o botão direito em "Vendas" e em seguida, em Formata tela;

8. Para aceitar as configurações padrões de tela, utilize o atalho <Alt> + T para formatar a
tela:

~ 324 ~
MANUAL DO FATHER

Em seguida, vamos formatar a tela de impressão do relatório.

9. Clique com o botão direito em Vendas e logo em seguida, clique em Formata relatório;

10. Novamente, aceitando as configurações padrões de tela do Father, utilize o atalho <Alt> +
T para formatar a tela de impressão do relatório:

11. Na pergunta sobre a perda da tela atual, clique em


;
A tela de impressão do relatório será semelhante à figura abaixo:

~ 325 ~
MANUAL DO FATHER

Pronto! Terminamos de inserir os relatórios, que foram a última parte de nossa aplicação.

Agora, podemos executar a aplicação.

Top Previous Next


Executando a aplicação Vendas

Após terminadas as definições dos módulos, processos, relatórios e das telas, vamos agora
gerar o código fonte da solução.

1. Clique no botão ;

Todos os módulos já estão marcados para serem gerados.

~ 326 ~
MANUAL DO FATHER

2. Clique em ;

A caixa "Sucesso" deverá ser exibida após alguns instantes:

3. Clique em ;

4. Marque as opções conforme a figura abaixo e clique em ;

~ 327 ~
MANUAL DO FATHER

O FATHER COMO FERRAMENTA DE DESENVOLVIMENTO


Funções genéricas geradas na Top Previous Next
aplicação
As funções genéricas são as seguintes:
Top Previous Next
DDMM

DDMM(ExpC)
Retorna True (-1) se a data especificada no argumento string ExpC, no formato Dia/Mês, é válida.
Exemplo:

If DDMM("01/08") Then
Print "Data válida..."
End If
Data válida...

Top Previous Next


DDMMAA

DDMMAA(ExpC)
Retorna True (-1) se a data especificada no argumento string ExpC, no formato Dia/Mês/ Ano, é
válida.
Exemplo:
If DDMMAA("01/08/00") Then
Print "Data válida..."
End If
Data válida...

Top Previous Next


Existe

Existe (ExpC)
Retorna True (-1) se o arquivo especificado por
ExpC existe no disco.
Exemplo:
Arquivo$ = "C:\APLIC\ESTOQUE\ESTOQUE.INI"
If Not Existe(Arquivo$) Then
Print "O arquivo "; Arquivo$; " não foi encontrado!"
End If

~ 328 ~
MANUAL DO FATHER

Top Previous Next


Existe

Existe (ExpC)
Retorna True (-1) se o arquivo especificado por
ExpC existe no disco.
Exemplo:
Arquivo$ = "C:\APLIC\ESTOQUE\ESTOQUE.INI"
If Not Existe(Arquivo$) Then
Print "O arquivo "; Arquivo$; " não foi encontrado!"
End If

Top Previous Next


GDV1

GDV1(ExpC)
Retorna o Dígito Verificador (DV), de módulo 11, do argumento ExpC.
Exemplo:
x$="0002"
Print GDV1$(x$)

Top Previous Next


GDV2

GDV2(ExpC)
Retorna dois Dígitos Verificadores (DV), de módulo 11, do argumento ExpC. Primeiramente, é
calculado o primeiro dígito que é incorporado ao argumento e, em seguida, calculado o segundo dígito.
Exemplo:

x$="184173611"
Print GDV2$(x$)

Top Previous Next


GDvCb

GDvCb(ExpC)
Retorna um dígito verificador do argumento string ExpC. Esta função deve ser utilizada para
padrão EAN 8, EAN 13 ou UPC-A.
Exemplo:
x$ = "000000000001"
x$ = x$ + GDvCb(x$)
MsgBox "O número composto com o seu dígito verificador é: " + x$

Top Previous Next


GravaNoIni
GravaNoIni(ExpC1, ExpC2, ExpC3, ExpC4)

Esta procedure executa a gravação de uma informação do tipo caractere no arquivo de


configuração (.INI) do Father ou das aplicações por ele geradas. O argumento ExpC1 contém o nome
da seção onde será gravada a informação, sendo criada (entre colchetes) caso não exista. ExpC2
contém o nome do item que conterá a informação (também criado, se não existir). ExpC3 contém a
informação a ser gravada e, finalmente, ExpC4 contém o nome completo (drive, diretório e nome) do
arquivo .INI. Para gravar informações numéricas no arquivo, utilize a função Str$( ) do VB no
argumento ExpC3.
Exemplo:
GravaNoIni ("Geral", "Dir", "C:\AP","C:\AP\ESTOQUE.INI")
GravaNoIni ("Geral", "Cor", Str$(15), "C:\AP\ESTOQUE.INI")
Resultado no arquivo .INI
[Geral]
Dir=C:\AP
Cor = 15

~ 329 ~
MANUAL DO FATHER

Top Previous Next


haNaString
HaNaString(ExpN1, ExpC1, ExpC2, ExpN2)

Retorna a posição da primeira ocorrência da expressão caractere ExpC2 dentro de ExpC1, a


partir da posição ExpN1. Se ExpN2 for passada com o valor True (-1), a pesquisa será efetuada,
caractere a caractere, de ExpC2 independentemente da ordem das mesmas.
Exemplos:
Alvo$="Palavra"
Oque$="lavra"
Print HaNaString(1, Alvo$, Oque$, False)
3 'posição de "lavra" em "Palavra"
Agora,
Print HaNaString(1,Alvo$, Oque$, True)
2 'pesquisa caractere a caractere, na qual a letra "a" de "lara"
'foi encontrada na posição 2
Esta função é case sensitive, ou seja, maiúsculas não correspondem a minúsculas.
Top Previous Next
LoadGasPicture
LoadGasPicture(ExpN)

Retorna o caminho e nome do arquivo, identificado no resource por ExpN, para onde a imagem
foi extraída.
Top Previous Next
LoadGasString
LoadGasPicture(ExpN)

Retorna o caminho e nome do arquivo, identificado no resource por ExpN, para onde a imagem
foi extraída.

Top Previous Next


LPad

LPad(ExpC1, ExpN, ExpC2)


Retorna a string em ExpC1 "completada" à esquerda com o caractere passado em ExpC2,
forçando um tamanho igual a ExpN.
Exemplo:
x$ = "SSI Tecnologia Ltda"
Print LPad$(x$, 40, "*")
*****************SSI Tecnologia Ltda
Top Previous Next
MMAA
MMAA(ExpC)
Retorna True (-1) se a data especificada no
argumento string ExpC, no formato Mês/Ano, é
válida.
Exemplo:
If MMAA("08/00") Then
Print "Data válida..."
End If
Data válida...
Top Previous Next
NMes
NMes(ExpC)
Retorna o nome do mês correspondente à data especificada em ExpC.
Exemplo:
Print NMes$("01/08/00")
Agosto

~ 330 ~
MANUAL DO FATHER

Top Previous Next


NSem
NSem(ExpC)
Retorna o nome do dia da semana correspondente à data especificada em ExpC.
Exemplo:
Print NSem$("01/08/00")
Terça
Top Previous Next
PegaIntDIni
PegaIntDoIni(ExpC1, ExpC2, ExpN, ExpC3)
Esta função retorna uma informação do tipo numérico (inteiro), que esteja gravada no arquivo de
configuração (.INI) do Father ou das aplicações por ele geradas. O argumento ExpC1 deverá conter o
nome da seção existente no arquivo .INI, sempre incluída entre colchetes. O argumento ExpC2 contém
o nome do item cuja informação se deseja pegar. Já o agumento ExpN contém o valor a ser assumido
(default) caso o valor não seja recuperado e, finalmente, o argumento ExpC3 deverá conter o nome
completo (drive, diretório, nome) do arquivo .INI.
Exemplo:
Conteúdo do arquivo .INI
[Geral]
Nome da aplicação=EST
Dir=C:\AP
Cor=15
etc...
Dim QCor As Integer
QCor = PegaIntDoIni("Geral", "Cor", 0,"C:\AP\EST.INI")
Print QCor
15
Top Previous Next
PegaSequencia
PegaSequencia([ExpC1], ExpC2, ExpC3, V1, V2)
Esta função serve para incrementar o valor de um campo do tipo sequencial em uma tabela. O
argumento ExpC1 é opcional, contendo o nome do arquivo MDB. ExpC2 é o nome da tabela que
contém o campo sequencial, enquanto ExpC3 é o nome do campo sequencial. V1 é o valor para servir
como default do campo e V2 é o valor a ser utilizado para incrementar o campo.
Top Previous Next
PegaStrDoIni
PegaStrDoIni(ExpC1, ExpC2, ExpC3)
Esta função retorna uma informação do tipo caractere, que esteja gravada no arquivo de
configuração (.INI) do Father ou das aplicações por ele geradas. O argumento ExpC1 deverá conter o
nome da seção existente no arquivo .INI; o argumento ExpC2 contém o nome do item cuja informação
se deseja pegar e, finalmente, o argumento ExpC3 contém o nome completo (drive, diretório, nome) do
arquivo .INI.
Exemplo:
Conteúdo do arquivo .INI
[Geral]
Nome da aplicação=ESTOQUE
Diretório=C:\APLIC
etc...
Dim DirAplic As String
DirAplic$ = PegaStrDoIni("Geral", "Dir", "C:\AP\EST.INI")
Print DirAplic$
C:\AP

Top Previous Next


PTab
ExpC1.PTab( ExpC2, ArrV)
Esta função executa uma pesquisa indexada no recordset especificado em ExpC1, utilizando o
índice de nome ExpC2. Os argumentos a serem pesquisados são passados no arranjo ArrV, do tipo
variant. Caso seja encontrado o registro, esta função retorna True, deixando o ponteiro no registro
encontrado. Se o registro não for encontrado, esta função retorna False.
Exemplo:
i = Fornecedores.Ptab( "

~ 331 ~
MANUAL DO FATHER

Top Previous Next


RAt
RAt(ExpC1, ExpC2)
Retorna a posição da última ocorrência da expressão caractere ExpC2 dentro de ExpC1. Esta
função é semelhante à função InStr() do Visual Basic; porém, a posição é pesquisada de trás para a
frente.
Exemplo:
Alvo$="Computador"
Oque$="o"
Print Rat(Alvo$, Oque$)
9
Top Previous Next
Retira
Retira (ExpC1, ExpC2, ExpN)
Retira (remove) todas as ocorrências de ExpC2 dentro de ExpC1. Se a expressão ExpN for
passada com o valor True (-1), a remoção será efetuada caractere a caractere de ExpC2.
Exemplo:
Alvo$="abacadabra"
Oque$="bac"
Print Retira$(Alvo$, Oque$, False)
aadabra 'removida a palavra "bac"
Agora,
Print Retira$(Alvo$, Oque$, True)
dr ‘remoção feita caractere a caractere de Oque$,
‘excluindo os caracteres b, a, c
Top Previous Next
RPad
RPad(ExpC1, ExpN, ExpC2)
Retorna a string ExpC1 "completada" à direita com o caractere passado em ExpC2, forçando um
tamanho igual a ExpN.
Exemplo:
x$ = "SSI Tecnologia Ltda"
Print RPad$(x$, 40, "*")
SSI Tecnologia Ltda********************
Top Previous Next
Substitui
Substitui(ExpC1, ExpC2, ExpC3, ExpN)
Substitui todas as ocorrências de ExpC2 em ExpC1 por ExpC3. Se o argumento ExpN for
passado como True (-1), a substituição será feita caractere a caractere, ou seja, cada caractere de
ExpC2 será substituído pelo caractere correspondente em ExpC3. Não existindo um caractere
correspondente em ExpC3, o caractere de ExpC2 será removido, resultando numa string que poderá
ser maior ou menor, dependendo dos argumentos.
Exemplo:
Alvo$="abacadabra"
Oque$="bac"
PeloQue$="***"
Print Substitui$(Alvo$, Oque$, PeloQue$, False)
a***adabra ' "bac" foi substituído por "***"
Agora,
Print Substitui$(Alvo$, Oque$, PeloQue$, True)
*****d**r* ' a, b, c foram substuídos por *
Top Previous Next
ValBrasil
ValBrasil(ExpC)
Esta função é útil quando se quer pegar o valor numérico de uma string passada em ExpC, no
formato brasileiro, não aceitável pela função VAL() do Visual Basic, com vírgulas separando as
decimais e pontos separando os milhares.
Exemplo:
Valor$="1.234,56"
Print ValBrasil(Valor$)
1234.56 ' retorna o valor numérico exato da expressão

~ 332 ~
MANUAL DO FATHER

Top Previous Next


VCGC
VCGC(ExpC)
Retorna True (-1) se o argumento passado em ExpC é um número do Cadastro Geral de
Contribuintes (CGC válido) ou False (0) se não o for. O argumento ExpC poderá conter ou não, pontos,
barras, hífens, etc...
Exemplo:
CGC$="44.990.901/0001-41"
If VCGC(CGC$) Then
Print "O GCG informado é inválido!
End If

O CGC informado é inválido!


Top Previous Next
VDV1
VDV1(ExpC)
Retorna True (-1) se o DV (dígito verificador) de 1 dígito, módulo 11, é válido para a expressão
ExpC. O argumento ExpC poderá conter ou não, pontos, barras, hífens, etc..

Exemplo:
Numero$="0001-8"
If Not VDV1(Numero$) Then
Print "Número inválido!"
End If
Número inválido!

Top Previous Next


VDV1
VDV1(ExpC)
Retorna True (-1) se o DV (dígito verificador) de 1 dígito, módulo 11, é válido para a expressão
ExpC. O argumento ExpC poderá conter ou não, pontos, barras, hífens, etc..

Exemplo:
Numero$="0001-8"
If Not VDV1(Numero$) Then
Print "Número inválido!"
End If
Número inválido!

Top Previous Next


VDV1
VDV1(ExpC)
Retorna True (-1) se o DV (dígito verificador) de 1 dígito, módulo 11, é válido para a expressão
ExpC. O argumento ExpC poderá conter ou não, pontos, barras, hífens, etc..

Exemplo:
Numero$="0001-8"
If Not VDV1(Numero$) Then
Print "Número inválido!"
End If
Número inválido!

Top Previous Next


VDHORA
VHora(ExpC)
Retorna True (-1) se a hora passada em ExpC representa uma hora válida.
Exemplo:
Hora$="10:25:60"
If Not VHora(Hora$) Then
Print "Hora ilegal!"
End If
Hora ilegal!

~ 333 ~
MANUAL DO FATHER

Top Previous Next


VDHORA
VHora(ExpC)
Retorna True (-1) se a hora passada em ExpC representa uma hora válida.
Exemplo:
Hora$="10:25:60"
If Not VHora(Hora$) Then
Print "Hora ilegal!"
End If
Hora ilegal!

Top Previous Next


Variáveis de sistema

As variáveis de sistema se dividem em 3 categorias:

• Variáveis de Abrangência Global

• Variáveis de Abrangência de Formulário

• Variáveis de Abrangência Local

Vejamos, a seguir, as definições dessas variáveis.

VARIAVEL DE ABRANGENCIA GLOBAL


Top Previous Next
vgPwUsuario
Do tipo caractere, essa variável contém o nome do usuário, dentro do plano de senhas, que está
acessando a aplicação no momento.
Top Previous Next
vgPwUsuario
Do tipo caractere, essa variável contém o nome do usuário, dentro do plano de senhas, que está
acessando a aplicação no momento.
Top Previous Next
vgPwSenha
Do tipo caractere, essa variável contém a senha do usuário que está acessando a aplicação no
momento.
Top Previous Next
vgPwObS
Do tipo caractere, essa variável contém uma informação qualquer que se deseje vincular ao
operador.
Top Previous Next
vgNomeDB
Do tipo caractere, essa variável armazena o nome completo (caminho e nome) do arquivo MDB
que armazena os dados da aplicação.
Top Previous Next
vgDBAtual
Do tipo numérico, essa variável corresponde ao número do banco de dados atualmente em uso,
caso mais de um banco de dados esteja sendo manipulado pela aplicação.

~ 334 ~
MANUAL DO FATHER

Top Previous Next


vgDirDb
Do tipo caractere, essa variável contém o nome do diretório onde existe o arquivo de dados MDB
ou o nome do servidor SQL ou Oracle utilizado. Esta variável, caso necessário, já conterá a contra-
barra "\" agregada ao final de seu conteúdo. Poderá, ainda, tornar-se um arranjo se, porventura,
existirem mais de um banco de dados MDB ou servidores SQL e Oracle integrados à aplicação.
Top Previous Next
vgDirExe
Do tipo caractere, essa variável contém o diretório onde reside o programa executável (.EXE) da
aplicação. Esta variável já tem a contra-barra ("\") agregada ao final de seu conteúdo.
Top Previous Next
vgDB
Do tipo database, essa variável armazena um objeto do tipo database relativo ao banco de dados
manipulado pela aplicação.
Top Previous Next
vgNomeIni
Do tipo caractere, essa variável armazena o nome do arquivo de inicialização (.INI) da aplicação.
Top Previous Next
vgNomeSistema
Do tipo caractere, essa variável armazena o nome (título da aplicação).
Top Previous Next
vgProjetista
Do tipo caractere, essa variável contém seu nome.
Top Previous Next
vgBotoesOk
Do tipo booleano ou flag, essa variável tem o valor True (verdadeiro) se os botões da barra já
tiverem sido acertados (habilitados ou desabilitados) para atender à situação do momento.
Top Previous Next
vgAtencao
Do tipo caractere, essa variável contém a string "ATENÇÃO!" para ser utilizada em títulos de
caixas de mensagens
Top Previous Next
vglmpConv
Do tipo booleano ou flag, essa variável tem o valor True se a impressora padrão do Windows é
uma impressora convencional (não é um fax, um modem, etc.) para impressão de consultas.
Top Previous Next
vgCtHint
Do tipo control, essa variável armazena um objeto do tipo control e contém o controle por sobre o
qual o mouse está sendo movimentado. É utilizada para identificar qual "dica" será exibida.
Top Previous Next
vgBarraFerr
Do tipo booleano, essa variável assume True se a barra de ferramentas está visível na aplicação.
Top Previous Next
vgAjudaAtiva
Do tipo booleano, essa variável contém True se a ajuda ativa deve ser exibida.
Top Previous Next
vgNomeEstacao
Do tipo caractere, se em ambiente de rede, essa variável contém o nome da estação onde a
aplicação está rodando.

~ 335 ~
MANUAL DO FATHER

Top Previous Next


vgRsPwGrupo
Do tipo recordset, essa variável armazena um objeto do tipo recordset criado a partir da tabela de
grupos de usuários no plano de senhas.
Top Previous Next
vgRsPwUsuario
Do tipo recordset, essa variável armazena um objeto do tipo recordset criado a partir da tabela de
usuários no plano de senhas.
Top Previous Next
vgRsPwTabelas
Do tipo recordset, essa variável armazena um objeto do tipo recordset criado a partir da tabela
que armazena os nomes das tabelas e permissões dentro do plano de senhas.
Top Previous Next
vgTipoAcrescDesc
Do tipo numérico (precisão dupla), essa variável corresponde, independente de estar sendo
representado em Valor ou Porcentagem, ao valor do acréscimo/desconto utilizado para o cupom fiscal
ou item corrente. O aplicativo final não só controlará o emprego dessa variável para o cupom ou item,
visto que ela é aplicável a ambos, como também irá inicializar (zerar) seu conteúdo para cada
cupom/item em particular.
Top Previous Next
vgAcrescDesc
Do tipo numérico (inteiro), essa variável identifica se o cupom fiscal corrente será acrescido ou
descontado em seu valor original (Acréscimo ou Desconto). O aplicativo final irá inicializar (zerar) seu
conteúdo para cada cupom em particular.
Top Previous Next
vgValorAcrescDesc
Do tipo numérico (precisão dupla), essa variável corresponde, independente de estar sendo
representado em Valor ou Porcentagem, ao valor do acréscimo/desconto utilizado para o cupom fiscal
ou item corrente. O aplicativo final não só controlará o emprego dessa variável para o cupom ou item,
visto que ela é aplicável a ambos, como também irá inicializar (zerar) seu conteúdo para cada
cupom/item em particular.
Top Previous Next
vgQtdItem
Do tipo numérico (inteiro), essa variável corresponde à quantidade do item corrente. O aplicativo
final irá inicializar (zerar) seu conteúdo para cada item em particular.
Top Previous Next
vgValorTroco
Do tipo numérico (precisão dupla), essa variável corresponde ao valor de troco verificado no
pagamento do cupom fiscal corrente. Se a Ação Forma Pgto for programada por você, esta será
executada primeiramente para, só então, o conteúdo da variável em questão ser inicializado (zerado).
Top Previous Next
vgValorSubtotal
Do tipo numérico (precisão dupla), essa variável corresponde ao valor de subtotal (a pagar)
verificado para o cupom fiscal corrente, desconsiderando o eventual desconto/acréscimo estabelecido.
Após a inserção de todos os itens no referido cupom, o valor do subtotal não mais se altera até que o
cupom fiscal seja fechado. O aplicativo final irá inicializar (zerar) seu conteúdo para cada cupom em
particular.
Top Previous Next
vgValorSubtotal
Do tipo numérico (precisão dupla), essa variável corresponde ao valor de subtotal (a pagar) verificado
para o cupom fiscal corrente, desconsiderando o eventual desconto/acréscimo estabelecido. Após a
inserção de todos os itens no referido cupom, o valor do subtotal não mais se altera até que o cupom
fiscal seja fechado. O aplicativo final irá inicializar (zerar) seu conteúdo para cada cupom em particular.

~ 336 ~
MANUAL DO FATHER

Top Previous Next


vgTotalPago
Do tipo numérico (precisão dupla), essa variável corresponde ao valor total pago até o momento
para o cupom fiscal corrente, totalizando-se o pagamento efetuado por intermédio de cada uma das
formas de pagamento utilizadas. O aplicativo final irá inicializar (zerar) seu conteúdo para cada cupom
em particular.
Top Previous Next
vgItemAtual
Do tipo numérico (inteiro), essa variável corresponde ao número do item corrente, dentre aqueles
já utilizados para o cupom fiscal atualmente aberto. O aplicativo final irá inicializar (zerar) seu conteúdo
para cada cupom em particular.
Top Previous Next
vgMoeda
Do tipo caractere, essa variável corresponde ao símbolo da moeda corrente contida internamente
na impressora fiscal, sem, no entanto, englobar o $. Veja o exemplo de seu conteúdo: R, US, etc. Seu
valor será resgatado a partir da impressora fiscal na abertura de quaisquer módulos tipo cupom fiscal.
Cabe ressaltar que a vgMoeda só estará disponível se for utilizada, em qualquer módulo do sistema, a
picture box de simulação de fita de impressora fiscal (propriedade Retorno ECF = Sim), independente
do modo de compatibilização com ECF adotado.

VARIAVEL DE ABRANGÊNCIA DE FORMULÁRIOS


Top Previous Next
vgSituacao
Do tipo numérico, essa variável contém um valorque indica a situação atual em que se encontra
um formulário (form). Para facilitar o teste desses valores, foram criadas algumas constantes fáceis de
memorizar:
ACAO_NAVEGANDO
ACAO_INCLUINDO
ACAO_EDITANDO
ACAO_EXCLUINDO
ACAO_EM_PROGRESSO
Top Previous Next
vgCaracterística
Do tipo numérico, essa variável assume valores que identificam a característica de um form da
aplicação. Para facilitar o teste desses valores, foram criadas algumas constantes fáceis de memorizar:
F_COMUM
F_DADOS
F_COM_PAI
F_COM_FILHO
F_COM_PAI_E_FILHO
F_GRAFICO
F_BROWSE
F_RELATORIO
F_VARIAVE
Top Previous Next
vgTipo
Do tipo numérico, essa variável assume valores que identificam o tipo do formulário ao qual se
deseja referir. Para facilitar o teste desses valores, foram criadas algumas constantes fáceis de
memorizar:
TP_COMUM
TP_TABELA
TP_PARAMETROS
TP_GRAFICO
TP_CONFGRAF
TP_BROWSE

~ 337 ~
MANUAL DO FATHER

TP_INFODB
TP_SELEQUERY
TP_RELATORIO
TP_SENHAS
TP_HELP
TP_CALC
TP_CALE
TP_VARIAVEL
Top Previous Next
vgUltimoFiltro
Do tipo caractere, essa variável contém a expressão de filtragem que foi utilizada por último
dentro deste formulário.
Top Previous Next
vgUltimoTabIndex
Do tipo numérico, essa variável contém o maior número da propriedade tabindex existente no
formulário dentre os controles possíveis de receberem dados digitados.
Top Previous Next
vgFormID
Do tipo numérico, essa variável contém o número identificador deste formulário.
Top Previous Next
vgTb
Do tipo recordset, essa variável contém um objeto recordset do tipo table (tabela) que contém a
tabela básica vinculada ao formulário.
Top Previous Next
vgTbFiltro
Do tipo recordset, essa variável contém um objeto recordset do tipo dynaset que contém a tabela
básica vinculada ao formulário.
Top Previous Next
vgTemInclusao
Do tipo booleano, essa variável contém True se é permitida a inclusão de registros neste
formulário e, consequentemente, False se não.
Top Previous Next
vgTemExclusao
Do tipo booleano, essa variável contém True se é permitida a exclusão de registros neste
formulário e, consequentemente, False se não.
Top Previous Next
vgTemProcura
Do tipo booleano, essa variável contém True se é permitida a pesquisa de registros neste
formulário e, consequentemente, False se não.
Top Previous Next
vgTemFiltro
Do tipo booleano, essa variável contém True se é permitida a filtragem de registros neste
formulário e, consequentemente, False se não.
Top Previous Next
vgTemAlteracao
Do tipo booleano, essa variável contém True se é permitida a alteração de registros neste
formulário e, consequentemente, False se não.
Top Previous Next
vgTemCondcoesEsp
Do tipo booleano , essa variável contém True se tem, pelo menos, uma condição especial (para
incluir, alterar ou excluir registros) neste formulário e, consequentemente, False se não.

~ 338 ~
MANUAL DO FATHER

Top Previous Next


vgEmBrowse
Do tipo booleano, essa variável contém True se o formulário atual estiver sendo visualizado em
uma grade e, consequentmente, False se estiver sendo visualizado em modo tela a tela.
Top Previous Next
vgCpRel???

As variáveis que iniciam com este prefixo são variáveis que armazenam os conteúdos dos
campos de relacionamento com o formulário pai. Os caracteres "???" são substituídos pelos nomes
dos respectivos campos de relacionamentos e seus tipos também variam de acordo com os tipos
desses campos.
Top Previous Next
vgRegLancado

Do tipo booleano , essa variável contém True se o registro corrente, que está sendo mostrado na
janela de dados, foi criado por um lançamento (não foi digitado).

VARIAVEL DE ABRANGÊNCIA DE LOCAL


Top Previous Next
vgNParc

Do tipo numérico, essa variável é criada em todos os módulos que geram lançamentos, desde
que a quantidade desses lançamentos seja diferente de 1. Esta variável indica o número da parcela
que está sendo gerada no momento do lançamento. Em vista disto, existe a possibilidade de se utilizar
o número da parcela (esta variável) para criar uma fórmula nos campos a serem lançados, conforme o
exemplo a seguir, que calcula a data de vencimento a cada 30 dias.
Date + 30 * vgNParc
Top Previous Next
vgCodLan

Do tipo numérico, essa variável é criada em todos os módulos que geram lançamentos e contém
uma estrutura de controle do lançamento.
Top Previous Next
Como é feito o controle de lançamentos?

O Father permite a definição de lançamentos para serem feitos em outras tabelas da aplicação,
durante a digitação de registros. Um lançamento é bastante semelhante a um processamento. Neste
último, nenhum registro é gerado dentro da tabela-alvo, sendo que somente os campos de um
determinado registro são modificados. Por isso, uma tabela que sofre processamento sempre está
relacionada com a tabela que gerou este processamento por intermédio de relacionamentos definidos
via aba Tabelas Auxiliares. No caso do lançamento, novos registros são inseridos na tabela-alvo e seus
campos imediatamente modificados com os valores estabelecidos, não havendo a necessidade de
existir relacionamento entre as tabelas. No entanto, mesmo assim é necessário que esta tabela seja
informada nas Tabelas Auxiliares.
As aplicações geradas pelo Father são capazes de controlar não só a geração desses
lançamentos como também a sua manutenção. Vamos ver, agora, como é que a aplicação controla
quais registros foram gerados por meio de lançamentos e a partir de qual arquivo foram originados.
Sempre que um lançamento é definido no projeto, o Father cria, automaticamente, dois campos
especiais nas estruturas das tabelas envolvidas:
um campo invisível e sequencial (de incremento automático) de nome INT~LAN é criado dentro da
• tabela geradora do lançamento para servir de ligação com o registro lançado na tabela alvo.

• um campo invisível de nome COD~LAN é criado dentro da tabela alvo do lançamento.

~ 339 ~
MANUAL DO FATHER

Para ilustrar, considere a seguinte tabela de Nota Fiscal:


Campo Valor
Número 3.452
Valor 1.500,00
Data 01/08/00
Parcelas 3
Vendedor PEDRO
INT~LAN 00000001

Por intermédio da saída de uma Nota Fiscal, desejamos gerar, na tabela de Contas a Pagar e
Receber, dois lançamentos: um deles lançando um pagamento da comissão do vendedor e um outro
lançando o valor recebido em 3 parcelas. Note que são DOIS lançamentos distintos em uma mesma
tabela e, um deles, com múltiplos registros na tabela-alvo (3 no nosso exemplo).
Após a saída da Nota Fiscal acima, a nossa tabela de Contas a Pagar e a Receber ficaria
conforme exibido na tabela a seguir:

Data Not Valor HIST. COD-LAN


01/08/00 D 15,00 Comiss 048-0000 0001-001
01/08/00 C 500,00 NF 3452 048-0000 0001-001-001
01/09/00 C 500,00 NF 3452 048-0000-0001-001-002
01/10/00 C 500,00 NF 3452 048-0000 0001-001-003

Observe que os valores disponibilizados nos campos (colunas Nat, Valor e Histórico) dependem
do que foi definido, na fase do projeto, para esses lançamentos. Os registros gerados por um
lançamento podem ser modificados ou excluídos pelo usuário diretamente da tela definida para a
tabela e isto pode não ser desejável. Caso queira impedir essas manutenções, a dica é utilizar a
variável de sistema vgRegLancado para montar uma condição especial de alteração ou exclusão do
registro. Esta expressão poderá ser definida por meio da interface de montagem de expressões (a
mesma utilizada para estabelecer condições, validações, etc.) para ficar assim:

Not VgRegLancado

Outro aspecto que merece ser abordado para lançamentos é que as modificações efetuadas
sobre registros gerados por lançamentos poderão se perder, caso a tabela geradora desses
lançamentos seja modificada, pois quando há uma alteracão na tabela de origem do lançamento, os
campos da tabela alvo do lançamento são refeitos.

Top Previous Next


Os arquivos de formato .DEF e .SQL
Os arquivos de extensão .DEF possuem um formato texto, proprietário do Father, e são por ele
criados e utilizados para controlar as estruturas do banco de dados da aplicação gerada e, ainda, na
criação dos utilitários de Adaptação de Arquivos e Conversor de DBF para controlar as novas
estruturas de dados. O que é mostrado a seguir é um fragmento do arquivo .DEF definido para a
aplicação Controle de Estoque que faz parte do conjunto de exemplos que acompanha o Father:
' esquema para a criação do banco de dados da aplicaçäo ESTOQUE
{
' TABELAS * * * *
TABELA Contas a pagar
{
Campo Número de lançamento (Contador) - 9999
Campo Número da nf (Inteiro) - 999
Campo Data (Data) - 99/99/99
Campo Valor (Dupla) - 999999999.99
Campo Cod~lan (Texto 20) - Invisível
Indice Lançamento (Número de lançamento Primario)
Indice Nota fiscal (Número da nf Unico)
Indice Cod~lan (Cod~lan Unico)
}
...
' RELACOES * * * *
RELACAO Notas fiscais/Itens
{

~ 340 ~
MANUAL DO FATHER

Base Notas fiscais


Estrangeira Itens da nf
Atributo ESQUERDA + ATUALIZA CASCATA + EXCLUI CASCATA
Campo Número da nf / Número da nf
}
...
' INTEGRIDADES * * * *
RELACAO PW~Usuarios em PW~Grupo
{
Base PW~Grupos
Estrangeira PW~Usuarios
Atributo ESQUERDA + ATUALIZA CASCATA + EXCLUI CASCATA
Campo Nome / Grupo
}
}
O fragmento de arquivo acima, apresenta algumas definições:
• linhas iniciadas com apóstrofe são consideradas comentários;
• as chaves "{" e "}" são utilizadas respectivamente para iniciar e terminar estruturas que definem
os elementos do banco de dados;
• as palavras-chaves TABELA, CAMPO, INDICE, INTEGRIDADE, RELACAO, etc., definem os
objetos correspondentes dentro do banco de dados;
• a palavra ESQUERDA define o tipo de join utilizado para a junção de tabelas em
relacionamentos 1-N (left-join);
• ATUALIZA CASCATA significa que os campos da tabela que está relacionada do lado "N" serão
atualizados automaticamente quando campos correspondentes na tabela do lado "1" forem
atualizados;
• EXCLUI CASCATA significa que os registros da tabela relacionada do lado "N" serão excluídos
automaticamente (em cascata) quando registros correspondentes na tabela do lado "1" forem
excluídos;
• as palavras-chaves PRIMARIO e UNICO definem índices com essas propriedades para a tabela
correspondente;
• ao lado de cada campo definido em TABELAS, aparece o seu nome no banco de dados e, entre
parênteses, o seu tipo e tamanho (se tipo caractere). A seguir, poderá aparecer, após um hífen, a
máscara a ser utilizada para a entrada de dados neste campo ou, ainda, a palavra INVISIVEL, se o
campo foi definido com este atributo.
Ao acessar este arquivo o Father cria automaticamente um banco de dados, se optado pelo
formato JET, correspondente ao que nele está definido. Usuários experientes do Father, após se
familializarem com a sua estrutura, poderão editar este arquivo com um editor ASCII qualquer e alterar
seus parâmetros, se for desejado. Cabe ressaltar que, quando utilizado o SQL Server ou Oracle, no
caso do Father Enterprise, será gerado um arquivo-script de extensão .SQL, o qual deverá ser
executado via Query Analyzer ou SQL Plus, ferramentas respectivamente do SQL Server e Oracle. Tal
script, responsável por toda criação da estrutura de um banco SQL Server ou esquema Oracle
(tabelas, campos, etc) é exemplificado abaixo, possui semelhança aos arquivos .DEF.
/* Esquema para a criação do banco de dados da aplicação */
/* Banco de dados: ESTOQUE */
/* Seleciona o banco de dados */
Use ESTOQUE
/*------------------------------------------------------------*/
/* Exclusão de triggers */
/*------------------------------------------------------------*/
if exists (select * from sysobjects where id =
object_id('Fornecedores_UPD') and sysstat & 0xf = 8)
drop trigger Fornecedores_UPD
GO
...
/*------------------------------------------------------------*/
/* Exclusão de tabelas */
/*------------------------------------------------------------*/
if exists (select * from sysobjects where id = object_id('[Contas a
pagar]') and sysstat & 0xf = 3)
drop table [Contas a pagar]
GO
...
/*------------------------------------------------------------*/
/* Exclusão de default */

~ 341 ~
MANUAL DO FATHER

/*------------------------------------------------------------*/
if exists (select * from sysobjects where id = object_id('defZero')
and sysstat & 0xf = 6)
drop default defZero
GO
...
Cabe ressaltar que as exclusões de triggers (integridades relacionais), tabelas e defaults
executadas inicialmente no script de criação do banco são exclusivamente necessárias para que se
garanta o marco da inicialização do banco de dados, evitando, assim, possíveis erros em função de
triggers, tabelas e defaults criados anteriormente no mesmo banco.
/* Criação de default */
/*------------------------------------------------------------*/
CREATE DEFAULT defZero AS 0
GO
...
/*------------------------------------------------------------*/
/* Criação de Tabelas, Indices e Atribuição de Default */
/* Produtos em estoque */
/*------------------------------------------------------------*/
CREATE TABLE [Produtos em estoque] (
Código varchar (8) NOT NULL,
[Descrição do produto] varchar (30) NOT NULL,
Unidade varchar (2) NOT NULL,
[Referência técnica] text NOT NULL,
[Quantidade em estoque] int NOT NULL,
[Quantidade mínima] smallint NOT NULL,
[Preço de custo] decimal (12, 2) NOT NULL,
[Preço indexado] decimal (10, 2) NOT NULL,
[Lucro bruto] decimal (6, 2) NOT NULL,
Perecível bit NOT NULL,
[Localização do produto] smallint NOT NULL,
[Foto do produto] image NULL,
[Data última atualização] datetime NULL,
[quick~rs] timestamp NULL,
CONSTRAINT Código PRIMARY KEY CLUSTERED
(
Código
) WITH FILLFACTOR = 90
)
GO
...
/*------------------------------------------------------------*/
/* Criação de triggers */
/*------------------------------------------------------------*/
CREATE TRIGGER Fornecedores_UPD ON Fornecedores FOR UPDATE AS
IF UPDATE([Código do fornecedor])
BEGIN
IF (SELECT COUNT(*) FROM deleted INNER JOIN [Notas fiscais] ON
deleted.[Código do fornecedor] = [Notas fiscais].[Código do
fornecedor]) > 0
BEGIN
SET NOCOUNT ON
UPDATE [Notas fiscais]
SET [Notas fiscais].[Código do fornecedor] = (SELECT
inserted.[Código do fornecedor] FROM inserted INNER JOIN
Fornecedores ON inserted.[Código do fornecedor] =
Fornecedores.[Código do fornecedor])
FROM deleted INNER JOIN [Notas fiscais] ON deleted.[Código do
fornecedor] = [Notas fiscais].[Código do fornecedor]
END
END
GO
...
Excluídas as triggers, tabelas e defaults, garantindo o marco concreto de inicialização do referido
banco, o script automaticamente executará a criação das entidades acima relacionadas, como também

~ 342 ~
MANUAL DO FATHER

informa o código descrito imediatamente acima. Para assegurar a incorruptibilidade do banco de


dados, recomendamos que se faça o backup do banco de dados antes do script ser utilizado na
adaptação do referido banco. Os ambientes SQL Server e Oracle oferecem utilitários para a execução
e restauração do backup.

O esquema de segurança utilizado nas Top Previous Next


aplicações
O JET, SQL Server e Oracle possuem seus próprios esquemas de segurança para controlar as
permissões de acesso de usuários às tabelas. Este esquema, embora seja bastante abrangente, não
permite uma maior flexibilidade para aplicações mais complexas como, por exemplo, geração de
processamentos, lançamentos, etc. Por esta razão, optou-se por não utilizar nas aplicações geradas
pelo Father o esquema de segurança interno do JET/ SQL Server/Oracle. Em contrapartida, se a opção
de gerar aplicações com plano de senhas estiver ligada, o Father cria nas aplicações o seu próprio
esquema de segurança, oferecendo a devida flexibilidade onde se faz necessária.
Se existir plano de senhas no projeto, o Father gera nas aplicações um módulo de manutenção
de senhas que permite o cadastramento de novos Grupos, desde que o usuário que esteja usando a
aplicação pertença ao grupo denominado ADMINISTRAÇÃO.
Usuários, permissões para cada uma das tabelas existentes e visualização para cada item de
menu da aplicação podem também ser cadastrados. Esse último recurso permite a você elaborar
aplicativos com um elevado grau de personalização, pois um grupo de usuários denominado
FINANCEIRO, por exemplo, não apenas terá restrição de acesso, mas também de visualização aos
itens de menu, relacionando-se apenas com os itens pertinentes ao seu grupo.
Cada usuário cadastrado está sempre vinculado a um determinado grupo. As permissões,
referentes às tabelas, designadas para os grupos são:
• visualização de dados;
• modificação de dados;
• inclusão de registros;
• exclusão de registros.

Usuários que não pertençam ao grupo ADMINISTRAÇÃO têm a permissão apenas de alterar as
suas respectivas senhas. Para acessar uma aplicação gerada com esquema de segurança, o usuário
deverá entrar com o seu nome (identificador) e com a sua senha, por intermédio de uma janela de
diálogo criada na aplicação.

Na primeira vez que a aplicação é Top Previous Next


executada...
O nome do usuário é SUPERVISOR e a senha é o nome do programa executável da aplicação, sem
a extensão, como, por exemplo, ESTOQUE. Este nome é informado durante a definição do módulo
• geral do projeto.

O grupo ADMINISTRAÇÃO é criado automaticamente dentro de plano de senhas, com um único


usuário de nome SUPERVISOR. A partir daí, novos grupos e usuários podem ser acrescentados. As
permissões são sempre dadas ao GRUPO, sendo que os usuários cadastrados neste grupo
"herdam" suas permissões. O grupo ADMINISTRAÇÃO, que tem permissões irrestritas, nunca pode
ser apagado e o usuário SUPERVISOR, dentro deste grupo, só pode ser apagado se existir um outro
• usuário cadastrado neste grupo

Esquema de compatiblidade do Father Top Previous Next


Enterprise com o SQL Server e Oracle
O SQL Server e Oracle, a exemplo de outros bancos de dados corporativos, são bancos de
dados que, praticamente, só existem nas empresas de médio e grande porte. Esses bancos de dados
corporativos não são necessariamente mais rápidos, sendo sim muito mais confiáveis. A filosofia de

~ 343 ~
MANUAL DO FATHER

banco de dados corporativo é bastante organizada, tendo uma pessoa designada especificamente para
cuidar do banco de dados (Administrador de Banco de Dados ou DBA) que gerencia, dá manutenção e,
sobretudo, autoriza a criação de tabelas e campos em tabelas já existentes e utilizadas por outras
aplicações da empresa. Normalmente, o desenvolvedor dos aplicativos necessitará solicitar a ele que
crie para a sua aplicação o meio de armazenamento dos dados. Ele, provavelmente, disponibilizará
áreas de testes, durante a fase de desenvolvimento e, só quando a sua aplicação estiver bem testada
e pronta para ser implantada, ele ligar-la-á à área de produção. Numa corporação, não pense em um
banco de dados em separado para a sua aplicação.
Raciocine que as empresas não fazem duplicação de cadastros e que, com certeza, a sua
aplicação terá de estar integrada a algumas tabelas já criadas e usadas por outras aplicações
(fornecedores, clientes, produtos, etc.). Para você criar mais campos nessas tabelas, vai ter que
justificar muito bem. É mais ou menos o que acontecia nas empresas, utilizando bancos de dados de
mainframes, antes do boom dos microcomputadores. Aplicações desenvolvidas para esses ambientes
estão em um patamar mais elevado, significando que, no momento de negociar o seu
desenvolvimento, são bastante mais caras.
Quando uma empresa decide pela utilização de um banco corporativo, ela deve inicialmente
adquirir o engine do banco de dados e comprar as licenças necessárias para que os micros da rede
possam acessá-lo. Isso quer dizer que, o engine é instalado em apenas um micro da rede, intitulado
servidor, que deve utilizar sistema operacional Windows NT 4.0/2000. As outras estações que irão
acessar este servidor apenas devem receber a informação de onde se encontra o servidor. Numa
aplicação do Father, isto acontece quando ela é executada pela primeira vez. Esta informação é
armazenada em um arquivo .INI que se encontra no diretório da aplicação. Todas as aplicações
desenvolvidas na empresa deverão estar utilizando o mesmo servidor, onde diversos bancos de dados
poderão existir.
Do ponto de vista do desenvolvimento de aplicação com o Father para SQL Server e Oracle, a
filosofia é a mesma empregada para aplicações para o Jet Engine (MDB). A diferença básica é que,
nesses bancos de dados corporativos, você deverá trabalhar, provavelmente, com vários bancos de
dados para buscar informações a serem utilizadas pela sua aplicação. Para que o Father possa gerar
aplicações para esses bancos de dados, basta escolher o tipo na janela de definição da estrutura do
mesmo. Um benefício imediato dessa facilidade é que você vai poder fazer a sua aplicação utilizando o
Jet Engine (MDB) na sua própria casa, escritório ou mesmo, em separado, na própria empresa do
cliente.
Poderá testar o protótipo do seu sistema, apresentá-lo a quem for de interesse e, quando tudo
estiver de acordo, vai precisar apenas ajustar essa opção para gerar para o SQL Server ou Oracle.
Diferentemente de aplicações que utilizam o Jet Engine (MDB), o banco de dados das aplicações
geradas para SQL Server e Oracle não será criado automaticamente. O Father gerará um script com
instruções SQL a ser passado ao DBA que o executará no servidor. Normalmente, o DBA cria o banco
de dados diretamente nesse servidor e, utilizando as ferramentas SQL Query Analyser (SQL Server) ou
SQL Plus (Oracle), executa o script gerado pelo Father para criar as tabelas, índices e triggers para
este banco de dados. O DBA deverá estar ciente de que esse script que o Father gera,contém
instruções para apagar tabelas, índices e triggers existentes e recriá-las com estrutura vazia. Isto
significa que, sempre que o script for executado, um banco de dados vazio será criado e todos os
dados se perderão! Nos casos de modificação de estrutura, onde se pretende preservar dados
existentes, você deverá marcar a opção para que o Father gere os fontes do Programa Adaptador que,
ao ser compilado e executado, irá comparar a nova estrutura com a estrutura existente no servidor. O
próprio adaptador gerará um script (ADAPTA.SQL) que, de maneira semelhante para à criação de
banco de dados, deverá ser executado pelo DBA. Neste caso, é altamente recomendável que se faça
um backup do banco de dados antes de executar o script, para que se possa retornar a uma situação
anterior, caso necessário. Aplicações SQL Server ou Oracle geradas pelo Father exigem ADO 2.5 e
respectivamente o SQL Server 7.0 SP2 e Oracle 8.1.x.

Top Previous Next


Sistemas com acesso multiusuário

Os sistemas aplicativos criados pelo Father podem, opcionalmente, ter características de


processamento que permitem múltiplos usuários acessar simultaneamente os dados. Uma vez
estabelecida esta opção, os programas fontes gerados conterão toda a codificação para garantir a
funcionalidade necessária. A programação de aplicativos multiusuário requer cuidados especiais e,
dependendo do tipo de aplicativo, pode ser bastante complexa.
Os controles utilizados pelo Father dentro dos programas criados são diversos, dependendo da
situação e do que o JET, SQL Server e Oracle permitem:

~ 344 ~
MANUAL DO FATHER

Em algumas situações, todo o banco de dados deverá ser bloqueado ao acesso de outros usuários
(aberto em modo exclusivo), como no caso de execução da rotina de reparação do banco de dados
ou em caso de existir processamento simultâneo em diversas tabelas ao mesmo tempo. Esta é a
• forma mais restritiva de sua utilização.

Na maioria dos casos, os bloqueios de acesso a outros usuários ocorrem em uma tabela inteira, o
que é menos restritivo. As tabelas podem ser abertas com proibição para leitura, impedindo que seus
dados sejam examinados por outros usuários ou, ainda, com proibição somente para gravação de
dados nesta tabela. Os bloqueios de tabelas inteiras ocorrem normalmente quando se faz necessária
• uma atualização total de uma tabela por um determinado processamento.

A forma menos restritiva é o bloqueio a nível de registro, que ocorre quando um registro individual
esteja sofrendo um processo de atualização qualquer como na edição. Deixar que dois usuários
atualizem um mesmo registro ao mesmo tempo pode redundar em desastre. Portanto, as rotinas de
edição de registros devem estar providas das instruções para bloquear o registro em edição ao
acesso de outros usuários. O JET, SQL Server e Oracle fazem o tratamento de dados em "páginas"
(normalmente de 2.048 bytes) de cada vez. O resultado disto é que, salvo em raríssimas ocasiões
em que o tamanho do registro tenha exatamente 2K, esses sistemas de gerenciamento de banco de
dados não bloqueiam individualmente um registro e sim TODOS os registros que estejam em uma
mesma página. Por exemplo, uma tabela que tenha um tamanho de registro igual a 230 bytes, teriam
9 registros bloqueados de uma só vez. Quando uma página é bloqueada por um usuário, outros
usuários não podem modificar quaisquer registros dessa página (embora possam ler esses
registros). Para o bloqueio de "páginas" de dados, esses sistemas de gerenciamento de banco de
• dados permitem dois tipos de bloqueio:

O bloqueio pessimista, que mantém a página bloqueada a partir do momento em que o método EDIT
(edição) é executado até o momento em que é gravado no banco de dados pelo método UPDATE
• (atualização).

O bloqueio otimista, utilizado nos programas criados pelo Father, que bloqueia a página de dados
• somente durante a execução do método UPDATE (atualização).

Considerações sobre o campo mltimídia Top Previous Next


(gCpMM.OCX) e digiltalização de imagens
Os campos do tipo imagem, em versões anteriores ao GAS-2001, eram implementados via
vinculação do controle gPicture a um controle Data Control (data bound), e podiam ser utilizados
somente imagens de formato .BMP e .WMF. A partir do GAS-2001, essas implementações são
efetuadas por meio do controle gCpMM sem vinculação a Data Control, sendo tal controle capaz de
armazenar qualquer tipo de imagem (.BMP, .JPG, .GIF, .TIF, etc), além de qualquer outro tipo de
mídia, como, por exemplo, .AVI, .MPG, .WAV, .MID, .MP3, etc., e qualquer tipo de documento de
aplicativos Windows, como .DOC, .RTF, .TXT, .HTM, .XLS, .WK1, .FTR, .MDB, etc.

O campo utilizado para o armazenamento dessas mídias é do tipo BLOb (Binary Large Object) e
o controle gCpMM cuida, automaticamente, da sua manipulação. Por exemplo, quando o usuário
selecionar a opção de abertura do menu do controle, o mesmo disponibilizará a mídia e utilizará o
programa aplicativo que estiver associado ao mesmo para abrir e executar essa mídia. Além disso, se
a mídia for do tipo editável (.DOC, .RTF, .XLS, etc.), quando o aplicativo for fechado, o controle
verificará, automaticamente, se a mídia foi modificada e habilitará os botões de gravação e
cancelamento para o usuário gravar no banco de dados, caso deseje, a nova mídia modificada pelo
aplicativo associado. Por esta considerável razão, todos os bancos de dados manipulados por
aplicações geradas pelo GAS-98 que utilizavam campos do tipo imagem terão de ser convertidos para
o novo formato. A SSI Tecnologia disponibiliza um pequeno utilitário, que é instalado em conjunto com
o Father, que torna esta operação bastante simples. É só executar este conversor (CONVIMG.EXE),
antes de qualquer adaptação no banco de dados, fornecendo as informações solicitadas para que o
aplicativo cuide de toda a transformação do banco de dados.
Top Previous Next
Compatibilidade do campo multimídia

~ 345 ~
MANUAL DO FATHER

com o Crystal Reports


Cabe ressaltar que, da forma como as imagens passaram a ser gravadas no campo multimídia do
Father, os bancos de dados já existentes e utilizados nas aplicações se tornaram incompatíveis com o
Crystal Reports. Por essa razão, a SSI Tecnologia adotou o campo multimídia (gCpMM.OCX) para que
funcione da maneira a seguir:

Se a mídia a ser inserida no campo for do tipo BMP, WMF ou DIB (que são os tipos que o Visual Basic
aceita gravar no banco de dados), o campo será, automaticamente, gravado no formato utilizado pelo
Visual Basic como se estivesse vinculado a um controle Data Control. Isto assegura a compatibilidade com
• o Crystal Reports;

Os demais tipos de imagens (GIF, JPG, TIF, etc.), bem como arquivos de qualquer outro tipo de mídia ou
• extensão, serão inseridos no formato proprietário do Father;

Você que já converteu o banco de dados para o Father e estiver tendo problemas com relatórios do
Crystal Reports, poderá utilizar o referido utilitário conversor para retornar as imagens ao formato anterior
(GAS-98). Neste caso, dentro de um mesmo campo multimídia, em registros diferentes, não poderá haver
• outro tipo de mídia gravado, além de imagens;

No momento da conversão do banco de dados do GAS-98 para Father, se desejar manter a


compatibilidade com o Crystal Reports, você terá de selecionar a opção de tipo de imagem BMP. Neste
caso, embora mantenha a compatibilidade com relatórios do Crystal Reports, o banco de dados não
• sofrerá qualquer redução de tamanho;

Se você desejar assegurar que o seu usuário só carregará mídias do tipo BMP, WMF ou DIB na aplicação,
• a propriedade OnlyImageBMP deverá ser ajustada para True (o default é False) durante a fase de projeto.

As recomendações de conversão aqui abordadas devem ser observadas somente se você estiver
tendo problemas com o Crystal Reports para imprimir as imagens desses campos. Se esses campos não
estiverem sendo utilizados para impressão em relatórios do Crystal Reports, recomendamos veementemente
que você converta as imagens do campo multimídia do Father para o formato JPG, que proporciona redução
drástica no tamanho do banco de dados e, consequentemente, um ganho considerável na performance da
aplicação. O G-Reports não é afetado pelos formatos das imagens gravadas no banco de dados.

O campo multimídia é dotado, ainda, de dois outros recursos importantes para facilitar a sua
manipulação:

Foi criada a propriedade MediaName (read only) para permitir obter, programaticamente, o nome da mídia
que está gravada no campo. Observe que o nome da mídia é retornado sem nenhum path anexado. Veja
• um exemplo de utilização abaixo:

NomeArqMidia$ = MMCampo(0).MediaName 'retorna: Foto1.jpg

Foi criado o método ExportMedia para exportar, programaticamente, o arquivo da mídia gravada no
campo. Este método tem um parâmetro opcional, que é o nome completo (path+nome) do arquivo a ser
exportado. Se nenhum nome for passado como parâmetro, a mídia é exportada com o nome original,
dentro do diretório temporário configurado no sistema. Se passado um nome de arquivo para exportação,
este não necessita, obrigatoriamente, ser o mesmo que esteja gravado no campo. Porém, deve ser
tomado cuidado especial com a extensão que designa o tipo de arquivo que está gravado no campo. Por
exemplo, se existir um arquivo BMP gravado no campo multimídia e for passado um parâmetro para
exportar tal arquivo como "C:\ARQUIVO.AVI", o arquivo será exportado corretamente, mas com extensão
• que não corresponde corretamente ao seu tipo.

Uma boa prática é obter o nome da mídia gravada por meio da propriedade MediaName e apurar a
extensão correta ou, se a troca de nome não for importante, anexar um path válido de destino à frente do
nome. Veja um exemplo de utilização abaixo:

MMCampo(0).ExportMedia("C:\Arquivos Exportados\" +
MMCampo(0).MediaName)

~ 346 ~
MANUAL DO FATHER

TUTORIAIS
TUTORIAL DO SQL SERVER
Top Previous Next
Introdução
Este breve tutorial apresenta passo-a-passo as definições para o projeto exemplo "Estoque" que
permitem que o mesmo use adequadamente o banco de dados SQL Server.
Para todos os passos são utilizadas as ferramentas básicas que acompanham o banco de dados.

O QUE O BANCO DE DADOS SQL SERVER


Top Previous Next
Visão geral

- Textos extraídos da Wide Word Web, sobre o banco de dados em questão;

O SQL Server é um gerenciador de Banco de dados relacional e muito robusto. Atualmente


encontra-se na versão 2005. Entre os novos recursos está a integração com o Framework .Net, que
possibilita construir rotinas utilizando as linguagens do .Net como VB.Net e C#.

Fonte: http://www.microsoft.com/brasil/msdn/sql/default.mspx (27/11/2007)

O Microsoft SQL Server 2005 Express Edition (SQL Server Express) é um produto de
gerenciamento de dados poderoso e confiável que fornece recursos robustos, proteção de dados e
desempenho para clientes de aplicativos incorporados, aplicativos Web simples e armazenamentos de
dados locais. Criado para ser de protótipo rápido e de fácil implantação, o SQL Server Express está
disponível gratuitamente e você pode redistribuí-lo com outros aplicativos. O SQL Server Express foi
criado para se integrar perfeitamente com seus outros investimentos em infra-estrutura de servidor.
Para obter mais informações sobre o SQL Server Express, consulte a página do SQL Server Express
na MSDN.

Para obter informações sobre as diferentes edições do SQL Server 2005, consulte a página de
comparação de recursos.
Artigo extraído do site: www.mcdbabrasil.com.br Autor: Nilton Pinheiro – niltonpinheiro@msn.com

1º PASSO – INSTALAÇÃO DO SQL SERVER


Top Previous Next
Baixando e instalando

Etapa 1: Baixe e instale o Windows Installer 3.1.

Etapa 2: Para plataformas de 32 bits, baixe e instale a versão de 32 bits do Microsoft .NET
Framework 2.0.

Etapa 3: Baixe o SQL Server Express clicando no link (aqui) e nesta pagina, baixar o arquivo
"SQLExpr.exe" . Para iniciar a instalação imediatamente, clique em Executar. Para instalar o SQL
Server Express depois, clique em Salvar. O SQLExpr.exe é um pacote de instalação auto-extraível do
SQL Server Express.

Etapa 4: Baixe o Microsoft SQL Server Management Studio Express clicando no link (aqui) e
nesta pagina, baixar o arquivo "SQLServer2005_SSMSEE.msi" . Para iniciar a instalação
imediatamente, clique em Executar. Para instalar o SQL Server Management Studio Express depois,
clique em Salvar. Este programa é uma ferramenta, para você acessar o banco de dados SQL Server.

Nota: SQLEXPR32.EXE é um pacote menor que pode ser usado para instalar o SQL Server

~ 347 ~
MANUAL DO FATHER

Express somente em sistemas operacionais de 32 bits. O pacote maior SQLEXPR.EXE aceita


instalação nos sistemas operacionais de 32 bits e 64 bits (instalação WOW). Não existe outra diferença
entre esses pacotes.

Top Previous Next


Instalando o SQL Server Express

Para iniciar o processo de instalação do SQL Express, efetue duplo clique sobre o arquivo
SQLEXPR.EXE, que voce baixou na etapa anterior.
Na janela End User License Agreement, leia a licença de uso e selecione o check box I accept
the licensing terms and conditions. Clique em Next para prosseguir.
O SQL Server Component Update é executado e instala os requisitos necessários para a
instalação do SQL Express como o Microsoft SQL Native Client e Microsoft SQL Server 2005 Setup
Support Files.
Na janela Welcome to the Microsoft SQL Server Installation Wizard clique em Next para
prosseguir.
No próximo passo o SQL Express apresenta a janela System Configuration Check (SCC). Da
mesma forma como no SQL Server 2005, o SQL Express faz uma verificação em busca de possíveis
problemas (requisitos mínimos de hardware e software) que possam impedir a instalação do SQL
Express. Caso algum problema seja encontrado você terá a opção de visualizar o relatório sobre o
problema encontrado e possível solução.
6. Na janela Registration Information entre com as informações solicitadas e clique em Next.
7. Na janela Feature selection, selecione os componentes que deseja instalar e clique em Next
para prosseguir.
8. A janela Instance Name (não será apresentada se você selecionar a opção Hide advanced
configuration options) permite que você selecione uma Default instance ou Named instance para sua
instalação. Uma instância pode ser Default Instance (não nomeada) ou Named Instance (nomeada).
Quando o SQL Server 2005 é instalado como Default Instance ele não requer que o cliente especifique
o nome da instância para fazer a conexão. O cliente necessita conhecer apenas o nome do servidor
SQL ao qual deseja se conectar.
Uma Named Instance é identificada pelo nome do servidor mais o nome da instância que você
especificou durante a instalação. O cliente necessita conhecer o nome do servidor e o nome da
instância para se conectar.
Por default, o SQL Server é instalado como Default Instance (não nomeada) a menos que você
especifique um nome de instância durante a instalação. Ao contrário do SQL Server, o SQL Server
Express é por default instalado como Named Instance, tendo como nome padrão para a instância o
nome “SQLExpress”. Se você não informar um nome para a instância durante a instalação ou não
desmarcar a opção Hide Advanced configuration options, o nome padrão será usado. Neste caso, você
deverá acessar o SQL Express como computername/SQLExpress (a barra utilizada aqui deve ser a
mesma utilizada na separação de diretórios).
Você também pode instalar o SQL Express como Default Instance (não nomeada) - permitindo
que apenas o nome do servidor seja informado durante a conexão se nenhuma outra versão do SQL
Server já estiver instalada no servidor como default instance. Para fazer isto, instale o SQL Express
como named instance usando como nome para a instância o nome MSSQLSERVER.
Nota: Para que o SQL Express permita informar um nome diferente para a instância, desmarque
a opção Hide Advanced configuration options na janela Registration Information no início da instalação.
9. A janela Service Account (não será apresentada se você selecionar a opção Hide advanced
configuration options) permite que se atribua a conta local system (local system account) ou uma conta
de usuário de domínio (domain user account) para iniciar os serviços SQL Server Express.
Por default o SQL Server Express é instalado tendo a conta de sistema Network Service como
conta para a inicialização dos serviços. Entretando, a recomendação é que se use uma conta de
domínio ou então crie-se uma conta local específica para a inicialização dos serviços.
10. Na janela Authentication Mode especifique o modo de segurança que deverá ser utilizado
para se conectar ao SQL Express. Muito importante usar o modo Mixed Mode, e desta forma, você irá
acessar o banco de dados, através de usuário e senha personalizado. Clique em Next.
11. Na janela Collations Settings selecione o Collation designator e o sort order desejado e clique
em Next para continuar.
Nota: Por padrão o SQL Express é instalado como case-insensitive, accent-sensitive. Ou seja,
não faz restrição a maiúsculas e minúsculas, mas faz restrição a acentuação. Com isso, durante uma
pesquisa, "João" e "joão" são a mesma coisa mas "João" e "Joao" ou "joão" e "joao" NÃO são. Para
evitar futuros problemas com acentuação ou caracteres maiúsculos e minúsculos, recomendo que você
selecione o Collate conforme tela acima. A não ser é claro, que você precise manter a compatibilidde
de collate com outos servidores. Neste caso, selecione seu collate conforme o collate das versões

~ 348 ~
MANUAL DO FATHER

anteriores.
12. Na janela Error Reporting, selecione se você deseja reportar erros para o SQL Express e
seus componentes à Microsoft. Esta opção é habilitada por padrão.
13. Na janela Ready to Install , clique em Install para iniciar o processo de instalação do SQL
Express.
Assim como no SQL Server 2005 a janela Setup Progress permite acompanhar o processo de
instalação de cada componente.

Configurando o SQL Express para a Top Previous Next


Rede
Se você esta desenvolvendo ou possui uma aplicação que irá se conectar a uma instância do
SQL Express através da rede, existe várias considerações que você deve estar ciente:
1) Por razões de segurança, os protocolos de rede são desabilitados por padrão. Você pode
habilitar os protocolos individualmente durante a instalação (quando instalando o SQL Express via linha
de comando) ou após a instalação.
2) O SQL Express é instalado como named instance por padrão.
3) O serviço SQL Browser é usado por alguns protocolos de rede para associar instâncias
nomeadas com números de portas TCP/IP. Entretanto, se o SQL Express é instalado no mesmo
computador que uma versão anterior ao SP3 do MSDE ou SQL Server 2000, pode ocorrer alguns
conflitos.
Quando você instala o SQL Express, os protocolos de rede são desabilitados por padrão. Isto faz
com que após a instalação o SQL Express não aceite conexões vindas de outras estações de uma
rede. Apenas a conexão local (na própria máquina onde o SQL Express foi instalado) é permitida. Para
permitir que o SQL Express se comunique com suas aplicações através de uma rede, você deve
primeiro habilitar um dos protocolos de rede e então iniciar o serviço SQL Browser.
O SQL Express suporta os seguintes protocolos de rede:

Protocolo de rede Descrição Padrão


Permite conectar a uma instância do SQL Express rodando
Shared
no mesmo computador. Não pode ser usado para acesso de outras Habilitado
Memory
estações da rede.
Permite que outras estações se conectem ao SQL Express
TCP/IP por especificar o nome do servidor e o nome da instância (default Desabilitado
SQLExpress) ou o endereço IP e o nome da instância.
Permite que outras estações se conectem ao SQL Express
por suportar vários protocolos de rede, incluindo NetBEUI, TCP/IP
Named Pipes Desabilitado
e IPX/SPX. Ele seleciona o protocolo de rede automaticamente
baseado na configuração do cliente.

Top Previous Next


Habilitando os protocolos de Rede
Demonstrarei aqui como habilitar e configurar o protocolo TCP/IP no SQL Express usando o
utilitário SQL Server Configuration Manager.
Nota: Você deverá reiniciar o serviço do SQL Express após fazer alterações para os protocolos
de rede. Também é recomendado a reinicialização do serviço SQL Browser.

Para habilitar o protocolo TCP/IP siga os passos abaixo:


1) No menu Iniciar (Start), selecione Programas, Microsoft SQL Server 2005 e então clique sobre
SQL Server Configuration Manager.
2) Expanda SQL Server 2005 Network Configuration e clique sobre Protocols for InstanceName.
No painel da direita, clique com o botão direito sobre o protocolo TCP/IP e selecione Enable.
Top Previous Next
Configurar o protocolo TCP/IP
Para configurar o protocolo TCP/IP:

1) No SQL Server Configutation Manager, acesse o protocolo para o SQLExpress, clique com o
botão direito sobre TCP/IP e selecione Properties (Propriedades).
2) Na guia IP Addresses, para IPAll coloque 1433 em TCP Port.
Top Previous Next
Iniciando o serviço SQL Browser
~ 349 ~
MANUAL DO FATHER

Para iniciar o serviço SQL Browser, estando no SQL Server Configuration Manager:

1) Selecione SQL Server 2005 Services


2) No painel da direita, clique com o botão direito sobre o serviço SQL Server Browser e
selecione Start (Iniciar).
3) Para fazer com que o serviço seja iniciado automaticamente, clique com o botão direito e
selecione Properties (Propriedades)
4) Na guia Services (Serviços), em Start Mode selecione Automatic (Automático)
5) Clique em OK para fechar a janela e salvar as alterações.
Top Previous Next
Instalando a Ferramenta de Acesso
O SSMS(Microsoft SQL Server Management Studio Express) é um ambiente integrado que
permite você acessar, configurar, gerenciar, desenvolver e administrar os componentes do SQL Server
2005 Express; tudo isto em cima de uma interface gráfica amigável, intuitiva e de fácil manipulação.
Para instalar o SSMS basta rodar o programa Setup (Para poder instalar o SSMS você deverá ter
instalado o MSXML 6.0.)
Baixe o Microsoft SQL Server Management Studio Express clicando no link (aqui) e nesta pagina,
baixar o arquivo "SQLServer2005_SSMSEE.msi" .
Para iniciar a instalação imediatamente, clique em Executar. Para instalar o SQL Server
Management Studio Express depois, clique em Salvar.

Este programa é uma ferramenta, para você acessar o banco de dados SQL Server. Após
instalar, você poderá utilizar o atalho para acessar o SQL Server:

Top Previous Next


Criando um usuário para acesso

1.Após instalação, Acesse o SQL Server Management.


2. Efetue o login pelo usuário do windows:
3. Após autenticação, vá em Security e adicione o usuário desejado:
4. Coloque o nome desejado para acesso:
Desmarque a opção de "Enforce password policy", para que o usuário senha independente da
sua política de segurança.
5. Marque também, as opções das regras de segurança para este usuário em específico:
Clique em OK para salvar as definições.
6. Depois disto, desconecte e acesse novamente o SQL Server, usando este usuário e senha,
para ter certeza da correta permissão para esta conta.

2º PASSO – DEFINIÇÃO DO SQL SERVER NO FATHER


Top Previous Next
Selecionar tipo do BD

Na estrutura do banco de dados, marque o tipo "SQL Server" para que seja criado o script de
geração do banco e as rotinas adequadas para a manipulação de seus dados;
Os dados de login não são obrigatório já que agora podem ser informados no momento da
conexão com o banco, na primeira vez que a aplicação é executada, ou seja, no momento da criação
do arquivo .INI;

Top Previous Next


Gerar projeto

~ 350 ~
MANUAL DO FATHER

3º PASSO – CONEXÃO DO SQL SERVER NO PROJETO


Top Previous Next
Dados para conexão
Na sua aplicação, ao executar pela primeira vez, será exibido a tela de configuração da conexão
com o banco de dados:
Você deve configurar a tela de acesso ao banco de dados, como segue abaixo:
Os campos disponíveis são:
Tipo de banco: Determina o tipo de banco de dados
Nome do banco: Nome do banco de dados que a aplicação irá se conectar.
Servidor: Nome do servidor que a aplicação irá conectar.
Provider: Nome do provedor de acesso a dados a ser utilizado.
Driver: Driver de conexão com o banco de dados.
Trusted Connection: Utiliza a conexão usando usuário definido no acesso ao S.O. Caso não
marque, será solicitado o usuário e senha nos campos abaixo.
Usuário: Usuário para acesso ao banco de dados, previamente criado.
Senha: Senha para acesso ao banco de dados previamente criado.

Top Previous Next


Tutorial Instalando o Aplicativo

O Father oferece opção de gerar um aplicativo que voce poderá utilizar para instalar seu
programa em uma outra máquina, ou fazer a distribuição do mesmo.

Habilitar geração de instalador:


Com esta opção marcada, o Father irá criar um aplicativo que poderá ser utilizado para distribuir
seu aplicativo, para os casos de instalação e de atualização também.

~ 351 ~
MANUAL DO FATHER

Na aba Instalação, após habilitar a geração do instalador, você também tem disponível uma
árvore, e de acordo com o item selecionado, será exibido os campos para o devido preenchimento:

Dados para instalação


Nome do instalador:
É o nome que o projetisa irá dar ao aplicativo de instalação. Em geral se utilizar Setup.exe,
entretanto, você pode definir o nome que lhe for mais conveniente.
Pasta para instalação: É a pasta onde o aplicativo será instalado. Em geral se utiliza a pasta
"arquivos de programas", e ainda com uma pasta com o nome da empresa. Por exemplo o Father, é
instalado na pasta: "c:\arquivos de programas\GAS informática\GASwin".

Grupo do menu iniciar: Deve ser informado qual o grupo de aplicativos será criado. Por exemplo,
o Father utiliza a pasta GAS2007.

Sempre distribuir Visual Basic RunTime: Esta opção adiciona as dlls e ocx do Visual Basic. Em
computadores que o visual basic ou uma outra instalação tenha adicionado os arquivos, estes arquivos
não precisam ser adicionados. Um exemplo é para o caso de atualização, uma vez que com esta
opção desmarcada, o instalador levará apenas os arquivos de execução do programa.

Sempre distribuir componente DAO360: Esta opção pode ser marcada, quando seu aplicativo for
criado utilizando o banco access com conexão via DAO.

MDAC - Descrição técnica:

O MDAC (Microsoft Data Access Components) é um conjunto de componentes utilizados para


fornecer conectividade de banco de dados em plataformas Windows. O MDAC é uma tecnologia
onipresente e provavelmente estará presente na maioria dos sistemas Windows:
Por padrão, ele está incluído no Windows XP, Windows 2000, Windows Millennium e Windows
Server 2003.
Ele também está incluído em vários outros produtos e tecnologias ou pode ser instalado por eles.
Por exemplo, o MDAC está incluído no Windows NT® 4.0 Option Pack e no SQL Server 2000. Alguns
componentes do MDAC são fornecidos como parte do Internet Explorer mesmo se o MDAC não estiver
instalado.

Sempre distribuir MDAC 2.5: O Microsoft Data Access Components 2.5 SP3 é da mesma versão
que os componentes MDAC instalados pelo Windows 2000 Service Pack 3

Sempre distribuir MDAC 2.7: O instalador redistribuível do Microsoft Data Access Components
2.7 instala a mesma versão do núcleo do Data Access dos componentes do MDAC instalados pelo
Microsoft Windows XP. Essa versão não inclui Microsoft Jet, o Microsoft Jet OLE DB Provejar, o driver
ODBC para os drivers do banco de dados da área de trabalho ou o driver ODBC para o Visual FoxPro.
Sempre distribuir MDAC 2.8: Microsoft Data Access Components (MDAC) 2.8 instala os mesmos
componentes principais do Data Access que o Microsoft SQL Server OLE DB Provejar, driver ODBC. O
instalador redistribuível do MDAC 2.8 instala os mesmos componentes do núcleo do Data Access que
o Microsoft Windows Server 2003. Essa versão não inclui o Microsoft Jet, o provedor do OLE DB do
Microsoft Jet, o driver ODBC do Desktop Database Drivers nem o driver ODBC do Visual FoxPro.

Arquivos texto com informações:

Inicio do instalador: Texto que será exibido no inicio da instalação


Fim do instalador: Texto que será exibido no final da instalação
Licença de uso: Texto que será exibido como licença de uso do seu software
Figuras utilizadas no instalador:
Figura lateral: Figura que será mostrada na lateral esquerda da instalação.
Figura superior: Figura que será mostrada na parte superior da instalação.
Figura splash: Figura que será mostrada no inicio da instalação, como tela de abertura.
Arquivos adicionais:
Caminho do do arquivo: Local onde se encontra o arquivo a ser adicionado.
Destino da instalação: Local onde será instalado o aplicativo ao rodar o instalador.
Botões de opções: utilize os botões para incluir, gravar, cancelar a gravação ou excluir uma
informação.

Atalhos criados na instalação:


Atalho do Desktop: Cria um atalho no Desktop na instalação
Atalho do Quick Launch: Cria um atalho na barra de acesso rápido do windows, conhecida como

~ 352 ~
MANUAL DO FATHER

Quick Launch.
Atalho para o Help: Adiciona um atalho no grupo do menu iniciar para o Help do projeto.
Atalho para desistalação: Adiciona um atalho no grupo do menu iniciar para a desistalação do
aplicativo.
Janela de fundo:
Mostrar janela: Cria o instalador com uma janela de fundo.
Mostrar titulo da janela: Mostra o título da instalação dentro da janela de fundo.
Iniciar maximizado: Inicia a janela de instalação em formato maximizado.
Idioma da instalação:
Português: Cria a instalação no idioma Português.
Inglês: Cria a instalação no idioma Inglês.
Espanhol: Cria a instalação no idioma Espanhol.

Sistemas Operacionais:
Selecione para qual sistema operacional esta instalação será compatível. De acordo com o
sistema operacional escolhido, a aplicação poderá variar de tamanho, ficando menor ou maior, visto
que alguns dos arquivos são específicos de cada S.O.

Agora, basta gerar os fontes de seu projeto, que na tela de compilação, estará disponível a opção
para criar o executável da instalação:
Top Previous
Glossário

Alias
É um nome alternativo dado a um campo ou expressão para ser utilizado na cláusula SELECT de
uma instrução SQL, no intuito de fazê-la mais curta, mais significativa ou, ainda, para evitar conflitos na
sua execução.

ANSI
ANSI significa American National Standards Institute. É uma tabela ou conjunto de caracteres (8
bits) usado pelo Windows para permitir a representação de até 256 caracteres (0 - 255). Os primeiros
128 caracteres (0 - 127) correspondem basicamente às letras encontradas no teclado. Os demais
caracteres representam caracteres especiais, como letras de alfabeto internacional, acentos, símbolos
de moedas e frações.

Aplicação
Uma aplicação ou sistema aplicativo é um conjunto de códigos e elementos visuais que
trabalham juntos em um só programa. São elaboradas com o objetivo de executar operações inter-
relacionadas de modo a permitir a organização de informações que possam ser rapidamente
recuperadas, consultadas, processadas, listadas, etc.

Área de cliente
É toda a área útil de um formulário MDI, excetuando-se a barra de ferramentas (se visível) ou
outros objetos que possam ser colocadas neste tipo de formulário (painel e PictureBox). Na área de
cliente, os formulários filhos são agrupados, minimizados e maximizados.

Argumento
Um valor qualquer que é passado a uma função ou sub-rotina para ser por ela utilizado e, às
vezes, transformado.

Arquivo de inicialização
É um arquivo de formato texto ASCII, utilizado para conter parâmetros de configuração de uma
aplicação no ambiente Windows. Geralmente um arquivo de inicialização utiliza a extensão .INI e o
nome do programa executável que o manipula.

Arquivo DEF
Os arquivos de extensão .DEF possuem um formato texto, proprietário do Father e são por ele
criados e utilizados para controlar as estruturas do banco de dados da aplicação a ser gerada ou
mesmo na criação dos utilitários de adaptação de arquivos e conversor de DBF para controlar as novas
estruturas de dados.

Arquivo resource
Também denominado arquivo de recursos, este é um arquivo criado pelo Father, com extensão

~ 353 ~
MANUAL DO FATHER

.RC, que se apresenta com a xtensão .RES após o processo de compilação, podendo ser incluído num
projeto Visual Basic. Este tipo de arquivo pode conter imagens, strings de texto, ícones e outros
recursos. Dispondo essas informações em um arquivo separado, pode-se mudar a informação sem
reeditar o código do programa fonte, sendo muito útil para aplicações que serão traduzidas para outras
línguas. Cada projeto em Visual Basic pode conter somente um arquivo resource associado.
O Father utiliza um formato proprietário de arquivo resource (.RES) que permite a vinculação de
quaisquer formatos de imagem e sem limite de amanho. Além disso, o executável tende a diminuir
consideravelmente com o uso do arquivo resource, visto que as imagens não mais estarão vinculadas
diretamente no executável. O arquivo resource deve acompanhar o aplicativo final gerado para que
este possa funcionar.

Arranjo ou variável indexada


É um conjunto de elementos indexados sequencialmente contendo o mesmo tipo de dado. Cada
elemento em um arranjo tem um único número de índice identificador. Mudanças feitas em um
elemento do arranjo não atingem os outros elementos deste. Quando s elementos de um arranjo são
controles, este recebe o nome de arranjo de controles.

ASCII
ASCII significa American Standard Code for Information Interchange. É uma tabela ou conjunto
de caracteres (7 bits) usado largamente para representar letras e símbolos encontrados nos teclados.
O conjunto de caracteres ASCII representa os primeiros 128 caracteres da tabela ANSI. Certos tipos de
arquivos são normalmente denominados arquivos ASCII em virtude de só conterem esses tipos de
caracteres e, ainda, cada uma de suas linhas, serem terminadas com os caracteres de código 13 e 10
(retorna ao início e nova linha).

Asterisco
O caractere (*) é utilizado como "curinga" em expressões SQL que contenham a cláusula LIKE
para aceitar qualquer sequência de caracteres. Por exemplo, a expressão LIKE "*cidade*" aceita
qualquer nome contendo a palavra "cidade". O asterisco pode também ser utilizado para incluir todos
os campos existentes nas tabelas envolvidas em uma query SQL. Por exemplo, SELECT * FROM
MinhaTab retorna todos os campos (colunas) da tabela MinhaTab.

Banco de campos
Coleção de campos e atributos, formada durante a execução de um projeto, que serve para criar
novas definições de campos a partir de outros previamente definidos.

Banco de dados
É uma coleção organizada de informações. Existem muitas maneiras de se organizar um banco
de dados. Dentre as mais populares estão o método de sistema de arquivos sequencial indexado
(ISAM), bancos de dados modelo network, bancos de dados hierárquicos e bancos de dados
relacionais. Esses tipos diferem não somente na maneira como armazenam e recuperam os dados,
mas também no modelo conceitual que eles se apresentam aos usuários e programadores.
Ultimamente o modelo relacional em se firmado como padrão para projetos de bancos de dados. Isto
se deve ao próprio poder do modelo relacional e, ainda, por proporcionar uma interface padrão
chamada SQL (Structured Query Language) que permite muitas ferramentas e produtos diferentes de
bancos de dados trabalharem em conjunto, de maneira consistente e de fácil aprendizado. Um banco
de dados pode conter diversos objetos, como tabelas, índices, relações, queries, etc.

Banco de dados multiusuário


É um banco de dados que permite mais de um usuário acessar e modificar o mesmo conjunto de
dados ao mesmo tempo. Em alguns casos, o usuário adicional pode ser uma outra instância da própria
aplicação executando no mesmo ambiente e que acessa os mesmos dados como se fosse qualquer
outra aplicação.

Campo invisível
Um campo invisível é um tipo de campo que o usuário nunca pode visualizar. Este tipo de campo
é definido normalmente com a finalidade de receber valores por meio de processos de digitação em
outras tabelas. A visibilidade de um campo é estabelecida durante a definição da estrutura do banco de
dados.

Campo não editável


É um campo que nunca pode ser editado pelo usuário, utilizado normalmente para receber
valores a partir de processos de digitação em outras tabelas. Campos não editáveis podem ser
definidos no momento da formatação da tela de entrada de dados, por intermédio da propriedade

~ 354 ~
MANUAL DO FATHER

Editável do controle textbox que será utilizado para a sua digitação. Esta propriedade pode ser
ajustada para Sim (default = editável) ou Não (não editável).

Barra de ferramentas
Constitui-se de um painel na parte superior da janela, contendo diversos botões com ícones
representativos de suas funções, servindo para acelerar o acesso a operações mais comumente
usadas (atalho). Normalmente, as funções que são colocadas em botões na barra de ferramentas
podem também ser acessadas via menu.

Bit
Abreviação de "binary digit" (ou dígito binário). É a menor unidade de dados que um computador
pode armazenar. Bits são expressos por valores 1 e 0.

Bitmap
É uma imagem representada por pixels e armazenada como uma coleção de bits, na qual cada
bit corresponde a um pixel. Em sistemas a cores, mais de um bit corresponde a cada pixel. Um arquivo
bitmap tem normalmente a extensão .BMP.

Bookmark
É uma string gerada pelo sistema identificando o registro que está contido na propriedade
Bookmark de um objeto recordset. Se o valor da propriedade Bookmark for designado para uma
variável, podese posteriormente tornar este registro novamente corrente, designando para a
propriedade Bookmark o valor desta variável.

Booleano ou lógico
É um tipo de dado cujo valor pode ser Falso (False) ou Verdadeiro (True). Valores booleanos
podem ser resultados de avaliação de expressões, podendo ser armazenadas em banco de dados.

Caixa de diálogo
É uma janela especial mostrada pelo sistema ou aplicação para solicitar uma resposta do usuário
ou para exibir algum tipo de informação.

Campo
É uma divisão do registro. Nos projetos do Father, um campo possui diversos atributos como
nome, tamanho, tipo, etc. Em uma tabela, os campos correspondem às suas colunas e os registros às
suas linhas.

Campo Alvo
É o campo na tabela-alvo que sofre um processamento qualquer, determinado por um
lançamento ou por um processamento a partir da digitação de dados em outras tabelas.

Campo chave
É um campo de uma tabela designado para compor a chave de indexação da mesma, ou seja, o
campo que identifica um registro ou grupo de registros em uma tabela. Uma tabela poderá ter mais de
um campo-chave; porém, pesquisas não SQL sobre um determinado campo estão sempre
subordinados aos campos precedentes, ou seja, se a pesquisa for feita sobre a informação do segundo
campo, o primeiro também tem que ser informado.

Campo estrangeiro
É um campo qualquer definido dentro de uma tabela estrangeira, que pode ser referenciado e
mostrado em uma janela de digitação de informações, dentro de uma fórmula ou como campo alvo de
um processamento ou de um lançamento.

Caracteres curinga
Alguns caracteres como o asterisco (*), ponto de interrogação (?), cancela (# ), ponto de
exclamação (!), hífen (-) e colchetes ([ ]) são considerados caracteres "curingas". Você pode usar esses
caracteres em queries e expressões que incluam todos os registros, nomes de arquivos e outros itens
que se iniciam com caracteres que correspondam a um determinado padrão. Você pode usar também
esses caracteres para refinar mais uma pesquisa usando uma instrução SQL.
Veja a tabela a seguir:
Caractere Exemplo Localiza
pes*
* pessoa, peste, pesca, médico, ortopédico
*dico
? p?lha palha, pilha, pulha

~ 355 ~
MANUAL DO FATHER

# 1#3 103, 113, 143


[] p[ai]lha pulha (não palha)
! p[!ai]lha pulha (não palha)
- p[a-c]lha palha, pclha, pblha
Os caracteres *, ? , # e [ podem localizar a si mesmos somente se incluídos entre colchetes.

Caractere de declaração
É um caractere anexado ao final de um nome de uma variável que determina o tipo de dado que
a mesma pode armazenar, como, por exemplo, Nome$, Valor!, Total# , etc. Alguns dos tipos utilizados
são: % para variável inteira, ! para precisão simples, # para precisão dupla e $ para variável do tipo
string. O tipo de dado variant não requer qualquer caractere de declaração em especial e pode
armazenar qualquer tipo de dado.

Chave estrangeira
Um ou mais campos de tabelas que se referem a um campo ou campos de uma chave primária
de outra tabela. Por exemplo, uma lista de códigos de peças contém uma chave estrangeira para uma
tabela de inventário que contenha referências a esses códigos de peças. É utilizada quando se
estabelece uma integridade referencial para um banco de dados.

Chave primária
Um ou mais campos cujo valor ou valores unicamente identificam cada registro em uma tabela.
Em uma tabela pode existir somente uma chave primária. Uma tabela de empregados, por exemplo,
poderia usar o número de identidade como chave primária.

Classe
É a definição formal de um objeto. A classe atua como um gabarito a partir do qual uma instância
de um objeto é criada em tempo de execução. A classe define as propriedades de um objeto e os
métodos usados para controlar o comportamento do mesmo.

Cláusula From
É a parte da instrução SQL que indica a localização do dado a ser examinado pela query,
especificando qual banco de dados e quais tabelas serão incluídas na pesquisa dos dados desejados.
A localização especificada pela cláusula FROM é algumas vezes chamada de domínio.

Cláusula Group by
É a parte da instrução SQL que determina a maneira como os registros serão agrupados para
serem sumarizados.

Cláusula Order by
É a parte da instrução SQL que determina a ordem em que os registros serão recuperados e
mostrados.

Cláusula Select
É a parte da instrução SQL que determina quais os campos (colunas) das tabelas envolvidas
serão considerados nos registros a serem recuperados.

Cláusula Where
É a parte da instrução SQL que especifica quais registros serão recuperados. A cláusula WHERE
limita o domínio de uma query e especifica quais colunas serão usadas para ligar múltiplas tabelas.

Clipboard
É uma localização temporária de memória, usada para transferir texto, gráficos e código entre
janelas ou aplicações. No Father também é utilizada para transferência de definições inteiras de tabela,
janelas de dados, etc.

Código Fonte
Veja o item Programa fonte.

Compilação
É o processo de transformação de instruções escritas em uma linguagem de programação
qualquer, existente em um programa fonte, em uma linguagem numérica, que é diretamente executada
pelo processador da máquina. O programa utilitário que executa esta tarefa é o compilador, cujo
resultado é um programa executável (.EXE).

~ 356 ~
MANUAL DO FATHER

Consulta pré-definida
É um tipo de módulo que é inserido na árvore com o intuito de proporcionar ao usuário final uma
interface de consulta aos dados de uma ou mais tabelas da aplicação. Uma consulta é definida por
intermédio de uma interface amigável oferecida pelo Father.

Controle
É um objeto que pode ser colocado em uma janela que tem o seu próprio conjunto de
propriedades e eventos. Os controles são usados para receber informações do usuário, mostrar
informações e disparar eventos. Os controles podem ser manipulados utilizando-se os métodos
disponíveis para o mesmo. Alguns controles são interativos (respondem a ações do usuário), enquanto
outros são estáticos (acessados somente via código do programa).

Controles externos
A filosofia de arquitetura aberta do Visual Basic permite que terceiros possam desenvolver
controles para serem adicionados a seus projetos. Esses controles externos ou de terceiros podem
conter objetos de interface e funções exportadas, que podem ser utilizadas por outras aplicações. A
Microsoft os denomina atualmente de controles ActiveX, o que antes chamava de controle OLE. Uma
vez adicionado a um projeto do Visual Basic, estes aparecem na sua caixa de ferramentas (toolbox),
podendo ser utilizados como se fossem controles internos do próprio Visual Basic.

Controle vinculado
É um controle que reconhece dados e que proporcionam acesso a um campo específico em um
banco de dados através de um data control. Um controle vinculado pode ser ligado ao dado por meio
de suas propriedades DataSource e DataField. Quando um data control move de um registro para
outro, todos os controles a ele ligados mudam para mostrar os dados dos campos no registro corrente.
Quando o usuário altera o dado em um controle vinculado e então move para um outro registro, as
alterações são automaticamente gravadas no banco de dados.

Copy buffer
É uma determinada área de memória criada pelo gerenciador do banco de dados para armazenar
temporariamente o conteúdo de um registro que esteja aberto para edição.

Crystal reports
Programa utilitário formatador de relatórios que acompanha o Visual Basic ou pode ser adquirido
independente deste. Este programa é executado pelo Father para permitir que você possa formatar os
relatórios e etiquetas que necessitam ser criados na aplicação, quando não se faz uso do G-Reports,
outro utilitário formatador de relatórios e etiquetas desenvolvido pela SSI Tecnologia e intrínseco ao
Father. As especificações dos relatórios do Crystal Reports são gravadas em arquivos de extensão
.RPT, cuja presença é necessária durante a operação da aplicação final, para que o relatório
correspondente seja emitido.

Data control
É um controle do Visual Basic utilizado para conectar uma aplicação com uma fonte de dados
selecionada. Um controle vinculado requer o uso deste objeto como fonte de dados.

Data bound
Ver item Controle Vinculado.

Default
Significa "padrão" e corresponde a uma informação ou situação que será assumida pelo
programa quando esta não for obtida durante a sua execução.

DLL
É um tipo de biblioteca dinâmica (Dynamic Link Library) contendo funções e sub-rotinas
reutilizáveis. Desde que exista em uma DLL, uma função ou sub-rotina pode ser invocada pelo
programa para executar uma tarefa qualquer, bastando que seja declarada previamente. Essas
bibliotecas se apresentam em arquivos com extensão .DLL.

Domínio
Também denominado de escopo, domínio é um conjunto de registros definidos por uma tabela,
query ou expressão SQL. O termo escopo é também utilizado para especificar a abrangência de uma
variável. Por exemplo, uma variável que tenha escopo Global é "vista" em qualquer parte da aplicação.
Uma variável Local somente pode ser referida dentro da rotina onde foi definida.

Dynaset

~ 357 ~
MANUAL DO FATHER

É um tipo de recordset que retorna um conjunto dinâmico de ponteiros para um banco de dados.
A exemplo de um recordset do tipo table ou snapshot, um dynaset retorna dados em registros (linhas) e
campos (colunas). Diferentemente de um recordset tipo table, um dynaset pode ser resultante de uma
query que junta duas ou mais tabelas. Os registros em um dynaset podem ser atualizados.

Equi-join
É um tipo de relacionamento onde registros de duas tabelas são combinados e adicionados ao
objeto recordset somente se existirem valores iguais nos campos de ligação entre elas. Em Visual
Basic, equi-join é referido como sendo inner-join.

Etiqueta
É um tipo de módulo que pode ser inserido nos projetos do Father. Este tipo de módulo é tratado
e definido da mesma maneira como é tratado o módulo do tipo relatório.

Evento
É uma ação reconhecida por um objeto, como um clique de mouse ou uma tecla pressionada, e
para o qual podem ser programadas instruções a serem executadas (código). Eventos podem ocorrer
como resultado de uma ação do usuário ou pelo código do programa ou, ainda, podem ser disparados
pelo sistema.

Event procedure
É uma procedure que é automaticamente invocada em resposta a um evento iniciado pelo
usuário, código de programa ou sistema (Windows).

Exclusive
Indica se um banco de dados ou tabela pode ser compartilhado por outros usuários em um
ambiente multiusuário. Se o banco de dados ou tabela for aberto em modo exclusivo, não poderá ser
compartilhado.

Filtro
É um conjunto de critérios aplicados a registros de modo a criar um subconjunto destes. Os filtros
usados nas aplicações do Father utilizam queries SQL.

Form
Quer dizer "formulário". É uma janela ou caixa de diálogo. Forms são recipientes (containers) de
controles. Um form para interface de documentos múltiplos (MDI) pode também atuar como recipiente
de outros forms (filhos) e de outros controles.

Fórmula
Durante o desenvolvimento de um projeto por meio do Father, uma fórmula pode ser definida
tanto como sendo o resultado de uma operação envolvendo campos numéricos de uma ou mais
tabelas, bem como sendo um campo de uma tabela qualquer (campo estrangeiro) que é mostrado em
uma janela de digitação. Para definir uma fórmula a ser colocada na janela de digitação de dados, você
deverá designar a propriedade fórmula de um controle do tipo label, painel ou frame.

Formulário avulso
Este tipo de módulo é o ponto de entrada que o Father coloca no menu da aplicação para um
formulário (form) pertencente a uma outra aplicação, que você deseja inserir na árvoredo projeto. O
Father não controla o código existente em módulos deste tipo inseridos na árvore, sendo sua a
responsabilidade e compatibilidade com os demais módulos do projeto.

Função (Function)
É uma procedure que realiza uma tarefa específica dentro de um programa e retorna um valor.
Uma Function inicia com a instrução Function e termina com a instrução End Function.

Função agregada
É uma função, como por exemplo Count (conta) e Avg (média), usada ao criar uma query que
calcula totais. Ao escrever expressões e em programação, pode-se usar funções agregadas de SQL
para determinar várias estatísticas.

Grade
É um objeto para visualização e digitação de tabelas, que possibilita a visualização de diversos
registros ao mesmo tempo. A SSI Tecnologia desenvolveu um controle OCX (gDbGrid) constituído de
uma grade onde podem ser digitadas informações com diversos recursos de edição. Este recurso é
implementado nas aplicações geradas sempre que necessário.

~ 358 ~
MANUAL DO FATHER

Grupo
É uma coleção de usuários de uma aplicação, identificada por um nome de grupo e por um
identificador pessoal. Permissões designadas a um grupo se aplicam a todos os usuários deste grupo.

Handle
É um valor inteiro definido pelo ambiente de operação (Windows) e usado por um programa para
identificar e acessar um objeto, como, por exemplo, um form ou controle.

Ícone
É a representação gráfica de um objeto ou conceito, comumente usado para representar
aplicações em estado minimizado dentro do Windows. Essencialmente, um ícone é um bitmap com um
tamanho máximo de 32 x 32 pixels. Nomes de ícones têm a extensão .ICO.

Índice
É uma referência cruzada dinâmica de campos (colunas) de uma ou mais tabelas, que permite a
recuperação rápida de registros específicos de uma tabela. À medida que registros são adicionados,
atualizados ou apagados, o sistema de gerenciamento do banco de dados atualiza automaticamente o
índice para refletir as mudanças. Quando utilizado em um recordset do tipo table, o índice atual
determina a ordem sob a qual os registros são retornados no recordset. Uma tabela pode ter diversos
índices associados. O termo índice pode também se referir à subscrição de um arranjo ou variável
indexada.

Inner join
É um tipo de relacionamento entre duas tabelas na qual os registros das duas tabelas são
combinados e adicionados ao recordset somente se os valores dos campos de ligação corresponderem
a uma condição específica. Por exemplo, um equi-join é um inner-join na qual os valores dos campos
de ligação precisam ser iguais.

Integridade referencial
Regras que estabelecem e preservam os relacionamentos entre tabelas quando se adiciona,
altera ou apaga registros. Forçando-se a integridade referencial, o usuário fica proibido de adicionar
registros em uma tabela relacionada para a qual não exista uma chave primária, de alterar registros de
uma tabela primária que redundem em registros órfãos na tabela relacionada ou apagar registros de
uma tabela primária quando existam registros correspondentes na tabela relacionada.

Instância
Qualquer conjunto de objetos que compartilha a mesma classe. Por exemplo, múltiplas instâncias
de uma classe Form compartilham o mesmo código de programa e são carregados com os mesmos
controles que foram projetados na classe do Form. Em tempo de execução da aplicação, propriedades
individuais dos controles em cada instância podem ser ajustadas com valores diferentes.

Janela
É um recipiente para os controles utilizados em uma aplicação. Sempre existe uma janela ativa
dentro de uma aplicação. Seu título aparece normalmente em uma cor diferente das demais.

Janela modal
Descreve um form (window) ou caixa de diálogo que requer uma ação do usuário, antes que o
foco possa passar para outro form ou caixa de diálogo.

Janela tipo parãmetro


Veja tópico Parâmetros do sistema.

Jet Database engine


É o Sistema de Gerenciamento de Banco de Dados (SGBD) desenvolvido pela Microsoft, que
permite o uso de uma linguagem de programação para acessar, manipular e gerenciar bancos de
dados, seus objetos e sua estrutura. Uma das linguagens utilizada para a sua manipulação é o Visual
Basic. O Father cria programas nesta linguagem para controlar os bancos de dados das aplicações
geradas.
Devido à utilização do Microsoft Jet Engine v3.6, os aplicativos gerados pelo Father são
compatíveis com bancos de dados MS-Access 2000 e versões anteriores.

Join
É uma operação de banco de dados que combina alguns ou todos os registros de duas ou mais
tabelas, com um equi-join, outer-join ou self-join. Geralmente, um join se refere à associação entre um

~ 359 ~
MANUAL DO FATHER

campo de uma tabela e um outro campo, do mesmo tipo de dado, em uma outra tabela. Um join é
criado por meio de uma instrução SQL.

Keyword
Palavra chave. É uma palavra ou símbolo reconhecido como parte da linguagem de
programação, como, por exemplo, uma instrução, um nome de função, um operador, etc.

Left join
É um tipo de relacionamento entre duas tabelas, que inclui todos os registros da primeira tabela
(esquerda), mesmo se não existirem valores correspondentes nos campos dos registros da tabela da
direita.

Left outer join


É um outer-join no qual todos os registros do lado esquerdo de uma operação left-join são
adicionados ao objeto recordset, mesmo que não existam valores correspondentes nos campos dos
registros da tabela da direita. Registros da tabela da direita são combinados com aqueles da tabela da
esquerda somente quando existem valores correspondentes nos campos de ligação. Quando um
registro da tabela da esquerda não corresponde, uma coluna com valores nulos é criada no lado
direito.

Linha separadora
À medida que você vai inserindo módulos na árvore do projeto, o mesmo está automaticamente
modelando o menu da aplicação final. Este tipo de módulo existe apenas para permitir que se insira na
árvore do projeto as linhas separadoras de itens de menus.

Máscara
É um conjunto de caracteres associados ao campo, que serve para controlar o tipo e a posição
de dígitos que serão inseridos pelo usuário. Os caracteres especiais especificados nas máscaras são:
ponto de exclamação (!) - significa que o caractere que for digitado nesta posição será transformado
• para maiúsculo, aceitando qualquer tipo de caractere;

letra maiúscula (A) - significa que o caractere que for digitado nesta posição só poderá ser alfabético,
• acentuado ou não, impedindo a inserção de dígitos numéricos;

número nove (9) - significa que somente dígitos numéricos poderão ser digitados no campo em uma
• determinada posição;

caractere (# ) - funciona de maneira idêntica ao número 9 com a diferença que espaços também
• poderão ser digitados;

letra maiúscula (N) - significa que somente dígitos numéricos ou caracteres alfabéticos poderão ser
• digitados nesta posição;

• letra maiúscula (X) - significa que qualquer caractere poderá ser digitado na posição;

caractere arroba (@) - é usado, na primeira posição da máscara, em conjunto com qualquer um dos
acima especificados. Quando este caractere figura na máscara, o caractere seguinte a este servirá
para todos os caracteres digitados no campo. Por exemplo: @! (tudo maiúsculo), @A (tudo
alfabético), etc. Combinações podem ser feitas, como por exemplo: @!@A (tudo o que for digitado
• no campo só poderá ser alfabético e em maiúsculas).

Existem alguns tipos de caracteres que podem ser colocados na máscara para serem
automaticamente inseridos no campo, não sendo necessário que o usuário os digite. Esses
caracteres são: o hífem, o ponto, barras, parênteses, colchetes e chaves. Por exemplo, na
máscara de telefone (999)999-9999 o usuário só precisará digitar os números. Mantendo
compatibilidade com as aplicações geradas pelo GAS-DOS, as máscaras de campos do tipo
caractere preenchidas totalmente com o caractere 9, a aplicação preencherá com zeros à
esquerda. Se preenchidas totalmente com #, a aplicação preencherá automaticamente com
espaços à esquerda. Por exemplo:
• o caractere "1" com máscara "9999" resultará em "0001"

~ 360 ~
MANUAL DO FATHER

• o caractere "1" com máscara "####" resultará em " 1"

Você pode também utilizar o tipo numérico.

MDI
É a abreviação de "Multiple Document Interface" (ou interface de múltiplos documentos). É um
tipo de interface no ambiente Windows na qual diversos forms (filhos) ficam contidos em um único form
(MDI form). O MDI Form é uma janela que faz o background de uma aplicação de múltiplos
documentos. Um form MDI é o recipiente dos forms filhos de uma aplicação. Este tipo de interface
proporciona um alto padrão de qualidade à aplicação, uma vez que os forms são agrupados em um só
recipiente na área de cliente, podendo ali serem organizados, manipulados e minimizados, dando
grande flexibilidade de operação à aplicação. Tanto o Father quanto as aplicações por ele geradas
possuem este tipo de interface.

Menu
Este tipo de módulo estabelece uma ponte ou bifurcação de acessos para outros módulos do
projeto. Abaixo deste tipo de módulo, podem ser inseridos diversos outros.

Método
É um procedimento interno que atua sobre um objeto.

Modal
Veja tópico Janela Modal.

Módulo
Um módulo nos projetos do Father corresponde a um tipo de entidade que se agrega ao projeto
de sistema. Os módulos são colocados hierarquicamente em uma estrutura denominada Árvore do
projeto (ou modelador). Os módulos que podem ser colocados na árvore do projeto são: menu, janela
de dados, relatório, etiqueta, consulta, rotina avulsa, programa executável, formulário avulso, formulário
existente, processo pré-definido e, ainda, a linha separadora. Em Visual Basic, um módulo é um item
de projeto, com a extensão .BAS, contendo declarações de variáveis de escopo global (públicas),
funções externas residentes em bibliotecas DLL, as Windows API, e ainda o código fonte de funções e
procedures públicas, que podem ser chamadas de qualquer ponto da aplicação.

Objeto
É a combinação de código (programas) e dados que possam ser tratados como uma unidade,
como, por exemplo, um controle, um form ou uma aplicação. Cada objeto é definido como uma classe.

OLE
Abreviação de Object Linking and Embedding (Ligação e Embutimento de Objetos). É a
tecnologia que habilita a criação de aplicações que contenham componentes de várias outras.

Outer join
É um tipo de relacionamento no qual todos os registros de uma tabela são adicionados ao objeto
recordset, mesmo se não existirem valores correspondentes nos campos de ligação da segunda
tabela. Registros da segunda tabela são combinados com aqueles da primeira tabela somente quando
existirem valores correspondentes nos campos de ligação. Registros com valores nulos são criados
quando não existirem valores correspondentes.

Parâmetros do sistema
É um tipo de janela de dados que pode ser inserida nos projetos do Father. Este módulo define
uma tabela contendo um único registro sem quaisquer índices associados, contendo campos que
podem armazenar informações que mudam com certa frequência, como, por exemplo, taxa de juros de
mercado, moeda indexadora, taxa de inflação, etc. Esta tabela permite a parametrização da aplicação
de modo que essas mudanças possam ser manipuladas pelo próprio usuário da aplicação.

Permissões
É um ou mais atributos que especificam o tipo de acesso que um usuário tem aos registros.
Permissões podem ser designadas, dentre outras ações, para incluir, alterar, visualizar e excluir
registros.

Pixel
Abreviação de "picture element" (ou elemento de figura). Um ponto que representa a menor

~ 361 ~
MANUAL DO FATHER

unidade de medida gráfica sobre uma tela. Um pixel é dependente do padrão de vídeo, ou seja, as
dimensões dos elementos da tela variam com o sistema e com a resolução.

Procedure
É uma sequência que contém instruções ou código de programa que executam como uma
unidade. Uma Function, Sub ou Property são tipos de procedures.

Processamentos
Um processamento se caracteriza pela alteração de campos de uma tabela a partir de
informações que estejam sendo digitadas em outra tabela. A tabela que sofre o processamento é
denominada de tabela-alvo e o campo que sofre o processamento é chamado de campo-alvo. O
processamento é semelhante ao lançamento sendo diferente apenas no fato de que, neste último,
existe a criação de novos registros na tabela-alvo. Um processamento é análogo a uma edição de
registros, e um lançamento é análogo a uma inclusão de registros.

Processos pré-definidos
É um tipo de módulo definido dentro do Father que permite a definição de processamentos
especiais, pré-definidos por você, para executar certas tarefas, como, por exemplo, fechamento de
mês, cálculo de folha de pagamento, baixas em estoque, históricos, etc.

Programa fonte
É um conjunto de instruções codificadas em uma determinada linguagem que executam alguma
tarefa específica. Um programa fonte precisa ser compilado para que as suas instruções possam ser
traduzidas para uma linguagem que seja entendida pelo microcomputador.

Projeto
Todas as aplicações definidas por meio do Father são tratadas como projeto de sistema, o qual
se constitui de um conjunto de informações necessárias à construção de uma aplicação que são
armazenadas e utilizadas no momento apropriado.

Property
É um tipo de procedure que cria e manipula propriedades de um módulo Classe. Uma procedure
do tipo Property inicia com a instrução Property Let, Property Get ou Property Set e termina com a
instrução End Property.

Propriedade
É um determinado atributo de um objeto. Propriedades definem características dos objetos, tais
como cor, tamanho e localização na tela ou um estado do objeto, tais como habilitado ou desabilitado.

Query
É uma instrução formalizada a um banco de dados para retornar um conjunto de registros ou
realizar uma ação específica em um conjunto de registros determinados.

Query de ação
É uma query que move ou altera dados. Queries de ação podem adicionar, apagar ou atualizar
registros. Em contraste, queries de seleção retornam registros de dados.

Query de parâmetro
É uma query que requer um ou mais valores (parâmetros) informados pelo usuário para ser
executada, como, por exemplo, o nome de uma cidade. Uma query de parâmetro não é estritamente
um outro tipo de query, sendo mais uma flexibilização de queries.

Query de seleção
É uma query que questiona sobre os dados armazenados nas tabelas e retorna um objeto
recordset sem mudar os dados. Uma vez que os dados do recordset são recuperados, consultas e
alterações podem ser feitas sobre os dados das tabelas envolvidas. Em contraste, queries de ação
podem mudar os dados e não retornar registros.

Recordset
É um conjunto lógico de registros. Existem 3 tipos de recordset: Dynaset, Snapshot e Table.

Registro
Em uma tabela, todos os dados existentes para um determinado item é chamado de registro. Por
exemplo, em um conjunto de cartões de clientes, cada cartão corresponde a um registro contendo
todas as informações de um cliente em particular. Cada item de informação dentro de um registro é

~ 362 ~
MANUAL DO FATHER

chamado de campo. Um cartão de cliente possui campos para nome, telefone, endereço, etc.

Registro corrente
É o registro em um recordset que você pode usar para modificar ou examinar seus dados, ou
seja, é o registro que está sendo correntemente acessado. Existem diversos métodos para se
movimentar no banco de dados, alterando o registro corrente.

Relação
Um banco de dados pode conter múltiplas tabelas e essas tabelas podem ser relacionadas umas
com as outras por meio de campos em comum. Uma vez relacionadas duas tabelas, os seus campos
estão disponíveis para seremacessados, independentemente de qual tabela pertencem. O
relacionamento de tabelas é feito normalmente para evitar a duplicação desnecessária de informações
no banco de dados, conforme explicado no item normalização. Um relacionamento pode ser 1-1 (1
registro de uma tabela corresponde a um único registro da tabela estrangeira) ou 1-N (cada registro da
tabela corresponde a N registros da tabela estrangeira, também denominada pai-filho).

Relatório
Um relatório é um tipo de módulo que pode ser colocado na árvore do projeto. Para estabelecer
definições dos relatórios (layout), você poderá fazer uso do G-Reports ou Cristal Reports, invocando-os
por meio do Father.

Reparação de banco de dados


É uma rotina especial que o Father disponibiliza nos programas fontes das aplicações geradas,
rotina tal que permite corrigir diversos problemas no banco de dados, como, por exemplo, perda de
índices, integridades, etc. Durante o processo de reparação do banco de dados, este é compactado,
eliminando-se os "buracos" deixados por registros que tenham sido apagados em suas tabelas, tendo
ainda todos os seus índices e integridades atualizados.

Rotina avulsa
Uma rotina avulsa é um fragmento de código fonte na linguagem Visual Basic que você labora,
utilizando o Editor de Programas do Father, de forma que integre automaticamente o projeto da
aplicação gerada.

Self join
É um join no qual registros de uma tabela são combinados com outros registros da mesma tabela
nos quais existam valores similares nos campos de ligação. Uma self-join pode ser um equi-join ou um
outer-join. Uma self-join é útil quando se deseja formular perguntas hierárquicas, como uma query que
mostre os gerentes e as pessoas que se reportam a cada um deles.

Separador
Veja item Linha Separadora.

Servidor OLE
Também chamado de Servidor de Automação OLE, é uma aplicação que disponibiliza seus
objetos a outras aplicações.

Snapshot
É uma cópia estática de um conjunto de registros recuperados de um banco de dados e copiado
para a memória. Um objeto tipo recordset pode ser criado a partir de uma tabela básica, de uma query
ou de um outro recordset. Por serem apenas cópias de registros, os snapshots não podem ser
atualizados.

SQL
SQL significa Structured Query Language (linguagem estruturada para pesquisa). Esta linguagem
utiliza comandos como SELECT (selecione), UPDATE (atualize), DELETE (apague) contendo
cláusulas como WHERE (na qual...), GROUP BY (agrupado por) e ORDER BY (ordenado por...). Essas
instruções, quando aplicadas a um objeto recordset, permitem a pesquisa e atualização de seus
registros.

Sub
É um tipo de procedure que realiza uma tarefa específica dentro de um programa; porém, não
retorna qualquer valor explícito. Uma Sub inicia com uma instrução Sub e termina com uma instrução
End Sub.

Tabela

~ 363 ~
MANUAL DO FATHER

É uma unidade básica de armazenamento em um banco de dados relacional. Uma tabela pode
ser vista como um conjunto de linhas e colunas, semelhantes a uma planilha, onde cada linha
corresponde a um registro e cada coluna corresponde a um campo.

Tabela-alvo
Uma tabela alvo é referida durante a fase de definição do projeto como sendo uma tabela
destinatária de uma validação, processamento ou lançamento, a partir de informações geralmente
contidas em outras tabelas do banco de dados.

Tabela anexada
É uma tabela existente em um outro banco de dados que é ligada ao banco de dados nativo do
Visual Basic. Os dados das tabelas anexadas permanecem nos bancos de dados externos, onde
podem ser manipulados por outras aplicações. Não é possível utilizar tabelas anexadas em um objeto
recordset do tipo table.

Tabela ANSI
Veja item ANSI.

Tabela ASCII
Veja item ASCII.

Tabela básica
É uma tabela que serve como ponto de partida para a montagem de conjuntos de registros pelas
queries. Em algumas fases da definição de projetos do Father, uma tabela-básica precisa ser definida.

Tabela estrangeira
É uma tabela de um banco de dados que contém chaves estrangeiras. Geralmente, as tabelas
estrangeiras são usadas para estabelecer ou forçar uma integridade referencial. A tabela estrangeira é,
normalmente, o lado "N" de um relacionamento 1-N. Um exemplo de tabela estrangeira é uma tabela
de códigos de estados para pedidos de clientes.

Tipo de campo
É a característica do campo que identifica o tipo e formato de dados que o mesmo pode
armazenar.

Tipo de campo cartão de crédito


É um campo do tipo caractere destinado a armazenar números de cartões de crédito, contendo
máscara única (9999 9999 9999 9999).

Tipo de campo CEP


É um campo do tipo caractere destinado a armazenar valores do Código de Endereçamento
Postal (CEP) estabelecido pela ECT.

Tipo de campo CGC


É um campo do tipo caractere destinado a armazenar valores do Cadastro Geral de Contribuintes
(CGC) estabelecido pela Receita Federal.

Tipo de campo Código de Barras


É um campo do tipo caractere destinado a armazenar os códigos de barras pré-definidos pelo
Father, podendo seguir os padrões EAN-8, EAN-13, UPC-A, 3 de 9 e 2 de 5 interleaved.

Tipo de campo CPF


É um campo do tipo caractere destinado a armazenar valores do Cadastro de Pessoas Físicas
(CPF) estabelecido pela Receita Federal.

Tipo de campo Data


É um tipo de campo destinado a armazenar valores de datas. A quantidade de posições de
armazenamento obedece o que é determinado pelo tipo de dado Data.

Tipo de campo Email


É um campo do tipo caractere destinado a armazenar dados referentes a endereços de email,
disponibilizando, de forma automática, um extensor para envio de mensagens ao endereço exposto
pelo campo, executando o programa de envio de mensagens associado (padrão).

Tipo de campo Fone

~ 364 ~
MANUAL DO FATHER

É um campo do tipo caractere destinado a armazenar dados de números de telefone.

Tipo de campo Fone com DDD


É um campo do tipo caractere destinado a armazenar dados de telefone com a informação do
código DDD (Discagem Direta à Distância).

Tipo de campo Hora


É um tipo de campo destinado a armazenar dados de horas. A quantidade necessária para
armazenamento é a mesma para o tipo de dado Data.

Tipo de campo Lista Interna


É um campo do tipo caractere que possibilita ao usuário escolher uma opção dentre uma lista
para colocar no campo.

Tipo de campo Lógico


É um tipo de campo numérico, inteiro, que armazena valores booleanos. Veja também, tipo de
dado lógico. Um campo do tipo lógico é manipulado nas aplicações do Father por meio de um objeto
checkbox que é associado automaticamente.

Tipo de campo Memo


Um campo do tipo memo é destinado a armazenar grande quantidade de texto. A quantidade de
armazenamento é a que está estabelecida no tipo de dado memo.

Tipo de campo Multimídia


Este tipo de campo permite a carga e gravação no banco de dados, de qualquer tipo de arquivo,
como por exemplo, DOC, AVI, ZIP, MID, EXE, MP3, etc., além de qualquer tipo de imagem. Se o micro
do usuário final possuir um scanner ou qualquer outro dispositivo de captura de imagens conectado,
este poderá digitalizar imagens diretamente para o campo! Se for necessária a edição do conteúdo
deste campo, a aplicação acionará automaticamente o aplicativo Windows que estiver associado ao
tipo de arquivo, ou seja, se você armazenou um DOC em um campo, a aplicação executará o MS-Word
para editá-lo; se este campo contém um arquivo JPG gravado, será convocado o editor de imagens
preferido do usuário. A aplicação gerencia automaticamente se o arquivo foi modificado e, se for o
caso, disparará o evento datachanged da aplicação, habilitando automaticamente os botões de
gravação e cancelamento, para que o usuário possa regravar o arquivo modificado no campo do banco
de dados. Aplicações manipulando imagens BMP criadas com a versão anterior ao Father poderão ser
convertidas com o utilitário conversor disponibilizado pela SSI Tecnologia. Este conversor transformará
rapidamente campos imagem BMP gravados no banco em campos multimidia contendo imagens JPG,
com a compressão que você selecionar. Assim fazendo, o tamanho do banco de dados será
drasticamente reduzido. Só para exemplificar, tipicamente, um BD com 40 MB poderá ficar, após
convertido, com menos de 2MB(!!!!) Sempre que um campo do tipo multimídia for definido, o Father
associará automaticamente um objeto para conter o arquivo e um botão para permitir o carregamento
do mesmo.

Tipo de campo Numérico


É um tipo de campo que pode armazenar valores numéricos. O tamanho de armazenamento de
um campo numérico depende do tipo de dado numérico que armazena. Alguns tipos de dados
numéricos são byte, inteiro, longo, precisão simples, precisão dupla e dinheiro.

Tipo de campo Optativo


É um campo do tipo numérico com característica de múltipla-escolha. As opções aparecem em
objetos do tipo botão de radio e são mutuamente exclusivas.

Tipo de campo Rotativo


É um tipo de campo numérico no qual o usuário, além de poder digitar diretamente o dado, pode
também clicar com o mouse em um objeto (scroll bar) para mudar o seu conteúdo. Sempre que um
campo rotativo é definido, o Father associa automaticamente os objetos necessários.

Tipo de campo UF
É um campo do tipo caractere destinado a armazenar valores de Unidades da Federação (UF).

Tipo de campo WebPage


É um campo do tipo caractere destinado a armazenar dados referentes a endereços de páginas
da InterNet, disponibilizando, de forma automática, um extensor para acesso ao endereço exposto pelo
campo, executando o browser associado (padrão).

~ 365 ~
MANUAL DO FATHER

Tipo de dado
É a característica de uma variável que determina que espécie de dado ela pode armazenar. Tipos
de dados incluem byte, lógico (booleano), precisão simples, precisão dupla, inteiro, longo, dinheiro,
data, string, objeto, variant (default) e tipos definidos pelo próprio programador, bem como tipos
específicos de objetos, como por exemplo, database (banco de dados), table (tabela), etc.

Tipo de dado Binário Longo


É um tipo de dado capaz de conter valores até 1.2 gigabytes de tamanho. É utilizado
normalmente para armazenar imagens no banco de dados.

Tipo de dado Booleano


Veja tópico Tipo de dado Lógico.

Tipo de dado Byte


É um tipo de dado fundamental usado para armazenar pequenos valores positivos variando entre
0 e 255.

Tipo de dado Data/Hora


Datas e horas são armazenadas internamente como partes diferentes de um número real. O valor
à esquerda do ponto decimal representa uma data entre 1 de janeiro de 100 e 31 de dezembro de
9999. Valores negativos representam datas anteriores a 30 de dezembro de 1899. O valor à direita do
ponto decimal representa uma hora entre 00:00:00 e 23:59:59.

Tipo de dado Dinheiro


É um tipo de dado útil para cálculos envolvendo dinheiro ou cálculos de ponto fixo nos quais a
precisão é extremamente importante. Este tipo de dado é utilizado para armazenar números de até 11
dígitos à esquerda do ponto decimal e 4 dígitos à direita. O caractere de declaração é @.

Tipo de dado Inteiro


É um tipo de dado fundamental que armazena números inteiros. Uma variável inteira armazenada
como um número de 16 bits (2 bytes) variando na faixa de -32.768 até 32.767. O caractere de
declaração deste tipo é %. Na linguagem Visual Basic, pode-se usar inteiros para armazenar valores
booleanos (True=-1, False =0).

Tipo de dado Lógico


É um valor que pode ser Falso (False) ou Verdadeiro (True). Valores booleanos podem ser
resultados de avaliação de expressões, podendo ser armazenadas em banco de dados.

Tipo de dado Longo


É um número inteiro armazenado em 4 bytes, podendo variar de -2.147.483.648 até
2.147.483.647. O seu caractere de declaração é &.

Tipo de dado Memo


É um tipo de dado ou campo que pode conter informações textuais com um tamanho de até 1.2
GB.

Tipo de dado Precisão Dupla


É um tipo de dado fundamental que pode armazenar números de pontos flutuantes de precisão
dupla. Uma variável de precisão dupla (double) é armazenada como um número de 64 bits (8 bytes)
podendo o seu valor variar de - 1.79769313486232E308 até -4.94065645841247E-324 para valores
negativos e de 4.94065645841247E- 324 até 1.797693134862325E308 para valores positivos. O
caractere de declaração deste tipo de dado é # .

Tipo de dado Precisão Simples


É um tipo fundamental de dado que armazena números de ponto flutuante. Um valor de precisão
simples é armazenado como um número de 32 bits (4 bytes) variando de -3.402823E38 até -
1.401298E- 45 para valores negativos e de 1.401298E-45 até 3.402823E38 para valores positivos. O
caractere de declaração é !.

Tipo de dado String


É um tipo fundamental que armazena informação do tipo caractere. Uma variável string pode
conter aproximadamente 65.535 bytes (64K), podendo ser de tamanho fixo ou de tamanho variável,
contendo um caractere por byte. Strings de tamanho fixo são declaradas como tendo um tamanho
específico enquanto as strings de tamanho variável podem ter um tamanho de até 64K. O caractere de
declaração é $.

~ 366 ~
MANUAL DO FATHER

Tipo de dado Variant


É um tipo de dado especial que pode conter valores numéricos, string e datas, bem como os
valores especiais Empty e Null (vazio e nulo). Se nenhum caractere de declaração for adicionado ao
final de um nome de variável, esta será tratada como Variant.

Update
É o processo que salva as mudanças dos dados em um registro. Até que um registro seja salvo,
as mudanças são armazenadas em um registro temporário chamado copy buffer. A cláusula UPDATE
em uma instrução SQL muda valores dos dados em um ou mais registros (linhas) em uma tabela.

Usuário
Um usuário é qualquer pessoa que esteja utilizando uma determinada aplicação. Em sistemas
gerados pelo Father que contenham esquemas de segurança, usuários podem ser cadastrados dentro
de grupos, herdando as permissões inerentes a este.

Validação
É o processo de verificação se uma certa informação fornecida em um campo atende a certas
condições ou limitações.

Variável
Tecnicamente, é uma localização de memória que contém um dado que pode ser modificado
durante a execução de um programa. Cada variável tem um nome sob o qual é identificada como única
dentro do seu nível de atuação. O tipo de dado armazenado pode ou não ser especificado. Os nomes
de variáveis necessitam começar com uma letra e não podem conter pontos ou caracteres embutidos e
usados para especificar tipo. Devem também ser únicas dentro da sua área de atuação e não podem
ter mais de 255 caracteres.

Visual Basic - VB
Linguagem de programação de aplicações para o ambiente Windows, desenvolvida pela
Microsoft Corporation, baseada na linguagem Basic (Beginners All Purpose Simbolic Instructions
Code), composta de elementos visuais (controles) e código (programas).

Windows API
A interface de programação de aplicação (API) se constitui de funções, mensagens, estrutura de
dados, tipos de dados e instruções que você pode usar quando cria aplicações que rodam no ambiente
Windows.

Windows metafile
É um arquivo que armazena uma imagem como objetos gráficos (linhas, círculos, polígonos) ao
invés de pixels. Existe dois tipos de metafiles: padrão e implementado. Arquivos metafile do tipo padrão
possuem usualmente a extensão (.WMF) enquanto os arquivos metafile implementados possuem a
extensão .EMF. Arquivos metafile preservam a imagem de uma maneira mais precisa do que os pixels.

Workgroup
É um grupo de usuários em um ambiente multiusuário que compartilha dados de um mesmo
sistema de banco de dados.

© 2014 SSI Tecnologia

~ 367 ~

Você também pode gostar