Ir para conteúdo
Fórum Script Brasil
  • 0

Criar formulario em tempo de execucao pelo nome


Junior Maia

Pergunta

Olá pessoal, estou com um problema, em uma das minhas aplicacoes estou usando formulario padrão (crio um formulario Form_Padrao_Cadastro = Class(TForm) e varios forms descendentes desse form FCad_Pessoas = Class(TForm_Padrao_Cadastro)), alem de outros formulario de cadastro. Ate ai tudo bem, funciona normalmente, o problema e que pra cada formulario de cadastro eu tenho um formulario de consulta, por exemplo _Pessoas e padrão, FCad_Pessoas e cadastro, FCons_Pessoas e consulta. Dessa forma eu poderia criar um codigo generico pra chamada do formulario, tipo assim:

No evento onshow do form de cadastro eu colocaria o seguinte codigo:

onshow do form de cadastro

begin

nome_form_cadastro:=(sender as tform).name; // aki eu tenho o nome do form de cadastro em uma string

nome_form_consulta:='FCons'+copy(nome_form_cadastro,5,length(nome_form_cadastro));// aki eu tenho o nome do form de consulta em uma string

formulario:=(sender as TForm); // aki eu tenho o form de cadastro em uma variavel do tipo :TForm;

formulario_consulta:=TForm(FindGlobalComponent(nome_form_consulta)); // aki eu tenho o form de consulta em uma variavel do tipo :TForm;

end;

onclick do botao consultar do form de cadastro

begin

formulario_consulta:=TFormClass(formulario_consulta.ClassType).Create(self);

end;

a ideia seria isso, mas da access violation, eu ate entendo que de access violation, pois ta tentando acessar uma propriedade de um formulario q ainda não foi criado na memoria, mas então como eu vou criar o formulario de maneira generica?, sem acessar a classe do formulario, mas referenciando sua classe?

Aguardo resposta, obrigado.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Você tá querendo criar o form e exibi-lo na tela?, ou está querendo só criar para poder ter acesso a seus componentes visuais de outro form?,

No caso de criar e exibir segue o código:

formulario_consulta := Tformulario_consulta.create(application);
try
formulario_consulta.ShowModal;
finally
formulario_consulta.Release;
formulario_consulta := nil;
end;
Para criar somente para usar os componentes visuais atravez de outro form, use o código abaixo:
formulario_consulta := Tformulario_consulta.Create(Application);

Obs: você não vai precisar de nenhum variavel..... usando somente um dos códigos acima no seu botão você irá conseguir!

Abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...