Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elisei

Problema com MDI e fsNormal Muito Estranho, alguem conhece?

Recommended Posts

Olá pessoal.

 

Estou com um problema muito estranho, ou pelo menos para mim.

Tenho um software que está desenvolvido com MDI.

Fui tentar reformulá-lo para FsNormal.

 

Retirei os comandos de criação de MDI:

form1 := TForm1.Create(self);

E voltei com o comando:

form1.shomodal;

O problema é que quando tento executar me dá erro de Accesses Violation.

Não tenho o erro aqui, mas o estranho é porque se eu voltei o tipo de formulário para FsNormal e passei a chamá-lo com showmodal, não deveria dar erro.

 

Pelo visto estou esquecendo de retirar de meu programa mais alguma declaração que não sei no momento.

Alguém sabe?

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, eu faço assim:

Application.Createform(TfrmForm1, FrmForm1);

FrmForm1.ShowModal;

FrmForm1.Free; ----> isso em caso do form ser fsNormal....

 

caso for MDI eu coloco:

Application.Createform(TfrmForm1, FrmForm1);

FrmForm1.Show;

 

e no evento onclose eu coloco FrmForm1.Free;

o evento ShowModal deixa o ponteiro parado na linha dele, até que você feche o form e executa a linha debaixo... que no caso é o .Free. as vezes você nao está criando o form da forma correta... ou as vezes também nao retirou o form da inicialização automatica la no menu Project -> Options...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro de Acess Violation na maioria das vezes é algum objeto que você está tentando usar, porém ele não foi criado.

 

Utilize isso para criar seus arquivos fsNormal:

 

try
	try
	  if (frmModelo = nil) then
		Application.CreateForm(TfrmModelo, frmModelo);
	  frmModelo.ShowModal;
	except
	  on E: Exception do
		MessageDlg('Não foi possível criar o formulário', mtError, [mbOK], 0);
	end;
  finally
	frmModelo.Action := caFree; // ou frmModelo.Free;
	frmModelo := nil;
  end;

ou

 

try
	if (frmModelo = nil) then
	  Application.CreateForm(TfrmModelo, frmModelo);
	frmModelo.ShowModal;
  except
	on E: Exception do
	  MessageDlg('Não foi possível criar o formulário', mtError, [mbOK], 0);
  end;

No evento onClose do formulário, você digita:

 

Action := caFree;
  frmModelo := nil;

Bom, eu testei os dois e funciona.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.