Elisei 0 Denunciar post Postado Maio 11, 2009 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
flavioavilela 0 Denunciar post Postado Maio 11, 2009 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
port3r 0 Denunciar post Postado Maio 11, 2009 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