Fórum fechar dataset antes de destruir? #264001
03/01/2005
0
Tenho algums formulários que possuem alguns componentes TClientDataset.
Devo executar o método Close neles antes de destruir o form ?
Devo executar o método Close neles antes de destruir o form ?
Ronaldorezende
Curtir tópico
+ 0
Responder
Posts
03/01/2005
Adilsond
Caro ronaldo, vou basear minha resposta no delphi5.
No diretório Source do delphi existe o fonte do componente TClienteDataSet.
Ao observar o código voce descobrirá que o mesmo descende do TDataSet e que no seu evento OnDestroy existe uma chamada ao evento OnDestroy do seu Owner.
Verifique o código referente ao OnDestroy do mesmo. Sua resposta está neste evento.
No diretório Source do delphi existe o fonte do componente TClienteDataSet.
TClientDataSet = class(TDataSet)
destructor TClientDataSet.Destroy; begin FSavePacketOnClose := False; [color=red]inherited Destroy;[/color] ClearSavedPacket; FreeDataPacket(FDeltaPacket); SetRemoteServer(nil); AppServer := nil; FMasterLink.Free; FIndexDefs.Free; FParams.Free; FAggregates.Free; ClearActiveAggs; FActiveAggLists.Free; FAggFieldsUpdated.Free; end;
Ao observar o código voce descobrirá que o mesmo descende do TDataSet e que no seu evento OnDestroy existe uma chamada ao evento OnDestroy do seu Owner.
destructor TDataSet.Destroy; begin Destroying; [color=red]Close;[/color] SetDataSetField(nil); FDesigner.Free; if FDataSources <> nil then while FDataSources.Count > 0 do RemoveDataSource(FDataSources.Last); FDataSources.Free; FFields.Free; FAggFields.Free; FAggFields := nil; FFieldList.Free; FFieldDefList.Free; FFieldDefs.Free; FConstraints.Free; FNestedDataSets.Free; inherited Destroy; end;
Verifique o código referente ao OnDestroy do mesmo. Sua resposta está neste evento.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)