atribuir uma procedure a um evento
12/01/2006
0
datamodule contendo 3 adotables e 3 datasources ...
varias telas de cadastro em que eu me utilizo desses 6 componentes .. entao quando mudo de tela eu mudo as propriedades em tempo de execucao .... até aqui ok ...
em alguns forms, eu criei algumas procedures e atibui elas a alguns eventos dos datasources e das tabelas ... entao toda vez que o evento da tabela ou datasource é disparado as procedures sao executadas ...
estou utilizando forms mdi ...
por exemplo, quando eu crio um form filho, no evento oncreate eu coloco todas as rotinas de inicializacao como por exemplo as atribuicoes aos eventos .. exemplo abaixo ...
// inicializacao tb1 Dm.tb1.TableName:=´tbRegistroExportacao´; Dm.tb1.Active:= True; Dm.Ds1.OnStateChange:= ControlaBotoes; Dm.tb1.AfterPost:= InsereData;
ao fechar o form nenhum erro ocorre ...
mas quando eu tento abrir o form de novo da um erro de violacao na memoria ....
perguntas ...
ao vincular as procedures aos eventos dos componentes, se eu fizer isso novamente pode gerar algum erro??
pq toda vez que eu crio o form os eventos serao vinculados aos componentes do datamodule ...
qual a maneira correta de se liberar o form filho da memoria quando é fechado ...???
estou usando a seguinte maneira ...
no evento onclose
Action:= CaFree;
aguardo respostas ...
[]s
Rafael Gomes
Posts
12/01/2006
Rafael Gomes
eu atribuindo procedures contidas em um form filho a eventos de uma tabela por exemplo ... ao fechar o form, essas procedures continuam vinculadas?? preciso libera-las de alguma forma????
pergunto isso pq como disse alterno 3 componentes adotable entre N tabelas do meu sistema ..
[]sss
12/01/2006
Bruno Belchior
Dm.Ds1.OnStateChange:= nil; Dm.tb1.AfterPost:= nil
12/01/2006
Rafael Gomes
Ds1:= nil
se eu fizer isso, estou limpando a variavel inteira??
abraços!!
12/01/2006
Bruno Belchior
Ds1:= nil
se eu fizer isso, estou limpando a variavel inteira??
abraços!![/quote:0103c2a547]Se você fizer isso você não vai destruir o objeto DS1, você pode chamar o seu método [b:0103c2a547]Free[/b:0103c2a547] (que internamente chama o destructor) de depois finalmente atribuir [b:0103c2a547]nil[/b:0103c2a547] a esse objeto, ou simplistemente chamar o método que foi inserido no delphi 5, [b:0103c2a547]FreeAndNil[/b:0103c2a547], e passar como parâmetro o objeto a ser destruido, você deve atribuir [b:0103c2a547]nil[/b:0103c2a547] ao evento que você citou acima, só lembrando que eventos são também propriedades (tando que aparecem no dfm do formulário)...
Clique aqui para fazer login e interagir na Comunidade :)