Duvida no datamodule + evento

Delphi

22/08/2012

em um datamodule tenho varios DataSetProvider, gostaria de usar o evento onupdateerror de todos colocando a seguinte instrucao: raise Exception.Create(e.Message);

Mas colocar isso em todos da mt trabalho, sera que consigo uma maneira de colocar uma unica instrucao para todos os DataSetProvider que estou dentro do datamodule ?

Abs e obrigado
Felipe Ip

Felipe Ip

Curtidas 0

Respostas

William

William

22/08/2012

Colega acredito que como são vários componentes, vc teria que inserir um à um.

Se fosse Orientado à Objetos, vc poderia criar uma classe(TMeuDataSetProvider) que descende de TDataSetProvider e acrescentar esse código no respectivo evento, depois seria só instanciar sub-classes descendentes de TMeuDataSetProvider.
GOSTEI 0
Marco Salles

Marco Salles

22/08/2012

em um datamodule tenho varios DataSetProvider, gostaria de usar o evento onupdateerror de todos colocando a seguinte instrucao: raise Exception.Create(e.Message);

Mas colocar isso em todos da mt trabalho, sera que consigo uma maneira de colocar uma unica instrucao para todos os DataSetProvider que estou dentro do datamodule ?

Abs e obrigado


Vc faz o seguinte

na secção private do seu DataModulo ou container vc define a procedure

  private
    { Private declarations }
    procedure DataSetProviderUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);


Na secção Implementation vc define

procedure TDataModule3.DataSetProviderUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
raise Exception.Create(e.Message);
end;


No evento Oncreate do seu datamodulo ou container vc escreve

procedure TDataModule3.DataModuleCreate(Sender: TObject);
var
Dsp:TComponent;
begin
for Dsp in self do
 if Dsp.ClassNameIs('TDatasetProvider') then
   TDatasetProvider(Dsp).OnUpdateError:= DataSetProviderUpdateError;
end;


[]sds
GOSTEI 0
Felipe Ip

Felipe Ip

22/08/2012

Marcos, mais uma vez mt obrigado, era isso mesmo, eu havia visto esse codigo em algum lugar, mas nao conseguia lembrar, perfeito.

Abs
GOSTEI 0
POSTAR