Manual Do Father
Manual Do Father
Manual Do Father
MANUAL DO FATHER
~1~
MANUAL DO FATHER
http://www.father.inf.br/Pages/Home.aspx
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".
~2~
MANUAL DO FATHER
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 ;
11. Selecione a pasta do Menu Iniciar para armazenar o atalho de acesso ao Father e clique em
~4~
MANUAL DO FATHER
~5~
MANUAL DO FATHER
~6~
MANUAL DO FATHER
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.
•
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.
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.
~8~
MANUAL DO FATHER
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.
~ 10 ~
MANUAL DO FATHER
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
É 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.
~ 12 ~
MANUAL DO FATHER
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.
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>.
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.
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.
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
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.
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.
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.
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.
~ 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.
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.
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
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:
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:
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
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:
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
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:
~ 19 ~
MANUAL DO FATHER
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.
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
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
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.
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
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.
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
~ 25 ~
MANUAL DO FATHER
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.
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
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.
Você pode optar por ocultar a barra de ferramentas, desmarcando a opção no menu Exibir:
~ 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
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.
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.
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
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.
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.
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
~ 32 ~
MANUAL DO FATHER
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.
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
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.
~ 34 ~
MANUAL DO FATHER
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.
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
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.
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
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
Esta opção serve para inserir módulos na árvore do projeto. Um módulo é inserido sempre
subordinado ao que estiver selecionado na árvore.
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
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.
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
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.
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
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.
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
Esta opção serve para refazer alterações que tenham sido desfeitas no Editor de Programas do
Father.
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
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ê.
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
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.
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
Esta opção ativa a interface de formatação do relatório ou etiqueta que está selecionado na
árvore.
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
~ 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.
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.
~ 47 ~
MANUAL DO FATHER
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
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.
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á:
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
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
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
Esta opção serve para configurar a fonte a ser utilizada na ávore do projeto. Para alterar a fonte,
utiliza o botão extensor .
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.
Nesta aba, aparecem algumas opções para utilizar em telas e relatórios, como mostra a figura a
seguir:
~ 52 ~
MANUAL DO FATHER
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.
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.
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.
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
Estabeleça os atributos de cores a serem utilizadas para exibir nas réguas auxiliares de
formatação.
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.
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.
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
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.
~ 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.
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
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.
O Modelador de Projetos pode ser fechado ao clicar no botão em destaque na figura abaixo:
~ 57 ~
MANUAL DO FATHER
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;
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.
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
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.
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:
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
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!
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".
~ 61 ~
MANUAL DO FATHER
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
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:
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
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.
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.
~ 65 ~
MANUAL DO FATHER
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.
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.
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
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.
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.
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.
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.
Tabela/Campos estrangeiros
Escolha a tabela a ser relacionada e um de seus campos para sincronizar com a tabela base.
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
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;
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:
~ 73 ~
MANUAL DO FATHER
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
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;
~ 75 ~
MANUAL DO FATHER
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 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.
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
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.
~ 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.
~ 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.
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.
É 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
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.
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
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.
O aspecto da moldura utilizada para apresentar a tela inicial pode ser configurada, alterando-se
os valores das opções:
~ 82 ~
MANUAL DO FATHER
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.
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:
~ 83 ~
MANUAL DO FATHER
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.
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
4. Clique em ;
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.
~ 86 ~
MANUAL DO FATHER
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.
Você pode inserir menus de atalho nos botões. Cada opção de menu pode ter também sua
ação personalizada.
~ 87 ~
MANUAL DO FATHER
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
Selecione a fonte a ser utilizada para exibir o título. Somente fontes do tipo true-type podem ser
selecionadas.
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
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.
~ 90 ~
MANUAL DO FATHER
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".
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
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.
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.
• 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
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;
~ 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.
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
~ 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".
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.
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.
~ 99 ~
MANUAL DO FATHER
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.
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
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.
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.
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.
Exemplos:
Str$([Produtos em estoque].Qde * 10)
"Preço: " + Format$(Produtos.Preço, ", "##,##0.00")
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
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.
Caso necessário, informe uma condição para permitir exclusões de registros nesta tabela básica.
Informe, se necessário, uma condição para permitir que registros sejam alterados pelo usuário
nesta tabela básica.
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
~ 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;
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 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.
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;
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.
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
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
~ 107 ~
MANUAL DO FATHER
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;
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
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:
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
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.
~ 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.
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
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.
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.
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.
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
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.
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.
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
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.
Esta informação está presente somente em relatórios do G-Reports. Selecione a tabela básica do
relatório a ser formatado.
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
Somente para relatórios do G-Reports, informe se este relatório deverá ser enviado para
impressora fiscal.
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
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
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.
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.
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
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
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;
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;
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:
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.
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;
~ 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:
• Horizontal
• Vertical
• Diagonal para baixo
• Diagonal para cima
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;
~ 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.
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.
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.
~ 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:
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.
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.
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.
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
Informe um título para constar na opção do menu da aplicação final que irá acionar o programa.
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.
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..
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:
Para criar um formulário avulso no projeto de uma aplicação, você deverá preencher com as
informações:
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
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:
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.
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:
Campo do tipo rotativo para que o usuário informe o número de cópias a serem emitidas do
relatório ou etiqueta.
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.
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
Você pode disponibilizar este objeto na tela para exibir qual a impressora configurada como
padrão no Windows.
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.
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.
Este botão, se inserido na tela, permite ao usuário ativar o diálogo padrão do Windows para
configurar impressoras.
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:
~ 128 ~
MANUAL DO FATHER
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.
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".
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
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.
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
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.
Caso opte ainda por excluir algum agendamento já cadastrado, o usuário deverá utilizar o botão
de exclusão mostrado a seguir.
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:
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
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
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
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.
~ 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.
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.
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
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.
~ 136 ~
MANUAL DO FATHER
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".
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.
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.
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.
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.
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:
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
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.
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
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.
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
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
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
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
~ 144 ~
MANUAL DO FATHER
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
~ 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:
~ 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.
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
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
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
~ 150 ~
MANUAL DO FATHER
~ 151 ~
MANUAL DO FATHER
~ 152 ~
MANUAL DO FATHER
~ 153 ~
MANUAL DO FATHER
~ 154 ~
MANUAL DO FATHER
~ 155 ~
MANUAL DO FATHER
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
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.
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
~ 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
~ 159 ~
MANUAL DO FATHER
Serve para designar uma cor a ser utilizada para encher o fundo do objeto (backcolor).
Top Previous Next
Tipo da borda
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
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
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
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.
~ 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
~ 163 ~
MANUAL DO FATHER
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
Serve para determinar a distância entre a margem do topo do objeto selecionado em relação ao
seu container.
Top Previous Next
Frame
~ 164 ~
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.
A janela Monta expressão pode ser usada para criar a expressão de pré-validação.
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.
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
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
~ 167 ~
MANUAL DO FATHER
~ 168 ~
MANUAL DO FATHER
Serve para designar uma cor a ser utilizada para encher o fundo do objeto (backcolor).
Top Previous Next
Enchimento
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
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
~ 170 ~
MANUAL DO FATHER
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
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
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.
Permite inserir uma ação que será executada quando uma o controle perder o foco.
~ 171 ~
MANUAL DO FATHER
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á 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.
Define qual será o banco de dados utilizado para armazenamento dos dados digitados no
controle Caixa de texto.
~ 172 ~
MANUAL DO FATHER
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
~ 173 ~
MANUAL DO FATHER
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
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.
~ 174 ~
MANUAL DO FATHER
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
~ 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
~ 178 ~
MANUAL DO FATHER
~ 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
~ 181 ~
MANUAL DO FATHER
~ 182 ~
MANUAL DO FATHER
~ 183 ~
MANUAL DO FATHER
~ 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
~ 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.
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).
~ 187 ~
MANUAL DO FATHER
Nestas opções podem ser definidos alguns aspectos que o Father deverá respeitar:
Especifique a quantidade máxima de pixels a ser considerada na altura e largura para alocar um
controle na tela.
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
Informe a quantidade máxima de colunas de campos que o Father deverá criar na janela padrão.
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.
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.
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".
~ 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.
~ 190 ~
MANUAL DO FATHER
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
Para importar um banco SQL ou MDB, utilize a opção desejada na Definição da Solução:
~ 192 ~
MANUAL DO FATHER
Para importar bancos SQL, utilize a opção em destaque na figura abaixo, na definição da
Solução.
~ 193 ~
MANUAL DO FATHER
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.
• .FRM
• .FRX
• .VBP
• .DEF
• .SQL
• .RC
~ 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:
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
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.
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 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.
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.
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.
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
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.
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 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.
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.
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
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
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:
~ 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
~ 204 ~
MANUAL DO FATHER
2. Clique no botão ;
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.
~ 205 ~
MANUAL DO FATHER
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.
(*) 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
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:
~ 207 ~
MANUAL DO FATHER
3. Clique no botão ;
~ 208 ~
MANUAL DO FATHER
Tamanho 30
Máscara @!@A
~ 209 ~
MANUAL DO FATHER
Tipo Numérico
Apelido Valor
Tamanho 12
Decimais 2
Máscara 999.999.999,99
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
Este campo é do tipo texto, apresentado para digitação em uma área com múltiplas linhas
(textbox multiline).
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.
~ 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.
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.
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.
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.
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.
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.
~ 212 ~
MANUAL DO FATHER
Tipo Numérico
Apelido Numero_da_nf
Tamanho 3
Máscara 999
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
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.
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.
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.
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".
~ 214 ~
MANUAL DO FATHER
Tipo Numérico
Apelido Quantidade_entrada
Tamanho 4
Máscara 9.999
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
~ 215 ~
MANUAL DO FATHER
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:
• 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
Para esta primeira tabela, definiremos dois índices, cada um deles com um campo:
Índice: Lançamento
Índice: Tipo
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: Decrescente
Índice: Data
~ 218 ~
MANUAL DO FATHER
Para esta tabela, definiremos um só índice, sendo ele composto de dois campos:
Número da nf
Nf e produto Primário Único
Código
Índice: Itens da NF
Para esta tabela, definiremos um índice composto pelos campos Código do Produto e Data:
~ 219 ~
MANUAL DO FATHER
A tabela Notas Fiscais conterá apenas um índice simples pelo campo "Número da NF":
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":
Índice: Código
Índice: Descrição
~ 220 ~
MANUAL DO FATHER
Nesta tabela, vamos observar algo diferente. Primeiramente, iremos definir para esta tabela um
índice composto de dois campos:
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:
~ 221 ~
MANUAL DO FATHER
Pronto! Agora, podemos criar um índice em função deste campo. Clique sobre índices e adicione:
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
3. Clique em ;
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
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".
~ 225 ~
MANUAL DO FATHER
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
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.
~ 226 ~
MANUAL DO FATHER
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
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:
~ 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:
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:
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
Utilizando a opção ilustrada na figura abaixo, vamos definir os módulos de janelas de dados do
projeto.
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
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;
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
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.
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
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;
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.
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:
~ 237 ~
MANUAL DO FATHER
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.
• 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".
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;
• Clique no botão extensor (com reticências), à direita da propriedade, e selecione a opção Nã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
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;
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
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 ;
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;
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:
Na lista "Tabela alvo" estão as tabelas auxiliares que já determinamos. Selecione a tabela "Contas a
3. Pagar";
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.
• 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!
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.
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;
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";
• 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;
... 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;
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.
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.
~ 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
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;
Clique, agora, em "Campo a mostrar" e selecione "Nome do fornecedor". Repita esse mesmo
• procedimento para a propriedade "Campo a ordenar";
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.
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:
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";
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";
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
~ 255 ~
MANUAL DO FATHER
~ 256 ~
MANUAL DO FATHER
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
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;
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:
~ 257 ~
MANUAL DO FATHER
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
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.
~ 261 ~
MANUAL DO FATHER
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;
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
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
Um excelente recurso é a possibilidade de abrir um form desvinculado dos dados, dando mais
velocidade, ideal para bancos em servidores na internet:
A nossa aplicação está toda definida. Vamos gerar os fontes para executar a aplicação. Siga os
passos abaixo:
~ 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.
Caso não haja problemas na geração de fontes, a seguinte mensagem será exibida:
Se a estrutura do banco de dados da solução tiver sido alterada, a mensagem abaixo aparecerá:
Observe, na tela a seguir, que a opção "Adaptador de arquivos" foi marcada automaticamente.
~ 265 ~
MANUAL DO FATHER
5. Clique em ;
~ 266 ~
MANUAL DO FATHER
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.
~ 267 ~
MANUAL DO FATHER
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
• Cadastro de produtos;
• Cadastro de vendas;
•
No Grid Vendas_itens haverá uma coluna para mostrar o total valor x quantidade. Esta coluna não
~ 268 ~
MANUAL DO FATHER
Ao incluir uma venda no Grid, o estoque (quantidade) do produto será decrementado na tabela
• Produtos;
~ 269 ~
MANUAL DO FATHER
~ 270 ~
MANUAL DO FATHER
~ 271 ~
MANUAL DO FATHER
Nossa aplicação terá somente um banco de dados que usará a plataforma SQL Server.
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
• 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.
~ 274 ~
MANUAL DO FATHER
seguida, clique em ;
~ 275 ~
MANUAL DO FATHER
O terceiro e último campo da tabela Tbprodutos será Produto_est, que receberá a quantidade
do produto em estoque.
seguida, clique em ;
~ 276 ~
MANUAL DO FATHER
Não é necessário digitar o nome do índice. O campo escolhido como índice será utilizado.
~ 277 ~
MANUAL DO FATHER
2. No campo "Nome", digite Tbvenda. Nesta tabela serão inseridas as vendas. Em seguida,
clique em ;
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.
O segundo campo será Venda_data, que receberá a data que cada venda é cadastrada.
~ 278 ~
MANUAL DO FATHER
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.
seguida, clique em ;
~ 279 ~
MANUAL DO FATHER
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.
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
O terceiro campo desta tabela será Produto_id, utilizado em relacionamento com a tabela
Tbprodutos. Novamente, é necessário preencher somente o nome do campo.
Em seguida, clique em ;
O próximo campo, Item_quantidade, será utilizado para receber a quantidade de cada item
vendido.
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
seguida, clique em ;
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
Não é necessário digitar o nome do índice. O campo escolhido como índice será utilizado.
~ 283 ~
MANUAL DO FATHER
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.
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
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.
~ 285 ~
MANUAL DO FATHER
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 ;
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.
~ 286 ~
MANUAL DO FATHER
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
~ 288 ~
MANUAL DO FATHER
Agora vamos criar uma união (Join) entre a tabela Tbvenda_item e a tabela Tbprodutos.
~ 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).
12. Clique em ;
~ 290 ~
MANUAL DO FATHER
Agora, após termos definido as tabelas, os relacionamentos e a View, podemos inserir os menus
para construção das telas de cadastro.
~ 291 ~
MANUAL DO FATHER
3. Dê um clique duplo em "Arquivo", desta forma o menu será inserido logo abaixo do menu
Arquivo]
~ 292 ~
MANUAL DO FATHER
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;
~ 293 ~
MANUAL DO FATHER
4. Clique em ;
Agora que a janela de dados Produtos já possuí uma tabela básica (Tbprodutos), vamos
formatar a tela Produtos.
~ 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á:
3. Feche a janela de dados Produtos. Vamos utilizar esta tela na execução da aplicação quando
formos incluir produtos.
1. Com o menu Cadastros selecionado, clique no botão para abrir a lista de módulos;
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.
5. Clique em .
~ 296 ~
MANUAL DO FATHER
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.
~ 297 ~
MANUAL DO FATHER
O resultado será:
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
7. No lado esquerdo, clique em Venda_id. O campo correspondente da tabela filha no lado direito,
automaticamente.
~ 299 ~
MANUAL DO FATHER
Top Previo
Formatando a tela Vendas
2. Em seguida, utilize o atalho <Alt> + T para formatar a tela seguindo a formatação padrão do Fath
~ 300 ~
MANUAL DO FATHER
O Grid de vendas e um gráfico serão inseridos nesta mesma tela, portanto, precisamos ampliar as
~ 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
5. Nas Ferramentas de tela, clique no controle Grid. O controle será inserido na tela Vendas;
~ 303 ~
MANUAL DO FATHER
~ 304 ~
MANUAL DO FATHER
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:
~ 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:
~ 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.
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.
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
19. Clique em ;
~ 311 ~
MANUAL DO FATHER
Agora vamos acrescentar uma expressão de Filtro à expressão SQL. Queremos que seja exibida
gráfico.
22. Na caixa de definição da Expressão SQL, clique na aba "Seleção" e siga a sequência enumera
~ 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:
~ 313 ~
MANUAL DO FATHER
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 .
~ 315 ~
MANUAL DO FATHER
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.
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 .
• Vendas;
• Produtos.
~ 317 ~
MANUAL DO FATHER
~ 318 ~
MANUAL DO FATHER
~ 319 ~
MANUAL DO FATHER
3. Clique em ;
~ 320 ~
MANUAL DO FATHER
8. Para aceitar as configurações padrões de tela, utilize o atalho <Alt> + T para formatar a
tela:
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:
~ 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.
~ 323 ~
MANUAL DO FATHER
8. Para aceitar as configurações padrões de tela, utilize o atalho <Alt> + T para formatar a
tela:
~ 324 ~
MANUAL DO FATHER
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:
~ 325 ~
MANUAL DO FATHER
Pronto! Terminamos de inserir os relatórios, que foram a última parte de nossa aplicação.
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 ;
~ 326 ~
MANUAL DO FATHER
2. Clique em ;
3. Clique em ;
~ 327 ~
MANUAL DO FATHER
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...
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...
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
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
GDV1(ExpC)
Retorna o Dígito Verificador (DV), de módulo 11, do argumento ExpC.
Exemplo:
x$="0002"
Print GDV1$(x$)
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$)
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$
~ 329 ~
MANUAL DO FATHER
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.
~ 330 ~
MANUAL DO FATHER
~ 331 ~
MANUAL DO FATHER
~ 332 ~
MANUAL DO FATHER
Exemplo:
Numero$="0001-8"
If Not VDV1(Numero$) Then
Print "Número inválido!"
End If
Número inválido!
Exemplo:
Numero$="0001-8"
If Not VDV1(Numero$) Then
Print "Número inválido!"
End If
Número inválido!
Exemplo:
Numero$="0001-8"
If Not VDV1(Numero$) Then
Print "Número inválido!"
End If
Número inválido!
~ 333 ~
MANUAL DO FATHER
~ 334 ~
MANUAL DO FATHER
~ 335 ~
MANUAL DO FATHER
~ 336 ~
MANUAL DO FATHER
~ 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
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).
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.
~ 339 ~
MANUAL DO FATHER
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:
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.
~ 340 ~
MANUAL DO FATHER
~ 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
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.
~ 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.
~ 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).
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
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;
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:
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 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
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
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.
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:
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:
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;
~ 350 ~
MANUAL DO FATHER
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.
~ 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:
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.
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.
~ 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.
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.
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.
~ 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
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.
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.
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
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.
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.
~ 364 ~
MANUAL DO FATHER
Tipo de campo UF
É um campo do tipo caractere destinado a armazenar valores de Unidades da Federação (UF).
~ 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.
~ 366 ~
MANUAL DO FATHER
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.
~ 367 ~