FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Symbol">· 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
write FLVCampos;
property ChavesEstrangeiras: TStringList
read FChavesEstrangeiras
write FChavesEstrangeiras;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{ TTabela }
constructor TTabela.Create(AOwner: TComponent);
var
Coluna: TListColumn;
begin
inherited;
Self.Height := 200;
...