erro em aplicação MDI (Formulário Pai e Filhos)
:mellow: Estou tendando criar uma aplicação MDI, já criei o formulário principal e os forms MDIChild
porém ao chamar uma função clicando no botão Novo, onde é chamado a função codigoauto() é
exibido o seguinte erro:
Project Projeto1.exe raised exception class EAccessViolation with message
'Access violation at address 004B85FA in module Project1.exe' Read of
Address 00000304. Process Stopped. Use Step or Run to continue.
Sendo que o erro se dá no ponto Frmform2.Edit1.Seltext := dm1.tabCat.Fieldvalues['Codigo']+1, ou
em qualquer referência ao Form2 com recebimento de atribuição de valor, como mostra os exemplos abaixo
var
Frmform2: TFrmform2;
implementation
uses udm1;
**{$R *.dfm} **
A função código automático verifica se já existem registros, se existir cria um registro com o valor do último código + 1
Function CodigoAuto(): String;
begin
dm1.tabCat.Last;
if dm1.tabCat.FieldValues['Codigo'] >= 1 then
Frmform2.Edit1.Seltext := dm1.tabCat.Fieldvalues['Codigo']+1
else
Frmform2.Edit1.Seltext := '1';
dm1.tabCat.Insert;
Frmform2.Edit1.SetFocus;
end;
a outra função
A função Registroautual apresenta o código do registro atual na edit1
Function Registroatual(): String;
Var Vcod :String;
begin
begin
if Form2.Edit1.text = '' then
begin
Dm1.tabCat.First;
end;
end;
Vcod := dm1.tabCat.FieldValues['Codigo'];
Form2.Edit1.text := Vcod;
Depois das funções vem o chamado da função no botão novo
procedure TFrmForm2.Button1Click(Sender: TObject);
begin
codigoauto();
end;
*****************************
*
* Código
* [.......]
*
* Descrição
* [.......................]
*****************************
O que ocorre é que bem na chamada da rotina Frmform2.Edit1.Seltext já é dado um erro de violação de chave
porém se logo após o function declarar novamente var Frmform2: TFrmform2; o mesmo consegue passar, mas na chamada de uma outra
função em que é refrenciado o nome do formulário dentro da função o mesmo erro ocorre, mesmo se for declarado novamente o form
o retorno que está dando no form é nil, bem se fosse um formumário SDI não necessitaria nem de declara apenas atribur o formulário
e funcionaria normalmentee, porém com o MDI não é a mesma coisa pelo que parece.
A dúvida é o porque do erro, e como o corrigir utilizando o form MDI mesmo, pois como SDI, não tenho problema algum.
Grato.
Discussão (1)
Carregando comentários...