Erro criação de Form
Bom Dia a Todos
Estou com uma dificuldade na criação de Forms em tempo de execução que talvez alguém possa me ajudar:
Em um form crio uma instância de um DataModule como está abaixo :
if dmdGeraPedido = nil then
dmdGeraPedido := TdmdPedido.Create(Self);
Mesmo sem fechar Destruir o DataModule anterior crio outra instância a partir de outro form :
if dmdApagaPedido = nil then
dmdApagaPedido := TdmdPedido.Create(Self);
Tudo funciona perfeitamente, na primeira e na segunda instância é executado o OnCreate do DataModule e não há nenhum tipo de conflito entre eles.
Agora o Problema :
Tentei usar o mesmo conceito para criar dois forms e não consegui :
Na Unit com o Menu Principal coloquei :
procedure TfrmPrincipal.mnuDistCadastroClick(Sender: TObject);
begin
if frmDistribuidora = nil then
begin
StrTipoEmp := ´D´;
frmDistribuidora := TfrmEmpresa.Create(Self);
end;
end;
Até aqui funciona, ele cria o form e executa o OnCreate e o OnShow;
Porém se, sem destruir o Form anterior, eu chamar um novo form, como abaixo :
procedure TfrmPrincipal.mnuTransCadastroClick(Sender: TObject);
begin
if frmTransportadora = nil then
begin
StrTipoEmp := ´T´;
frmTransportadora := TfrmEmpresa.Create(Self);
end;
end;
Ocorre um ´Access Violation´. Ao debugar o prg percebi que ele não executa o OnCreate e o OnShow desta nova instância.
Qual a diferença entre os dois exemplos (criação do DataModule e do Form) ?
Porque ao criar a segunda instância de um form ele não executa o OnCreate?
Grato,
Moliva
Estou com uma dificuldade na criação de Forms em tempo de execução que talvez alguém possa me ajudar:
Em um form crio uma instância de um DataModule como está abaixo :
if dmdGeraPedido = nil then
dmdGeraPedido := TdmdPedido.Create(Self);
Mesmo sem fechar Destruir o DataModule anterior crio outra instância a partir de outro form :
if dmdApagaPedido = nil then
dmdApagaPedido := TdmdPedido.Create(Self);
Tudo funciona perfeitamente, na primeira e na segunda instância é executado o OnCreate do DataModule e não há nenhum tipo de conflito entre eles.
Agora o Problema :
Tentei usar o mesmo conceito para criar dois forms e não consegui :
Na Unit com o Menu Principal coloquei :
procedure TfrmPrincipal.mnuDistCadastroClick(Sender: TObject);
begin
if frmDistribuidora = nil then
begin
StrTipoEmp := ´D´;
frmDistribuidora := TfrmEmpresa.Create(Self);
end;
end;
Até aqui funciona, ele cria o form e executa o OnCreate e o OnShow;
Porém se, sem destruir o Form anterior, eu chamar um novo form, como abaixo :
procedure TfrmPrincipal.mnuTransCadastroClick(Sender: TObject);
begin
if frmTransportadora = nil then
begin
StrTipoEmp := ´T´;
frmTransportadora := TfrmEmpresa.Create(Self);
end;
end;
Ocorre um ´Access Violation´. Ao debugar o prg percebi que ele não executa o OnCreate e o OnShow desta nova instância.
Qual a diferença entre os dois exemplos (criação do DataModule e do Form) ?
Porque ao criar a segunda instância de um form ele não executa o OnCreate?
Grato,
Moliva
Moliva
Curtidas 0