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.