www.devmedia.com.br
[versão para impressão]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=11193

Artigo Clube Delphi 77 - Metadados no IB/FB

Neste artigo veremos como construir, utilizando o Delphi 7, uma ferramenta para criação de diagramas de ER (Entidade e Relacionamento) através da engenharia reversa das tabelas e views de bancos de dados InterBase e/ou Firebird.

Esse artigo faz parte da revista Clube Delphi Edição 77. Clique aqui para ler todos os artigos desta edição

imagem_pdf.jpg

IB/FB

Metadados no IB/FB

 

Neste artigo veremos como construir, utilizando o Delphi 7, uma ferramenta para criação de diagramas de ER (Entidade e Relacionamento) através da engenharia reversa das tabelas e views de bancos de dados InterBase e/ou Firebird .

O principal objetivo é demonstrar diversas técnicas que podem ser utilizadas nas mais variadas situações vividas pelos desenvolvedores no dia a dia. O ERPlus, nome dado à ferramenta, terá como principais funcionalidades:

·         Permitir a seleção do banco de dados IB/FB pelo usuário;

·         Gerar o digrama ER contendo todas as tabelas e views selecionadas pelo usuário;

·         Listar para cada tabela ou view todos os seus campos com os respectivos tipos;

·         Identificar as colunas definidas como chave primária e estrangeira;

·         Mostrar os relacionamentos entre as tabelas (Foreign Key);

·         Salvar os digramas em um formato XML;

·         Abrir os diagramas salvos a partir do arquivo XML gerado;

·         Exclusão de uma tabela ou view do diagrama;

·         Arrastar as tabelas ou views dentro da área do diagrama;

·         Organização automática das tabelas e views contidas no diagrama.

 

Nota: Apesar de o aplicativo ter sido desenvolvido no Delphi 7, você pode compilá-lo sem problemas em qualquer outra versão do Delphi que possua suporte ao dbExpress, visto também que o mesmo não utiliza nenhum componente de terceiros.

 

Criando a aplicação

Crie uma nova aplicação no Delphi, altere o nome do formulário para “FrmPrincipal” e salve a unit como “untFrmPrincipal.pas”. Para o arquivo de projeto salve-o como “ERPlus.dpr”. Adicione alguns componentes visuais e não-visuais ao FrmPrincipal e configure-os como mostra a Figura 1.

 

Figura 1. Formulário principal da aplicação em tempo de design

 

Para o mmPrincipal (MainMenu) adicione os seguintes itens de menu:

·         Diagrama

o        Novo

o        Abrir

o        Salvar

o        Salvar como

o        Fechar

·         Banco de Dados

o        Configurar

·         Tabelas

o        Selecionar Tabelas

o        Apagar Tabela Selecionada

·         Outros

o        Organizar Layout

o        Visualizar Relacionamentos

o        Caixa Sobre

·         Sair

 

Você pode utilizar o imglPrincipal (ImageList) para adicionar alguns ícones para os itens do menu principal e para os botões da ToolBar. Todas as ações dos menus e botões ficarão centralizados em Actions no aclPrincipal (ActionList).

 

Nota: Por questões de espaço explicarei neste artigo apenas os principais métodos da aplicação. Para acompanhar o passo a passo, você poderá baixar o código-fonte completo do ERPlus a partir do link para download da revista.

 

Crie uma nova unit e salve-a como “untTabela.pas”. Para que possamos carregar o diagrama ER com as tabelas e views do banco de dados IB/FB, que será selecionado pelo usuário, vamos criar uma classe chamada “TTabela” na unit recém criada. Digite o código da Listagem 1 na unit.

 

Listagem 1. Criando a classe para acessar as tabelas e views do banco

unit untTabela;

 

interface

 

uses

  Classes, SysUtils, Graphics, Controls, ExtCtrls,

  ComCtrls;

 

type

 

  TTabela = class(TPanel)

    private

      FTabela: string;

      FPnlTitulo: TPanel;

      FLVCampos: TListView;

      FChavesEstrangeiras : TStringList;

      procedure EndDrag(Sender, Target: TObject;

        X, Y: Integer);

      procedure setTabela(const Value: string);

    public

      property Tabela: string read FTabela

        write setTabela;

      property PnlTitulo: TPanel read FPnlTitulo

        write FPnlTitulo;

      property Campos: TListView read FLVCampos

        write FLVCampos;

      property ChavesEstrangeiras: TStringList

        read FChavesEstrangeiras

        write FChavesEstrangeiras;

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

Everson Borges

Delphi na veia (!)