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;
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?
Pergunta
Junior Maia
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
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.