Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Criando uma Interface para padronização dos formulários de Cadastro

Veja como criar uma interface com métodos em comum para todos cadastros e aplicá-la nos formulários de cadastro de um projeto.

Neste artigo irei mostrar como utilizar uma interface para padronizar os formulários de um projeto. Não irei explicar para que serve as Interfaces para não tornar o artigo muito extenso, deixando isso para um próximo artigo.

 

Como exemplo irei utilizar um formulário de cadastro simples. Não irei incluir a manipulação de banco de dados e componentes visuais, pois será um exemplo genérico que poderá ser aplicado em qualquer forma de armazenamento de dados.

 

A idéia principal é fazer com que todos os formulários de cadastro de um projeto utilizem um padrão para seus métodos de manipulação do cadastro e com isso facilitar o entendimento e a manutenção dos formulários.

 

Inicie o Delphi (estou utilizando a versão 7 do Delphi, mas sinta-se à vontade para utilizar a versão que mais lhe agradar), crie uma nova aplicação, o delphi irá criar automaticamente um formulário para sua aplicação, salve-o com o nome de frmCadastro, sua Unit com o nome de Cadastro.pas e o projeto com o nome Interfaces.

 

Feito isso inclua uma nova Unit e salve-a com o nome de MinhasInterfaces.pas, ela deverá contem o seguinte código.

 

 

Unit MinhasInterfaces;

 

interface

 

implementation

 

end.

 

 

Agora vamos incluir na Unit a nossa interface. Após a declaração interface, insira o seguinte código:

 

 

type

  ICadastros = Interface

 

end;

 

 

Posicione o cursor na linha em branco entre o type e o end e precione Ctrl+Shift+G para que o Delphi crie automaticamente um novo número de ID para a interface. Veja que o valor gerado não se repete, então não se preocupe caso o valor gerado esteja diferente do que aparece nesse exemplo. A Unit deverá estar da seguinte forma:

 

 

Unit MinhasInterfaces;

 

interface

 

type

  ICadastros = Interface

    [{35EF018D-7AC0-4D9B-9D42-DE6F508721C7}]

  end;

 

implementation

 

end.

 

 

Agora podemos incluir alguns métodos em nossa interface, como podemos ver a seguir:

 

 

Unit MinhasInterfaces;

 

interface

 

type ICadastros = Interface

  [{35EF018D-7AC0-4D9B-9D42-DE6F508721C7}]

    procedure Incluir;

    procedure Alterar;

    function Deletar(Perguntar :Boolean) :Boolean;

    procedure Salvar;

    procedure Cancelar;

    function ValidarDados :Boolean;

  end;

 

implementation

 

end.

 

 

Já temos nossa interface, agora vamos implementá-la em nossa tela de cadastro.

Volte para o nosso formulário frmCadastro e visualize sua Unit, ela deve estar da seguinte forma:

 

 

Unit Cadastro;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs;

 

type

  TfrmCadastro = class(TForm)

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  frmCadastro: TfrmCadastro;

 

implementation

 

{$R *.dfm}

 

end.

 

 

Agora vamos declarar a Unit da nossa interface na Unit Cadastro, vá no Uses e inclua MinhasInterfaces.

 

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, MinhasInterfaces;

 

 

Feito isso, basta informar para nossa classe TfrmCadastro que será implementada a interface ICadastros como mostra o código a seguir:

 

 

  TfrmCadastro = class(TForm, ICadastros)

 

 

Tente compilar o projeto e veja que o Delphi irá retornar 6 erros, acusando Undeclared identifier para os métodos de nossa interface, pois estamos implementando uma interface e não declaramos os métodos contidos na mesma.

 

Continuando, vamos inserir os métodos da interface ICadastros em nosso formulário, você pode copiá-los e colá-los após a declaração public da Unit Cadastro como mostra o código a seguir:

 

 

Unit Cadastro;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, MinhasInterfaces;

 

type

  TfrmCadastro = class(TForm, ICadastros)

  private

    { Private declarations }

  public

    { Public declarations }

    procedure Incluir;

    procedure Alterar;

    function Deletar(Perguntar :Boolean) :Boolean;

    procedure Salvar;

    procedure Cancelar;

    function ValidarDados :Boolean;

  end;

 

var

  frmCadastro: TfrmCadastro;

 

implementation

 

{$R *.dfm}

 

end.

 

 

Para que o Delphi crie automaticamente a implementação dos métodos incluídos na Unit, basta posicionar o cursor logo após a declaração public e pressionar a combinação de teclas Ctrl+Shift+C.

 

Pronto seu formulário já contém os métodos de sua interface, agora é só implementar o que cada método deverá fazer. A seguir segue o exemplo completo da Unit Cadastro.

 

 

Unit Cadastro;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, MinhasInterfaces;

 

type

  TfrmCadastro = class(TForm, ICadastros)

  private

    { Private declarations }

  public

    { Public declarations }

    procedure Incluir;

    procedure Alterar;

    function Deletar(Perguntar :Boolean) :Boolean;

    procedure Salvar;

    procedure Cancelar;

    function ValidarDados :Boolean;

  end;

 

var

  frmCadastro: TfrmCadastro;

 

implementation

 

{$R *.dfm}

 

{ TfrmCadastro }

 

//método para alterar os dados de um registro do cadastro

procedure TfrmCadastro.Alterar;

begin

  ShowMessage(Alterando dados do cadastro.);

end;

 

//método para cancelar uma inclusão ou edição do cadastro

procedure TfrmCadastro.Cancelar;

begin

  ShowMessage(Cancelando inclusão / edição de dados do cadastro.);

end;

 

//método para excluir um registro do cadastro

function TfrmCadastro.Deletar(Perguntar: Boolean): Boolean;

begin

  result := false;

  if (Perguntar) then

    if (Application.MessageBox(Deseja excluir o registro ?,Atenção,MB_ICONQUESTION+MB_YESNO)=idYes) then

    begin

      ShowMessage(Registro excluído);

      result := true;

    end;

end;

 

//método para incluir um novo registro no cadastro

procedure TfrmCadastro.Incluir;

begin

  ShowMessage(Incluindo dados do cadastro.);

end;

 

//método que valida os dados do registro do cadastro e salva caso esteja tudo ok

procedure TfrmCadastro.Salvar;

begin

  if (ValidarDados) then

    ShowMessage(Registro salvo.)

  else

    ShowMessage(Informe os campos obrigatórios.);

end;

 

//método para validar os o preenchimento dos campos do cadastro retornando True/False

function TfrmCadastro.ValidarDados: Boolean;

begin

  result := true;

end;

 

end.

 

 

Existem outras formas de implementar um formato de padronização para as telas de um projeto, tentei mostrar para vocês uma forma simples para fazer isso.

 

Até o próximo artigo.





    3 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Francisco De Assis Souza
nao entendi pq criar a interface, um formulario heranca nao seria a mesma coisa?


em 11/8/2006 23:25 - Responder

 

  Rodrigo Lazoti
A idéia de utilizar interfaces é para "obrigar" a classe, que no nosso caso é um formulario, a declarar seus metodos, com isso poderiamos ter interfaces para cadastro e consulta por exemplo, e em um formulario declarar as duas interfaces, entao esse formulario teria tanto os metodos da interface cadastro como os metodos da consulta, e ja em outro formulario podemos declarar somente a interface de consulta, assim nesse formulario teria somente os metodos da interface consulta. Como citei no artigo essa é uma das formas que pode ser feita, pode-se também ser feito formulários com herança em conjunto ou nao com interfaces, mas com isso seria necessario toda uma explicação sobre orientacao a objetos, por isso preferi utilizar somente uma interface para nao deixar o artigo muito longo. Mas ja deixo anotado essa ideia para um proximo artigo. Obrigado.


em 12/8/2006 09:34 - Responder
 

Lucianobruno
melhor do que usar herança, pois o formulario fica livre para variaçoes do visual, etc. ja respon dendo se e a mesma coisa de herença, na herença, vc tem que se preocupar em nao modificar os métodos ou desajustar o form.


em 14/8/2006 14:03 - Responder

 



[Este post ainda não foi associado a uma sequência]
Autor
Rodrigo Lazoti

Rodrigo Lazoti (rodrigolazoti@yahoo.com.br) é desenvolvedor de software com mais de 8 anos de experiência, bacharel em Sistemas de Informação e possui também as certificações SCJP, SCWCD e SCBCD. Atualmente desenvolve sistemas utilizando Java e Ruby on Rails, mas já trabalhou com tecnologias como De...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da ClubeDelphi ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03