Delphi: Trabalhando com herança

Olá, hoje vamos aprender a criar um formulário padrão e a herdar as suas características.

Para isso vamos criar um novo projeto, nele vamos adicionar:

1 Form e salvar como ufoPrincipal
A propriedade name : foPrincipal, um TBitBtn name BtCriaHerdeiro;

1 DataModule e salvar como udmPrincipal
Name : dmPrincipal

1 Form e salvar como ufoPadrao
Name : foPadrao
Nele adicionaremos um  TGroupBox  com a propriedade align : alBottom, a propriedade name : GbRodape e dentro do GbRodape um TbitBtn name BtFechar e um Timage sendo o Timage opcional.


No evento onclick do BtFechar.
procedure TFoPadrao.BtFecharClick(Sender: TObject);
begin
       self.Close;
end;

Agora vamos criar um novo form com as caracteristicas do fopadrao.

File => New => Other =  Inheritable  Items, escolher o fopadrao e clicar em OK (imagem1).   
Imagem 1


Pronto temos um formulário que herdou as características do padrão, altere a propriedade name para foHerdado, caption para Herdado e salve com ufoHerdado.

No código percebemos que ele é herdado da classe TfoPadrao.

unit ufoHerdado;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ufoPadrao, StdCtrls, Buttons, dxGDIPlusClasses, ExtCtrls;
type
  TFoHerdado = class(TFoPadrao)
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  FoHerdado: TFoHerdado;
implementation
{$R *.dfm}
end.

Ao clicar no botão do foHerdado o seguinte código aparecerá.

procedure TFoHerdado.BtFecharClick(Sender: TObject);
begin
  inherited;
end;
Se você retirar a palavra inherited e adicionar outro código o BtFechar perde suas características, se você adicionar outro código você estará adicionando novos comandos além dos presente no fopadrao.


No foPrincipal no botão CriaHerdeiro adicione  seguinte código
procedure TFoPrincipal.BtCriaHerdeiroClick(Sender: TObject);
begin
   if FoHerdado = nil then
       FoHerdado := TFoHerdado.Create(Application);
   FoHerdado.Show;
end;

O resultado é este.


Em breve estaremos postando como destruir um formulário herdado, já que o FreeAndNil(Self), ou foherdado:= nil, não destrói o mesmo.

Download do projeto disponível neste link:  https://www.dropbox.com/s/d3z8maonvbty86k/Heran%C3%A7aTutorial.zip



Nenhum comentário:

Postar um comentário