Criar Form dinamicamente

Criar formulário (ou form) dinamicamente em tempo de execução, é uma tarefa simples e eficiente.

Vantagen
s:
Ao criar formulários no Delphi, automaticamente eles são criados na lista
de formulários.
A memória tem diversos trabalhos, como, carregar conexões de banco de dados, abertura de tabelas, configurações, arquivos, etc... isso faz com que este carregamento seja um processo demorado.

Para alívio dos programadores, existe a criação dinâmica dos formulários, que fará com que o aplicativo carregue mais rapidamente, deixando de ser pesado, pois manterá toda essa memória alocada por toda a execução do mesmo.

Inicialmente, o formulário principal deveria ser o único criado automaticamente.
Mas existem algumas exceções:
-> Data Modules pois são utilizados em todo o sistema ou em vários formulários. Mas lembre-se: deixe todas as tabelas fechadas em tempo de projeto, e abra somente quando necessário.
-> Formulários não modais que são mostrados o tempo todo.

Seguindo todas essas instruções, a memória não terá mais tanto trabalho, e o tempo de carregamento do "que é necessário" na memória, será bem reduzido. Vejamos:

Vamos começar:
1º- Crie um Formulário Novo, ele receberá o nome de Form2.

2º- Vá no menu Project/Options,


























vai ter 2 list boxes, conforme mostrada figura abaixo, o da esquerda "Auto-create forms" contém os forms que serão criados automaticamente quando a aplicação for iniciada. Mova o Form2 para o ListBox da direita "Available forms" (este deverá conter os forms que serão criados dinamicamente).


3º- Pronto, o Delphi não mais criará o Form2 automaticamente. Para não dar erro ao compilar o projeto, então o Form1 antes, irá fazer uma referência, utilizando no código uses a chamada da Unit2.

4º-
No Form1 crie um botão e digite o código da chamada do segundo formulário em seu evento Click.

O código ficará assim no Form1:
...
implementation
uses Unit2;
{$R *.DFM}

{Segue aqui o Código do Botão fazendo a chamda do segundo formulário}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self); // cria
Form2.ShowModal; //exibe
Form2.Free;
//libera da memória
end;
end.
************************************************************************
Faça download do arquivo: Criar Form Dinamicamente.rar
************************************************************************

"A mente do homem, uma vez ampliada por uma nova idéia,
jamais retorna à sua dimensão anterior." Oliver Wendell Holmes.