Ir ao conteúdo

Como separar código no Delphi?


New Nerd

Posts recomendados

Postado

É o seguinte:

Minha unit1 está ficando cada vez mais sobrecarregada de código, então quero

poder separar os blocos de código de forma que não fique tudo misturado e confuso.

Antes do Delphi eu usa VB6 onde podia criar módulos e assim não depender de mais forms, é algo assim que eu quero se possível.

Estou meio perdido.

Qual melhor forma de estruturar meu código afinal???

Muito Obrigado...

Postado

Deixa eu te dar uma dica que me é muito útil para organização.

Por exemplo, imagine que eu tenha um menu (componente TMainMenu) em cada form, mas todos iguais.

Se eu fosse editar os eventos de cada botão de cada menu do meu projeto ficaria muito trabalhoso não? E se precisasse fazer alguma alteração no evento? Aí teria que alterar de todos os outros menus, porque todos são iguais, não é mesmo? Ficaria mais suscetível a erros...

O que fazer então?!?

Para não ter que ficar fazendo os eventos de cada botão para todos os menus, eu crio uma classe de eventos em uma unit separada e faço o link dos botões dos menus com essa classe.

Mas para funcionar, temos que criar a estrutura dos eventos compatíveis com os eventos dos botões.

Então ficaria assim:

[unit do Form 1 - form que contém o componente MainMenu]


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
BtnArquivo: TMenuItem;
BtnAbrir: TMenuItem;
BtnSalvar: TMenuItem;
BtnFechar: TMenuItem;
BtnSair: TMenuItem;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
Uses U_Menu; //tem que carregar a unit U_Menu aqui
{Obs.: a unit "U_Menu" contém a classe com os eventos dos botões de menu}

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
{faz o link dos eventos dos botões do menu com
os eventos da classe "TMenuEvents" da unit "U_Menu.pas".
Faço isso em cada form que contém menu com estes mesmos botões.}
BtnAbrir.OnClick := MenuEvents.ButtonAbrirClick;
BtnSalvar.OnClick := MenuEvents.ButtonSalvarClick;
BtnFechar.OnClick := MenuEvents.ButtonFecharClick;
BtnSair.OnClick := MenuEvents.ButtonSairClick;
end;

end.

[unit "U_Menu" - unit que contém a classe dos eventos dos clicks dos botões de menu]


unit U_Menu;

interface
Uses Dialogs; //biblioteca "dialogs" contém a função "ShowMessage"

type
TMenuEvents = class //classe chamada "TMenuEvents"
procedure ButtonAbrirClick(Sender: TObject);
procedure ButtonSalvarClick(Sender: TObject);
procedure ButtonFecharClick(Sender: TObject);
procedure ButtonSairClick(Sender: TObject);
end;

var
MenuEvents: TMenuEvents; //variável da classe "TMenuEvents"

implementation

{ TMenuEvents }

procedure TMenuEvents.ButtonAbrirClick(Sender: TObject);
begin
ShowMessage('Clicou em Abrir');
end;

procedure TMenuEvents.ButtonSalvarClick(Sender: TObject);
begin
ShowMessage('Clicou em Salvar');
end;

procedure TMenuEvents.ButtonFecharClick(Sender: TObject);
begin
ShowMessage('Clicou em Fechar');
end;

procedure TMenuEvents.ButtonSairClick(Sender: TObject);
begin
ShowMessage('Clicou em Sair');
end;

end.

Percebeu que a classe "TMenuEvents" contém eventos do tipo "OnClick"? O principio é o mesmo para outros tipos de eventos. Pode-se declarar vários tipos de eventos dentro de uma mesma classe e só é necessário linkar os componentes de seus forms a esses eventos.

Eu uso muito isso e me ajuda muito.

Espero que esta dica seja útil a você e a todos do fórum.

Fui

  • Coordenador
Postado

Caso o autor necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!