GARANTIR DESCONTO

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 ?


Ronaldorezende

Ronaldorezende

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.

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar