Herança visual de formulários no Delphi: telas reutilizáveis sem copiar e colar
Gravei um vídeo sobre herança visual de formulários no Delphi há um bom tempo no canal. É um dos recursos que mais uso em sistemas corporativos, e ainda vejo gente descobrindo isso tarde, já depois de ter copiado e colado a mesma tela vinte vezes. Vale revisitar por escrito.
O problema que isso resolve
Todo sistema corporativo tem telas parecidas. Um cadastro de cliente, um de produto, um de fornecedor — todos com uma barra de ferramentas igual, os mesmos botões de Salvar/Cancelar, o mesmo atalho de teclado, o mesmo jeito de mostrar erro de validação. O caminho mais rápido (e mais comum) é copiar uma tela pronta e ajustar. O problema aparece depois: um ajuste no padrão visual, ou uma correção de bug no botão Salvar, e agora você precisa repetir a mudança em vinte telas.
Herança visual de formulários existe exatamente para isso.
O que é, na prática
Em frameworks web como React, herdar de um componente te dá comportamento, não layout — cada componente desenha a própria árvore de elementos. No Delphi é diferente: um TForm descendente herda tanto o código quanto o layout visual do formulário ancestral. Os componentes do form base aparecem prontos no Form Designer do form filho, na mesma posição, com as mesmas propriedades — e você só adiciona o que for específico daquela tela.
Como criar
- Crie um formulário base com o que for comum a várias telas: painel de botões, barra de status, os handlers de evento padrão.
type
TFormBase = class(TForm)
pnlToolbar: TPanel;
btnSalvar: TButton;
btnCancelar: TButton;
procedure btnSalvarClick(Sender: TObject); virtual;
procedure btnCancelarClick(Sender: TObject); virtual;
end;
- No Delphi, vá em File → New → Other e escolha a aba Inheritable Items (a IDE lista os forms do projeto disponíveis como ancestral). Selecione
TFormBase. - O novo formulário já nasce com
pnlToolbar,btnSalvarebtnCancelarvisíveis no designer, herdados. Adicione os componentes específicos da tela nova.
newsletter
Gostou do post? Quando eu publicar o próximo sobre Delphi, React ou IA aplicada ao desenvolvimento, você recebe um aviso por e-mail.