curso de vdf

Upload: dealmeidaricardo

Post on 14-Jul-2015

877 views

Category:

Documents


9 download

TRANSCRIPT

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 1

ndice analticoPARTE I BSICO ........................................................................................... 4 Introduo ...................................................................................................................4 OOP/EOP O que isto ?.........................................................................................4 Uma rpida explicao...........................................................................................4 Usando o Visual Dataflex ............................................................................................9 Introduo .................................................................................................................9 Workspace...............................................................................................................10 AppSrc ................................................................................................................10 Bitmaps ...............................................................................................................10 Data.....................................................................................................................10 DDSrc .................................................................................................................10 Help.....................................................................................................................10 IdeSrc ..................................................................................................................10 Programs .............................................................................................................11 Database Builder .....................................................................................................11 Criando uma workspace.......................................................................................11 Criando os arquivos .............................................................................................12 Dicionrio de Dados ............................................................................................25 Outras funes do Database Builder.....................................................................50 IDE..........................................................................................................................53 Interface com o usurio........................................................................................54 Criando o programa .............................................................................................55 Criando listas de seleo (lookups) ......................................................................56 Criando templates (modelos) ...............................................................................61 Criando views......................................................................................................64 No permitir a alterao de vendedor ...............................................................73 Incluindo novos itens apenas no final da lista...................................................73 Forar a gravao do Pedido quando entrar e sair dos itens ..............................74 Criando relatrios ................................................................................................75 Basic Report ....................................................................................................76 WinPrint ..........................................................................................................81 Crystal Reports ................................................................................................84 PARTE II AVANANDO ............................................................................... 86 A linguagem VDF ......................................................................................................86 Tipos de dados ...........................................................................................................86 Variveis e constantes ...............................................................................................87 Declarao...............................................................................................................87 Variveis locais .......................................................................................................87 Variveis globais .....................................................................................................88 Constantes ...............................................................................................................88

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 2

Expresses..................................................................................................................88 Expresses lgicas...................................................................................................90 COmandos..................................................................................................................90 Comando de atribuio ............................................................................................90 Continuando um comando na prxima linha ............................................................90 Comandos compostos ..............................................................................................90 Comandos condicionais ...........................................................................................91 If..........................................................................................................................91 Case.....................................................................................................................91 Comandos de loop ...................................................................................................92 While...................................................................................................................92 Repeat .................................................................................................................92 For.......................................................................................................................93 Procedimentos e Funes ..........................................................................................93 Procedimentos (Procedures) ....................................................................................93 Declarando Procedures ........................................................................................93 End_Procedure ...............................................................................................94 Executando procedures ........................................................................................94 Funes (Function) ..................................................................................................94 Declarando Funes.............................................................................................94 Chamando uma funo ........................................................................................94 Declarao antecipada .............................................................................................95 Observaes ............................................................................................................95 Classes........................................................................................................................95 Declarando uma classe ............................................................................................95 Propriedades............................................................................................................96 Declarao de propriedades .................................................................................96 Atribuindo valores a uma propriedade..................................................................97 Lendo valores da propriedade ..............................................................................98 Declarando propriedades antecipadamente...........................................................98 Mtodos ..................................................................................................................99 Declarando mtodos Procedure............................................................................99 Declarando mtodos Procedure Set ....................................................................101 Declarando Functions ............................................................................................102 Declarando mtodos antecipadamente ...................................................................102 Eventos..................................................................................................................103 Executando Procedures..........................................................................................103 Executando mtodos Procedure Set .......................................................................104 Chamando mtodos Function.................................................................................105 Mtodos Construtores e Destrutores ......................................................................105 Construct_Object ...............................................................................................105 Destroy_Object..................................................................................................106 Modificando mtodos herdados .............................................................................106 Avanando mensagens.......................................................................................107 Objetos privados....................................................................................................108 Self....................................................................................................................108

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 3

Herana mltipla ...................................................................................................109 Objetos.....................................................................................................................110 Declarao de objeto .............................................................................................110 Declarando novas propriedades .............................................................................110 Declarando novos mtodos ....................................................................................110 Antecipando declaraes de objetos.......................................................................111 Aninhamento de objetos ........................................................................................111 Delegao..............................................................................................................113 Delegao explcita............................................................................................114 Enviando mensagens para objetos..........................................................................115 Enviando uma mensagem para si mesmo ...........................................................115 Enviando uma mensagem para outro objeto .......................................................116 Usando handles de objeto como parmetro ........................................................116 Acesso relativo ao objeto ...................................................................................117 Nomes longos e curtos de objetos ......................................................................118 Outras formas de acessar um objeto ...................................................................119 Programas................................................................................................................120 Usando pacotes......................................................................................................120 Programas simples.................................................................................................120 Pr-compilao......................................................................................................121 Acessando atributos de classes com expresses......................................................121 Lendo propriedades usando expresses..................................................................121 Chamando funes atravs de expresses ..............................................................123

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 4

Parte I BsicoIntroduoOOP/EOP O que isto ?Uma rpida explicaoSe voc j programou em algumas linguagens mais fsseis tipo Clipper, Cobol, Basic, Fortran, etc, voc conhece a forma de programao procedural. Um programa deste tipo tem comandos que so executados em seqncia, um aps o outro, a menos que voc especifique algum desvio ou execuo de um bloco de comandos (sub-rotina) ; mas de qualquer forma, a partir do desvio ou do bloco os comandos continuam sendo executados em seqncia. Esta seqncia definida pelo programador e o usurio no tem nenhum tipo de controle sobre o fluxo da execuo. Este estilo de programao bem velho e dominou a informtica durante a era do caracter, quando reinavam os sistemas Unix (sem interface grfica), Novell, DOS e outros. Com o advento da interface grfica, este estilo de programao se tornou invivel, pois num programa existem diversos objetos como janelas, botes, cones e quem determina o que e quando vai ser executado o usurio e seu poderoso mouse. Foi a que nasceu a OOP/EOP (na verdade, elas nasceram antes da interface grfica, seno teria sido impossvel criar as prprias interfaces). Antes de comearmos a falar sobre Visual Dataflex, de extrema importncia que conheamos pelo menos os conceitos mais bsicos de OOP/EOP. Mas o que significam estas siglas ? OOP a abreviatura de Object Oriented Programming ou Programao orientada a objetos. EOP a abreviatura de Event Oriented Programming ou Programao orientada a eventos.

Para comear, no confunda OOP com EOP. A EOP faz parte da OOP, mas a recproca no verdadeira. Vamos esclarecer: Programao orientada a objetos significa trabalhar com classes, objetos, propriedades, encapsulao, mtodos, herana, polimorfismo, ligao. No se desespere: breve esclareceremos todos estes termos. Exemplo de linguagens OOP : Visual Dataflex, Delphi, Java. Programao orientada a eventos significa trabalhar apenas com objetos e os eventos que possam afet-los de alguma forma e aos quais ele pode responder. Exemplo de linguagens EOP : Access, Visual Basic.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Vamos levar estes conceitos para o mundo real.

Pgina 5

Um exemplo de programao procedural poderia ser uma receita de bolo :1. 2. 3. 4. 5. 6. 7. 8. 9. Pegue uma tigela Separe trigo, ovos, acar, fermento, etc. Jogue tudo dentro da tigela Os ovos esto com casca ? No: v para o passo 7 Sim: tire as cascas e volte ao passo 3 Misture tudo Ponha no forno Divirta-se

Se quisssemos sofisticar muito mais a arte de comer um bolo, poderamos usar a OOP, para fazer mais ou menos assim:Classe Tigela Vasilhame Propriedade Cor = Azul Propriedade Capacidade = 2 Kg Propriedade Quebra = Verdadeiro FimDaClasse Classe Ingrediente Alimento Propriedade Trigo = Falso Propriedade Ovo = Falso Propriedade Acar = Falso Propriedade Fermento = Falso Propriedade Perecvel = Verdadeiro Evento EstEstragado Execute JoguarNoLixo FimDoEvento Procedimento JogarNoLixo Se existe Lixeira ento Coloque nela Seno Jogue pela janela FimDoProcedimento FimDaClasse Classe AlimentosQueEngordam Alimento Propriedade AumentaColesterol = Verdadeiro Propriedade CausaInfarto = Verdadeiro FimDaClasse Classe ComedorCompulsivo Humano Funo EstGordo recebe Peso retorna Resposta Se Peso maior que 100 kg Resposta = Verdadeiro Seno Resposta = Falso FimDaFuno Evento AoSentirFome

Curso de Visual Dataflex __ [email protected] Vitria ES - BrazilExecute ComerUmBolo FimDoEvento Procedimento ComerUmBolo Se EstGordo(150 Kg) = Verdadeiro Saia deste Procedimento Seno Execute FazerUmBolo Execute Comer FimDoProcedimento FimDaClasse Objeto JoozinhoPesoPesado ComedorCompulsivo Evento AoFicar15MinutosSemComer Dispare o Evento AoSentirFome FimDoEvento FimDoObjeto Objeto Bolo AlimentosQueEngordam Propriedade Sabor = Jil Propriedade TemGlac = Verdadeira Use Tigela Use Ingrediente Objeto MinhaTigela uma Tigela Cor = Verde FimDoObjeto Objeto Trigo Ingrediente Trigo = Verdadeiro FimDoObjeto Objeto Ovo Ingrediente Ovo = Verdadeiro FimDoObjeto Objeto Acar Ingrediente acar = Verdadeiro FimDoObjeto Objeto Fermento Ingrediente Fermento = Verdadeiro FimDoObjeto Procedimento FazerUmBolo mova Trigo para Tigela mova Ovo para Tigela se CheirouMal dispare EstEstragado mova Acar para Tigela mova Fermento para Tigela misture tudo leve ao forno FimDoProcedimento FimDoObjeto {Bolo} FimDoPrograma.

Pgina 6

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 7

Observe que em OOP, voc no tem uma execuo passo a passo, como em procedural. Voc define vrios objetos, procedimentos, eventos, funes e, dependendo do evento que ocorrer, a coisa comea a funcionar. No nosso exemplo, o evento que iniciaria todo o processo seria AoFicar15MinutosSemComer do objeto JoozinhoPesoPesado. Vamos ento esclarecer os conceitos de OOP. Classe uma construo genrica que define propriedades, mtodos e funes que sero usados por objetos ou outras classes. Toda classe filha de alguma outra classe me, que por sua vez filha de alguma outra, e assim hierarquicamente at chegar a classe mais alta, que seria a matriarca de todas. Em nosso exemplo, definimos vrias classes derivadas de outras, cada uma com seus mtodos e propriedades: Tigela, derivada de Vasilhame; Ingrediente, derivada de Alimento; AlimentosQueEngordam, derivada de Alimentos. Objeto, na teoria OOP, uma instncia de alguma classe e, efetivamente, a forma que temos de interagir com o programa. Um objeto sempre pertence a alguma classe e herda dela todas as suas propriedades e mtodos, alm de poder definir os seus prprios ou redefinir os que foram herdados. Em nosso exemplo criamos vrios objetos : JoozinhoPesoPesado, da classe Humanos; Bolo, da classe Alimentos; Tigela, da classe Vasilhame. Note que o objeto Tigela foi criado dentro do objeto Bolo. Isto uma caracterstica da OOP: um objeto pode conter outros objetos, que por sua vez podem conter outros e assim sucessivamente. Um objeto contido em outro objeto chamado objeto-filho e, conseqentemente, um objeto que contm outro chamado objeto-pai. Observe que isto no acontece com as classes : uma classe nunca contm ou est contida em outra classe. Ela derivada de alguma classe ancestral e poder ser a origem de alguma classe descendente. Propriedade (ou atributo) uma caracterstica de um objeto ou de uma classe. Em nosso exemplo, o objeto Bolo tem duas propriedades, Sabor e TemGlace; a classe Tigela tem as propriedades Cor, Capacidade e Quebra. Encapsulao uma caracterstica da OOP na qual os objetos tm mecanismos internos que ficam totalmente ocultos do usurio. Por isto um objeto muitas vezes considerado uma caixa-preta. Voc utiliza um objeto que faz determinadas coisas dependendo de algum evento ou valor de alguma propriedade, mas no precisa necessariamente saber como ele faz isto. No exemplo, voc pode utilizar o objeto Bolo sem precisar saber em detalhes o que acontece dentro do mtodo FazerOBolo.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 8

Mtodo (ou ao) alguma operao realizada pelo objeto ou pela classe. Em nosso exemplo, a classe ComedorCompulsivo tem os mtodos AoSentirFome e ComerUmBolo. Herana a capacidade que uma classe ou objeto tm de herdar caractersticas e mtodos de sua classe ancestral e, se for o caso, modific-los. No nosso exemplo, o objeto MinhaTigela, definido dentro do objeto Bolo, herdou todas as propriedades de sua classe Tigela (Cor, Capacidade e Quebra) e alterou uma delas (Cor = Verde). Polimorfismo a capacidade que objetos diferentes tm de reagir da sua maneira a um mesmo evento. Por exemplo, para o objeto JoozinhoPesoPesado, o evento AoSentirFome dispara o mtodo ComerUmBolo ; j para um objeto Cavalo, que seria de outra classe, o mesmo evento dispararia o mtodo ComerCapim. Ligao o ato de um objeto ou classe conectar uma ao sua a outro objeto ou classe. No exemplo, o evento ComerUmBolo, da classe ComedorCompulsivo, dispara o evento FazerUmBolo do objeto Bolo.

Os conceitos que acabamos de ver fazem parte de todas as linguagens OOP, mas no das EOP. A EOP trabalha apenas com objetos e eventos e no tem, conseqentemente, nenhum suporte para todas estas outras caractersticas da OOP. Entre as vantagens da OOP sobre a programao procedural, podemos destacar: Objetos podem ser utilizados em vrios projetos diferentes, sem que o programador tenha que se preocupar com sua estrutura interna: ele apenas precisa saber como se comunicar com eles, atravs de suas propriedades ou mtodos. A manuteno do cdigo fica muito mais fcil, pois se voc necessita, por exemplo, alterar alguma caracterstica ou mtodo do objeto, voc far esta mudana apenas nele, sem se preocupar com o restante do programa. Num desenvolvimento em equipe, cada programador precisa se preocupar apenas com a classe ou objeto que est trabalhando e expor aos demais somente o que ele faz e como utiliz-lo. Como dissemos, quem utiliza uma classe ou objeto precisa saber apenas o que ele faz e no como ele faz.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 9

Usando o Visual DataflexIntroduoNosso estudo sobre o VDF ser feito atravs de prtica e teoria. Criaremos uma aplicao comercial para a que a empresa Acme SA possa controlar seus clientes, pedidos, vendedores, estoque, etc. Inicialmente, o sistema ser composto de alguns arquivos, que esto relacionados da seguinte forma :Sistema

Cliente Pedido Vendedor

Produto

ItemPed

O arquivo Sistema ter um nico registro e trs campos: ProxCliente, ProxVendedor e ProxPedido. Estes campos sero usados para controlar qual o prximo cdigo, respectivamente, do Cliente, Vendedor e Pedido. Os arquivos Cliente, Vendedor e Pedido tero seus cdigos gerados automaticamente pelo sistema, baseado no contedo dos campos do arquivo Sistema. O arquivo Pedido est relacionado com Cliente e Vendedor e o arquivo ItemPed est relacionado com Pedido e Produto. O relacionamento uma tcnica de banco de dados que associa um campo de determinado arquivo (chamado filho) com o campo de outro (chamado pai). Por exemplo, no arquivo Pedido precisamos guardar as informaes do Cliente que fez o pedido e do Vendedor que o efetuou, como nome, endereo, telefone, etc. Se no usssemos relacionamentos, para cada pedido cadastrado teramos que cadastrar todos os dados do cliente e do vendedor dentro do arquivo Pedido. Isto seria uma tremenda redundncia e causaria srios transtornos. Imagine que certo cliente que fez 15 pedidos resolvesse mudar seu nome : alm de fazermos esta alterao no cadastro do cliente, teramos que entrar em todos os 15 pedidos que ele fez e repetir a alterao! Ao invs disto, no arquivo Pedido criamos apenas um campo chamado CodCliente e relacionamos este campo com o campo Codigo do arquivo Cliente. Desta forma, quando um registro do Pedido for lido, pelo CodCliente ele l o arquivo Cliente e busca todas as informaes necessrias, sem duplicao de informaes. Antes de comear, vamos apresentar os primeiros conceitos do VDF.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 10

Workspace o ambiente de trabalho de uma aplicao. Ela define a estrutura de pastas que compe o projeto, bem como suas chaves no registro do Windows. Toda aplicao em VDF deve obrigatoriamente ter uma workspace. As ferramentas do VDF, como o IDE, Database Builder, Database Explorer e o compilador sempre estaro trabalhando numa workspace. claro que o VDF pode ter um nmero indefinido de workspaces, mas s pode trabalhar com uma de cada vez. Resumindo, a workspace a rea de trabalho de um projeto. Por padro, o VDF cria uma workspace com seis pastas. Voc pode, claro, mudar esta estrutura, mas na prtica ela tem se mostrado muito eficiente e para os propsitos deste treinamento usaremos este padro. As pastas so as seguintes :

AppSrcPasta que contm os programas-fonte da aplicao. Nela ficam todos os arquivos criados pelo IDE, como views (*.vw), selection-lists (*.sl), reportviews (*.rv), programas (*.src) e vrios outros. Alm dos arquivos criados pelo IDE, esta pasta pode conter quaisquer outros que faam parte dos fontes do sistema, como menus, tool-bars, fragmentos de cdigo (*.inc), etc.

BitmapsPasta onde ficam as imagens de bitmap utilizadas pela aplicao.

DataPasta onde ficam os arquivos de dados (*.dat), ndices (*.k*), nomes de campos (*.tag) e vrios outros que compe a base de dados. mantida pelo Database Builder.

DDSrcPasta onde ficam os arquivos de dicionrio de dados (*.DD), mantidos pelo Database Builder. Eles so utilizados pelo IDE e compilados com a aplicao.

HelpPasta que contm os arquivos de help do sistema.

IdeSrcPasta que contm templates e outras informaes do IDE.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 11

ProgramsPasta onde ficam os programas compilados pelo VDF (*.vd5, *.vd6 ou *.vd7, dependendo da verso do Visual Dataflex). Note que um sistema pode ser composto por um ou mais programas, mas ter sempre uma nica workspace.

Database BuilderCriando uma workspaceExecute o Database Builder do menu Iniciar -> Programas -> Visual Dataflex. A seguinte tela ser exibida :

Observe que o Database Builder sempre est com alguma workspace ativa, que exibida em sua barra de ttulo (neste caso, a Order Entry Sample Application, um exemplo que acompanha o VDF). Vamos criar a nossa, que chamaremos de Acme. Selecione File -> New Workspace no menu. Surgir a tela de apresentao do assistente de criao de workspaces. Clique em Next. A prxima tela pede o nome e a descrio da workspace.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 12

O nome informado em Name of new Workspace Area ser gravado no registro do windows, bem como sua estrutura de pastas. Clique em Next.

Nesta tela escolhemos que tipo de estrutura de pastas iremos utilizar: Create a standard workspace : cria a estrutura padro que falamos anteriormente (Appsrc, Bitmap, Data, DDSrc, Help, IdeSrc, Programs) na pasta informada em Name of the workspace directory. Utilizaremos este padro. Create or select a workspace directory : permite que voc informe em quais pastas ficaro os componentes da aplicao. Create an All-in-One directory : criar todos os arquivos numa nica pasta. Select all components directories manually : permite que voc informe cada componente individualmente.

Acrescente ao caminho C:\VDF\Projects\ o nome da aplicao, Acme\. Clique em Next. A prxima tela informa que a workspace foi criada. Clique em OK. A partir de agora, a descrio de nossa workspace aparece na barra de ttulo do Database Builder.

Criando os arquivosO prximo passo ser criarmos os arquivos que compe o sistema. Observe na barra de status, embaixo direita a descrio : Current filelist C:\Vdf\Projects\Acme\Data\Filelist.cfg. A filelist (lista de arquivos) um arquivo especial do VDF onde ficam armazenadas as informaes sobre todos os arquivos da aplicao, como nmero do arquivo, nome interno, nome externo, nome para usurio, entre outras. A filelist vital numa aplicao VDF

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 13

e sem ela voc no tem acesso a base de dados, portanto lembre-se sempre de inclu-la em seus back-ups. Cada workspace tem obrigatoriamente uma filelist. Inicialmente, criaremos o arquivo Sistema. Este arquivo ter apenas um registro e ser usado internamente pelo sistema, no estando disponvel para o usurio. O arquivo possui as seguintes campos e atributos: Sistema Arquivo n 1 Campo Prox_Cliente Prox_Vendedor Prox_Pedido Tipo Tamanho NUMERIC 6 NUMERIC 6 NUMERIC 6

Atributos Relacionamento

Para criarmos o arquivo Sistema clique em na barra de ferramentas ou selecione File -> New do menu. Surgir a seguinte caixa de dilogo :

-

Type : Tipo do arquivo, que pode ser Dataflex ou ODBC_Driver File Number : Nmero do arquivo na filelist Rootname : Nome externo do arquivo, que ser gravado na pasta Data

Digite Sistema em Rootname, deixe o restante como est e clique em OK.

Ser exibida a tela de estrutura de arquivos, com a guia Fields ativa.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 14

Root Name : o nome externo do arquivo, que informamos na tela anterior; Login : para o caso de estarmos utilizando um banco de dados via ODBC, que exige que voc se identifique antes de utiliz-lo; User Name : nome que ser exibido para o usurio; DF Name : nome que ser utilizado internamente, nos programas, quando referenciarmos o arquivo;

-

Na guia Fields definiremos os atributos do arquivo. Ela possui as seguintes colunas: Name : Nome do campo como Cdigo, Telefone, etc. Pode ter at 15 caracteres, que so transformados em maisculas. No utilize ou acentuao. Os espaos em branco so transformados em _ (sublinhado); Type : Tipo do campo. O VDF aceita os tipos ASCII (campos alfanumricos com at 255 caracteres), NUMERIC (campos numricos inteiros e/ou decimais), DATE (campos de data), OVERLAP (campos que redefinem um conjunto de outros campos, veremos adiante), TEXT (campos texto ou memo) e BINARY (campos binrios que podem conter imagens, ou teclar F4 quando estiver nesta sons, etc). Se voc clicar em coluna ver uma lista das opes.

-

-

Length : Tamanho do campo Index : ndice do qual este campo faz parte; Relates to : coluna de outro arquivo ao qual este arquivo est relacionado (veremos adiante, em relacionamentos);

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 15

Clique na primeira clula da coluna Name e vamos entrar com a definio do arquivo, conforme descrevemos anteriormente :

Vamos salvar nosso arquivo, para no perdermos o que j foi estruturado. Clique em dilogo: ou no menu File -> Save, para exibir a seguinte caixa de

-

Force restructure operation : esta opo utilizada sempre que alguma caracterstica do arquivo for alterada, como criao, excluso ou modificao de campos, tamanhos, ndices ou relacionamentos. O VDF cria um arquivo temporrio, move os dados para este arquivo, grava as alteraes feitas na estrutura e copia os dados de volta. Create DEF : esta opo cria um arquivo texto com a extenso .DEF (no caso, Sistema.DEF) contendo todas as informaes do arquivo e serve apenas para documentao.

-

Vamos selecionar as duas opes e clicar em OK. Surge uma caixa de dilogo informando que a operao foi bem sucedida (ou no). Clique em OK para prosseguirmos. A prxima guia, Index, utilizada para definirmos ndices. No arquivo Sistema ela no ser utilizada.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Vamos ento para a guia Parameters.

Pgina 16

-

File Statistics o Max Records : nmero mximo de registros que o arquivo pode ter. Este valor utilizado internamente pelo VDF para alocar rea em disco. importante sempre o definirmos com uma boa folga, pois ao ser ultrapassado, o VDF gerar um erro e teremos que reestruturar o arquivo. Esta uma opo remanescente da poca em que os HDs tinham 5 ou 10 Mb e que espao em disco era uma coisa crnica. No caso do arquivo Sistema, estabelecemos que ele ter apenas um registro, portanto vamos alterar este valor. o Record lenght : o comprimento do registro em bytes. Note que criamos trs campos, cada um com 6 caracteres de tamanho e o total foi 9, quando deveria ser 18. Isto se deve ao fato do VDF armazenar campos numricos de forma compactada (cada dgito ocupa meio byte). o Record Identity : um ndice que usado internamente por alguns drivers de banco de dados como um identificador numrico nico para o registro. Ele deve ter apenas um segmento e ser numrico. Para o driver nativo Dataflex ele no utilizado.

-

File Settings o Multi user reread : em ambientes multi-usurios, como o Windows, esta opo dever sempre estar marcada. Ela garante o bloqueio correto dos dados quando vrios usurios estiverem acessando o arquivo simultaneamente para incluses, modificaes ou excluses. o Reuse deleted space : quando um registro excludo, ele permanece fisicamente no arquivo e apenas marcado como no disponvel. Com esta opo configurada, o Dataflex reutilizar este espao para um novo registro, economizando rea de HD.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 17

o Header integrity checking : arquivos Dataflex armazenam informaes sobre sua estrutura (campos, ndices e outras) num arquivo especial do tipo Header (no caso, Sistema.HDR). Se o arquivo for danificado por algum crash do sistema operacional (tpico do Windows!), do programa ou mesmo uma queda de energia e esta opo estiver configurada, nenhum programa ou utilitrio do VDF poder acessar este arquivo, at que ele seja recuperado. Por segurana, sempre selecione esta opo. o System file : esta opo indica que o arquivo possui apenas um registro (como o caso do arquivo Sistema), configura o nmero mximo de registros para 1 e faz com que as informaes do registro sejam lidas automaticamente quando a arquivo aberto pelo programa. exatamente o caso do arquivo Sistema, portanto, marque esta opo. Compression o O VDF pode armazenar os dados dos arquivos de forma compactada, poupando espao no HD. Isto eficiente se voc tiver campos tipo TEXT ou BINARY de grande comprimento e que normalmente no so totalmente preenchidos. Quando a compresso utilizada, o VDF coloca os dados compactados num arquivo especial com a extenso .VLD (variable-length data ou dados de tamanho varivel) e o arquivo .DAT passa a ter ponteiros e outras informaes para o arquivo VLD. Esta opo configurada escolhendo um dos modos abaixo:

None : nenhuma compresso ser feita. Fast : usa uma tcnica de compresso em que uma srie de dois ou mais caracteres similares so armazeados como uma representao do nmero de repeties. Por exemplo 100 espaos em branco seriam armazenados como 100 seguido de um espao . Standard : uma substituio simblica baseada na freqncia em que o caracter utilizado no arquivo. Custom : uma substituio simblica baseada numa anlise que o Database Builder faz nos dados do arquivo.Se o arquivo usa este mtodo, ele deve ser periodicamente recomprimido, a medida que seus dados vo sendo alterados.

-

Transaction type o Uma transao um conjunto de operaes que so feitas num banco de dados e que devem ser totalmente completadas ou

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 18

interrompidas para manter a integridade dos dados. H trs tipos disponveis :

None : no use esta opo, a menos que o arquivo em questo seja utilizado de uma forma muito limitada e sem o dicionrio de dados. Se o arquivo utiliza o dicionrio, ento voc tem que usar pelo menos a opo Client-Atomic. Client-Atomic : este o tipo padro (e nico) quando se utiliza arquivos Dataflex. Transaes deste tipo podem ser abortadas pelo programa e, em certos casos pelo prprio Dataflex. Nenhuma proteo oferecida para travamentos ou outros problemas uma mquina cliente da rede. Se isto ocorrer durante uma transao, parte dela j pode ter sido salva no banco de dados e no poder ser desfeita . Server-Atomic : Oferecem proteo contra problemas na mquina cliente. Se o programa (ou o Windows) trava ou cai enquanto uma transao est sendo executada, todo o processo pode ser desfeito. Suportado por alguns tipos de bancos de dados. Server-Logged : Oferece todos os benefcios da ServerAtomic e mais a capacidade de rollback. O rollback restaura o sistema a uma condio que estava em certo momento. Por exemplo, se uma folha de pagamento comeou a ser processada s 13:00 e algum problema aconteceu s 14:00, voc pode restaurar o sistema ao estado que estava s 13:00 e reiniciar o processo. Este tipo de transao suportado pelos bancos de dados relacionais.

As outras quatro guias (Fields Settings, Methods, Options e Structures) so utilizadas para o dicionrio de dados e sero vistas posteriormente. Para o arquivo Sistema, isto tudo. Salve suas alteraes.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil O prximo arquivo, Cliente, ter a seguinte estrutura : Cliente Arquivo n 2 Campo Cdigo Nome Endereo Bairro CEP Cidade Estado CGC Inscricao Telefone E_Mail LimiteCredito Compras Pagamentos Observacoes

Pgina 19

Atributos Tipo Tamanho ndice NUMERIC 6 1 ASCII 40 2 ASCII 40 ASCII 15 ASCII 9 ASCII 20 ASCII 2 ASCII 18 3 ASCII 18 ASCII 15 ASCII 15 NUMERIC 8,2 NUMERIC 8,2 NUMERIC 8,2 TEXT 512

Relacionamento

Clique em na barra de ferramentas ou selecione File -> New do menu e crie o arquivo Cliente como n 2. Defina seus campos, tipos e tamanhos. No informe os ndices, por enquanto. Ao terminar, clique em ou no menu File -> Save.

Clique na guia Index para criarmos os ndices.

-

Index Number : nmero do ndice. O Dataflex permite que um arquivo tenha at 15, cada um podendo ser composto por vrios campos. Key Lenght : exibe o tamanho do ndice em bytes. Levels : indica quantos campos compe o ndice.

-

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 20

Index is a batch index : indica que o ndice no ser atualizado automaticamente nas operaes do arquivo (incluir, alterar, excluir), mas apenas quando executarmos uma re-indexao no arquivo. Isto pode ser til quando temos ndices de pouqussima utilizao e quisermos melhorar o desempenho.

Clique na primeira clula da coluna Name para informarmos o nome do campo que compor o ndice. Voc pode digitar o nome e o VDF far uma busca incremental ou clicar em ou F4 para ver a lista dos campos.

Observe que nesta lista existe um campo que no criamos, Recnum. Este o campo n 0 e criado automaticamente pelo VDF. Este campo numrico seqencial e incrementado pelo VDF para cada registro gravado. Este tambm o ndice n 0, ou seja, mesmo que no definamos qualquer ndice para o arquivo, ele ter pelo menos o ndice 0, que o campo Recnum. Escolha o campo Codigo para nosso ndice n 1. Passe o Index number para 2 e vamos criar nosso segundo ndice, que ser composto pelo Nome e pelo Recnum. Por que utilizar o Recnum ? Porque o campo Nome pode ser repetido para vrios clientes (por exemplo, quantos Jos da Silva existem?) e o VDF no aceita ndices duplicados. Acrescentando o Recnum, que exclusivo, garantimos que no haver duplicidade de ndices (e conseqentemente, um erro). Poderamos utilizar qualquer outro campo que no permitisse duplicao (Codigo, por exemplo) mas o Recnum mais confortvel.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 21

A opo UC indica que o VDF no considera maisculas e minsculas diferentes na classificao (case insensitive). A opo Desc indica que a classificao ser feita em ordem decrescente. O boto O boto O boto insere um campo onde estiver o cursor. acrescenta um campo ao final da lista. exclui um campo da lista.

-

Siga os procedimentos anteriores e crie o ndice 3, com os campos CGC e Recnum. Salve suas alteraes. Seguindo os passos anteriores, vamos criar os demais arquivos do projeto. Vendedor Arquivo n 3 Campo Codigo Nome Endereco Bairro CEP Cidade Estado Telefone E_Mail

Atributos Tipo Tamanho ndice NUMERIC 6 1 ASCII 40 2 ASCII 40 ASCII 15 ASCII 9 ASCII 20 ASCII 2 ASCII 15 ASCII 15

Relacionamento

Obs : o ndice 2 formado pelos campos Nome + Recnum Produto Arquivo n 4 Campo Cdigo Descrio Unidade PrecoVenda PrecoCusto EstoqueAtual

Atributos Tipo Tamanho ndice NUMERIC 6 1 ASCII 30 ASCII 2 NUMERIC 6,2 NUMERIC 6,2 NUMERIC 6

Relacionamento

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Pedido Arquivo n 5 Campo Numero Data CodCliente CodVendedor Situao ValorTotal ProxItem Atributos Tipo Tamanho ndice NUMERIC 6 1 DATE NUMERIC 6 NUMERIC 6 ASCII 1 NUMERIC 8,2 NUMERIC 2

Pgina 22

Relacionamento

Cliente.Codigo Vendedor.Codigo

Observe que o arquivo Pedido est relacionado com os arquivos Cliente e Vendedor. Para criarmos o relacionamento do Pedido com o Cliente, clique no , ou em F4 para exibir campo CodCliente e em seguida no boto a tela de relacionamentos :

Na guia que est ativa, Attach to field, uma lista direita mostra os nomes dos arquivos e a lista a esquerda os nomes dos campos do arquivo selecionado. Clique em Cliente. Note que apenas dois campos do arquivo foram exibidos : Codigo e Recnum. Isto ocorre por que a opo Lenght and type must match (tamanho e tipo devem coincidir) est selecionada e num relacionamento, o VDF exige que os campos relacionados sejam do mesmo tipo e tamanho (no caso, NUMERIC de 6 posies). Se voc selecionar Lenght and type will be copied, todos os campos sero exibidos e voc poder selecionar qualquer um, mas os resultados sero imprevisveis (alis, no descobri ainda por que esta opo existe...). A caixa Attempt to synchronize required child & required parent structures deve sempre estar marcada : ela garante que as operaes de incluso, alterao ou excluso de registros nos arquivos pai e filho sero sincronizadas, por exemplo, uma excluso no pai afeta todos os filhos, uma

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil incluso no filho afeta o pai. circunstncias muito especficas.

Pgina 23

Esta caixa s deve ser desmarcada em

A guia Attach to file/field permite que voc crie o relacionamento usando os nmeros de arquivos e campos, ao invs dos nomes. Isto s tem utilidade quando voc est construindo um relacionamento com um arquivo que ainda no existe e ser criado posteriormente. Clique no campo Codigo e em OK para finalizarmos o relacionamento. Repita a operao relacionando o campo CodVendedor com o campo Codigo do arquivo Vendedor.

ItemPed Arquivo n 6 Campo CodPedido Item CodProduto Quantidade VrUnitario VrTotal

Atributos Tipo Tamanho ndice NUMERIC 6 1 NUMERIC 2 1 NUMERIC 6 NUMERIC 6 NUMERIC 8,2 UMERIC 8,2

Relacionamento Pedido.Numero Produto.Codigo

Ao criar o arquivo ItemPed, troque o User name para Item do Pedido. Observe que neste arquivo o ndice 1 composto de dois campos : CodPedido e Item. Alm disto, o arquivo est relacionado com Pedido e Produto. Neste ponto, a parte fsica de nossa base de dados est pronta. Salve todos os arquivos que ainda no o foram. O prximo passo ser o dicionrio de dados. Mas antes, vamos conhecer mais um recurso interessante do VDF e que ser utilizado no dicionrio. Num sistema normalmente precisamos de diversos arquivos contendo apenas Cdigo e Descrio, como Estados do Brasil, unidades de medida, situao do pedido, etc. Normalmente, criaramos estes arquivos no Database Builder e construiramos uma view para cada um, para manter seus dados. Este trabalho seria repetitivo e consumiria recursos da Filelist (lembre-se que o nmero de arquivos que ela pode gerenciar limitado : 255 at a verso 6 e 4098 a partir da verso 7). Para facilitar nosso trabalho , o VDF mantm dois arquivos especiais, CodeMaster e CodeType, especificamente para armazenarmos estas tabelas num nico lugar. Estes arquivos no aparecem na Filelist (apesar de ocuparem um espao nela) e so criados para cada Workspace (verifique na pasta Data de seu projeto).

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 24

Em nosso sistema, criaremos tabelas para os estados brasileiros, unidades de medida s situao dos pedidos e, posteriormente, as usaremos para validar os dados nos respectivos campos. Para criarmos as tabelas, do menu do Database Builder, selecione Workspace > Code-Master maintenance. Ser exibida a seguinte tela :

-

Type : nome da tabela. Digite ESTADOS. Description : Descrio da tabela. Digite, por exemplo, Siglas e nomes dos estados do Brasil. Comment : qualquer comentrio sobre a tabela.

-

Clique na coluna Code da grid. Surgir uma mensagem Save New Type Information ? para confirmar a gravao da tabela. Clique em Sim. Code : digite a sigla do estado. Description : digite o nome do estado.

Digite em Code e Description, respectivamente : - ES e Esprito Santo - RJ e Rio de Janeiro - MG e Minas Gerais - SP e So Paulo Clique em ou F5 para limpar os dados e incluirmos outra tabela, unidades dos produtos. Type : UNIDADE Description : Unidade dos produtos

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 25

Confirme a gravao e, nas colunas Code e Description da grid, digite, respectivamente : - UN e Unidade - L e Litro - M e Metro - CX e Caixa - KG e Kilo Clique em ou F5 para limpar os dados e incluirmos outra tabela, situao dos pedidos. Type : SITPED Description : Situao dos pedidos

Confirme a gravao e, nas colunas Code e Description da grid, digite, respectivamente : - P e Pendente - F e Faturado - C e Cancelado Feche a view Code Maintenance.

Dicionrio de DadosO dicionrio de dados contm todas as regras que devem ser aplicadas ao arquivo de dados. Ele construdo e mantido pelo Database Builder e suas informaes so gravadas num arquivo com o mesmo nome e com extenso .DEF, que fica na pasta DDSrc do projeto. As regras do dicionrio de dados envolvem vrios aspectos, como as caractersticas de cada campo, os mtodos que devem ser aplicados nas operaes de incluso, alterao e excluso, a integridade relacional e muitos outros. Vamos comear pelo arquivo Cliente. No Database Builder, selecione Cliente em na barra de ferramentas, ou clique em -> Open... para exibir a caixa de seleo : ou ainda em File

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 26

Marque o arquivo Cliente e clique Open. O dicionrio de dados trabalhado nas guias Fields Settings, Methods, Options e Structures. Ative a Fields Settings. Todas as configuraes que fizermos nesta guia sero executadas quando o campo selecionado for utilizado em alguma view.

direita temos a lista de campos e esquerda 6 sub-guias, onde configuraremos as opes para cada campo. Observe sempre qual o campo que est selecionado, pois as opes estaro sendo configuradas para ele. A guia Options tem doze opes, que so : Autofind : para campos ndice exclusivo, o VDF pesquisa no arquivo um valor igual ao informado e, se existir, mostra os dados do registro. Se o ndice for composto de vrios campos, coloque o Autofind no ltimo. Autofind GE : para campos ndice, pesquisa um valor igual ou maior ao informado. Capslock : transforma todos os caracteres digitados em maisculas.

-

-

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 27

Display only : o valor do campo ser apenas exibido, no permitindo que voc entre nele nem altere seus dados. Find required : para campos ndice, normalmente estrangeiros, exige que um registro seja encontrado, baseado no valor informado, e no sai do campo at a condio ser satisfeita. ForcePut : fora o contedo do campo ser colocado no buffer do registro. Em condies normais, isto s ocorre quando o valor do campo alterado. Key field : indica que o campo chave primria e, portanto, seu valor no poder ser alterado, depois que o registro foi criado. No Enter : No permite entrar no campo. Apesar disto, voc ainda pode mover um valor para ele, o que no ocorre com a opo Display only. No Put : o valor no ser movido para o buffer, mesmo que tenha sido alterado. Retain : o valor permanece no campo, mesmo quando acontece alguma operao em que normalmente ele seria limpo. Retain All : o valor permanece no campo, mesmo que todos os campos da view forem limpos. Required : um valor obrigatrio neste campo, no aceitando valores zero (para campos NUMERIC ou DATE) ou em branco (para os demais tipos). Skip found : No entra no campo se houver um registro ativo. Zero Suppress : coloca brancos num campo NUMERIC se seu valor for zero.

-

-

-

-

-

-

-

-

-

As trs opes do grupo Character Mode Options so vlidas apenas se voc est construindo um dicionrio para ser usado pelo Dataflex modo caracter. Marque as seguintes opes para os seguintes campos : Codigo : Autofind, Key field, No Put. Estado : Capslock. Compras : No Enter. Pagamentos : No Enter.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Vamos para a segunda guia, Validation / Lookup.

Pgina 28

-

Validation Method : Especifica uma funo com retorno numrico que ser usada para validar o valor do campo. Se a funo retornar zero, o valor ser aceito; se retornar qualquer outro valor, ser exibida uma mensagem de erro e o valor no ser aceito. Clique em para exibir a lista de todas as funes que voc definiu neste dicionrio. Simple Validation : uma seqncia de valores, separados por | e que sero os nicos permitidos para este campo. Se o campo for definido como ComboBox, estes valores sero mostrados como uma lista na view. Range From ... To : uma faixa de valores que o campo pode aceitar, onde From o valor inicial e To o valor final. Validation Error : o nmero e o texto do erro que ser exibido se a validao deste campo falhar. Lookup Object : nome do objeto que exibir uma lista de seleo (Lookup) para este campo (iremos constru-lo posteriormente). Lookup Package : nome externo do objeto lookup.

-

-

-

-

-

Configure os seguintes campos e opes nesta guia (certifique-se que o campo esteja selecionado, na lista esquerda) : Codigo : Lookup Object = oClienteSl ; Lookup Package = Cliente.sl. Nome : Lookup Object = oClienteSl ; Lookup Package = Cliente.sl.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 29

Vamos para a prxima guia, Validation Table. Neste ponto, uma boa idia salvar o arquivo (lembre-se do apago!).

Nesta guia ns configuramos tabelas que sero utilizadas para validar os valores do campo. Se na view o campo tiver a opo de prompt (identificado pelo boto ), ser exibido uma lista de seleo. O valor que ser usado na validao o da coluna Value. As tabelas podem ser : None : nenhuma tabela ser usada. Static : ser criada uma tabela fixa, dentro do dicionrio. Informaremos seus valores em Value e Description. Dynamic : Ser utilizada uma das tabelas que criamos em CodeType e CodeMast Ao usar esta opo, informamos o nome da tabela em Type Value e seus valores so automaticamente exibidos. Custom : usa tabelas externas, que no so mantidas pelo Database Builder. Informaremos seu nome externo em Location.

-

-

Para as tabelas Static e Dynamic, existem duas caixas de opo : Validate : o valor do campo ser validado pelos valores da tabela. Se esta opo estiver desmarcada, a tabela ser exibida, mas poderemos informar um valor diferente. Blanks : aceita um valor em branco. Title : Ttulo que ser exibido na lista de seleo.

-

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 30

Advanced : Esta opo abre um editor onde poderemos inserir qualquer codificao para validar a tabela, por exemplo :

Object Name o nome interno o VDF cria para a tabela no dicionrio. Nesta guia, configure o campo Estado com as seguintes opes : - Type : Dynamic - Type Value : ESTADOS A prxima guia a Masks. Aqui ns definimos mscaras de entrada para os campos.

-

Mask Type : permite escolher uma mscara pr-definida. Existem 4 tipos : Currency (Dinheiro), Numeric, Date e Text. Custom Mask : neste campo, podemos digitar uma mscara especfica, usando-se as regras do VDF. Tecle F1 e voc ver as opes disponveis. O boto mostra as mscaras que esto cadastradas. Add to Repository : Acrescenta uma mscara ao repositrio. Ao clicarmos, surgir uma tela pedindo o nome da mscara. Edit Repository : permite acrescentar, alterar ou excluir mscaras do repositrio.

-

-

-

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 31

Clique no campo CEP e em Custom Mask digite #####-###. Esta mscara significa que teremos 5 posies numricas no obrigatrias, o - e mais trs posies. Clique em Add to Repository para gravar esta mscara, digite CEP em Description e clique OK.

Para os campos LimiteCredito, Compras e Pagamentos, selecione a mscara Currency, em Mask Types. Salve o arquivo. A prxima guia a Appearance. Nesta guia podemos associar um componente especfico para cada campo.

-

Visual Control : Exibe uma lista dos tipos de controles disponveis. o none : nenhum controle especial o dbBitmap : para campos bitmap.BINARY

serem exibidos como figuras

o dbCheckbox : controle do tipo o dbComboForm : controle do tipo o dbEdit : controle caixa de texto, para campos TEXT o dbForm : controle padro do tipo

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 32

o dbGrid : grade com linhas e colunas tipo o dbSpinForm : controle do tipo Long Label : Este texto ser usado como ttulo do campo, quando ele for colocado em alguma view. Short Label : Este texto ser usado como ttulo do campo quando ele for utilizado em uma coluna de grid.

-

Obs : Se no for informado Long Label nem Short Label, o VDF usa o nome do campo como ttulo. Para o campo Estado, vamos selecionar o controle dbComboForm. A ltima guia de Fields Settings a Other.

-

Checkbox : indica se o campo do tipo caixa de seleo. True : se a opo checkbox for selecionada, informe aqui qual valor ser movido para o campo quando ele for marcado, como False : se a opo checkbox for selecionada, informe aqui qual valor ser movido para o campo quando ele for desmarcado. Status Help : informe aqui o texto que ser exibido na barra de status da aplicao quando o usurio entrar neste campo. Defaut Value : informe o valor default que ser exibido no campo quando sofrer uma entrada de dados. Entry Method : funo ou procedimento que ser executado quando o usurio entrar no campo. O boto exibe os nomes dos mtodos criados no dicionrio.

-

-

-

-

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 33

Exit Method : funo ou procedimento que ser executado quando o usurio sair no campo. O boto exibe os nomes dos mtodos criados no dicionrio. Auto Increment : indica qual campo de qual arquivo ser usado para autoincrementar este campo, sempre que for gravado um novo registro. Ao clicar em ser exibida a lista de arquivos e campos disponveis.

-

o Display System Files and Related Files Only : se estiver marcada, exibe apenas os arquivos de sistema (aqueles que tem apenas um registro) e os que forem relacionados com este arquivo. o Add to External Files Structure : se o arquivo escolhido no estiver relacionado, ele ser acrescentado lista dos arquivos externos, na guia Structure (que veremos em breve). Short Description : apenas para documentao, escreva uma descrio do campo.

Para o campo Codigo, usaremos a opo Auto Increment, arquivo Sistema, campo ProxCliente. Salve as configuraes feitas at aqui. A prxima guia, Methods, no ser utilizada por enquanto. Voltaremos a ela em breve. Vamos para a guia Options. Antes, uma pequena explicao. Vamos usar como exemplo o arquivo Cliente e o arquivo Pedido. Os dados do Cliente aparecero, basicamente, de duas formas no sistema : uma ser em sua prpria view, com todos os seus campos, onde faremos as operaes de incluso, alterao e excluso e, neste caso, dizemos que ele est sendo o Server da view; a outra forma ser quando ele aparecer na view do Pedido, com apenas alguns campos que permitam a localizao do registro desejado, como cdigo, nome ou CGC e onde no ser permitido que se modifique seus dados, quando ento diremos que ele est sendo foreign (estrangeiro) na view. A guia Options trata

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 34

exatamente deste ltimo caso, ou seja, como os campos de um arquivo se comportaro quando forem estrangeiros.

-

Key Foreign Field Options : trata das opes para os campos que so a chave primria do arquivo (neste caso, Cliente.Cdigo) : o Auto Find : para localizar o registro. o Find Required : ser obrigatrio que um registro exista. o No Put : para que os dados informados no sejam movidos para o buffer e conseqentemente, alterados.

-

Indexed Foreign Field Options : trata das opes para os campos que so ndices (no caso, Cliente.Nome e Cliente.CGC) : o Find Required : ser obrigatrio que um registro exista. o No Put : para que os dados informados no sejam movidos para o buffer e conseqentemente, alterados.

-

Default Foreign Field Options : trata das opes para os demais campos do arquivo : o Display Only : os dados sero apenas exibidos, no podendo ser modificados.

-

Error Handling : opes que sero usadas em caso de erro, por exemplo, quando um registro obrigatrio no for encontrado. o Standard Error Report Mode : ser usado o tratamento e mensagem de erro padro do VDF. o Custom Error Report Mode : criaremos ou mudaremos a mensagem de erro :

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 35

Validation Error No : o nmero da mensagem de erro que ser exibida; Validation Error Text : o texto da mensagem de erro que ser exibida.

-

Other Settings : o Protect Key Fields : os campos que forem chave primria no podero ser alterados.

Raramente alteraremos estas opes, portanto vamos deixar os valores default e partirmos para a prxima guia, Structures. Salve suas alteraes e feche o arquivo Cliente. Vamos configurar todas as opes que j vimos para os demais arquivos. Para isto, trabalharemos com todos eles abertos simultaneamente. Clique em ou selecione File -> Open... no menu. Na tela de seleo, clique em para marcar todos os arquivos. Clique nas caixas de seleo de Sistema, Cliente e @DataFlex error file para desmarc-los. Clique . em No barra de menus, selecione Window -> Minimize all Windows. Restaure a tela de Vendedor. Vamos configurar seu dicionrio da seguinte forma : Fields Settings o Options Codigo : Auto Find, Key field, No Put. Estado : Capslock.

o Validation / Lookup Codigo : Lookup Object = oVendedorSl ; Lookup Package = Vendedor.sl Nome : Lookup Object = oVendedorSl ; Lookup Package = o Validation Table Estado : Dynamic, Type Value = ESTADOS. o MaskCEP

Vendedor.sl

: Custom mask = CEP

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil o AppearanceEstado : dbComboForm

Pgina 36

o OtherCodigo : Auto Increment = Sistema.ProxVendedor

Salve e feche o arquivo Vendedor. Restaure a janela do arquivo Produto e configure as seguintes opes : Fields Settings o Options Codigo : Auto Find, Key field, Required. Descricao : Required.

o Validation / Lookup Codigo : Lookup Object = oProdutoSl ; Lookup Package = Produto.sl Descricao : Lookup Object = oProdutoSl ; Lookup Package = Produto.sl o Validation Table Unidade : Dynamic, Type Value = UNIDADES. o Mask PrecoVenda : Mask Type = Currency PrecoCusto : Mask Type = Currency

o AppearanceUnidade : dbComboForm

Salve e feche o arquivo Produto. Restaure a janela do arquivo Pedido e configure as seguintes opes : Fields Settings o Options Numero : Auto Find, Key field, No Put Data : Required. ValorTotal : No Enter. ProxItem : No Enter.

o Validation / Lookup Numero : Lookup Object = oPedidoSl ; Lookup Package =Pedido.sl

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 37

Data : Lookup Object = oPedidoSl ; Lookup Package = Pedido.sl

o Validation TableSituacao : Dynamic, Type Value = SITPED

o MaskValorTotal : Mask Type = Currency

o AppearanceSituacao : dbComboForm

o OtherNumero : Auto Increment = Sistema.ProxPedido

Salve suas configuraes e vamos dar mais um passo. Restaure a janela do arquivo ItemPed e configure as seguintes opes : Fields Settings o Options Item : Auto Find, Key field, No Put Quantidade : Required. VrUnitario : Required VrTotal : No Enter.

o Mask VrUnitario : Mask Type = Currency VrTotal : Mask Type = Currency

o OtherItem : Auto Increment = Pedido.ProxItem

Salve suas configuraes e feche todos os arquivos que porventura estiverem abertos. Vamos para a ltima guia, Structures. Nesta guia definimos a estrutura de banco de dados para o arquivo, ou seja, quais os arquivos pais que so relacionados, quais os arquivos filhos e quais arquivos que no so pais nem filhos mas fazem parte da estrutura, como os arquivos de sistema. Estas estruturas so de extrema importncia para o IDE conectar adequadamente os objetos dicionrios de dados nas views. Na execuo do programa, esta informao usada para validar os dados e atualizar corretamente todos os arquivos pais e filhos durante incluses, alteraes ou excluses de dados. Durante estas operaes, toda a estrutura validada e, se houver algum erro, a operao cancelada. Isto garante a integridade da base de dados.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 38

Vamos abrir todos os arquivos e verificar suas estruturas. Clique em ou em File -> Open... no menu, clique em , desmarque @Dataflex error file e clique em . Selecione o arquivo Sistema e clique na guia Structures.

Observe que as trs listas (Required Child files, Required Parent Files e Externally Updated files) esto vazias. Isto ocorre por que este arquivo no tem relacionamentos com nenhum outro arquivo. Feche este arquivo e selecione o arquivo Cliente e a guia Structures.

-

Delete Structure : declara todos os arquivos filhos, e que normalmente, so afetados por uma excluso. o Validate Always : toda a estrutura de arquivos ser verificada sempre que houver uma excluso. o Validate Never : a estrutura nunca ser verificada (a validao est desativada). o Validate Once : a estrutura ser verificada apenas quando o primeiro registro for carregado pela view. Esta opo considera que a estrutura no ser modificada durante a execuo do programa. o Cascade deletes : significa que ao se excluir um registro deste arquivo, todos os registros filhos relacionados tambm sero

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 39

excludos. No caso do Cliente, todos os pedidos deste cliente sero excludos. Se esta opo estiver desmarcada, a excluso no ser permitida se o registro tiver registros filhos. o Clique em para incluir na estrutura todos os arquivos filhos que foram diretamente relacionados. para incluir na estrutura qualquer arquivo definido na o Clique em Filelist, mesmo no sendo relacionado. o Clique em para incluir na estrutura qualquer arquivo, mesmo no estando definido na Filelist. o Clique em para excluir um arquivo da estrutura.

Save Structure : declara todos os arquivos pais, e que normalmente so afetados por uma incluso ou alterao no registro. o Validate Always : toda a estrutura de arquivos ser verificada sempre que houver uma gravao. o Validate Never : a estrutura nunca ser verificada (a validao est desativada). o Validate Once : a estrutura ser verificada apenas quando o primeiro registro for carregado pela view. Esta opo considera que a estrutura no ser modificada durante a execuo do programa. o Clique em para incluir na estrutura todos os arquivos pais que foram diretamente relacionados. o Clique em para incluir na estrutura qualquer arquivo definido na Filelist, mesmo no sendo relacionado. o Clique em para incluir na estrutura qualquer arquivo, mesmo no estando definido na Filelist. o Clique em para excluir um arquivo da estrutura.

-

Externally Updated Files : declara os arquivos que no so pais nem filhos, mas que so usados pelo dicionrio de dados. No caso do Cliente, o arquivo Sistema utilizado para gerar o Codigo.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 40

o Clique em para definir o modo como o arquivo ser bloqueado nas operaes do dicionrio. A seguinte caixa de dilogo ser exibida :

o Clique em Filelist.

para acrescentar qualquer arquivo, mesmo no o Clique em estando definido na Filelist. o Clique em para remover um arquivo da lista.

Verifique em todos os arquivos se suas estruturas esto configuradas corretamente, como abaixo : Cliente : filhos = Pedido; cascade delete = false; pais = nenhum; externos = Sistema. Vendedor : filhos = Pedido; cascade delete = false; pais = nenhum; externos = Sistema. Produto : filhos = ItemPed; cascade delete = false; pais = nenhum; externos = nenhum.

-

-

Lock on All : o arquivo ser bloqueado em todas as operaes de gravao e excluso de registros. Lock on Delete : o arquivo ser bloqueado apenas durante a excluso de registros. Lock on Save : o arquivo ser bloqueado apenas durante as operaes de gravao. Lock on New Save : o arquivo ser bloqueado apenas quando for gravado um novo registro. Lock on New Save + Delete : o arquivo ser bloqueado apenas na incluso de um novo registro ou na excluso. para acrescentar um arquivo que esteja definido na

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 41

Pedido : filhos = ItemPed; cascade delete = true; pais = Cliente, Vendedor; externos = Sistema.

Salve e feche todos, e vamos para a ltima parte do dicionrio de dados, a guia Methods. At aqui, trabalhamos somente com as caractersticas de cada campo, mas um dicionrio de dados muito mais que isto. Nele criamos as regras de negcio, atravs dos mtodos, para resolver questes como : um pedido s pode ser faturado se o cliente tiver crdito e houver mercadoria em estoque; se um pedido for excludo, seus tens tambm devero ser, evitando registros rfos; se um produto consta em algum pedido, ele no pode ser excludo; quando um tem pedido, ele deve ser subtrado do estoque; para cada tem de pedido, o campo ValorTotal do pedido deve ser atualizado;

-

-

Todas estas regras podem ser implementadas no programa, no dicionrio ou em ambos, dependendo de suas necessidades. Mas a implementao no dicionrio muito mais prtica, pois voc ter que programar apenas uma vez num nico lugar e, a partir da, qualquer programa que utilizar este dicionrio estar levando junto todas as suas regras. Vamos ento para a guia Methods. Aqui ns trabalhamos diretamente com o arquivo do dicionrio de dados, (.DD), podendo criar ou modificar qualquer ao que ocorra sobre o arquivo. Em Methods ns efetivamente programaremos, utilizando qualquer cdigo que o VDF reconhea.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Abra o arquivo Cliente e clique na guia Methods.

Pgina 42

O VDF tem vrios eventos pr-definidos que so executados quando alguma operao acontece no arquivo, como ao incluir um registro, ao excluir, ao alterar, etc. Todos estes eventos so sempre executados, independente de termos programado algum ou no. Podemos utilizar o que nos interessa e acrescentar o cdigo necessrio. Alm disto, podemos criar nossos prprios mtodos e associ-los a alguma ao que possa ocorrer sobre os dados. A lista esquerda apresenta os mtodos mais comuns (no todos), separados em duas categorias : Unaugmented Methods so os que no foram utilizados e Implemented Methods so os que j esto em uso no dicionrio. Observe na lista que dois j esto em uso, Define_Fields e Field_Defaults e seu cdigo pode ser visualizado no editor, direita. Estes dois mtodos so criados automaticamente para cada arquivo e raramente iremos modific-los. Observe a sintaxe de criao de uma classe (Cliente_DataDictionary) e dos dois mtodos (procedures). Para o arquivo Cliente, vamos criar a seguinte regra : quando um cliente for excludo, se seu cdigo for o ltimo que foi gravado, iremos reaproveit-lo para o prximo cliente.

Lembre-se que o cdigo do cliente gerado automaticamente, pelo incremento do campo Sistema.ProxCliente, ou seja, cada vez que um novo cliente gravado, o VDF l o valor que est neste campo, soma mais 1, move o valor para o campo Cliente.Cdigo e salva os dois arquivos (Cliente e Sistema), tudo automaticamente. Mas a operao inversa, ns teremos que fazer manualmente. Expanda a lista Unaugmented Methods e d um duplo clique em Delete_Main_File. O cdigo apropriado ser gerado no editor. Este evento executado sempre que um registro for excludo, exatamente o que queremos. No editor, apague a linha comentada Insert code here (insira o cdigo aqui)

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 43

e vamos digitar nossos comandos. Se voc quiser aumentar a rea do editor, clique com o boto direito em algum lugar sobre ele e, no menu suspenso, selecione Popup Editor. Digite o cdigo conforme est na figura :

Vejamos alguns detalhes da linguagem : Os comentrios sempre comeam com // e podem ser colocados em qualquer lugar do cdigo; A linha Forward Send Delete_Main_File significa que o VDF vai executar os comandos que foram definidos para esta procedure na classe DataDictionary (ou em outra mais ancestral) e em seguida executar a nossa seqncia de comandos;If testa uma condio que est entre parnteses e se for verdadeira, executa os comandos dentro do bloco begin ... end.

-

-

-

Uma condio pode ser to complexa quanto necessrio, podendo ter vrios nveis de parnteses, mas uma linha de comando VDF tem um limite de 255 caracteres. Se voc quiser quebrar a linha, por uma questo de esttica, use ; Alm dos sinais de comparao (= , > , >= , < , Check relationships. Clique , desmarque @Dataflex error file e clique em em . Ser gerado um relatrio com todos os arquivos e as seguintes informaes : Required child file structure : exibe a lista dos arquivos filhos necessrios; Required parent file structure : exibe a lista dos arquivos pais necessrios;

-

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil -

Pgina 53

Relate from ... Relate to : exibe o relacionamento entre arquivo filho e arquivo pai; Status : tem dois valores o Match : a configurao est correta; o NoMatch : a configurao est errada.

-

Obviamente, todas as informaes com o Status NoMatch devem ser corrigidas. Por enquanto, isto tudo que faremos no Database Builder. Vamos conhecer o IDE e comearmos a montar a interface com o usurio.

IDEO IDE (Integrated Development Environment ou Ambiente de Desenvolvimento Integrado) uma das principais ferramentas do VDF. Nele criamos e mantemos a maioria dos componentes da aplicao como programas, janelas (Views), listas de seleo (Selections-Lists ou Lookup-ups), relatrios (Report Views), etc. Atravs dele podemos tambm acessar todas as outras ferramentas como o Database Builder, Database Explorer, Compilador, Debug e Crystal Reports, alm de podermos configurar outras preferncias (como um editor de texto, por exemplo). No decorrer do treinamento, explicaremos e trabalharemos com todas estas opes.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 54

Para executar o IDE, clique em do menu Iniciar -> Programas -> Visual Dataflex. A seguinte tela ser exibida :

Interface com o usurioDepois de criarmos os arquivos e seus dicionrios, o prximo passo criar as views de entrada de dados, onde os usurios efetivamente trabalharo. Estas views so compostas basicamente de objetos de entrada de dados (DEO, Data Entry Objects) e objetos servidores de dados (DSO, Data Server Objects). Os DEOs so formados por forms, tables, editors, combobox, etc, onde os usurios examinam, selecionam e mantm os dados do banco de dados. Os DSOs controlam o acesso ao banco de dados, utilizando as regras dos dicionrios de dados. Uma aplicao basicamente composta por um programa principal (.src), contendo vrios objetos como menu, barra de status, views , lookups, report views, etc.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 55

Criando o programaPara criarmos um programa, a partir do menu do IDE selecione File -> New program. A seguinte tela ser exibida :

esquerda, temos a estrutura do programa, com suas vrias reas e a direita temos um editor de texto. A medida que voc clica em alguma rea esquerda, seu cdigo aparece no editor. A estrutura principal do programa (PROGRAM) usa um pacote pr-definido (Use Workspc.pkg), configura algumas propriedades de datas, cria um objeto da classe workspace, usa alguns outros pacotes de help e tem um nico comando, Start_UI, que inicia a aplicao. Vamos fazer uma primeira alterao neste cdigo. Por default do Windows, voc navega de um objeto para outro usando TAB. Queremos que a tecla ENTER faa a mesma funo, pois muitos usurios esto acostumados com este padro. Aps a linha Set WorkspaceName to CURRENT$WORKSPACE, configure a seguinte propriedade : Set kEnter_Next_State to true.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 56

Clique em para salvar o programa. Informe os dados conforme mostra a prxima tela e clique em :

Criando listas de seleo (lookups)O prximo passo ser criarmos objetos lookups, listas de seleo que o usurio utilizar para selecionar registros. Ns j fizemos referncia a estes objetos no dicionrio, lembra-se ? Para criar uma lookup, clique em New Lookup.

Este objeto formado basicamente de um painel, uma lista e trs botes. Para associ-lo a um dicionrio (ou DDO, Data Dictionary Object), clique com o boto direito em alguma rea do painel (por exemplo, esquerda dos botes) e, no menu suspenso escolha Data Dictionaries.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Clique em .

Pgina 57

Selecione Cliente Data Dictionary e clique em . Responda Sim pergunta Do you wish to make this the main DDO ? (voc deseja que este seja o dicionrio principal) e em seguinda clique em . Clique em Toggle Database Selector. Na caixa a seguir, d um duplo clique em CLIENTE para exibir todos seus campos.

Selecione os campos CODIGO e NOME e arraste-os para qualquer lugar da lista do objeto lookup. Para alterar qualquer caracterstica da lista, clique com o boto direito em qualquer luga dela e selecione Grid Options...

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Main File : o arquivo principal da lista.

Pgina 58

Ordering : a ordem em que os registros sero listados. Na verdade, esta classificao feita durante a execuo, dependendo da coluna que voc selecione e se ela um ndice. Columns : so os campos que compe a lista. Label : o ttulo de cada coluna. Altere o ttulo de Cliente.Cdigo para Cdigo (acentuado). Width : a largura da coluna. Checkbox Column : indica se a coluna um checkbox.

-

-

Clique em OK para fechar este dilogo. Clique com o boto direito em algum lugar do painel da lookup e selecione Properties. Altere a propriedade Name para oClienteSl. Por padro, sempre nomeamos objetos comeando com a letra o. Altere a propriedade Label para Lista de Clientes.

Feche esta caixa de dilogo. Nossa lista melhorou de aspecto, mas ainda est com as legendas dos botes em ingls. Como nosso sistema no internacional (ainda), vamos traduzi-las. Clique com o boto direito sobre o boto Cancel e e altere a propriedade Name para oCancelar_bn e seu Label para &Cancelar. O & antecede a letra do label que ser sublinhada, indicando a tecla de atalho para o boto. Com a caixa de propriedades ainda aberta, clique no boto Search... e altere a propriedade Name para oProcurar_bn e seu Label para &Procurar...

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 59

Observe que esta mudana alterou a tecla de atalho (que era S de Search) para P. Para que esta alterao funcione corretamente, clique em para abrir o cdigo do objeto lookup.

O comando On_Key define uma combinao de teclas e que evento ser disparado quando esta combinao for teclada. Vamos alterar Key_Alt+Key_S para Key_Alt+Key_P (de Procurar) e o nome do objeto alvo de oSearch_bn para oProcurar_bn. O mtodo KeyAction produz o mesmo efeito de se dar um clique no boto. Vamos salvar nossa lookup. Clique em e informe os seguintes dados :

Observe que File-Name o nome externo do objeto, ao qual o VDF acrescenta a extenso .sl. Para completar nossa selection-list, vamos acrescentar o campo CGC. Clique em para abrir o Database Selector, selecione o campo CGC e arraste-o para a lista. Observe que surgiu uma barra de rolagem, indicando que os campos ultrapassam a largura da lista. Vamos ento redimensionar nossa lookup para

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 60

exibir todas as colunas sem rolagem. Clique em algum lugar do painel principal e arraste a marca lateral de dimensionamento para aumentar sua largura.

Clique na lista e aumente sua largura at surgir o campo CGC. Diminua um pouco a largura da coluna Nome posicionando o cursor na marca de dimensionamento de colunas e arrastando para a esquerda.

Altere as dimenses at a lookup ficar com a aparncia abaixo :

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 61

Por fim, vamos arrastar os botes para a esquerda. Clique no primeiro boto, pressione CTRL e clique no segundo e terceiro para selecionar todos.

Voc pode movimentar os objetos arrastando com o mouse ou usando as setas de direo. Pressionando CTRL e usando as setas, voc redimensiona os objetos selecionados. A lookup dever estar com a seguinte aparncia :

Salve as alteraes e feche o objeto.

Criando templates (modelos)Vamos criar as lookups para Vendedor, Produto e Pedido. Mas pense o seguinte : em todas elas teremos que alterar os labels de dois botes, modificar o cdigo para corrigir a tecla de atalho e posicion-los esquerda. No seria mais fcil ter um modelo (template) com estas definies e criar as lookups a partir dele ? Para criar um template, crie uma nova lookup e faa as alteraes necessrias nos botes e no cdigo.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 62

No menu, selecione File -> Save as template -> Global. Na caixa de dialgo Salvar, informe Lista_padro para nome do arquivo e clique em Salvar. Um template Global salvo na pasta \VDF\Usr\global\IdeSrc e pode ser utilizado por qualquer aplicao. Um template Local salvo na pasta IdeSrc da aplicao, no nosso caso, \VDF\Projects\Acme\IdeSrc e deve ser usado apenas por ela. Vamos ento criar as demais lookups a partir de nosso template. Clique em New Component. Surge uma caixa de dialgo com quatro guias. Selecione a guia Lookups e nossa lista_padro. Clique em OK.

Foi criado um novo objeto baseado em nosso modelo. Agora basta acrescentar o dicionrio de dados e os campos e salvar. Faa a lookup de Vendedor com esta aparncia:

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 63

No se esquea de alterar o nome do objeto para oVendedorSl. Salve-a e crie a de produtos, conforme o modelo :

Salve-a e crie a dos pedidos. Observe que ao selecionar o DDO Pedido, o VDF trouxe para a lista todos os DDOs relacionados. Isto significa que voc pode usar campos de qualquer um deles para esta lookup. Certifique-se que Pedido o Main DDO.

Nesta lookup, vamos usar os seguintes campos : Pedido.Numero, Pedido.Data, Pedido.ValorTotal, Cliente.Nome e Vendedor.Nome. O objeto deve ficar com a seguinte aparncia :

Salve-a e vamos encerrar as lookups, por enquanto.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 64

Criando viewsVamos para a prxima fase, criar as views para a manuteno dos dados. A primeira ser a do Cliente. Clique em New View. O VDF criou apenas um painel vazio. Clique com o boto direito em algum lugar dele e selecione Properties. Altere o Name para oClienteVw e o Label para Cliente. Abra o Database Selector para incluirmos o DDO. Selecione o dicionrio do Cliente e confirme-o como Main DDO. Selecione Codigo e Nome e arraste-os para o painel. Observe que foram criados dois EntryForms com os respectivos labels. Redimensione o painel para comport-los.

A distncia entre o label e o entryform esto grandes, ento vamos alter-la. Clique com o boto direito no campo Codigo e selecione Properties. Clique com o boto direito na propriedade Label_Justification_Mode e selecione jMode_Right. Isto vai alinhar o label direita do campo. Clique em Label_Col_Offset e altere seu valor para 2. Faa as mesmas alteraes para o campo Nome. direita de cada campo existe um boto . Isto significa que existe uma lookup associada a estes campos (ns definimos isto no dicionrio de dados) e o VDF automaticamente ajustou esta propriedade. Aumente a altura do painel para permitir a incluso de um novo objeto. Clique em Toggle Controls Pallete para exibir a paleta de controles.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 65

Clique na guia Data Containers, clique em dbTabDialog e arraste-a para o painel.

Clique com o boto direito em dbTabPage1 e selecione Properties. Altere a propriedade Name para oInformacoes e TabLabel para Localizao. No Database Selector, selecione Endereco, Bairro, Cep, Cidade e Estado e arraste-os para dentro da TabPage Localizacao. Altere a propriedade Label_Col_Offset de todos os objetos para 2 e Label_Justification_Mode para jMode_Right. Note que o campo Estado foi criado como uma ComboBox, tambm definido no dicionrio de dados. Altere sua propriedade Code_Display_Mode para cb_code_display_code. Esta propriedade define o que vai ser visualizado na ComboBox : cb_code_display_description = mostra a descrio da tabela (no nosso caso o nome do estado); cb_code_display_code = mostra o cdigo da tabela (no caso, a sigla do estado); cb_code_display_both = mostra o cdigo e a descrio.

Note que o valor enviado para o campo ser sempre o cdigo, independente da visualizao. Se o espaamento vertical entre os objetos no estiver igual, selecione todos com CTRL+Click, clique com o boto direito em algum deles, selecione Align -> Top-To-Bottom. Voc pode alinhar os objetos em vrios sentidos : Left (esquerda), Top (em cima), Right (direita), Bottom (em baixo), Top-ToBottom (de baixo para cima) e Left-To-Right (da esquerda para a direita). O alinhamento tambm pode ser feito pela Alignment Pallete, que exibe a paleta :

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Sua view deve estar com esta aparncia :

Pgina 66

Clique com o boto direito na guia Localizao e selecione Add Tab Page. Mude sua propriedade TabLabel para Identificao. No Database Selector selecione CGC, Inscricao, Telefone e E_Mail e arraste-os para a TabPage Identificao. Depois de dimensionada e alinhada, sua view estar parecida com esta :

Crie mais uma TabPage, mude sua TabLabel para Valores. No Database Selector, selecione LimiteCredito, Compras e Pagamentos e arraste-os para a TabPage. Sua tela dever ficar como esta :

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 67

Adcione mais uma TabPage, mude sua TabLabel para Observaes, selecione Observacoes no Database Selector e arraste-o para a TabPage. Apague o valor de Label do objeto Cliente_Observaes. Clique com o boto direito sobre este objeto, selecione Center -> Horizontally, e em Center -> Vertically para centraliz-lo na TabPage. Veja o modelo :

Por fim, clique com o boto direito sobre a TabPage e altere sua propriedade Rotate_Mode para RM_Rotate. Esta propriedade define como ser a navegao entre as diversas TabPages e o painel principal. As opes podem ser : RM_None = ao sair do ltimo campo da TabPage o foco volta ao painel principal; RM_Ring = ao sair do ltimo campo da TabPage, o foco volta para o primeiro campo da mesma TabPage; RM_Rotate_in_Ring = ao sair do ltimo campo da ltima TabPage, o foco volta para o primeiro campo da primeira TabPage; RM_Rotate = ao sair do ltimo campo da ltima TabPage, o foco volta para o primeiro campo do painel principal.

Salve e feche a view. Vos inclu-la em nosso programa. Se o programa no estiver aberto, clique em File -> Open Program e selecione-o da lista. Clique na pasta VIEWS, dentro . Selecione Cliente (Cliente.vw) da CLIENT AREA. Clique em e clique em OK. Agora podemos compilar e testar nosso programa. Clique em Compile Program. Se no houver nenhum erro, o programa ser compilado e executado.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 68

Observe que o VDF criou uma aplicao completa, com menu, barra de ferramentas, barra de status, etc. claro que todas estas opes podem ser modificadas, mas por ora vamos aceitar o padro. Clique em View -> Cliente para trabalharmos com a view que acabamos de criar.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 69

Clique em Funes no menu e observe todas as opes de manipulao dos registros. Algumas esto sombreadas, pois no se aplicam ao contexto (por exemplo, Exluir, pois no h nenhum registro para excluso). Se seu menu no estiver em portugus, no se preocupe, mais adiante ensinaremos como traduz-lo.

Note que todas as opes tem uma tecla de atalho, o que agiliza a digitao para quem no muito f do mouse. Todas estas opes tambm podem ser acessadas pela barra de ferramentas.

Cadastre e altere os dados de alguns Clientes e observe o comportamento da aplicao. Note que o cdigo gerado automaticamente, como foi definido no dicionrio de dados, e voc no consegue alter-lo (e nem deveria). Exiba a prompt-list e teste seus recursos. Note que quando voc muda de coluna, a ordem de exibio alterada (se a nova coluna for um ndice). Observe tambm que o VDF j incorporou todas as mensagens de confirmao para incluso, alterao e excluso de registros. Tente excluir um registro e voc obter a seguinte mensagem de erro:

Isto ocorreu por que os arquivos filhos do Cliente (Pedido, ItemPed e Produto, que filho de ItemPed) no foram includos na view. No dicionrio de dados ns definimos que a estrutura deve ser verificada antes de uma excluso.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 70

Para corrigir este problema, feche a aplicao, retorne ao IDE e vamos editar a view. Clique em e selecione Cliente.vw. Observe que o VDF exibe os componentes do tipo que est especificado em Type. Abra o Database Selector, clique em , clique em e selecione Pedido e Item do Pedido. Os dicionrios relacionados tambm so trazidos. Clique em , compile a aplicao e teste uma excluso. Tudo deve estar funcionando agora. Feche a aplicao e vamos criar a view de vendedores. Siga o exemplo do cliente e monte uma view como esta :

Observe que para o vendedor no criamos nenhuma TabPage, colocando todos os dados no painel principal. Lembre-se de incluir os dicionrios de dados relacionados, para evitar problemas de validao. Salve e feche a view e inclua-a no programa principal. Compile o programa e teste a aplicao. Vamos criar a view do Produto. Siga os passos anteriores e crie uma view como esta :

Inclua-a no programa principal, compile e teste a aplicao.

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil

Pgina 71

Vamos agora criar uma view mais sofisticada : Pedidos e seus itens. Esta view ter uma parte principal, que conter os dados do Pedido e uma grid que conter os itens. Vamos criar a parte principal. No Database Selector, inclua todos os DDOs, menos o do Sistema. Verifique se o Main DDO Pedido. Arraste os campos Numero, Data, Situao e ValorTotal do Pedido para a view. Observe que o campo Situacao est pequeno demais (um bug do VDF). Altere sua propriedade Size para 13,50 e deixe a propriedade Code_Display_Mode com cb_code_display_description pois quremos exibir a descrio da situao, no seu cdigo. Arraste os campos Nome e Codigo do Cliente para a view. Por que no trazer o campo CodCliente do Pedido ? Por que o VDF se encarregar de fazer a ligao necessria, graas ao relacionamento que definimos no dicionrio de dados. Faa o mesmo com os campos Codigo e Nome do Vendedor. Posicione os objetos para que sua view fique como esta :

O VDF determina a ordem de navegao de um objeto para outro na mesma ordem em que eles so includos na View. Isto nem sempre o correto. Para corrigir esta situao, selecione, a partir do menu, Tools -> Tab-Order Definition. Ser exibido um painel com todos os objetos e sua ordem de navegao atual. Para alterar a posio de um objeto, selecione-o e use as setas para moviment-lo. Modifique, se necessrio, para que fiquem da seguinte forma :

Curso de Visual Dataflex __ [email protected] Vitria ES - Brazil Clique em OK para fechar o painel.

Pgina 72

Vamos agora construir a parte dos Itens. Aumente a altura do painel