fechar dataset antes de destruir?

Delphi

03/01/2005

Tenho algums formulários que possuem alguns componentes TClientDataset.
Devo executar o método Close neles antes de destruir o form ?


Ronaldorezende

Ronaldorezende

Curtidas 0

Respostas

Adilsond

Adilsond

03/01/2005

Caro ronaldo, vou basear minha resposta no delphi5.

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.


GOSTEI 0
POSTAR