:= Coluna; NomeLabel.Visible := True; NomeLabel.Name := 'Label' + IntToStr(Coluna); vetorLabel[Coluna] := NomeLabel; end; if Topo + 25 > 445 then Height := 445 else Height := Topo + 25;end;procedure TfrmDinamico.FormClose(Sender: TObject; var CloseAction: TCloseAction );begin fQuery.Close; CloseAction := caFree;end;function TfrmDinamico.GetQuery: TZQuery;begin Result := fQuery;end;procedure TfrmDinamico.SetQuery(NewQuery: TZQuery);begin fQuery := NewQuery;end;Implemente os metodos GetQuery e SetQuery conforme mostrado no codigo. Na secao var declaramos dois arrays dinamicos para receber os objetos TDBEdit e TLabel. Agora vamos analisar com mais detalhes o codigo do evento OnShow. E nesse codigo que serao criados os objetos em tempo de execucao, de acordo com os campos da tabela. No post Lazarus - Criando componentes em run-time nos mostramos como criar componentes em tempo de execucao.Inicialmente no metodo nos definimos o tamanho dos arrays de acordo com o numero de campos da tabela usando o procedure SetLength. Em seguida, dentro de um for que percorre os campos da tabela, e criado um TDBEdit e um TLabel para cada campo. Cada componente e guardado em seu array correspondente. Depois disso e verificada a necessidade de se aumentar a altura do form para que ele possa mostrar todos os componentes criados. Essa verificacao e feita atraves da variavel Topo que guarda a posicao vertical de cada componente. Como o nosso form e dinamico, nos liberamos a memoria ocupada por ele assim que o mesmo for fechado.Herdando o form PaiDepois disso vamos criar o form de cadastro propriamente dito. Para isso selecione o menu File | New e clique em Inherited Component. Na caixa da direita irao aparecer os forms que podem ser herdados. Escolha o form Pai que foi criado anteriormente e pressione OK. Um novo form sera criado com todos os membros do form Pai. Agora selecione a opcao de menu Project | Project Options. Clique em Forms e transfira o form Filho para a caixa da direita. Isso determina que o form Filho sera instanciado em tempo de execucao. Para que tudo funcione perfeitamente no form Filho, devemos implementar os metodos herdados e informar a palavra chave inherited. No nosso caso precisamos implementar apenas os metodo dos eventos OnShow e OnClose, como mostra o codigo abaixo.procedure TfrmCidade.FormShow(Sender: TObject);begin inheritedend;procedure TfrmCidade.FormClose(Sender: TObject; var CloseAction: TCloseAction);begin inheritedend; Para testar nosso demo, vamos ao form principal. Coloque um botao e escreva o seguinte codigo no evento OnClick.if TfrmCidade(Application.FindComponent('frmCidade')) = nil then frmCidade := TfrmCidade.Create(Application);frmCidade.Query := dmDados.queCidade;frmCidade.Show;Estamos supondo que o nome do form Filho e frmCidade, que o nome do Data Module e dmDados e que a TZQuery no Data Module chama-se queCidade. Pronto voce pode executar o programa e pressionar o botao. Voce tera uma tela assim:Voce pode agora repetir esse procedimento para todas as tabelas que precisem de formularios de cadastro. Bem, certamente nao e um form de cadastro perfeito, pois todos os campos sao definidos com TDBEdit, mas a partir daqui voce pode tentar voos mais altos.